www.mikrocontroller.net

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


Autor: Manfred Schön (mandinice)
Datum:

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

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

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

MfG Spess

Autor: Manfred Schön (mandinice)
Datum:

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

Autor: Manfred Schön (mandinice)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallöchen

Keiner da der mir einn Tip geben kann ?

hmg
Mandi

Autor: technikadonis (Gast)
Datum:

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

Autor: Manfred Schön (mandinice)
Datum:

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

Autor: Manfred Schön (mandinice)
Datum:

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

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.