Hallo,
Ich hab noch ein kleines Problem in meiner Software. Und zwar will ich 4Bytes über UART empfangen und dann Motoren nach den Werten ausrichten. Ich hab das jetzt so gelöst:
Code:
uartin:
in srsr, sreg
cbi UCSRB, RXCIE
in newpan, UDR
tiltin:
sbis UCSRA, RXC
rjmp tiltin
in newtilt, UDR
lsr newtilt
geschw:
sbis UCSRA, RXC
rjmp geschw
in tempo, UDR
ledhell:
sbis UCSRA, RXC
rjmp ledhell
in led, UDR
lsr led
ldi temp, (1<<WGM12) | (1<<CS10)
out TCCR1B, temp
ldi temp, (1<<OCIE1A) | (1<<TOIE0)
out TIMSK, temp
out sreg, srsr
reti
Es wird also beim 1. Byte ein Interrupt ausgelöst, dann werden die nächsten Bytes über sbis abgewartet. Das klappt soweit auch ganz gut. Das Problem besteht darin, dass Ich den Interrupt ausschalte und erst nach dem stellen der Motoren wieder anschalte. Wenn nun also in dem Tier Interrup, der die Motoren stellt, ein Byte gesendet wird, wird dieses ignoriert, dafür wird dann aber eins der nächsten Byte anstelle des ersten genommen, somit kommt alles durcheinander. Könnt Ihr mir da helfen?
griß, homedom
Lesezeichen