Forum: Mikrocontroller und Digitale Elektronik GCC "optimiert" Schleife und erkennt Taster nicht


von Lutz H. (luhe)


Angehängte Dateien:

Lesenswert?

Leider kann ich den Maschinencode nicht einfach lesen.

Wenn die Tastenabfrage  if (GPIOA->IDR & 0x0001) in einer
Endlosschleife ist, wird diese nicht erkannt.
Was muss ich beachten, damit auch in der Schleife die Taste erkannt wird 
?
Board: STM32F4 COOCOX und GCC

von Faultier (Gast)


Lesenswert?

Was ist das für eine geq....te Sch...e?

1. Quellcode als PNG?
2. In dem zweiten Quellcode wird überhaupt keine Taste abgefragt, aber 
da funktioniert die Tastenabfrage?

Gehen Sie zurück auf LOs. Ziehen Sie keine 4000 Euro ein.

Also:
Quellcode als Quellcode.
Ausführliche Erklärung des Problems.

von Karl H. (kbuchegg)


Lesenswert?

Faultier schrieb:

> 2. In dem zweiten Quellcode wird überhaupt keine Taste abgefragt, aber
> da funktioniert die Tastenabfrage?

Na ja. Abgefragt wird sie schon. Nur halt nicht in einer Schleife.
Und der Compiler implementiert das auch in beiden Fällen identisch. Ich 
sprech zwar diesen Assembler nicht, aber so auf die Schnelle sieht das 
alles für mich korrekt umgesetzt aus. Das Problem muss wo anders liegen. 
Der Compiler ist es nicht (wie nicht anders zu erwarten war).

von Faultier (Gast)


Lesenswert?

Au weia. Ist mir das peinlich. Habe in die Schleife geguckt. Ich bitte 
um Entschuldigung.

Jedenfalls liegt das Problem nicht im gezeigten Code.

von Lutz H. (luhe)


Lesenswert?

Vielen Dank, für die Hilfe. Ich werde in Zukunft solche kurzen 
Endlosschleifen meiden, weil mir die Ursache des unterschiedlichen 
Verhaltens unklar ist.

von Peter II (Gast)


Lesenswert?

lutz h. schrieb:
> Vielen Dank, für die Hilfe. Ich werde in Zukunft solche kurzen
> Endlosschleifen meiden, weil mir die Ursache des unterschiedlichen
> Verhaltens unklar ist.

das ist eigentlich das dümmste was man machen kann. Man sollte die 
Ursache finden und verstehen.

Es liegt nicht an der Schleife!

Also muss woanders das Problem sein, durch andere code taucht es 
bestimmt später an anderer stelle wieder auf.

von Karl H. (kbuchegg)


Lesenswert?

Und man sollte die Attitüde "Der Compiler hat einen Fehler gemacht" 
ablegen.
Natürlich haben Compiler auch Fehler, sind ja schliesslich auch nur von 
Menschen gemachte Programme. Aber in mehr als 99% aller Fälle ist nicht 
der Compiler schuld.

von Lutz H. (luhe)


Lesenswert?

Peter II schrieb:
> Man sollte die
> Ursache finden und verstehen.

Deshalb hat mit das Forum sehr weitergeholfen. Jetzt bin ich sicher dass 
es nicht der Code ist. Es konnte sein, das ich mein Board stromlos 
machen muss,  wenn ein neuer Takt eingeschaltet wurde, damit der aktiv 
wird, oder ich die Zeile  im Code hatte aber nicht geladen habe.
Vielen Dank für die Hilfe.

von Amateur (Gast)


Lesenswert?

@lutz

Hier in den Foren gibt es ein paar ganz komische Leute.
Die gehen einfach davon aus, dass der gepostete Code auch der aktuelle 
ist und oft noch schlimmer: In das Zielsystem geladen wurde,-)

Ich finde, das muss nicht sein - obwohl es Gerüchteweise nicht schaden 
kann.

von Martin K. (maart)


Lesenswert?

Amateur schrieb:
> Ich finde, das muss nicht sein - obwohl es Gerüchteweise nicht schaden
> kann.

Muss es auch nicht! Einfach den Code ausrucken und auf den MC legen, 
reicht völlig.

von Lutz H. (luhe)


Lesenswert?

siehe auch hier:
Beitrag: STM32F4 Taster  von  12V DC .
Dort ist  auch das Verhalten beschrieben und der Code angehängt.
Der Code ist wahrscheinlich ansteckend.

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.