Forum: Mikrocontroller und Digitale Elektronik STM32F407: alles funktioniert, nur nicht die Timer


von Mehmet K. (mkmk)


Lesenswert?

Servus allerseits

Bis heute Mittag funktionierte alles so wie es sollte. Dann habe ich die 
Boards (das Geraet besteht aus 3 Boards mit 2 x STM32F103 und 1x 
STM32F407) in das Gehaeuse montiert, eingeschaltet ... LCD blieb 
schwarz, waehrend die Slave-Boards mit der Led munter ihr i-am-alive 
Signal durchgaben.

Alle Stecker ausgesteckt, Debugger an das Mainboard angeschlossen, und 
nach mehreren Stunden try-and-error stellte ich fest, dass alles, aber 
auch wirklich alles funktionierte: nur nicht die Timer.
Dann bin ich mit den Backups mehrere Tage zurück, aber auch dort: alles 
funktioniert, nur die Timer nicht.
Ich verwende SysTick und TIM2, die jetzt, weiss der Teufel wieso, nicht 
mehr funktionieren.

Frage: kann sowas sein, dass alles funktioniert, nur nicht die Timer?

von Mehmet K. (mkmk)


Lesenswert?

Scheint tatsaechlich möglich zu sein. Habe ein Discovery407 mit dem Code 
gefüttert: die Timer liefen problemlos.

von 132 (Gast)


Lesenswert?

Mehmet Kendi schrieb:
> Scheint tatsaechlich möglich zu sein. Habe ein Discovery407 mit
> dem Code
> gefüttert: die Timer liefen problemlos.



Nein sag bloss ... ein Hersteller verkauft mehrere hunderttausende ICs 
und hat Masekenkosten von mehreren Millionen und dann funktioniert TIM2 
nicht ... da könnte man ja kaum auf den Gedanken kommen, dass der 
Hobbybastler es vielleicht einfach nicht drauf hat

von m.n. (Gast)


Lesenswert?

132 schrieb:
> da könnte man ja kaum auf den Gedanken kommen, dass der
> Hobbybastler es vielleicht einfach nicht drauf hat

Die Tage hatte ich auch ein sehr ernstes Problem mit F407 auf einem 
Disco-Board. Hier habe ich garnicht erst nach einer Lösung gefragt, weil 
ich genau diese dummen Antworten vermutet hatte.

Ich weiß nicht, was Mehmet so treibt, aber als Bastler habe ich ihn 
nicht erlebt.

von m.n. (Gast)


Lesenswert?

Nochmal zu Deinem eigentlichen Problem.
Ich würde im Debugger die betreffenden Registerinhalte kontrollieren und 
notfalls darin "herumstochern", um die Timer manuell anzuwerfen. 
Typische Fehlerquellen sind bei mir, im Editor mal eine Zeile zuviel zu 
löschen oder als Kommentar zu markieren. Übel kann es auch sein, wenn 
man mit copy & paste 'neuen' Code erstellt, aber nicht alle 
Registernamen/-nummern entsprechend ändert.

von Markus R. (maggus)


Lesenswert?

Wie wirkt sich das aus, dass die Timer nicht mehr funktionieren? Siehst 
du tatsächlich mit dem Debugger, dass die Timer nicht laufen oder werden 
nur entsprechende Pins o.Ä. nicht gesetzt?
Nachdem du schreibst, dass es nach dem Einbau in ein Gehäuse nichtmehr 
funktioniert, hört sich das eher nach Hardware-Problem an.

von Mehmet K. (mkmk)


Angehängte Dateien:

Lesenswert?

Wie ich diese Momente hasse: mit gesenktem Kopf vor das Publikum zu 
treten und "mea culpa" zu murmeln und hoffen, dass keiner "ich habe Dich 
nicht verstanden!" ruft.

Also, das war so.
In der Entwicklungs-Phase arbeite ich normalerweise mit dem SRAM und nur 
hin und wieder brenne ich das Programm in den Flash, um auch dies 
getestet zu haben.
Und bevor ich das Geraet dem Kunde übergebe, aktiviere ich die 
Protection.

Soweit so gut. Donnerstag Abend waren alle Test abgeschlossen. Am 
Freitag nochmals alle Test durchgehechelt: keine Probleme. Alle Boards 
eingebaut, die Protection gesetzt, aus dem Menu heraus das Ganze 
formatiert ... und da kamen Anrufe, die ich nicht abwimmeln konnte und 
war mehrere Stunden mit was anderem beschaeftigt.
Als ich dann nach dem Mittagessen das Geraet eingeschaltet hatte und 
nichts mehr lief, geriet ich in Panik, da der Kunde bereits benachrigt 
worden war.

