Forum: Mikrocontroller und Digitale Elektronik STM32 Zusammenhang Timer SPI CAN


von Mark (Gast)


Lesenswert?

Hallo,
ich wollte gerade den SPI2 und gleichzeitig den Timer 2  für externe 
Interrupts verwenden. Scheinbar kann der Timer aber nur für eines von 
beiden verwendet werden. Kann mir jemand sagen wie alle Timer, SPI und 
CAN zusammen hängen oder gibt es da eine Übersicht? Timer 2 wird ja 
scheinbar für die Taktvorgaben bei der SPI Übertragung genutzt -.-
von holger (Gast)


Lesenswert?

>Timer 2 wird ja
>scheinbar für die Taktvorgaben bei der SPI Übertragung genutzt

Nö, bei meinem STM32 jedenfalls nicht.
von Mark (Gast)


Lesenswert?

Zumindest habe ich das Problem, dass SPI und Interrupte mit Timer 2 
getrennt gut funktionieren. Sobald ich aber Timer 2 Konfiguriere 
arbeitet das SPI2 nicht mehr. Timer 4 etwa laesst sich konfigurieren 
ohne dass mir das SPI aussteigt. Woran koennte das sonst liegen?
von (prx) A. K. (prx)


Lesenswert?

Mark schrieb:

> Woran koennte das sonst liegen?

(1) An abgrundtiefer Boshaftigkeit von ST.
(2) An einem Fehler in deinem Programm.

Wenn du auf (2) plädierst, dann müsste man wohl im Programm suchen.
von Mark (Gast)


Lesenswert?

Ich tippe auf ersteres  ^^.
Ich hatte was gelesen, dass man Timer 2 wohl ansteuern kann mit dem SPI 
aber nichts konkreteres. Das Programm habe ich gerade nicht hier (nicht 
mein Rechner). Aber wie gesagt getrennt lauft beides. Fuegt man nur die 
Timerkonfiguration aus dem laufendem Programm in das SPI Programm ein 
geht nichts mehr bzw. fuegt man das SPI in das laufende Programm mit dem 
Timerinterrupts ein laufen die Interrupts aber das SPI haengt sich beim 
warten auf das Busy Flag auf bzw. verweilt dort endlos.
von (prx) A. K. (prx)


Lesenswert?

Falls dir das immer noch nicht aufgefallen sein sollte: Der grosse 
gordische Knoten zwischen CAN und Timern und SPI ist niemandem hier 
geläufig. Das sind drei Module, die abgesehen von möglichen 
Überschneidungen in der Nutzung von Pins nichts miteinander zu tun 
haben.

Wenn du also drauf wartest, dass hier jemand aufspringt und sagt, "ja, 
wenn der Timer2 mit exakt 1,2345MHz läuft und ein schwarzes CAN von 
links nach rechts unter einer Leiter durchläuft, dann dreht das SPI 
durch", dann wartest du vermutlich vergebens.
von Mark (Gast)


Lesenswert?

Nun entweder das (eventuell mit einem Verweis auf ein Datenblatt) oder 
das Gegenteil oder mit viel Glueck jemand dem das selbe Problem 
wiederfahren ist (haengedes Busy Flag). Wenn du der Ueberzeugung bist es 
hat nichts miteinander zutun, dann muss ich mir den Quellcode wohl doch 
noch mal angucken.

Ohne das es irgendwie agressiv gemeint ist, aber einen Zusammenhang gibt 
es schon. Naemlich die Taktansteuerung. Und warum sollte es nicht auf 
anderer Basis noch etwas geben was ich noch nicht geschnallt habe.


Gruss Mark
von holger (Gast)


Lesenswert?

>Ohne das es irgendwie agressiv gemeint ist, aber einen Zusammenhang gibt
>es schon. Naemlich die Taktansteuerung.

Nö, beide Module haben einen eigenen Takt. Wenn du natürlich
beim einstellen der Taktquelle dem anderen Modul den Takt
wegnimmst, dann hast du recht. Das ist aber ein Softwareproblem.

Für bekannte Hardwareprobleme ist es empfehlenswert in das Errata Sheet
zu schauen. Gibt es beim Hersteller.
von Mark (Gast)


Lesenswert?

Ich meinte auch die Verbindung über den APB. Nachdem ich zwei nahzu 
identische Projekte hatte und festgestellt habe, dass das eine nur nicht 
funktionierte wenn ich Timer2 mit Interrupts aktiviert habe, dem anderen 
Programm das aber nichts ausmachte habe ich das nicht funktionierende 
Programm Stück für Stück in das funktionierende kopiert. Jetzt geht 
alles. Mir ist dabei aufgefallen, dass in dem nicht funktionierenden 
Teil z.B. die Definitionen nicht mehr farbig hinterlegt waren, wie es 
üblich ist. Wahscheinlich war irgenwas verstellt. Den Fehler hatte ich 
glaube ich schon einmal im Atollic.

Danke für die Hilfen.
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.