Liebe Kollegen, die einzige Aufgabe meines ATMega8 war das Kommunizieren über UART mit einem Handy (9600 b/s). UART wird dabei per Interrupt bedient. Alles funktioniert prima. Seitdem ich den Timer 1 aktiviert habe, läuft die Kommunikation nicht mehr. Im Moment weiss ich nichts genaueres ausser der Prozessor erkennt die bisher verständlichen Daten vom Handy. Die Timer-ISR zählt nur die Overflows und setzt bestimmte Flags - also eine kurze und triviale Aufgabe. Es werden keine anderen Peripherien oder Interrupts mehr benutzt. Soll ich am Anfang und Ende der UART Interrupts asm("cli")/asm("sei") setzen, oder ist es nicht so einfach? Danke Karel
Wenn man den ATmega8 in geeigneter Weise beschaltet, bekommt man sicher auch eine Störung des UART durch den Timer1-Output hin. Aber generell existiert so ein Einfluss natürlich nicht. > Soll ich am Anfang und Ende der UART Interrupts asm("cli")/asm("sei") > setzen, oder ist es nicht so einfach? Das hilft nicht, solange Du innerhalb eines Interrupts bist, habe alle anderen Interrupts sowieso Pause. Folglich hast Du vermutlich einen Fehler in Deinem Timer-Interrupt, der den UART aus dem Tritt bringt. Gruss Andreas
Karel Marsalek wrote: > Soll ich am Anfang und Ende der UART Interrupts asm("cli")/asm("sei") > setzen, oder ist es nicht so einfach? mit einem cli/sei innerhalb einer Interruptfunktion machst du alles nur noch schlimmer. Der Prozessor sperrt selber die Interrupts wenn eine ISR loslegt und die ISR hat am Ende vom Compiler ein reti verpasst bekommen, der die Interrupts wieder freigibt. Also einfach aus dieser Steuerung raushalten und zumindest der Teil muss dir keine Sorgen machen.
Peter Stegemann wrote:
> Ich wuerde mal Zeile 23 auskommentieren.
Danke, Peter! Das war das!
Jetzt ernst:
Vielen Dank an euch allen, die Sache ist jetzt erledigt. Es lag nicht am
Prozessor selbst, sondern am Handy, mit dem der Prozessor kommuniziert.
Karel
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.