UART Phänomen

Gast #160167
Lesenswert?
• ▲
▼
Hallo,

mir ist gerade etwas bei der Nutzung des UART und gleichzeitiger
Nutzung von Interrupts aufgefallen, vielleicht könnte mir das
irgendjemand hier bestätigen bzw. einen Alternativen Workaround
vorschlagen:
Ich nutze den UART und übertrage in einer Endlosschleife eine
Zeichenkette (Routinen von Peter Fleury). Wenn ich nun einen Beep
(5000Hz über Ausgang an Piezo) mit einem Timer0 Interrupt erzeuge stopt
der UART plötzlich, also der Text wird nicht mehr übertragen.
Wenn ich nun allerdings den UART auf der Computerseite oder auf der uC
Seite neu initialisiere läuft wieder alles.

Ich benutze einen ATMega8, der Piezo wird mit Timer0 gesteuert und der
Interrupt wird etwa 10000 mal pro Sek aufgerufen (für 5000Hz).

Wie schon erwähnt, ist meine Lösung, den UART dann nach jedem
Beep-Komando (das den Timer-Interrupt initialisiert) einfach den UART
neu zu initialisieren. Aber das finde ich ist eine unsaubere Lösung;
geht das nicht noch anders?

Vielen Dank,

Daniel
Gast #160171
Lesenswert?
• ▲
▼
Ich würde trotzdem erstmal den Fehler suchen.

Fehler, die man nicht gleich sucht, fallen einem später wieder auf die
Füße.


Ohne Deine komplette Software zu kennen, kann man aber nichts genaues
dazu sagen.


Peter
Gast #160172
Lesenswert?
• ▲
▼
Also hier im Anhang hab ich meinen kompletten Source.
Die erwähnten Stellen sind in der main()-Fkt. ganz am Ende. Der Beep
wird in der beep() Fkt. initialisiert und der Port wird dann in der
Interrupt-Routine getriggert.
Ich hoffe der Source ist einigermaßen klar geschrieben.

Danke für's Drüberschauen!

Daniel
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren