Ich habe das Problem, daß nach dem Senden eines Bytes das Statusflag
SPIF anscheinend niemals gesetzt wird. Kann jemand helfen?
Initialisierung:
1 | init_spi:
|
2 | ldi A, (1<<PB0)|(1<<PB1)|(1<<PB2)
|
3 | out DDRB, A
|
4 | out PORTB, A
|
5 | ldi A, (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPR1)|(1<<CPHA)
|
6 | out SPCR, A
|
Ein Byte mit dem Slave austauschen (zu sendende Daten vorher in A,
empfangene Daten nachher in A):
1 | .def A = r16
|
2 | .def B = r17
|
3 |
|
4 | spi_send:
|
5 | out SPDR, A
|
6 | spi_send_1:
|
7 | lds B, SPSR
|
8 | sbrs B, SPIF
|
9 | rjmp spi_send_1
|
10 | in A, SPDR
|
11 | ret
|
Leider scheint sich der µC in der inneren Schleife festzubeißen. Wenn
ich den Inhalt von B (r17) nach lds über den USART ausgebe, ist das
Register immer 0x00.
SS ist als Ausgang definiert und high (siehe Initialisierung).