Forum: Mikrocontroller und Digitale Elektronik HW SPI


von Dirk (Gast)


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

von Dirk (Gast)


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

von Alexander Höller (Gast)


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

von Peter D. (peda)


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

von Dirk (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.