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