Programm bleibt hängen (Atmel, BASCOM)

OP #3782305
Lesenswert?

Hallo zusammen,

Generelles:
Atmega328P-PU
BASCOM
ES geht an sich um eine PID Reglelung.
Sollwert wird im Programm vorgegeben und kann mit Poti an ADC verändert 
werden.
Ist-Wert wird über einen DS1820 Sensor ermittelt
Als Display kommt nen 16x2 in 4-Bit zum Einsatz.
Ausgegeben wird nen PWM Signal

nun zum Problem....
ca. 10 Sekunden lang funktioniert "alles" (soweit man das beurteilen 
kann) danach bleibt das Programm/uC einfach hängen. Das merkt man daran, 
das die Ist-Temp nicht mehr aktuallisiert wird und der PWM-Ausgang auf 
0V springt.
Ich habe keine Ahnung warum !?

Der PID teil stammt aus dem BASCOM Beispiel.
Der DS18xx Teil hab ich mir zusammengesucht, als ich mich mit diesen 
Sensoren beschäftigt habe....das hat soweit ohne Probleme funktioniert.


Im Anhang das komplette Programm, es sind viele Kommentare drin somit 
sollte man sich zurecht finden.

Vielen Dank schon mal
#CJ
Angehängte Dateien:
Gast #3782332
Lesenswert?

1
Hauptschleife:
2
.
3
.
4
.
5
   Gosub Hauptschleife

Würd ich als erstes eliminieren und die Hauptschleife mit do..loop 
einschließen. Keine Ahnung, was mit Gosub Hauptschleife ohne ein Return 
mit dem Stack macht...
Gast #3782413
Lesenswert?

Christian Jung schrieb:
> Gibt's noch ne Erklärung warum...so zum Verständniss.

Sven schrieb:
> da wird der Stack überlaufen und irgendein unsinn wird passieren.
> Goto oder Do Loop.

Beim Gosub wird der Programmcounter auf den Stack geschrieben. Kommt 
kein zugehöriges Return, das den PC wieder vom Stack holt, sondern 
gleich noch ein Gosub wird der Stack immer weiter wachsen - crash, oder 
was Bascom auch immer bei Überschreitung von HWSTACK vorgesehen hat.

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