2 Steuerungsphase I (SpeedGoUp)

Diese Startphase muss folgende Aufgaben abdecken:

  1. Initialisierung der Rotationsfunktion (Richtungs-Steuerung)
  2. Das Präprozessing, also die Vorberechnung des Zählerwertes, an dem die Geschwindigkeit in die ,,SpeedDown'' Phase III übergeht.
  3. Die ,,Programmierung'' des Ouput Compare 1B (OCR1B) Interrupt Registers mit diesem Wert (rcall setup_counter_value).
  4. Kontinuierliche Erhöhung die Steuerspannung, bis die Drehbewegung einsetzt. Dieser ,,Startwert'' wird als Variable rot_contrl_minimum gespeichert und dient in der ,,SpeedDown''-Phase III als Zielwert für die Geschwindigkeitsreduzierung.
  5. Überprüfen, ob die Rotation beim Maximalwert tatsächlich begonnen hat, wenn nicht, wird das Programm abgebrochen (siehe Schlagwort InitCycle im Absch. 7.8.5).
  6. Überprüfen, ob die ,,SpeedDown''-Phase bereits erreicht ist. Ist dies der Fall, wird die ,,SpeedHigh''-Phase übersprungen.
Zur Verbesserung der Lesbarkeit des Codes wurden die Makros ,,BEFORE_POSITION'' und ,,AFTER_POSITION'' eingeführt, die das Erreichen oder ,,noch nicht'' Erreichen des vorberechneten Endwerts überprüfen, indem das entsprechende Bit im Timer Interrupt Mask Register (TIMSK) kontrolliert wird. Das Bit wird von der ISR des Timer1B (Output Compare1B Interrupt Vector Address) kontrolliert.

	; ===================================================================
	; interrupt checks
	; ----------------------------------
	; check if a value is reached (TIMSK bit is set)
	; ----------------------------------
	;
	; Parameter: @0 .. label to jump if reached
	.macro AFTER_POSITION
	  in    ltmp1, TIMSK      ; read TIMSK port, is bit OCIE1B set?
	  sbrs  ltmp1, OCIE1B     ; position value is reached?
	  rjmp  @0                ; if yes (bit is reset), we jump to...
	.endmacro 
Anwendungsbeispiele sind in den Beschreibungen der Phasen II und III zu finden.

Der Mechanismus zum Setzten und Rücksetzten des verwendeten Output Compare1B Interrupts wurde bereits in Abschnitt 7.7.3.5 beschrieben.

gerhard.reithofer@tech-edv.co.at