Forum: Mikrocontroller und Digitale Elektronik mega1281 SPI hängt


von Gerhard (Gast)


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

von holger (Gast)


Lesenswert?

in    B, SPSR

von Gerhard (Gast)


Lesenswert?

Aaaarrrrrrgh!

Danke. Erstaunlich, wie man nach Stunden des Rumprobierens das 
Offensichtliche nicht mehr erkennt.

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
Noch kein Account? Hier anmelden.