Forum: Mikrocontroller und Digitale Elektronik SPI-Kommunikation ATMEGA16 - ATMEGA328P


von Florian K. (f-kae)


Angehängte Dateien:

Lesenswert?

Hallo,

um mich mit Kommunikationsmöglichkeiten zwischen Sensoren und µC 
einzuarbeiten habe ich versucht ein kleines Programm zu schreiben 
welches alle paar Sekunden einen Wert im ATMEGA16 verändert diesen über 
SPI an den ATMEGA328 sendet und dort daraufhin LEDs an- bzw ausschaltet.

Meine Kernfrage ist nun folgende:

Ich gebe mit dem Master (in meinem Fall der ATMEGA16 mit externem Oszi 
8MHz) meine Taktfrquenz vor (Prescale = 16 -> 500kHz).
Nun habe ich versucht die Standardfrequenz vom ATMEGA328P herauszufinden 
und glaube gefunden zu haben, dass diese 128kHz ist:
(http://atmega32-avr.com/Download/atmega328_datasheet.pdf - Seite 34)

Erst einmal bin ich mir nicht sicher ob dies zutrifft, da im "normalen" 
Datenblatt nichts zur Taktrate steht, zumindest konnte ich es nicht 
finden.
(http://www.atmel.com/Images/8271s.pdf) und zum anderen kann so 
vermutlich keine Kommunikation stattfinden, da die Taktrate vom 
ATMEGA328P ja kleiner ist als 500kHz. Muss der SLAVE eine 
Mindestanforderung der Taktrateerfüllen oder reicht theoretisch 500kHz 
als Taktrate für den Slave, wenn der Master mit 500kHz sendet?

Sollte jemand sogar noch ein paar Minuten mehr investieren und Feedback 
zu meinem Code geben können, wäre ich überglücklich :)

von Karl H. (kbuchegg)


Lesenswert?

Florian K. schrieb:

> Nun habe ich versucht die Standardfrequenz vom ATMEGA328P herauszufinden
> und glaube gefunden zu haben, dass diese 128kHz ist:
> (http://atmega32-avr.com/Download/atmega328_datasheet.pdf - Seite 34)

?
Alle AVR aus der Mega bzw. Tiny Serie werden so ausgeliefert, dass sie 
mit 1Mhz laufen. Immer? Immer!

Siehe Abschnitt 6.2.1 Default Clock Source



> meine Taktfrquenz vor (Prescale = 16 -> 500kHz).
Du musst ja nicht gleich Full Speed fahren.

von Florian K. (f-kae)


Lesenswert?

Oh ok vielen Dank für den Hinweis! Jetzt schäme ich mich ein wenig für 
die Frage.
Aber müsste ich diese Information nicht dennoch im Datenblatt finden?

von Karl H. (kbuchegg)


Lesenswert?

Florian K. schrieb:
> Oh ok vielen Dank für den Hinweis! Jetzt schäme ich mich ein wenig für
> die Frage.
> Aber müsste ich diese Information nicht dennoch im Datenblatt finden?

Siehe Abschnitt 6.2.1 Default Clock Source

von Florian K. (f-kae)


Lesenswert?

OK, ich sollte definitv mehr Zeit im Datenblatt lesen beanschlagen :/

Die Frage zur Kommunikation interessiert mich dennoch:
Wenn ich am Master auf 1MHz Übertragung schalte und der Slave ebenfalls 
mit 1MHz Taktrate läuft: Führt das zu Problemen, oder ist das absolut in 
Ordnung?

von Karl H. (kbuchegg)


Lesenswert?

Florian K. schrieb:
> Führt das zu Problemen, oder ist das absolut in
> Ordnung?

Und wieder stehst im Datenblatt. Diemsl allerdings nicht ganz so 
offensichtlich. In der Beschreibung vom Double Speed Flag findet sich 
der Satz
1
When the SPI is configured as Slave, the SPI is only guaranteed to work
2
at fosc/4 or lower.

wobei mit fosc die Prozessor-Taktfrequenz gemeint ist.

Aber warum musst du da mit Full-Speed rüberblasen? Gehs halt erst mal 
langsamer an. Denn die maximale SPI Frequenz ist ja nur 1 Sache. Der 
Slave muss ja auch etwas mit den empfangenen Daten machen.

von Florian K. (f-kae)


Lesenswert?

Vielen Vielen Dank, vor allem für die netten Hinweise trotz meiner 
vermeidbaren Fragen (bei ausführlicherer Betrachtung der 
Datenblätter)!!!

Es ging mir eigentlich erst einmal um die Theorie und dann wolte ich 
verschiedene Geschwindigkeiten der Übertragung testen und schliesslich 
schauen ab welchen Frequenzen Probleme auftreten usw...

Also wie gesagt vielen Dank!

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.