mega1281 SPI hängt

Gast #1423977
Lesenswert?

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).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren