-
ja, habs auch richtig rum probiert. Also, nur durchschleifen geht, aber nur wenn sonst nicht anderes im Programm passieren soll. Sobald ein wait-Befehl drin ist geht gar nichts mehr und den brauch man wen man mit dem Servo-Befehl was machen will. Hab alles probiert . Sieht aus als würde es so nicht gehen. Habt Ihr noch ne Idee??
Gruß
Andreas
-
Der Durchschleifbefehl muss natürlich regelmäßig aufgerufen werden, und zwar schnell genug. Am einfachsten wäre es, den Eingang auf nen externen Interrupt zu legen. Bei jeden Pegelwechsel wird dann der Interrupt ausgelöst, in dem der neue Pegel zu Ausgang kopiert wird.
-
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
-
Hallo Rolf,
Sorry, ich war ein paar Tage offline (Dienstreise ohne Internetanschluß). Also, die Sache soll so funktionieren. Ich starte den Flieger ganz normal mit Fernsteuerung. Dann betätige ich einen Schiebeschalter und dann soll der Flieger zum Beispiel das Seitenruder für 20 Sekunden 30° ausschlagen, danach 20 Sek. gerade........usw. halt so das ich beliebige vorprogramierte Figuren abfliegen kann. Das Problem bei deinem Bascom Vorschlag ist, das Int1 und Int0 bereits zum Einlesen der RC-Kanäle vergeben sind.
Gruß
Andreas
-
Hallo!
Das ist natürlich ein Problem... allerdings lösbar.... und zwar gleich auf zwei Arten:
1. Man tauscht den Mega8 gegen einen Mega88. Der ist pinkompatibel, hat aber PCI (Pin Change Interrupt) an jedem Pin. Wenn du PCI nur an einem Pin (da wo das RC-Signal ankommt) aktivierst, kannst du dir die Abfrage des PCI-Pins sparen (es gibt ja nur einen, der enabled ist) und den Output-Pin entsprechend schalten.
Siehe dazu mal ins Datenblatt vom Mega88.
2. Du "missbrauchst" den Analog-Comparator. An den negativen Pin (AIN1) legst du Vcc/2 an (mit nem einfachen Widerstandsteiler). An AIN0 kommt das RC/Signal vom Empfänger. Jetzt einfach den Interrupt für den Analog-Comparator auf "Change" stellen und einsprechend dem ACO-bit den Output-Pin auf high oder low setzen.
Und fertig ist das ganze. ICh würde allerdings Lösung 1 bevorzugen und zwar aus drei Gründen:
1. Der Mega88 kann bis zu 20MHz, ist also ca 25% schneller als der Mega8.
2. Er hat mehr "fraetures" (z.B. o.g. PCI).
3. Ist ohne Software-/Hardwareänderung durch den Mega168 ersetzbar, der doppelt so viel Flash-Memory hat.
-
Hallo Schokohoernl,
beide Varianten hören sich gut an....sind für mich aber Software- und Hardwareseitig absolutes Neuland. Bin aber neugierig auf beide Versionen. Werde also schaun wie ich schnell einen Mega88 ranbekomme, und ein Experimentierboard mit Spannungsteiler und Mega 8 aufbauen, danach werde ich aber bestimmt noch ein bißchen hilfe brauchen. Danke für die Tipps.
Gruß
Andreas
-
Hallo Schokohoernl,
beide Varianten hören sich gut an....sind für mich aber Software- und Hardwareseitig absolutes Neuland. Bin aber neugierig auf beide Versionen. Werde also schaun wie ich schnell einen Mega88 ranbekomme, und ein Experimentierboard mit Spannungsteiler und Mega 8 aufbauen, danach werde ich aber bestimmt noch ein bißchen hilfe brauchen. Danke für die Tipps.
Gruß
Andreas
-
och... das ganze ist halb so wild. Für den Analog-Comparator gibt es in BASCOM fertige Routinen (schau in der Hilfe bai "Config ACI"). Und für den PCI gibts nen Beispiel im "Samples" Ordner (PCINT_CHANGE.bas)
MfG
Schoko