mikrocontroller.net

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


Autor: Karel Marsalek (marsalek)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Vogt (tico)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich wuerde mal Zeile 23 auskommentieren.

Autor: Karel Marsalek (marsalek)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.