www.mikrocontroller.net

Forum: Projekte & Code SPI Atmega8


Autor: Alexander Starke (Gast)
Datum:
Angehängte Dateien:

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

Autor: green (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super, danke.

Autor: Michael Sessler (palindrome)
Datum:

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

Autor: Dominik T. (dom) Benutzerseite
Datum:

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

Autor: Michael Sessler (palindrome)
Datum:

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

Autor: Michael Sessler (palindrome)
Datum:

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

Autor: Michael Sessler (palindrome)
Datum:

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

Autor: Dominik T. (dom) Benutzerseite
Datum:

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

Autor: Gerald (Gast)
Datum:

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

Autor: noobAvr (Gast)
Datum:

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

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

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

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.