semicolon
22.06.2007, 22:06
Hardware: ATmega162
Ich habe mal generell eine Frage zur /SS Leitung. Ist sie bei logisch 1 auf LOW oder eben umgekehrt?
Dann noch was. Ich verbinde zwei ATmega's via SPI miteinander. Das funktionier soweit auch gut ausser, dass ich den ersten Wert, der vom Slave an den Master gehen sollte, nicht der ist, denn ich eigentlich erwarte.
Nun habe ich in mal gelesen, dass der Slave solange warten muss mit dem befüllen seines SPDR, bis der Master die /SS Leitung auf 1 gezogen hat. Stimmt das?
Ich habe dieses Problem folgendermassen. Ich schreibe via SPI vom Master 16 Charakters die ich im Slave empfang und in ein Array ablege. Das ganze läuft ohne Interrupt. Diese 16 Zeichen bearbeite ich im Slave und gebe dem Master via externern Interrupt ein Zeichen, dass der Slave fertig ist und parat für die Übermittung wäre.
Nun lege ich den ersten Wert meines Arrays beim Slave ins SPDR Register . Der Master seinerseits sendet 0x00 und liest das erhaltene Byte aus. Leider ist es nicht das, was es sein sollte, sondern noch das letzt Byte von der Übermittlung Maser -> Slave.
Weshalb kann ich nicht ins SPDR schreiben??
Danke für eure Hilfe
Ich habe mal generell eine Frage zur /SS Leitung. Ist sie bei logisch 1 auf LOW oder eben umgekehrt?
Dann noch was. Ich verbinde zwei ATmega's via SPI miteinander. Das funktionier soweit auch gut ausser, dass ich den ersten Wert, der vom Slave an den Master gehen sollte, nicht der ist, denn ich eigentlich erwarte.
Nun habe ich in mal gelesen, dass der Slave solange warten muss mit dem befüllen seines SPDR, bis der Master die /SS Leitung auf 1 gezogen hat. Stimmt das?
Ich habe dieses Problem folgendermassen. Ich schreibe via SPI vom Master 16 Charakters die ich im Slave empfang und in ein Array ablege. Das ganze läuft ohne Interrupt. Diese 16 Zeichen bearbeite ich im Slave und gebe dem Master via externern Interrupt ein Zeichen, dass der Slave fertig ist und parat für die Übermittung wäre.
Nun lege ich den ersten Wert meines Arrays beim Slave ins SPDR Register . Der Master seinerseits sendet 0x00 und liest das erhaltene Byte aus. Leider ist es nicht das, was es sein sollte, sondern noch das letzt Byte von der Übermittlung Maser -> Slave.
Weshalb kann ich nicht ins SPDR schreiben??
Danke für eure Hilfe