www.mikrocontroller.net

Forum: Compiler & IDEs Timer mit Taster anhalten


Autor: Marco M. (marco1987)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
if (v>=1000){
   PORTD=(1<<PD7);  //Damit wolltest du wohl ne LED anmachen...
   while(!(PIND & (1<<PIND3)));
   v = 0; //hab ich mir jetzt einfach mal gedacht
}
else{
  //der Rest des Programms
}

Autor: Marco M. (marco1987)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.