Forum: Mikrocontroller und Digitale Elektronik ATMEGA8: UART & Timer1 stören sich?


von Karel M. (marsalek)


Lesenswert?

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

von Andreas V. (tico)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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.

von P. S. (Gast)


Lesenswert?

Ich wuerde mal Zeile 23 auskommentieren.

von Karel M. (marsalek)


Lesenswert?

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