Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > <b>100% ACK</b> > > Martin > > > > > So Erich, > > > > langsam reichts mir !! > > So etwas, wie Netiquette sagt Dir sicher nichts. > > Denn dann würdest Du nicht unzählige neue Threads zum selben Thema aufmachen. > > Deshalb habe ich dieses Posting auch in einen vorhandenen Thread verschoben. > > Jetzt können sich ein paar Kunden bei Dir bedanken, daß ihre Bestellungen > > heute nichtmehr rausgehen, da ich im Forum posten muß! > > > > Ich habe Dein gemailtes Programm gestern Abend auf eine Unit geladen. > > Es lief über Nach auch am Morgen noch einwandfrei ohne irgendwelche Änderungen > > der Geschwindigkeit, ohne irgendein Aufhängen oder anderer Dinge. > > Hier nochmal Dein Programm: > > <code> > > //------------ > > thread main > > //------------ > > { > > int i, bool; > > string s; > > long z; > > lcdext.init(); > > i = 0; > > bool = 0; > > > > plm.settimebase(0,0); > > plm.setmode(0,0); > > plm.setperiod(0,3000); > > > > plm.settimebase(1,0); > > plm.setmode(1,0); > > plm.setperiod(1,3000); > > > > plm.settimebase(2,0); > > plm.setmode(2,0); > > plm.setperiod(2,3000); > > > > loop > > { > > if i >= 3000 > > bool = 1; > > if i <= 0 > > bool = 0; > > > > if bool == 0 > > i = i + 50; > > if bool == 1 > > i = i - 50; > > > > plm.out(1, i); > > plm.out(0, i); > > plm.out(2, i); > > > > s=""; > > str.putlong(s, ports.getcount(1)); > > lcdext.goto(1,0); > > lcdext.print(s); > > lcdext.goto(2,0); > > lcdext.print("Trallala"); > > sleep 500; > > lcdext.clear(); > > > > s=""; > > str.putlong(s, ports.getcount(2)); > > lcdext.goto(1,0); > > lcdext.print(s); > > lcdext.goto(2,0); > > > > lcdext.print(" und "); > > sleep 500; > > lcdext.clear(); > > > > s=""; > > str.putlong(s, ports.getcount(3)); > > lcdext.goto(1,0); > > lcdext.print(s); > > lcdext.goto(2,0); > > lcdext.print("Hoppsasa"); > > sleep 500; > > lcdext.clear(); > > } > > quit 1; > > }</code> > > > > Ich habe nur ein <code>quit 1;</code> nach der Schleife eingefügt, um erkennen zu können, > > falls die Schleife verlassen wird, was erwartungsgemäß nicht geschehen ist. > > Übrigens kann man das Programm noch um einiges kompakter und optimierter schreiben. > > > > Ich glaube Dein Hauptproblem liegt immernoch im Ignorieren sämtlicher Dokumentation. > > Prüfe daher bitte einmal, ob Du vielleicht mehrere Softwareversionen der Module, der IDE > > und HEX-Dateien gemischt hast. > > Denn das wäre der einzige Grund, warum es z.B. zu einem Stackunderflow oder > > Stackoverflow kommen könnte, wenn die Einsprungadressen von älteren Modulen > > zu neueren HEX-Dateien oder von neueren Modulen zu älteren HEX-Dateien genutzt. > > > > D.h. in Deinem Fall, daß Du folgende Schritte jetzt vornimmst: > > - Deinstalliere die IDE > > - Lade die aktuelle IDE mit SP herunter und installieren diese > > - Lade nun alle Module herunter, die seit erscheinen des letzten SP erschienen sind > > und kopiere diese entsprechend in die Lib-und UserLib-Verzeichnisse > > - Lade Dir OSOPT V3.1b1 herunter und lade es mit dem CC2Net.de-Download-Tool in die CC2. > > - Lade nun sys0002.hex mit vorherigen Löschen von Segment 3 in die CC2. > > > > Wenn Du das geschafft hast, reden wir weiter. > > > > Was den Stack angeht, so kannst Du hier nichts konfigurieren. > > Der komplette restliche RAM, der nicht für Globale Variablen verwendet wird, wird als Stack verwendet. > > > > Und was Du jetzt mit den Long-Variablen hast, kann ich auch nicht verstehen. > > Long-Variablen haben einen 32Bit Bereich. Und hier gibt es keine Probleme. > > Du mußt nur eine Kleinigkeit beachten, wenn Du Integer und Long-Berechnungen mischt. > > Aber das steht auch in den FAQ. > > > > <b>Und, um es nochmal klipp und klar zu sagen: > > Die einzigen Bugs, die die CC2 derzeit hat, liegen im Bereich von HWCOM > > beim Empfang sehr großer Datenmengen an einem Stück. > > Aber selbst das tritt nur sehr selten in Einzelfällen auf, so daß ich das nur sehr schwer reproduzieren kann. > > Ansonsten sind keinerlei anderen Bugs bekannt. > > Meinst Du nicht, daß solche Dinge, die Du beschreibst, nicht auch anderen auffallen müssten ?? > > Jedoch gab es in den letzten 6 Jahren keine einzige solche Meldung. > > Dabei sei noch angemerkt, daß viele Programme größer 50kB VM-Code sind. > > Ich habe auch einige eigene und auch Kundenprojekte, die sogar über 100kB VM-Code, > > unzähle Threads haben und sehr viel RAM benötigen. > > > > Aber solange Du so voreingenommen auftrittst, daß "Du unfehlbar bist und es > > nur am System/Controller liegen kann", kann Dir kein Mensch mehr helfen.</b> > > > > Und nochetwas, weißt Du warum ich in meiner Signatur stehen habe, daß ich > > auf keine Mails von Forenpostings antworte ? > > Denn sonst hätte ich den gesamten Tag nichts anderes mehr zu tuen, außer > > auf Mails zu antworten.. > > > > > > Also, bevor noch weitere Postings von Dir kommen, die angebliche Bugs der CC2 > > zeigen sollen, die einfach nicht existieren, prüfe ersteinmal alles andere. > > Denn ich arbeite tagtäglich mit der CC2, habe bei vielen Kundenprojekten mitgewirkt > > und betreue auch einiges an Software. > > Meinst Du nicht, daß ein solcher nicht existierender Bug, wie Du ihn beschreibst, > > mir irgendwie in den letzten Jahren aufgefallen wäre ?? > > > > > > André > > > > > > > > > Also nachdem mir ein Mikrocontrollerfachmann den Tipp gegeben hatte, alle unnötigen Variablen > > > (also die, die eigentlich der Lesbarkeit dienen und für den gleichen Wert an mehreren Stellen sorgen) > > > rauszuschmeißen, weil alles auf einen Stack-Überlauf hindeutet - vor allem, dass das Programm > > > weiterkommt, seit ich das gemacht habe, bestätigt dies. Da es sich um ein multithreading-System > > > handelt, ist jedem thread ja eine default-Größe zugeordnet. Ich habe sinnigerweise aber nur einen > > > thread und von daher wäre es schön, wenn mir jemand sagen könnte, wie ich die "stack size" > > > erhöhe. > > > > > > In meinem kleinen Testprogramm wird die loop-Routine ja immer langsamer und hängt sich zum > > > Schluss auf: > > > auch ein Zeichen. > > > Da dort aber nicht so viele Variablen vorkommen, führe ich das auf einen Bug zurück. > > > Die Pulsereien gehen einzeln. Allerdings geht das irgendwann schief, sobald das Display dazukommt. > > > Im Moment bin ich am Testen: ich lasse eine long-Variable hochzählen und ausgeben. > > > Interessant ist, dass long bei CC2 von -32768 bis 32767 geht :) So ein Quatsch ;)