Forum: Mikrocontroller und Digitale Elektronik SPI und Taktrate


von Gerhard Paulus (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe versucht, mit SPI zwei AVR zu verbinden. Mittlerweile klappt 
das auch (die sourcen master.asm und slave.asm sind beigefügt).

Was ich aber nicht verstehe ist, das das ganze nur richtig funktioniert, 
wenn beide AVR's mit der gleichen Frequenz getaktet sind (also gleicher 
Quarz). Warum geht das nicht, wenn die beiden AVR's mit unterschiedliche 
Quarz-Frequenzen  arbeiten ?

Ich hatte bei der Testschaltung den Master-AVR in einem STK500 und nutze 
dort die ca. 3,8 MHz, die intern vom STK generiert werden. Den Slave-AVR 
hatte ich auf einem Steckbrett, und der wurde von einem Quarz mit exakt 
4 MHz getaktet. Die Software läuft so, das der Master ein Byte an den 
Slave schickt, der sich dann seinerseits temporär zum Master macht, auch 
ein Byte übertragt und dann wieder zum Slave wird. Dieses Byte wurde 
aber in vielen Fällen nicht richtig übertragen. Erst als ich die 
Schaltung geändert habe,  das der Slave-AVR auch vom STK500 aus getaktet 
wird (vom XTAL2 pin aus), ging es dann fehlerfrei.

Ich hatte SPI so verstanden, daß der jeweilige Master einen Takt für die 
serielle Datenübertragung vorgibt und daß der jeweilige Slave sich daran 
orientiert. Bit 0 und 1 in Register SPCR bleiben auf 0, das heißt die 
serielle Taktfrequenz ist ein viertel der Prozessor-Frequenz.

OK, die Erläuterungen im Datenblatt des AT90S4433 zum Thema SPI fand ich 
so informativ wie ein Steuererklärungsformular und ich bin jetzt  erst 
mal froh, daß es überhaupt funktioniert. Aber daß beide AVR's mit dem 
gleichen Quarz getaktet werden müssen, das geht mit nicht in den Kopf 
...

Danke,
Gerhard

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.