Forum: Projekte & Code SPI Atmega8


von Alexander Starke (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe mich am Wochenende mal ein bischen mit dem SPI des Atmega8
beschäftigt.
Herausgekommen ist ein Programm, welches im Wechsel eine 0 bzw. eine 1
an einen zweiten Controller sendet, welcher je nach Zeichen seine LEDs
an bzw. aus schaltet.
Für Kommentare zum Code bzw. Optimierungen wäre ich dankbar.

Schönen Sonntag noch,
Alex

von green (Gast)


Lesenswert?

Super, danke.

von Michael S. (palindrome)


Lesenswert?

Hallo Alex,
Hallo Welt ;-)

Ich versuche seit einiger Zeit, eine SPI Kommunikation zwischen zwei 
AVRs
zum Laufen zu kriegen. Habe schon viele Versuche gemacht, immer wieder 
von vorne angefangen, aber es hat nie geklappt.

Jetzt habe ich es mit deinem Code von oben versucht und auch das klappt 
nicht.
Die Verbindungen MISO-MISO , MOSI-MOSI , SCK-SCK und PB0-SS hab ich 
gemacht und ich hab sogar dran gedacht, beide Controller auf die selbe 
Masse zu legen.
Aber es haut einfach nicht hin.

Is da ein Trick dabei?

Hat jemand diesen Code zum Laufen gebracht?
Wenn ja wie?

Liebe Grüße
Palindrome

von Dominik T. (dom) Benutzerseite


Lesenswert?

Du musst natürlich die Massen der beiden Controller verbinden!!!

Außerdem musst du des einem MISO an des anderem MOSI und umgekehrt 
anschließen!

Gruß,
Dominik

von Michael S. (palindrome)


Lesenswert?

Ja, ich sag ja - die Massen sind verbunden (das hab ich neulich in nem 
anderen Projekt schmerzlich festgestellt, dass man das nicht vergessen 
sollte...).

MOSI zu MISO?
Da sagt mein Datenblatt aber was anderes.
MOSI heißt doch
Master Out Slave In - und das dann mit MISO, also
Master In Slave Out zu verbinden macht wenig Sinn, oder?

Bist du da sicher?

Okay, ich probier ja alles, mal sehen was passiert....

von Michael S. (palindrome)


Lesenswert?

So, nee, also das wars auch nicht. MOSI und MISO getauscht, aber das 
Verhalten is das gleiche.

Nebenbei - ich verwende zwei 90S8515 - haben die da ne Spezialität, die 
nicht im Datenblatt steht?

Die Programme laufen beide, habe zur Kontrolle auf PORTD jeweils LEDs am 
Blinken.
Beim Master blinken sie ne halbe Sekunde und dann bleiben sie stehen - 
der Timer Interrupt legt also los, aber dann passiert nüscht mehr - und 
zwar nie wieder, bis man reset drückt.

Kann bitte irgendjemand den Code von oben verifizieren?
Hat der von sich aus nen Fehler oder liegts an meiner Hardware?

verwirrt

von Michael S. (palindrome)


Lesenswert?

Ich schon wieder, ja.
Kaum zu glauben aber wahr - es geht!!!

Manchmal steht man eben auf dem Schlauch.
Habe beim Master den PB4, also SS vom Master extern auf VCC gezogen und 
siehe da - es läuft...

Trotzdem danke für die Vorschläge ;-)

von Dominik T. (dom) Benutzerseite


Lesenswert?

Tatsächlich, hatte da ne falsche Info bezüglich MISO und MOSI.

Hier nochmal die App-Note von Atmel:

http://atmel.com/dyn/resources/prod_documents/doc2585.pdf

Gruß,
Dominik

von Gerald (Gast)


Lesenswert?

hi,

ich habe gerade dieses SPI Master mode sample angschaut: 
http://www.atmel.com/dyn/resources/prod_documents/AVR151.zip

wo weiß SPI auf welchen PIN es den SCK Clock ausgeben soll? die sagen ja 
nur wo portb ausgang sein sollen!
wo wird das chip select auf 0 gesetzt vor dem senden und auf high nach 
dem senden?

lg

von noobAvr (Gast)


Lesenswert?

danke für den tipp mit VCC... damit geht es bei mir auch irgendwie... 
hab sicherheitshalber mal nen widerstand 1k dazwischen gehaun..
toll, hab mir gerade stunden nen wolf gesucht...

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Michael Sessler schrieb:
> Habe beim Master den PB4, also SS vom Master extern auf VCC gezogen und
> siehe da - es läuft...

Man muss das Datenblatt auch richtig lesen! Beim Master-SPI muss /SS als 
Ausgang konfiguriert sein, sonst schaltet das SPI auf Slave um, sobald 
/SS low wird. Das ist bei allen AVR so, nicht nur beim 8515.

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.