Hilfe! Habe ein Testprogramm mit einer Endlosschleife programmiert (BASCOM). Läuft auch, aber ich kann das Programm nicht mehr stoppen.
schnell schalt die Stromversorgung zum µC ab dann stopt er, hoffentlich ist er nicht schon zu heiß geworden ;-)
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 | }
|
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.
Kommt mir irgendwie bekannt vor --> http://www.youtube.com/watch?v=wdVKi29QWeU Erschreckende Vorstellung ;)
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.
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 :-(
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.
Hat sich soeben erledigt. Controller kann wärend des Programmabluafs neu beschrieben werden. Das passiert mit NIE WIEDER. Danke nochmals für die Tips !!!!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.