www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMega128 --> SPI Schnittstelle zurücksetzen.


Autor: Detlev Neumann (Gast)
Datum:

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

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Detlev Neumann schrieb:
> SS ist low.

Das ist das Problem. /SS darf nur Low sein, wenn gerade ein Datenframe 
übertragen wird. Danach muß /SS wieder High werden. Zu Beginn des 
nächsten Datenframes wird /SS wieder Low gesetzt, danach wieder High. 
Bei jeder High/Low-Flanke von /SS wird die Synchronisation erneut 
sichergestellt.

Autor: Detlev Neumann (Gast)
Datum:

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

Autor: bensch (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Detlev Neumann schrieb:
> jetzt verliert mein Mega128
> die Snychronisation.

Ja, das haben die AVRs so an sich. Sie sind sehr ungehorsame Slaves, da 
sie nix puffern können.

Du kannst das SPE-Bit kurzzeitig abschalten, um das SPI zu resetten. 
Aber das ändert nichts am prinzipiellen Mangel des AVR-SPI. Wenn der 
Master zu schnell ist, verliert der Slave.


Peter

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

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

Autor: Detlev Neumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@bench

Dumm ist nicht, wer etwas Dummes begeht, sondern wer seine Dummheit 
nachher nicht zu bedecken versteht.

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

Autor: bensch (Gast)
Datum:

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

Autor: Detlev Neumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Bench

auch ein schönes Zitat

@Alle

Danke für eure Hilfe mal schaun was ich damit anstelle


Re-Design -- Software änderung


JA JA JA



Nochmals Danke

Detlev

Autor: Detlev Neumann (Gast)
Datum:

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

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Detlev Neumann schrieb:
> 1. erkenne das Slave nicht mehr Sychron

Wie?

Autor: Detlev Neumann (Gast)
Datum:

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

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Detlev Neumann schrieb:
> 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.

Das heißt, daß Du mit Datenverlust leben mußt?

Autor: Detlev Neumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja Daten können bei diesem Vorgehen verloren gehn !!!

Aber das kann ich bei meiner Applikation verschmerzen!

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.