RoboterCC - Robotic Code Compiler
Forum Robot Kits NIBO burger Vorlage für Burger in Atmel Studio 7 mit Timer-int

Welcome

Nachrichten

Sie sind nicht eingeloggt.

Werbung

Banner

Letzte Themen

  • Keine Beiträge vorhanden

Site-Statistic

  • 7430 private projects
  • 378 public projects
  • 16178470 lines compiled
  • 58188 builds
NIBO @ facebook YouTube Twitter
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
  • Seite:
  • 1

THEMA: Vorlage für Burger in Atmel Studio 7 mit Timer-int

Vorlage für Burger in Atmel Studio 7 mit Timer-int 4 Jahre 11 Monate her #4395

  • boson
  • bosons Avatar
  • OFFLINE
  • Senior Boarder
  • Beiträge: 38
Hier eine Vorlage für das Atmel Studio 7 für ATMega 1284P mit 20MHz
(läßt sich auf andere µC und gescvhwindigkeiten anpassen)

Besonderheiten:

- Timerinterrupt gesteuerte Aufrufe
- Bedingte Kompilierung und damit Wahl verschiedener Addons wie z.B. Bee Blue und Maroon in einem Projekt.
- Erweiterung der usart Routinen
- Offset der Abstandsensoren nach einer Idee von George


Timmerinterrupt:

Mit Hilfe eines Timerinterrups können Sensoren in bestimmten Zyklen aufgerufen werden. Das macht besonders Sinn, wenn man eine hohe Taktrate hat, da reicht es vollkommen den Eventhandler oder einen anderen Sensor alle 10ms Aufzurufen. Ausgaben von Text z.B. über Bee Blue auf ein Terminalprogramm können noch seltener gemacht werden, da USART Übertragungen sehr lange dauern. Außerdem können viele Delays entfallen, da z.B. beim Blinken einer LED micht 1s gewartet wird, sondern die LED nur jede Sekunde getoggelt wird. Für 10ms 100ms 1s 10s gibt es Routinen in der Mainloop in denen dann die gewünschten Routinen aufgeruden werden können. Ich habe hier den Timer2 gewählt um es zu anderen µC compatibel zu halten. Durch den 8Bit Timer ist aber die ms nicht sehr genau. wer es genauer will muss einen 16Bit Timer wählen. Timer3 des ATMega1284P bieter das. Den gibt es beim ATMega16 aber nicht!

Bedingte Kompilierung:
Heufig kommt es vor, dass man Verbesserungen an einem Programm und den Includes vornimmt. Möchte ich aber verschiedene Dinge tun, die sich gegenseitig vielleicht sogar ausschließen ist es ärgelich alle gemachten Änderungen in ein anderes Projekt zu übertragen. Wie zum Beispiel Maroon Shield und Bee Blue, die sich schon wegen der Hardware außschließen. Nutze ich aber bedingte Kompilierung wird nur der gewünschte Code compiliert. Dazu gibt es eine neue Include die config.h hier wähle ich aus was compiliert werden soll:

#define ENABLE_BEE_BLUE 1
#define BLUE_HIGHSPEED 1
#define ENABLE_MAROON_SHIELD 0

die 1 oder 0 wählt das gewünschte aus. Hier Bee Blue auf 57600 Baud. Im Code sieht das dann so aus:

#if ENABLE_MAROON_SHIELD == 1
...
maroon_setup();
...
#endif

Man muß das in diesem Fall, für alle in der main.c befindliche Prozeduraufrufe des Maroon Shields machen. Würde Maroon aus einer anderen File aufgerufen auch dort. In der maroon.c selbst muss das nicht gemacht werden. Der Compiler ist selbst so schlau nicht verwendeten Code wegzulassen.

Erweiterung der usart Routinen
ich habe in der usart noch die folgenden Routinen eingefügt:

void usart_send_string(char *);
void usart_send_line(char *);
void usart_send_hexnumber(uint8_t hex, uint8_t upper);

Damit ist es möglich ganze Texte auszugeben. Aber Vorsicht! nicht die Länge übertreiben. Mehr wie 10 Zeichen funktionieren meist nicht. Hexnumber gibt Zahlen im Hexformat aus. Je nach "upper" klein- oder großgeschrieben. In der Main befinden sich ein paar Beispiele.

Offset der Abstandsensoren nach einer Idee von George
Bei mir gab es das Problem, dass einige Absandssensoren empfindlicher als andere waren. Einer sogar so, dass er durch die LED des Nachbarsensors dauerd auslöste. Das konnte ich mit Schrumpfschläuchen um die LEDs beheben. Aber trotzdem verhielt sich der Burger anders bei rechten Hindernissen als bei linken. Durch eine Routine von George wird der Analog Offset immer abgezogen. Damit reagiert der Burger gleich.- Danke George
:thumb:

Ich stelle eine Vorlage in den Anhang. Aber es kann manchmal zu Problemen kommen. Bei einem Aufruf einer eigen Vorlage wurden mir auf einmal Fehler in der Makefile angezeigt. Bei einer neu erstellten Vorlage des gleichen Projekts nicht mehr. Warum ATMEL Studio 7 das manchmal so macht keine Ahnung. Ich habe die Vorlagen in meinem System getestet. Es gab keine Probleme - auf meinem System!

Gruß Boson
Anhang:
Der Administrator hat öffentliche Schreibrechte deaktiviert.
  • Seite:
  • 1
Ladezeit der Seite: 0.038 Sekunden

Werbung