ATMega128 --> SPI Schnittstelle zurücksetzen.

Gast #1680965
Lesenswert?

Hallo Zusammen,

ich betreibe meinen 128'er als permaneten Slave also 3 wire SPI (MISO, 
MOSI, SCK) sind angeschlossen SS ist low. jetzt verliert mein Mega128 
die Snychronisation. Jetzt meine Dumme Frage wir kann ich die SPI 
schnittstelle (Clock Source, Shift Register etc.) wieder so 
initialisieren das ich wieder bei Null Starte ohne den Controller 
mittels Watchdog in ein Reset zu schicken. Aus dem Datenblatt werde ich 
nicht ganz schlau.

MFG
Detlev
Gast #1680988
Lesenswert?

Nett aber dies kann ich leider nicht da mein dummes Host System dieses 
Per Software und nicht per Hardware machen möchte ich habe mir diese 
Systemarchitektur nicht ausgedacht. Also doch ber WADO durch den Reset 
schicken :-(

Oder gibt es eventuell doch noch eine kleine Hoffnung das es anderes 
geht

Wenn nicht dann Danke für die schnelle Antwort

Gruß

Detlev
Gast #1680989
Lesenswert?

> SS ist low

An alle Anfänger:
Bitte auf KEINEN FALL vorher irgendwelche Datenblätter lesen, das könnte 
ja dazu führen dass alles auf Anhieb läuft und man keine Fragen im Forum 
loswerden kann.....
(Firma: TravelRec.) Persönliche Seite #1680994
Lesenswert?

Detlev Neumann schrieb:
> Also doch ber WADO durch den Reset
> schicken :-(

Das ist Murks und läßt keinen zuverlässigen Datentransfer zu.

Detlev Neumann schrieb:
> Oder gibt es eventuell doch noch eine kleine Hoffnung das es anderes
> geht

Die Softwarelösung mittels externer Logik abfangen und per Hardware an 
den /SS-Pin anbinden.
Gast #1681005
Lesenswert?

> Baltasar Gracián y Morales (1601-58), span. Philosoph u. Schriftsteller

Ja, ich hab auch den Eindruck, dass bei vielen Elektronik mehr mit 
Philosophie und Esotherik zu tun hat.

Ich sags einfacher: Ohne Murks keinen Schweiss.....
Gast #1681226
Lesenswert?

Ja

hab ne Lösung clock ist dabei ein Signal das im millisekunden Rhytmus 
hochgezählt wird.

1. erkenne das Slave nicht mehr Sychron
2. Löschen des SPI Control Register  SPCR  = 0;
3. Warte ein Paar ms while(clock<10);
4. Setzen des SPI Control Registers
    SPCR  = (1<<SPIE) | (1<<SPE)  |(0<<MSTR)| (0<<CPOL) | (1<<CPHA)

Dieses Funktioniert nur weil meine Aktive Zeit meines Kontrollers klein 
genug gegenüber der inaktiven Zeit ist.

Danke normals

Gruß

Detlev
Gast #1681310
Lesenswert?

Mein Master ist Zeit Sychron das heißt alle so und so viele ms 
Kommuniziert er immer mit dem Slave. Nun habe ich einen Timer der wird 
gesetzt wenn eine gültiger Datentransfer erkannt wurde. Startet nun der 
nächste Datentransfer nicht zum festen Zeitpunkt so setzt ich das SPI 
Interface zurück. Ist zwar nicht elegant und eher schon die Holzhammer 
Methode --> Hoffe aber das die Variante klappt --> bis jetzt tut sie es 
auf jedenfall :-).

 Die höchste Form der Hoffnung ist die überwundene Verzweiflung

  Albert Camus (1913-1960), frz. Erzähler u. Dramatiker


Gruß

Detlev

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren