PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Timer0 und UART Lib Fleury Timer läuft nicht mehr los



gesamtplan
19.03.2011, 16:25
Hallo zusammen,

ich habe ein Problem mit den Interrupts am ATMEGA644.

Folgendes tritt auf. Ich habe ein Programm geschrieben, wo der Timer0 läuft und im 1/10 Sekunden Takt ein paar andere Funktionen abfrägt.

Das funktioniert wunderbar. Da das Testboard, welches ich benutze auch mit MAX232 ausgestattet ist, wollte ich die UART Lib von Peter Fleury mitintegrieren um ein Display zu sparen und über COM-Schnittstelle zu debuggen.

Wenn ich die Integration durchführe, funktioniert die serielle Datenübertragung zwar, nur läuft mein Timer nicht mehr los und alle Funktionen, welche darüber gesteuert werden natürlich auch nicht mehr.

Hat jemand eine solche Problematik schon mal erlebt? Ich weiß nicht wo ich ansetzen soll. Bin etwas ratlos.

Viele Grüße

Rainer

steveLB
19.03.2011, 22:41
Ja, passiert oft. google nach : uart blockiert avr , oder so und wirst ein haufen Zeug finden, oder KBhit().
Dein Code wartet in der Schleife darauf das ein Zeichen empfangen wird, und zwar so lange bis ein Zeichen kommt. Kommt das Zeichen, so führt es die folgende Aktion aus und wartet dann weiter auf ein Zeichen. Damit blockiert es den Rest.
Lese von dem UART Speicher nur dann wenn auch was drin ist, sonst mach was anderes
probier mal so was :

if ( USCR1A & (1<<RXC) ) // oder wie dein USCR bei dir heißt, schau ins Datenblatt
{
// mache was , z.b.rufe getchar auf

}
else
{
// kann leer bleiben
}

// weiter mit deinem normalen Prog


kann aber auch sein, das die LIB von Peter auch deinen Timer nutzt oder ihn anders Initialisiert oder Interrupts abstellt, musst du alles Prüfen wenn du fremde Libs nutzt :)

gesamtplan
20.03.2011, 18:49
Danke für den Tip.

Ich werd mich dran machen eine Lösung zu finden.

Grüße und Danke

gesamtplan
21.03.2011, 18:23
So den Fehler gefunden. Es liegt an der Portbelegung des Boards, welches ich benutze. Legt man die LCD Ansteuerung auf die UART PINS tut sich nix mehr.

Hab mir zwar jetzt mit dem LCD die ganzen Analogeingänge zugemacht, doch dafür hab ich den CAN-Bus und RS232. Das dürfte reichen...

Grüße und Danke für den Anstoß

Rainer