ATMEGA8: UART & Timer1 stören sich?

OP #1144937
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
#1144963
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
#1144966
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.
OP #1146188
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.