SPI 5 Draht schnittstelle zwingend bei ATMega kommunikation?

Gast #575975
Lesenswert?

Hallo,

hab folgendes Problem: 2 ATMEga sollen miteinander ueber PSI 
kommunizieren. Es klappt aber der MAster empfaengt nach 6 bis 10 paketen 
vom Slave auch mal wieder sein eigen verschicktes. Von den Paketen die 
der Slave verschickt verlier ich keines. aber es mogeln sich eben diese 
Stoerpakete ein.

Aber mein Slave (ATMega 16 auf 16MHz) macht nichts anderes als das 
datenregister  SPDR neu zu beschreiben.
Der Master hingegen ist staerker beschaeftigt und versendet die 
empfangenen pakete ueber uart.

wo kann der fehler liegen?
Der SCK  Clock hab ich variiert und beeinflusst das ganze nicht 
wirklich. Sowohl bei schneller als auch langsamer taktung gibt es falsch 
pakete.

Mein gedanke: ich muss zwingend die 5 Draht variante aufbauen. Ist dem 
so?

Beitrag "Re: SPI: Master empfangen, Slave senden"

gruss
Patrick
#575979
Lesenswert?

Die AVRs haben leider keinen Sendepuffer.

Wenn der Slave nicht schnell genug das nächste Byte einstellen kann, 
wird einfach das Schieberegister zurückgesendet, also das gerade 
empfangene Byte.

Man braucht also nen 5. Draht, um dem Master zu sagen, daß er nun das 
nächste Byte abholen kann.


Peter
Gast #576051
Lesenswert?

Der Master macht den SCK. Dabei wird das eigene Register hinausgeschoben 
und ein externes Register wird reingeschoben. Nun muessen die externen 
Register gefuellt sein, sonst ist nichts. Dabei ist zu beachten, dass 
der Master den SCK hoeher (im Verhaeltnis zum CLK) clocken kann als der 
Slave. Wenn der externe Slave keine unendlich schnelle Statusmaschine 
ist (FPGA), sollte in der Tat ein zusaetzliches Signal verwendet werden.

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