SPI über 6Pol ISP Pin Atmega 88-->Atmega64

Gast #3641183
Lesenswert?

Hallo,

Hoffe hier kann mir einer einen Tipp geben. Wenn nicht dient es auch zur 
Sammlung meiner Gedanken.  :-)

Ich habe hier mehrere Platinen mit dem Standard ISP-6Pin Port.

Nun soll sich doch noch der Atmega88 (Master) im ersten Schritt mit dem 
Atmega64 unterhalten.

Da ich ja dort schon den 6Pol Anschluss dran habe dachte ich an SPI.

Steht ja auch überall Three-Wire-Interface.

Der Master sendet auch schon fleißig alle 100msek 16 Bytes über den Bus.
Hierfür musste ich schon den SS auf high ziehen. Also schon 3Wire + 
1Pin...
Läuft aber :-)

 Der Slave SPI Interrrupt geht auch. Im datenregister stehen aber immer 
nur Nullen. Habe jetzt den Slave SS mit einer Kupferlackdrahtbrücke auf 
GND gezogen kommen aber immer nur Nullen aus dem Data-Register.

Brauche ich wirklich die SS(CS) Verbindung zwischen Master und Slave?
Also reichen SCK, MISO und MOSI vom ISP-Port nicht aus?

Muss evtl der Takt des Slave an den Mastertakt 'grob' angepasst werden?
(Habe hier einen Beitrag dazu gelesen, wobei Atmel ja schreibt das die 
dafür verantwortlichen Bits beim Slave keinen Effekt haben)

Darf ich den SPI Interrupt überhaupt die ganze Zeit anlassen? Auch in 
der Pause wo der Master keinen Clock ausgibt, oder verhaspelt sich da 
evtl etwas?

Gruß
Ert
#3641225
Lesenswert?

Ert schrieb:
> Hallo,
>
> Hoffe hier kann mir einer einen Tipp geben. Wenn nicht dient es auch zur
> Sammlung meiner Gedanken.  :-)
>
> Ich habe hier mehrere Platinen mit dem Standard ISP-6Pin Port.
ok
> Nun soll sich doch noch der Atmega88 (Master) im ersten Schritt mit dem
> Atmega64 unterhalten.
>
> Da ich ja dort schon den 6Pol Anschluss dran habe dachte ich an SPI.
du willst zwei Platinen mit Hilfe der ISP-Stecker verbinden?!

> Steht ja auch überall Three-Wire-Interface.
>
> Der Master sendet auch schon fleißig alle 100msek 16 Bytes über den Bus.
> Hierfür musste ich schon den SS auf high ziehen.
am Master musst du SS als Ausgang einstellen! Als Eingang und dann von 
aussen L-Pegel schaltet das SPI automatisch in den Slave-Modus!

> Also schon 3Wire +
> 1Pin...
> Läuft aber :-)
>
>  Der Slave SPI Interrrupt geht auch. Im datenregister stehen aber immer
> nur Nullen. Habe jetzt den Slave SS mit einer Kupferlackdrahtbrücke auf
> GND gezogen kommen aber immer nur Nullen aus dem Data-Register.
sollte eigentlich gehen

> Brauche ich wirklich die SS(CS) Verbindung zwischen Master und Slave?
> Also reichen SCK, MISO und MOSI vom ISP-Port nicht aus?
ohne SS hast du keine Syncronisation zwischen Master und Slave, d.h. der 
Slave weis nicht wo ein gesendetes Byte vom Master anfängt. Der Slave 
gibt dir nur brav alle 8-SCK-Takte ein Byte zurück.

> Muss evtl der Takt des Slave an den Mastertakt 'grob' angepasst werden?
> (Habe hier einen Beitrag dazu gelesen, wobei Atmel ja schreibt das die
> dafür verantwortlichen Bits beim Slave keinen Effekt haben)
damit stellst du am Master erst mal grundsätzlich die 
Übertragungsgeschwindigkeit ein, der Slave bekommt seinen Takt ja über 
SCK vom Master

> Darf ich den SPI Interrupt überhaupt die ganze Zeit anlassen? Auch in
> der Pause wo der Master keinen Clock ausgibt, oder verhaspelt sich da
> evtl etwas?
kannst du immer anlassen das ist kein Problem, aber ohne SS müsstest du 
dir schon was ala Timeout einfallen lassen damit sich schon mal von 
Anfang an nichts 'verhaspelt'.

Sascha

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