www.mikrocontroller.net

Forum: Compiler & IDEs Software SPI - Unterberechung während der Übertragung


Autor: Stefan Tschiggerl (stefan90)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin gerade dabei, Software SPI zu schreiben. Ich habe aber eine 
grundlegende Frage zur SPI Übertragung. Was passiert, wenn während der 
Übertragung(z.B nachdem 5 von 8 bits übertragen sind) ein Interrupt 
auftritt, der abgearbeitet wird und danach die Übertragung fortgesetzt 
wird? Ist das ein Problem?

Die Interrupts möchte ich während der Übertragung wenn möglich nicht 
deaktivieren. Ich denke, es sollte kein Problem sein, da sich der Slave 
ja an den Flanken von SCK orientiert. Wenn nun mal eine Pause von sagen 
wir 10ms zwischen 2 bits stattfindet, müsste das egal sein.

Ich hoffe, dass ich mich nicht irre.

mfg Stefan

Autor: liftmonteuer Winne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
beim senden
solange du die pegel auf der leitung hälst, Nein !

der empfänger muss dem clk des senders beim empfang der bits folgen 
könnnen, sonst gehen bits verloren.

Autor: Stefan Tschiggerl (stefan90)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke. Empfänger kann clk sicher folgen, so schnell ist software spi 
dann auch nicht

Noch was anderes: was passiert, wenn CS auf low ist, die Pins SCK und 
MOSI vom Master aber keine definierten Pegel haben, also z.B high 
impedance sind?
Es wurde gerade ein Byte gesendet, nun bleibt CS aber auf low, SCK und 
MOSI nehmen nun für einige Zeit einen hohen Ausgangswiderstand an, 
danach wird wieder weitergesendet (SCK und MOSI wieder low impedance). 
Muss ich Pullup bzw Pulldown verwenden, damit keine Probleme entstehen?

Das ganze ist für folgende Anwendung: ich möchte bzw muss die Pins SCK 
und MOSI und MISO zwischendurch vom Bus trennen, CS muss aber auf low 
bleiben. Gibts sonst eine bessere Lösung für mein Problem? Das Trennen 
will ich mit einem 74HC125 machen.

mfg Stefan

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Es wurde gerade ein Byte gesendet, nun bleibt CS aber auf low, SCK und
>MOSI nehmen nun für einige Zeit einen hohen Ausgangswiderstand an,
>danach wird wieder weitergesendet (SCK und MOSI wieder low impedance).
>Muss ich Pullup bzw Pulldown verwenden, damit keine Probleme entstehen?

Das hängt von deinem SPI Mode ab. Du solltest auf jeden
Fall die SPI Leitungen nicht floaten lassen wenn CS low ist.

Mir fällt im Moment aber auch keine Anwendung ein, wo man so
etwas unglaublich dummes tun müsste ;)

Autor: Stefan Tschiggerl (stefan90)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich brauche das für eine SD Karte. CS von der SD darf nicht auf high 
gehen während auf diese zugegriffen wird, und das braucht etwas Zeit die 
Sektoren zu lesen/schreiben.

Damit ich aber auch zwischendurch mal Daten an ein anderes SPI Gerät 
schicken kann (auch zeitkritische Daten zu empfangen) darf ich nicht 
immer warten, bis die SD fertig ist. Eine Abhilfe wäre ein 2. SPI, z.B 
Software SPI, aber wenn ich alles am Hardware-SPI unterbringen kann, 
wäre das besser. Die SPI Pins von der SD wollte ich dann vom Bus 
trennen, sobald Daten an ein anderes Gerät geschickt werden, wenn das 
irgendwie geht.

Wie könnte ich das sonst lösen?

mfg Stefan

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann brauchst du auf jeden Fall einen Pulldown
an SCLK. Was am Dateneingang passiert dürfte der
SD dann egal sein. Der Ausgang ist PushPull.
Den kannst du einfach wegschalten.

Autor: Stefan Tschiggerl (stefan90)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok danke.

Blöde Frage: Da hier ja Signale im MHz Bereich übertagen werden (max 8 
MHz), muss der Pulldown besondere Eigenschaften erfüllen oder kann man 
da ruhig einen gewöhnlichen Widerstand nehmen? Anders gesagt: Kann der 
Widerstand bei hoher Frequenz seine Eigenschaften verändern?

mfg Stefan

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.