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
Lass dir mal zu debug Zwecken den Messwert1 *unmittelbar vor* der Abfrage ausgeben. Du wirst wahrscheinlich sehen, dass die Werte nicht so sind wie du denkst dass sie sein sollten.
Hallo, danke zunächst für die Hilfe. Hab das ganze mal CAN-mäßig aufgezeichnet(siehe anhängende Datei). Ist irgend wie komisch. Grüße und Danke für Eure Hilfe pontonfrog
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.