Forum: Mikrocontroller und Digitale Elektronik AVR ATmega8A Endlosschleife Wie stoppen ?


von Maass (Gast)


Lesenswert?

Hilfe!  Habe ein Testprogramm mit einer Endlosschleife programmiert 
(BASCOM). Läuft auch, aber ich kann das Programm nicht mehr stoppen.

von Thomas (kosmos)


Lesenswert?

schnell schalt die Stromversorgung zum µC ab dann stopt er, hoffentlich 
ist er nicht schon zu heiß geworden ;-)

von Timmo H. (masterfx)


Lesenswert?

Darum nennt sich das auch Endlosschleife. Sie läuft endlos.
Wenn du das nicht willst schreibst du ein neues Programm ohne 
Endlosschleife. Aber dann hast du das Problem, dass nach jedem Durchlauf 
der Controller quasi neu startet.

Normalerweise macht man es auch so dass man eine Endlosschleife hat 
(irgendwo in der main-Funktion) und der Controller wartet auf Events 
(wie Tastendrücke, Timer etc) und reagiert dann darauf. Und dass soll in 
der Regel auch die ganze Zeit gemacht werden, darum nimmt man eine 
Endlosschleife.
1
main(){
2
 char taster;
3
 while(1){
4
  machdies();
5
  machdas();
6
  taster = guckwietastersind();
7
  if(taster == 2)
8
    supertolle_funktion();
9
  Piepeinmal();
10
 }
11
}

Wenn du ein Programm haben willst, was nur einmal durchläuft und dann 
stehen bleibt, dann machst du das auch mit einer Endlosschleife, aber 
einer die Leer ist:
1
main(){
2
3
  machdies();
4
  machdas();
5
  machLEDan();
6
  Piepeinmal();
7
  
8
  while(1); // hier stehen bleiben
9
}

von mmh (Gast)


Lesenswert?

Maass schrieb:
> Läuft auch, aber ich kann das Programm nicht mehr stoppen.

Probier mal den Reset-Anschluß vom µC. Der hält den Controller sicher 
an.

von Thomas (Gast)


Lesenswert?

Kommt mir irgendwie bekannt vor --> 
http://www.youtube.com/watch?v=wdVKi29QWeU
Erschreckende Vorstellung ;)

von во'дка (Gast)


Lesenswert?

Timmo H. schrieb:
> Aber dann hast du das Problem, dass nach jedem Durchlauf
> der Controller quasi neu startet.
Nicht ganz.
Compilate enden dann meistens mit einem jump auf die eigene Adresse mit 
dem  Ergebnis: der program counter erhöht sich nicht mehr.

von Maass (Gast)


Lesenswert?

Vielen Dank für die Antworten!
Das Ganze ist mir wirklich sehr peinlich....
Habe den Reset betätigt --> Controller hält an --> lasse den Reset los 
---> Controller startet nun wieder.
Kann ich den Controller im lufenden Betrieb überschreiben, oder 
Flash-Inhalte löschen, oder .... ?

Oder muss ich nun einen neuen Controller kaufen :-(

von Timmo H. (masterfx)


Lesenswert?

Nein du musst dir natürlich jedes mal einen neuen kaufen :D

Quatsch mensch. Schau doch mal auf die erste Seite im Datenblatt:
1
Write/Erase Cycles: 10,000 Flash/100,000 EEPROM
Du kannst den Flash-Speicher (dort liegt das Programm) also mindestens 
10000 mal überschreiben. Und ja das geht auch während das Programm 
läuft.

von Maass (Gast)


Lesenswert?

Hat sich soeben erledigt.   Controller kann wärend des Programmabluafs 
neu beschrieben werden.
Das passiert mit NIE WIEDER.  Danke nochmals für die Tips !!!!

von Eumel (Gast)


Lesenswert?

Maass schrieb:
> Controller kann wärend des Programmabluafs
> neu beschrieben werden.

Nö, dein Programmer zieht in nur auf Reset und programmiert ihn dann :)

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
Noch kein Account? Hier anmelden.