Problem - SPI mit AVR STK500 und Atmega16

OP #2573282
Lesenswert?
• ▲
▼
Hallo,

im Rahmen eines Unterrichtprojektes beschäftige ich mich mit 
µC-Programmierung mit Hilfe von AVR STK 500-Boards und Atmega16 µC.

Mein Ziel ist es, Daten zwischen 2 Atmega 16 zu übertragen, welche beide 
noch auf einem STK 500 sitzen (bin mit dem Bau von Schaltungen nicht 
betagt, will bei den Boards bleiben). Als Programmgrundlage benutze ich 
dieses Beispiel in unveränderter Form:

Beitrag "SPI Atmega8"

Beide µC sind baugleich, jeweils mit dem Code des Master und des Slave 
bespielt, von der SPI-Verbindung des Boards welches zum Programmieren 
verwendet wird getrennt und untereinander über die angegebenen Ports 
verbunden. Eine Datenübertragung kommt jedoch nicht zu Stande. (Es 
sollten die Lämpchen am Board des Slave aus- und eingeschaltet werden 
sobald ein Signal übermittelt wurde).

Beide Boards benutzen sogar die gleiche Stromversorgung.

Die Verbindungen sind wie im Quellcode der Beispiele angegeben gesetzt:
  MISO(Master) --> MISO(Slave)
  MOSI(Master) --> MOSI(Slave)
  SCK(Master)  --> SCK(Slave)
  PB0(Master)  --> SS(Slave)

https://skydrive.live.com/redir.aspx?cid=752a4f33120924a7&resid=752A4F33120924A7!606&parid=752A4F33120924A7!331&authkey=!AGr73FW2OGXVnbg 
Hier ist nochmal die Verkabelung zu sehen.

Ich hoffe ihr könnt mir helfen, drehe nämlich schön langsam am Rad und 
bald wird meine RFID-Hardware geliefert.

Mit freundlichsten Grüßen,
Michael
Gast #2573744
Lesenswert?
• ▲
▼
Jonas Biensack schrieb:
> MISO(Master) --> MISO(Slave) Ausgang zu Ausgang?
>
> MOSI(Master) --> MOSI(Slave)  Eingang zu Eingang?

Kommt darauf an wie es geschalten ist (und dafür gibt es nur einen Weg):
Am Master müssen MOSI und SCK als Ausgang geschaltet werden (also in SW 
natürlich) und am Slave darf nur MISO als Ausgang geschaltet werden.

Dann gilt folgendes (wie der Name eigentlich schon sagt):
MISO (Master Input) --> MISO (Slave Output)
MOSI (Master Output) --> MOSI (Slave Input)

Außerdem:
SCK (Master Output)  --> SCK (Slave Input)
PB0(Master Output)  --> /SS (Slave Input)

/SS muss vom Master auf low geschaltet werden, damit der Slave aktiv 
ist!
Es muss übrigens nicht unbedingt PB0 am Master sein. Du könntest ja auch 
4 Slaves am Master haben....

Gruß
Gast #2573769
Lesenswert?
• ▲
▼
spien schrieb:
> Es muss übrigens nicht unbedingt PB0 am Master sein. Du könntest ja auch
> 4 Slaves am Master haben....

Da fällt mir gerade ein, dass es schon nötig ist /SS am Master als 
Ausgang - und somit sinnvollerweise als /SS Input am Slave - zu 
benutzen, da sonst dein Master nach einiger Zeit in den Slave-Mode 
fällt. Was aber nichts daran ändert, dass du an anderen Pins noch 
zusätzliche Slaves verwenden kannst.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.