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-
Gast
#261459
Deinen code nicht vergessen anzuhaengen !
hier der quellcode, warscheinlich nur schrott
Gast
#261461
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.
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??
Gast
#261463
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.
Gast
#261464
Nachzulesen unter : http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Programmieren_mit_Interrupts Topic "Datenaustausch mit Interrupt-Routinen"