Forum: Mikrocontroller und Digitale Elektronik Zeichenketten empfangen


von Karsten L. (kongs)


Lesenswert?

Hallo zusammen!

Ich habe ein STK 500 Board mit einem  At90s8515 drauf. Ich möchte über
Uart Zeichenketten einlesen und je nach Befehl soll was ausgeführt
werden. z.b wenn ich im Terminal "LED1 an" soll er eine beliebige led
einschalten. Ich habe versucht zeichenketten mit getchar, getstring und
strcmp und co einzulesen und auszuwerten aber dies klappt nicht. Kann
mir da jemand weiterhelfen? Ich habe schon hier in den Foren gesucht
aber leider nix gefunden-

von The Daz (Gast)


Lesenswert?

Deinen code nicht vergessen anzuhaengen !

von Karsten L. (kongs)


Angehängte Dateien:

Lesenswert?

hier der quellcode, warscheinlich nur schrott

von The Daz (Gast)


Lesenswert?

Karsten, fang mal erstmal an saemtliche globalen Variablen, die von der
interrupt Routine modifiziert werden, als volatile zu deklarieren.
Ansonsten kommt der compiler auf die Idee, die Dinger wegzuoptimieren.

von Karsten L. (kongs)


Lesenswert?

jau danke jetzt klappt der Vergleich:). Was hat das auf sich mit
volatile?? Heißt das wenn ich kein volatile benutze der compiler die
globalen Variabeln irgendwo zuordnet? Sollte ich generell volatile für
globale Variabeln nutzen??

von The Daz (Gast)


Lesenswert?

volatile sagt dem compiler, die variable kann ausserhalb des normalen
Programmablaufs modifiziert werden. Der Compiler muss dann saemtliche
Optimierungen des Zugriffs auf diese Variable unterlassen. Wenn du die
Variable auf 0 initialisierst und im main dann auf != 0 checkst
optimiert der compiler normalerweise das ganze Konstrukt weg, weil das
Hauptprogramm die Variable nicht modifiziert, und die komische Routine
mit dem Namen interrupt() wird ja seiner Meinung nach garnicht
aufgerufen. Mit volatile gewoehnst du ihm das ab.

von The Daz (Gast)


Lesenswert?

Nachzulesen unter :

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Programmieren_mit_Interrupts

Topic "Datenaustausch mit Interrupt-Routinen"

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
Noch kein Account? Hier anmelden.