-
-
Moderator
Robotik Visionär
Hallo
"In richtigen PC Programmen ... war das ja keine Hürde,.." ..weil der PC ein Betriebssystem besitzt das im Hintergrund mitarbeitet.
Ein AVR hat das natürlich nicht, deshalb muß man sich um die Organisation des Programmablaufs selbst kümmern. Basis ist die Hauptschleife. In ihr wird zyklisch alles erledigt was nicht zeitkritisch ist und jederzeit unterbrochen werden kann. Das sind z.B. Anzeigen, Textausgaben, Einlesen von Pufferspeichern, größere Berechnungen usw. Wichtig ist, dass man in der Hauptschleife keine blockierenden Funktionen verwendet, gegebenfalls muss man die Abarbeitung von größeren Aufgaben auf mehrere Zyklen verteilen. Die Zykluszeit sollte so kurz wie möglich sein.
Gleichzeitig (wirklich gleichzeitig!) kann ein AVR mit seiner Hardware asynocron zur Hauptschleife arbeiten. Z.B. kann er per Hardware-PWM Ausgänge schalten oder serielle Daten einlesen und ausgeben (USART, SPI, TWI...), AD wandeln oder Gleichspannungen vergleichen. Diese Funktionen werden meist einmalig angestoßen und laufen dann im Hintergrund quasi als Hardwareprogramme (in den AVR eingebaut) weiter.
Wenn für schnelle Vorgänge die Zykluszeit der Hautptschleife zu lange dauert, kann man die Hauptschleife mittels Interrupts kurzzeitig unterbrechen und in die Abarbeitung einer Interruptanforderung verzweigen. Auch hierbei muss man auf möglichst kurze Abarbeitungszeiten achten. Beispiele sind Flankenerkennungen von Gebersignalen, gepufferte serielle Kommunikation, Tastenabfrage, Timer- und Counterfunktionen oder AD-Wandeln. Die Kommunikation zwischen ISR und Hauptschleife geschied über Flags.
Wie man das umsetzen kann zeigt die Library des RP6. Sie besteht aus einer Sammlung von Tasks für die verschiedenen Komponenten des Roboters. Damit wird eine Art von kooperativem Multitasking ausgeführt (natürlich ist es beim AVR kein echtes Multitasking) bei dem sich die einzelnen Tasks nach der Abarbeitung ihrer Aufgabe freiwillig beenden.
https://www.roboternetz.de/community...king-für-asuro
https://www.roboternetz.de/community...-quot-beim-RP6
RP6-Anleitung: http://arexx.com/rp6/downloads/RP6_M...E_20071219.zip (Ab Seite 78)
RP6-Library: http://arexx.com/rp6/downloads/RP6Examples_20080915.zip
Gruß
mic
P.S.:
Zustandsmaschine (statemashine): https://www.roboternetz.de/community...-macht-Ihr-das
Geändert von radbruch (06.01.2012 um 12:09 Uhr)
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen