mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik HW SPI


Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe ein kleines Problem und finde im Datasheet nix dazu.

Ich wollte gerne die Polaritaet des Mosi Pins aendern. ihmo ist es so
das er im IdleModus High ist. Ich wuerde den gerne auch LOW haben im
IdleMode. Die Polaritaet des SCK Pins kann man ja aendern ueber CPOL
(1/0). Gibt es beim AVR keine Moeglichkeit fuer den MOSI PIN?


Mfg

Dirk

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe jetzt mir eine Software SPI Routine geschrieben da es
anscheinend nicht Moeglich ist beim AVR die Polaritaet von Mosi und CLK
zuaendern.

Jetzt habe ich aber dabei ein kleines Verstaendis Problem und wuerde
mich ueber ein bischen Hilfe freuen.


IHMO. Sende ich die Daten ohne Timer. Sprich ich arbeite mit
Warteschleifen um mich an die Spezifikation des Slave's zuhalten
(Clocktime mind. 10 µS).


Ist es vielleicht besser den Clock bzw die ganze SW SPI Routine per
Timer zumachen? Mein timer0 nutze ich schon um Signale zu Caputen.
Dieses koennte ich relativ leicht auf den Timer1 meines µC legen.

Somit koennte ich doch dann den Timer0 nutzen um die SPI Daten zusenden
und den Clock zugenerien.

Was ist eure Meinung dazu ? Lieber mit Warteschleifen oder doch lieber
per Timer?

Mfg

Dirk

Autor: Alexander Höller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dirk!

bei der SPI handelt es sich ja um synchrone Datenübertragung ....
solang Minimum-Zeiten eingehalten werden, muss die Frequenz bei der
Clockleitung nicht sonderlich exakt sein. -> Warteschleifen ohne Timer
sollten reichen - und falls mitten in der Übertragung (beim Senden) ein
Interrupt dazwischenredet sollt das auch egal sein, die Wartezeiten
zwischen den einzelnen Clock Signalen müssen ja auch nicht konstant
sein.

mfG
Alex

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum soll denn der MOSI high sein ?

Ohne Änderung am SCK ist es doch egal, es wird ja nichts übernommen.
Deshalb bleibt nach dem Ende des SPI-Transfers der MOSI einfach auf dem
letzten Datenbit stehen.


Du kannst ja nach dem Ende des SPI-Transfers das SPI abschalten.
Dann kannst Du den MOSI-Pin als ganz normalen Portpin so setzten wie du
lustig bist.


Peter

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Mosi muss LOW sein wenn keine Daten gesendet werden (CLK auch).
Zumindest ist es so spezifiziert vom Wechsler.

Du hast schon Recht das dann keine Daten uebernommen werden, aber
leider kann ich dann keine 50ms Ruhepause zwischen den Datenpaketen
lassen sondern muss alle 2 ms die Daten neusenden.

Das mit dem SPI Disablen hab ich schon gemacht trotzdem habe ich immer
noch das Problem das die Kommunikation dann abbricht zum Radio.


Mfg

Dirk

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.