Also wurde der Kunde nochmals benachrichtig und erst am Abend um 20 Uhr 
fiel bei mir der Groschen: durch das Formatieren wurde eine Variable 
nicht mehr initialisiert, weshalb sich das Geraet aufhaengte.
Als ich den Debugger anschloss, arbeitete ich in alter Gewohnheit im 
SRAM: aber wegen der Protection waren dem Debugger die Haende zum Teil 
gebunden.

Nochmals: tut mir echt leid wegen diesem falschen Alarm. Und beiliegend 
das Bild des Problem-Kindes.

von Mehmet K. (mkmk)


Lesenswert?

Die Aussage "Timer funktionieren nicht" war übrigens falsch.
Bei Kontrolle der Register konnte ich zaehneknirschend, haareraufend und 
fingernaegelbeissend sehen, wie die Counter hochgezaehlt wurden: nur der 
Interrupt wurde nicht ausgeführt.

von m.n. (Gast)


Lesenswert?

Mehmet Kendi schrieb:
> Nochmals: tut mir echt leid wegen diesem falschen Alarm.

Muß es nicht! So ist doch das Entwicklerleben, und es ist gut zu hören, 
dass es Anderen nicht anders geht. Wenn dann irgendwelche Spezialisten 
auftauchen, die sagen: "Alles easy", dann kann man nur noch müde 
lächeln.

Zwischendurch wollte ich Dir noch den Rat geben, mal ein-zwei Nächte 
über das Problem zu schlafen; das bringt es nämlich meist auch.

von Simon K. (simon) Benutzerseite


Lesenswert?

m.n. schrieb:
> Zwischendurch wollte ich Dir noch den Rat geben, mal ein-zwei Nächte
> über das Problem zu schlafen; das bringt es nämlich meist auch.

Diese Erfahrung habe ich auch schon mehrfach gemacht. Es ist 
erstaunlich, wie viel es bringt mal "über ein Problem zu schlafen" :-D

von 132 (Gast)


Lesenswert?

m.n. schrieb:
> 132 schrieb:
>> da könnte man ja kaum auf den Gedanken kommen, dass der
>> Hobbybastler es vielleicht einfach nicht drauf hat
>
> Die Tage hatte ich auch ein sehr ernstes Problem mit F407 auf einem
> Disco-Board. Hier habe ich garnicht erst nach einer Lösung gefragt, weil
> ich genau diese dummen Antworten vermutet hatte.
>
> Ich weiß nicht, was Mehmet so treibt, aber als Bastler habe ich ihn
> nicht erlebt.

Ich habe jetzt fast 20 Jahre Berufserfahrung im Embedded-Bereich und war 
vorher 10 Jahre in der HF-Entwicklung und ich kann dir versichern das in 
99,9% nicht der Hersteller unbekannte Bugs einbaut sondern der 
Programmierer irgendwas verhaut. Egal ob er es nicht kann, er etwas 
übersieht, was auch immer - in extrem seltenen Fällen haben die Compiler 
oder gar das Silicon den Bug. Ich habe auch schon Bugs bei Compilern 
gehabt, aber das sind dann nagelneue Compiler für Silicon Rev. A oder 
sogar früher. Die meisten vermeintlich Silicon oder Compiler Fehler 
entstehen aus: 1. mangelhaften Programmierkenntnissen oder 2. mangelndem 
Wissen über den Controller. (Reference Manual, DB oder Errata nicht ganz 
gelesen und verstanden). Jeder kann einfach Beispielprojekte laden und 
dort ein bisschen rumspielen. Dann baut man alles selbst von Vorne auf 
und scheitert. Man hat dann meist einfach das Gesamtsystem nicht 
verstanden. Wie sollte man auch.

Was Mehmet so treibt weiß ich auch nicht. Nur ein Professioneller 
Elektrotechniker ist er mit Sicherheit nicht. Das ist auch nicht 
schlimm. Aber wie soll man mit diesem Gequatsche aus dem Opening Post 
anfangen? Nicht mal Code ist angehängt ... Das ist amateurhaft.

Außerdem sucht man Fehler grundsätzlich immer zuerst bei sich selbst. Es 
ist sehr sehr selten, dass die Hersteller weniger Ahnung haben als ein 
Anwender (sei es nun prof. oder amateurhaft). Und niemand würde sich 
trauen einen Controller zu verkaufen bei dem ein solch heftiger Bug drin 
ist. Zumindest nicht an die breite Masse. Wenn es von einem DSP nur 
2000Stück gibt dann ist das was anderes als bei einem solchen 0815 
Controller. Den hat doch jeder zu Hause liegen.

Der TO. hat sich doch noch nicht mal ein Tutorial angeschaut ...

von m.n. (Gast)


Lesenswert?

132 schrieb:
> Der TO. hat sich doch noch nicht mal ein Tutorial angeschaut ...

Das habe ich auch noch nie. Mit Deinen 20 Jahren Berufserfahrung bist Du 
ja noch ein junger Spunt. Komm einfach mal wieder runter!

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.