Hi! Ich stehe vor einem kleinem Modellbau-Projekt. An einen ARM Cortex M3 (mbed), der Fluglagen und vieles mehr berechnet, soll ein AVR vorgelagert werden, der sich um die Servo-Signal Ein- und Ausgabe kümmert. Problem ist nämlich das Timing. Wenn der ARM noch Sensoren ausliest, kann er gleichzeitig schlecht nebenbei noch auf Empfängerimpulse warten und Servodaten ausgeben. Der AVR soll mit UART an den ARM angeschlossen werden. Einlesen sollte mit Port Change Interrupt gehen. Ausgabe mit Hardware-PWM, um nicht das Timing durch Kommunikation oder anderes zu verfälschen. Der AVR liest also ein, gibt auf Befehl die aktuellen Werte weiter, bekommt Stellwerte und gibt entsprechend wieder aus. Das ganze soll ein Modul werden, dass ich auch bei anderen Projekten benutzen kann. Weitere Anforderungen sind: - 3.3V Spannungsversorgung - Noch lötbar. TQFP ist noch möglich. - So zwischen 20-30 Pins, mehr wird fast zu groß. - Hardware-PWM für 8 Pins, Auflösung ca. 7 Bit. Welcher AVR kommt hier in Frage?
Atrigos schrieb: > - Hardware-PWM für 8 Pins, Auflösung ca. 7 Bit. Eine HW-PWM reicht. > Welcher AVR kommt hier in Frage? so ziemlich jeder, der die benötigte Anzahl an Pins hat.
Karl Heinz Buchegger schrieb: > Eine HW-PWM reicht. Ich dachte, die HW-PWM sind an ganz bestimmte Pins gebunden. Bei den gänigegen kleineren 8-Bit sind das doch meist nur 2-4 Pins. Oder irre ich mich etwa?
Atrigos schrieb: > Karl Heinz Buchegger schrieb: >> Eine HW-PWM reicht. > > Ich dachte, die HW-PWM sind an ganz bestimmte Pins gebunden. Bei den > gänigegen kleineren 8-Bit sind das doch meist nur 2-4 Pins. > Oder irre ich mich etwa? Man kann ein Dutzend Servosignale problemlos mit 1 Timer erzeugen. Dazu braucht man noch nicht einmal HW-PWM (so gesehen hab ich eine falsche Angabe gemacht). Per Software mit einem Compare-Match im Timer ist das für den AVR ein Kinderspiel. Modellbauservo Ansteuerung
Modellbau Servos erwarte Impulse mit 1-2ms Dauer alle 20ms. Daher kannst Du locker 5 Servos mit nur einem einzigen Teimer ansprechen, und zwar immer abwechselnd (quais gemultiplext). Da die Timer des AVR zwei Compare Register haben, kannst Du sogar 10 PWM Ausgänge mit nur einem Timer realisieren. Der Trick besteht darin, die nicht PWM Ausgänge der Timer zu verwenden, sondern die Compare- und Overflow Interrupts. In der Interrupt-Routine stellst Du dann die 10 Ausgänge um... Konkretes Beispiel: http://stefanfrings.de/servocontroller/index.html Dieses Programm wird per I2C angesteuert, Du kannst es sicher leicht auf UART umschreiben.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.