Archiv verlassen und diese Seite im Standarddesign anzeigen : Software Bug?
Hallo,
Dieses ist mein program:
====================
define a byte[8]
define b byte[9]
#MeinFunc
a = 77
b = 77
if (a=b) then goto FuncEnde
print "Fehler: a ungleich b" 'dieses soll niemals passieren
#FuncEnde
return
====================
Ab und zu wenn ein ACS interrupt actief ist erscheint:
"Fehler: a ungleich b"
(a und b werden NICHT benutzt im interrupt)
Hat jemand auch mahl so etwas mitgemacht?
Was mach Ich falsch hier? Oder ist das ein systeem-software fehler?
Grusse
Henk (aus Holland)
Hi "rnhvw",
was Dein Fehler ist, weiß ich auch nicht.
Falls Du das LCD-Display am RP5 betreibst, ist häufig der Bezeichner "lcd_param" für Byte[8] belegt, so dass eine Doppelbelegung mit Bezeichner "a" vorliegen könnte.
Gruß Dirk
Hallo Dirk
Ich hab nur der Robby ohne etwas drauf oder dran, und habe verschiedene andere variabelen getested und bekomme immer dasszelbe Resultat.
Henk
Hallo,
Ich hab mein Program nogmal grundlich untersucht. und entschliesse daraus dass es sich wahrscheinlich um ein ernsthafter Operating-system Fehler handelt.
Wenn Ich im Hauptprogram ein IF statement benutze, z.B:
#LOOP
A=77
B=77
IF (A=B) THEN GOTO LOOP <<====
PRINT "A=";A 'Soll NIEMALS passieren
PRINT "B=";B 'Soll NIEMALS passieren
GOTO LOOP
und AUCH ein IF statement im Interrupt function benutze Z.B.
IF 3=3 then C=27
dann erscheint ab und zu den Printout:
A=77
B=23
oder
A=23
B=77
Dann bekomt oder A oder B ab und zu die Wert von C (27) !!!
Ich glaub dass beim anfang von dem interrupt function die Microcontroller
accumulator (oder sonstige register) nicht gespeichert und am ablauf der Interrupt wieder zuruck gesetzt werden.
Wenn Ich mich nicht irre, (dass hoffe Ich) dann ist dass doch ein ziemlich ernsthafter Sache.
Grusse
Henk
Rectification:
IF 3=3 then C=27
sollte sein
IF 3=3 then C=23
Hi "rnhvw",
ich habe Probleme mit Deinen Beispielen.
Vielleicht solltest Du doch 'mal ein konkretes Projekt vorstellen, in dem Du auf den "Fehler" aufmerksam geworden bist!
Eine meiner Fragen ist z.B., ob Du auch in der Interrupt-Routine die Bytes [8] und [9] benutzt (ich glaube das nicht wirklich!)?
Kannst Du Deine ACS-Interrupt-Routine hier einmal komplett posten?
Gruß Dirk
Sinnlosprojekt
07.07.2004, 16:16
Hi,
ich denke im Interrupt wird deine Variable überschrieben... und der Interrupt kann ja ab und zu deine loop unterbrechen gerade for der if abfrage in der loop.......
Is der Fehler denn nur mit aktivem interrupt??? dann such im interrupt was dort passiert...vieleicht überschreibt ja deine variable C im Interrupt deine variable B wegen falscher Ram zuweisung......
Bye
M.
Matthias
07.07.2004, 16:26
Probier doch einfach mal:
#MeinFunc
a = 77
b = 77
if not a=b then print "Fehler: a ungleich b" else goto FuncEnde
#FuncEnde
return
Matthias
07.07.2004, 16:29
Zu den Fehlern: Das C****d-Betriebssystem hat so einige bugs. Umso länger man die CC proggt, umso mehr findet man...
Hallo robotiker,
Ich hab ein einfaches Basic Program Beispiel zugefugt.
Ich bin uberzeugt das es sich um ein Bug handelt, aber habe auch eine ganz einfache losung dazu gefunden.
Schau mal dass Beispiel an.
Grusse
Henk
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.