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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.