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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.