SPI Übertragung bei mehreren Zeichen fehlerhaft

Gast #537615
Lesenswert?

Hallo!

Ich möchte in einem zyklisch wiederauftretenden Zeitraum mehrere Zeichen 
von einem Mega8 zu einem anderen übersenden.
Probiere schon ewig herum, es funktioniert auch soweit ich nicht zu 
viele Zeichen übersende.
Wenn es mehr als 3 sind werden die ersten 3 Zeichen beim ersten zyklus 
übersendet und die anderen, dann wenn der nächste zyklus anfängt.
Desweiteren werden einige davon verschluckt.
Somit fehlen mir von dem 2. Zyklus die Zeichen und die von ersten sind 
nicht komplett.
Es müsste doch möglich sein mehr als 3 Zeichen aufs mal zu übertragen, 
hab mal den Quellcode angehängt, vielleicht kann mir ja Jemand helfen!

Im Code werden die 3 Zeichen 3 mal gesendet solagne der PinD 7 aktiv ist 
empfangen wird aber  "a b b c a b b b c" auch nur wenn der PIND7 mal 
aktiv war.
Besten Dank!

Benjamin
Angehängte Dateien:
Gast #537630
Lesenswert?

Nun, ich vermute mal, es liegt daran, dass der Master ja nicht weiß, ob 
der Slave das empfangene Zeichen überhaupt schon verarbeiten konnte und 
einfach drauflos sendet. Wenn Du jedes Mal ein empfangenes Zeichen 
sofort ausgibst, und während der Ausgabe ein neues Zeichen eintrifft, 
dann geht das verloren. Du solltest das Empfangen im Slave am besten 
Interrupt-gesteuert machen und einen Empfangspuffer anlegen.
Gast #537704
Lesenswert?

>Im Code werden die 3 Zeichen 3 mal gesendet solagne der PinD 7 aktiv ist
>empfangen wird aber  "a b b c a b b b c" auch nur wenn der PIND7 mal
>aktiv war.

neee eben nicht.

hier "while(!(PIND & (1<<PIND7)));" wartest du ja nur solange PIND7 = 0 
ist und verlässt beim wechsel auf 1 deine while. danach ist es egal was 
PIND7 macht.

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