mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI und Taktrate


Autor: Gerhard Paulus (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.