Cosmic und ST7 if() else - Problem

Gast #687742
Lesenswert?

Hallo ich stehe vor einem Problem, das ich nicht wirklich nachvollziehen 
kann. Hab den Cosmic Compiler (Cx ST7 Ver 4.5.5 16 K frei) und möchte 
nen A/D-Wert einlesen und diesen vergleichen mit einem Grenzwert.


Dazu ruft der Bootloader zyklisch die Funktion applicationMain() (Siehe 
anhängende Datei). In dieser gibt es nun zwei bzw. drei if() Bedigungen. 
Eine liest die Werte ein, eine andere, geschachtelte sollte diese 
auswerten. Doch die geschachtelte innere Bedingung wird nur einmal 
ausgeführt, egal was sich an der A/D-Werten ändert. Die Messwerte kann 
ich über CAN auslesen und sehe auch deren Änderung, doch die innere 
Bedingung für Messwerte wird nicht nachgezogen. Woran kann dies liegen?

Grüße und Danke...

pontonfrog
Angehängte Dateien:
#1488359
Lesenswert?

hallo

Ich setzte auch den cosmic compiler ein, und genau mit if() else hatte 
ich auch mal ein problem.

if() else funktioniert nicht richtig wenn in der if-klammer mit uint_32 
oder long variablen garbeitet wird !!! warum weiss ich auch nicht ... 
bin immernoch am suchen obs vom compiler kommt oder ob der chip 
irgendwelche probleme mit 32bit variablen hat ... ich ab alle meine 
abfragen auf 16bit variablen begrenz und siehe da, alle funktioniert 
wunderbar ...

deine anwendung hat eine weitere tücke:
überprüfe ob deine adc-werde als volatile deklariert sind, und überprüfe 
ob allenfalls ein interrupt den lesezugriff auf diese variable (wenn sie 
breite als 8bit ist) unterbrechen könnte, das gibt ganz lustige effekte 
...

hoffe das hillft ...

gruss Claudio
#1488547
Lesenswert?

hallo nochmals

eines der lustigen und gar nicht schönen pänomenen beim cosmics compiler 
(4.5.9) ist, das bei einem projekt mit short memory model oder bei einer 
32bit variabel welche mit @tiny an adresse 0x80 gelegt wird, die ersten 
2 bytes falsch initialisiert werden.

evtl. liegts einfach an den startup-sequenz ...

gruss Claudio
#1488580
Lesenswert?

nachtrag:

scheint ein problem von GDB zu sein. wird der debugger gstartet und 
läuft durch bis main(), wird die variable falsch initialisiert, wird von 
anfang an mittels singlestep durchgesteppt, wird die variable richtig 
initialisiert???

mein system: stvd 4.1.2, rlink, st7-hardware

gruss claudio

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren