Hallo, ich habe einen ATMega32 der über SPI ein Display ansteuert. Wenn ich vor der Übertragung ein CLI() und danach ein SEI() setze geht es auch gut. Wenn ich aber die interrupts aktiv lasse (Timer und Seriell) dann wird teilweise Unsinn versendet. Der Nachteil von CLI() ist, dass wenn Bytes auf der Seriellen Schnittstelle (Rx) empfangen werden, überschreibt das zweite Byte das erste wenn beim Empfang des ersten Bytes gerade eine SPI Botschaft versendet wird. Wieso stört der Sprung in die ISR überhaupt das versenden eines einzelnen Bytes das bereits im SPDR liegt??
Hallo, Fred schrieb: > Wenn ich aber die interrupts aktiv lasse (Timer und Seriell) dann wird > teilweise Unsinn versendet. Dann solltest Du Deinen Programmfehler suchen. > Der Nachteil von CLI() ist, dass wenn Bytes auf der Seriellen > Schnittstelle (Rx) empfangen werden, überschreibt das zweite Byte das > erste wenn beim Empfang des ersten Bytes gerade eine SPI Botschaft > versendet wird. Naja, wenn Du auch mit 115,2kBaud UART machst und der SPI nur mit 1kHz läuft kann das schonmal passieren... > Wieso stört der Sprung in die ISR überhaupt das versenden eines > einzelnen Bytes das bereits im SPDR liegt?? Er stört definitiv nicht. Rest wurde ja schon geschrieben... Gruß aus Berlin Michael
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.