Guten Morgen,
ich habe folgendes Problem, wozu ich einen Lösungsvorschlag bräuchte.
ALso ich zähle eine Variable hoch in einer ISR von einem Timer, jetzt
möchte ich wenn die Variable einen bestimmten zählerwert erreicht das
das programm anhalt, bis ich einen taster betätige wollte das so lösen:
if (v>=1000){
do{
PORTD=(1<<PD7);
for(;;){}
}
while(!(PIND & (1<<PIND3)));
aber endlosschleifen hat der µC wohl nciht so gerne , da kommt der ja
nie wieder raus. Und ja das Programm soll wirklich anhalten Timer usw.
MFG
Endlosschleifen ist gang und gebe beim µC. Nur hast du das Problem, dass
die Schreife "for(;;){}" niemals verlassen wird. Du hast eine
Endlosschleife, die immer wahr ist und eine die auf den Tastendruck
wartet. Dummerweise wird das "while(!(PIND & (1<<PIND3)));" nie
erreicht.
Richtig wäre also:1 | if (v>=1000){ |
2 | PORTD=(1<<PD7); //Damit wolltest du wohl ne LED anmachen... |
3 | while(!(PIND & (1<<PIND3))); |
4 | v = 0; //hab ich mir jetzt einfach mal gedacht |
5 | }
|
6 | else{ |
7 | //der Rest des Programms
|
8 | }
|
danke für die antwort, genaugenommen wollte ich halt das programm stoppen bei dem stand 1000 und erst das programm weiter laufn lassen wenn ich den taster gedrückt habe, bei deiner version läuft er ja weiter oder?
Marco Müeller wrote: > danke für die antwort, > genaugenommen wollte ich halt das programm stoppen Du kannst ein Programm nicht stoppen. Der µC braucht immer etwas zu tun, und wenn es nur Nichtstun in einer Schleife ist. Aber selbst dann braucht es irgendeine Bedingung, so dass der Programmfluss aus dieser Schleife wieder rauskommen kann.
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.