Forum: Mikrocontroller und Digitale Elektronik ATmega162: kein Interrupt beim setzen von Bit TXC


von Manfred (Gast)


Lesenswert?

Hallo,

ich schreibe zur Zeit ein Programm in Assembler für den ATmega162, 
welches die serielle Schnittstelle benutzen soll.
Als Entwicklungsumgebung verwende ich VMLab, das AVRStudio bei der 
Simulation keine serielle Schnittstelle unterstützt.
Ich bahe folgendes Problem. Der globale Interrupt (I in SREG) und der 
Interrupt für die komplette Übertragung (TXCIE1 in UCSR1B) sind 
freigegeben, d. h. das entsprechende Bit ist gesetzt. Wenn ich nun mit 
folgender Anweisung das Bit für die komplette Übertragung (TXC1 in 
UCSR1A) gesetzt wird, wird kein Interrupt ausgelöst.

    sbi  UCSR1A,TXC1

In VMLab wird das Bit aber auch nicht gesetzt und es läßt sich das 
Register UCSR1A auch nicht verändern.
Weiß jemand wo mein Fehler liegt.

Gruß

Manfred

von Johannes M. (johnny-m)


Lesenswert?

Interrupt Flags kann man nicht von Hand setzen!

Schau Dir im Datenblatt bitte mal die entsprechenden Abschnitte an 
(steht in der Beschreibung des jeweiligen Registers bzw. Flags). Das 
Schreiben einer 1 in ein Interrupt-Flag löscht das Flag, wenn es 
vorher gesetzt war. Eine 0 hat keinen Effekt.

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.