Forum: Mikrocontroller und Digitale Elektronik SPI Bus an ADuC831


von Christian (Gast)


Lesenswert?

Hi,

ich habe 2 Boards auf denen sich jeweils ein ADuC831 befindet. Ich 
möchte diese µC nun zu Testzwecken miteinander mit dem SPI Bus 
verbinden. Da es mein erstes Projekt mit dem SPI Bus ist, möchte ich nun 
noch einige Fragen klären:

- MISO und MISO gehören verbunden, nicht MISO und MOSI, oder?
- MOSI und MOSI gehören verbunden, nicht MISO und MOSI, oder?
- wohin mit dem SS? Soll ich beim Master irgendeinen Port nehmen? und 
beim Slave?
- hätte irgendeiner vielleicht eine fertige SPI Routine (senden / 
empfangen) in C?

Danke und liebe Grüße,

christian

von Ronny (Gast)


Lesenswert?

- MISO und MISO gehören verbunden, nicht MISO und MOSI, oder?
- MOSI und MOSI gehören verbunden, nicht MISO und MOSI, oder?

  MasterInSlaveOut -> Master Eingang kommt an den Ausgang vom Slave
  MasterOutSlaveIn -> Master Ausgang kommt an den Eingang vom Slave

- wohin mit dem SS? Soll ich beim Master irgendeinen Port nehmen? und
beim Slave?

  Der SlaveSelect sorgt dafür,das der Slave aktiv wird.Wenn der Master 
den
  nicht setzt (bzw. setzt falls Low-Aktiv SS/),darf der Slave nix 
machen.
  Damit benötigt dann der Master jeweils ein Portpin pro Slave.Ob der
  SlaveSelect bei deinem Controller per Hardware gesteuert werden 
kann,weiß
  ich jetzt nicht.Ein normaler I/O tut es jedenfalls auch.

  Wenn es nur einen Slave gibt,kann der Master diesen auch dauerhaft 
aktiv
  halten. (Also SS per Pull-Down auf Low (SS/) oder High (SS) halten)

- hätte irgendeiner vielleicht eine fertige SPI Routine (senden /
empfangen) in C?

 Ohne mich mit dem Controller jetzt zu beschäftigen: Wahrscheinlich hat
 AnalogDevices für das Ding irgendwo ein paar Application Notes wo dann
 sicher auch Code-Schnipsel beiliegen.

Nebenbei:

Ich vermisse die Frage, welche Bedeutung das Signal Clk hat bzw wo das 
bei mehreren Slaves hingehört,wer den Takt erzeugt,etc

.Schau dir vielleicht mal z.b. bei Wikipedia das Prinzip der SPI bzw. 
von synchronen seriellen Bussen generell an.

von Christian (Gast)


Lesenswert?

hi ronny, danke für deine antworten!

den Clk habe ich schon verstanden, ist ja eigentlich immer gleich ;)

bei AnalogDevices habe ich nur SPI-Bus Beispiele in Assembler gefunden. 
Ich bin ein "gelernter" C-Programmierer, also wäre ein C-Beispiel schon 
sehr hilfreich.

Lg flo

von Christian (Gast)


Lesenswert?

so, ich habe den SPI Bus nun schon ziemlich gut hinbekommen ;)

für die Codeoptimierung möchte ich nun aber den SPI-Interrupt benutzen. 
Wie kann ich den bei c einstellen?

Interuptregister sind gesetzt und ich weiß, dass der Interruptvektor auf 
die Stelle 3Bh zeigt.

in den Codebeispielen die ich gefunden habe (leider nicht von Analog 
Devices, sonst würden wohl die ganzen Fragen nicht aufkommen) steht 
"void it_SPI(void) interrupt 9" aber in diesen interrupt springt der µC 
nicht.

lg flo

von Christian (Gast)


Lesenswert?

gelöst.

war einfach zu blöd dazu. sorry ;)

ich hoffe ich kann mich mit weiteren problemen an euch wenden!

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.