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> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > Hallo Hannes, > > ich habe eine Division durch Null und auch Deinen Teilcode in einer Endlosschleife aufgerufen. Es ist > nichts passiert. Das Ergebnis war natürlich falsch, aber das war zu erwarten wenn man eine undefinierte > Operation macht. In einem von 8 Versuchen habe ich einmal die IDE neu starten müssen. > Mein letzter Test betrug 20min Division durch Null, und keine Probleme. > > Du bist der einzige, der mir dieses Problem gemeldet hat. Ich halte es für wahrscheinlich, das es ein > Garantiefall für Conrad ist. > > Gruss Peter > > > > Hallo Peter, > > > > ich habe mal ein anderes Mega32-Modul in mein App.-Board gesteckt und das ist auf Anhieb gelaufen. > > Ein Defekt am Board scheidet also aus. Ich habe dann mit einem Speicher-Oszi das Signal an PD1= > > Ext-TXD angeschaut. Das funktionierende Modul sendet Daten nach dem Einschalten+SW1 in der > > Zeit von 0-10ms und wieder in der Zeit von 115-120ms. Das defekte Modul sendet Daten nur in der > > Zeit von 0-10ms. Ferner sind beim defekten Modul Signale an PA2, PA3 und PA4 vorhanden. > > > > Das ich das Modul durch einen "Hardwarefehler" geschossen habe schliesse ich fast aus, da das Board > > mit der allerselben Hardware mit einem anderen Reglerprogramm tagelang gelaufen ist. Es wäre schon > > ein extremer Zufall, dass sich das Modul genau dann verabschiedet, als ich die undefinierte Rechen- > > operation ausführte. > > > > Wie bereits gesagt wird die Reglerfunktion alle 500ms aufgerufen und das Modul hat sich erst nach > > ein paar Sekunden verabschiedet. > > > > Für weitere Versuche ist mir das verbliebene Modul zu kostspielig. Ich sende Dir das Programm > > zu und dann kannst Du es, wenn Du Lust hast, mal selber testen. > > > > Gruss > > > > > > > > > > > > > > > > > Hallo Hannes, > > > > > > eine Division "killt" das System nicht. Die Rechenoperation ist danach undefiniert, es gibt > > > aber keine weiteren Auswirkungen. Wie sollte es auch? Der Interpreter kann nicht in das > > > Flash schreiben! > > > > > > Das Onboard EEPROM könnte vielleicht noch ein Problem sein, aber in den EEPROM Schreib- > > > routinen wird der Zugriff auf den dort geschützten Bereich unterbunden. Ein Booten mit SW1 > > > gedrückt geht aber immer in den Bootloader. > > > > > > Das ganze ist reine Koindzidenz. Wäre das Modul ausgefallen wenn Du auf das LCD ausgegeben > > > hättest, wäre die Überschrift gewesen: "LCD Zugriff killt Mega32!". Aber ich habe um ganz sicherzugehen > > > tatsächlich Deinen Code ausprobiert, und wie erwartet keinerlei Ausfall gehabt. > > > > > > Entweder das Board ist von alleine ausgefallen, dann ist es ein Garantiefall, oder Du hast selber einen > > > Kurzschluß oder Überspannung erzeugt. > > > > > > Schick doch vielleicht Dein Programm an ccpro@gmx.de, und ich schau mir an, ob mir sonst etwas > > > auffällt. Mehr kann ich leider nicht sagen. > > > > > > Gruss Peter > > > > > > > > > > > Ich schreibe gerade an ein Reglerprogr. für einen PI-Regler. Das ganze Programm hat > > > > einen Bytecode von ca. 2kB. Das Programm soll die Temp. von "Irgendwas" regeln, die > > > > Regelparameter werden am LCD angezeigt, T_Soll, Kp, Tn können während der Regelung > > > > mit einem Drehimpulsgeber beliebig verändert werden. > > > > > > > > Die Funktion "PI_Regler_Heizen" wird alle 500ms aufgerufen und Xd, Xds und Y werden > > > > jedesmal neu berechnet. > > > > > > > > Das Programm ist super gelaufen, bis ich Tn auf " 0 " gesetzt habe. > > > > Das LCD hat dann nach ein paar Sekunden nur noch wirre Zeichen angezeigt und dachte jetzt > > > > ist er abgestürtzt. Seitem ist das Modul tot! Es startet das Programm nicht mehr, > > > > und auch der Bootloader Modus beim Einschalten + SW1 kann nicht mehr aktiviert werden. > > > > Das Modul meldet sich nicht mehr. > > > > > > > > Ich weis, eine Division durch Null ist nicht definiert, das sollte aber das Modul nicht > > > > killen! Ich denke, dass dieser undefinierte Zustand irgendwas im System überschrieben hat. > > > > Wie reglet das System diesen speziellen Fall???????? > > > > > > > > Kann ich jetzt das Modul umtauschen? Einen 40EUR Verlust kann ich in diesem Fall nicht > > > > akzeptieren. > > > > > > > > Gruss > > > > > > > > > > > > > > > > // hier die relevanten Programmdaten: > > > > > > > > float T_Ist, T_Soll, Xd, Xds, Kp, Tn, Ta, Y; // globale Variablen > > > > > > > > // Startwerte > > > > Ta = 0.5; // Abtastzeit > > > > Kp = 10; // Proportionalitätsfaktor > > > > Tn = 1; // Nachstellzeit > > > > T_Soll = 30; // Solltemperatur > > > > // T_Ist wird von ADC0 eingelesen > > > > > > > > > > > > > > > > void PI_Regler_Heizen(void) // Aufruf alle 500ms > > > > { > > > > Xd = T_Soll - T_Ist; // Xd = Regeldifferenz > > > > > > > > Xds = Xds+Xd; // Xds = Summe aller Xd > > > > > > > > Y = Kp*Xd + Kp*(Ta/Tn)*Xds; // Y = Stellgrösse > > > > > > > > > > > > } > > > > > > > >