Forum: Mikrocontroller und Digitale Elektronik Hilfe Atmega64M1 als SPI -Slave - Daten ausgeben


von Manfred S. (mandinice)


Lesenswert?

Hallöchen

Bin gerade dabei mehrere uC ( AtMega64M1 ) über SPI zu vernetzen ( 
1*Master 3*Slave )
Der Master sendet Daten und die Slaves empfangen diese auch.
Aber die Slave senden keine Daten zurück ( Die Slave senden gar nichts - 
laut Oszi )
Wann muss ich die Daten ins Register schreiben damit bei MISO was raus 
kommt ?


Hier mein Code

 if (SPSR & (1<<SPIF))
    {
    SendByte = 0x30 + Adresse;
    SPDR = SendByte;
    RecByte = SPDR;
    if (RecByte == 0x85)
       {
  reagieren .......
       }
    }

Danke Euch.

mfg
Mandi

von Spess53 (Gast)


Lesenswert?

Hi

Dir ist aber bewusst, das wenn ein Slave etwas senden soll, der Takt vom 
Master kommen muss?

MfG Spess

von Manfred S. (mandinice)


Lesenswert?

Hallöchen

>>Dir ist aber bewusst, das wenn ein Slave etwas senden soll, der Takt vom
>>Master kommen muss?

Ja.

Ist es nicht so, dass wenn der Slave Daten empfängt - gleichzeitig Daten 
ausgegeben werden ?

mfg
Mandi

von Manfred S. (mandinice)


Lesenswert?

Hallöchen

Keiner da der mir einn Tip geben kann ?

hmg
Mandi

von technikadonis (Gast)


Lesenswert?

Du solltest Recht haben mit deiner Annahme.
Ich habe die Atmel-Datenblätter jedenfalls bisher so verstanden, dass 
sobald vom Master Daten und Tackt kommen, Slaves auch Daten 
rausschreiben.

Wenn die Slaves auf einen Befahl vom Master erst Daten senden sollen, 
ist zu bedenken, dass der Master auch noch "Dummy-Daten" senden muss, um 
die Antwort des Slaves einzutackten.

Evtl. musst du die SPI-Pins auch noch passend als Ein-/Ausgang 
konfigurieren. Ich meine die sind nicht automaitsch richtig gesetzt.

mfg technikadonis

von Manfred S. (mandinice)


Lesenswert?

Hallöchen

Es wird nix. Ich bring's nicht hin.

PIN 1 und 2 MISO_A und MOSI_A
PIN 3 SS_A

MOSI_A wird automatisch als Input geschaltet
MISO_A hab' ich aus Ausgang konfiguriert und sollte automatich Hochohmig 
werden wenn SS high ist.

ich schreibe Daten in Register SPDR.

Beim nächsten Daten empfangen sollten diese doch ausgegeben werden ?

Hat sowas noch niemand gemacht ?

Danke Euch.

mfg
Mandi

von Manfred S. (mandinice)


Lesenswert?

Hallöchen

's läuft.

Hab' mal gemessen wieviel Strom fliest wenn ich den Ausgang gegen Masse 
kurzschliesse. Und es waren 0.14mA - Kann also nur ein PullUp-Widerstand 
sein.

Ich hatte die PIN's korrekt konfiguriert. Aber in der Init-Funktion im 
Library wurden die Pin's dann falsch konfiguriert :-(.

hmg
Mandi

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.