Hi,
ich verstehe noch nicht, wie du mit dem AVR den Flieger steuern willst, vielleicht kannst du das mal erklären. Willst du den Flieger nur am Boden damit steuern und ist der AVR direkt mit dem Servo verbunden? Wie sollen sich die Servo-Werte im µC ändern, automatisch oder indem du irgendwelche Taster drückst?
Das Durchschleifen würde ich jedenfalls etwas aufwändiger tun.
Soweit ich weiß, bestimmt die Länge der High- und Low-Pegel, wie sich das Servo einstellt. Dies sollte also möglichst stabil sein und nicht von irgendwelchen anderen Dingen abhängen, die der AVR gerade tun will.
Daher würde ich den Input an einen externen Interrupt Pin (z.B. INT1) hängen.
Im Programm machst du dann sowas:
Code:
RC Alias 1
µC Alias 0
RC_input Alias PIND.3 'hier ist beim Mega8 der INT1 dran
Servo_output alias PORTD.4 'irgendein Pin
Dim Control as Byte
Config Servo_output = Output
Config INT1 = Change 'bei jeder Leveländerung wird die ISR ausgeführt
ON INT1 Int1_isr
Control=RC
Do
If Control=µC Then 'also Steuerung durch den µC
.... 'dies hängt ab von deiner Art der Eingabe bzw. Automatik, aber jedenfalls ohne waits
End If
Loop
Int1_isr:
If Control=RC Then 'dein Umschalter zwischen RC und µC
Servo_output=RC_input 'dein Output Pin zum Servo wird auf den Input Pin gesetzt
Endif
Return
Umschalten wirst du wohl über einen Schalter, also einen entprellten Input Pin.
Evtl. kannst du auch ganz auf den Servo Befehl verzichten und änderst den Servo-Pin im µC-Mode über einen Timer. Dann bist du auch da flexibel.
Gruß
Rolf
Lesezeichen