Forum: Mikrocontroller und Digitale Elektronik AVR Zähler definieren


von Felli (Gast)


Lesenswert?

Hier mein Programm, Problem in dem Kommentar:


#include<avr/io.h>
#define UEBERLAUF 0

int main()
{
  DDRA=0xFF;        //PORTA Ausgang
  PORTA = 0X00;
  TCNT1H = 0XC2;      //Timer vorladen
  TCNT1L = 0XF7;       //Timer vorladen
  TCCR1B = 0X05;      //Prescaler 1024
  while(1){
      while(TCNT0==0xFF){  //warten
            ;   //nichts
    }
    PORTA = ~PORTA;
                            //setzen um zu löschen????? Wie setze ich 
den Timer zurück?
    TCNT1H = 0XC2;      //Timer vorladen
    TCNT1L = 0XF7;       //Timer vorladen

  }
}



Wie kann ich also den Timer löschen/Rücksetzen um dann wieder 1s zählen 
zu lassen? lg

von Martin K. (maart)


Lesenswert?

Nur kurz angeschaut:
Hexadezimalwerte mit kleinem x angeben.

von Thomas E. (thomase)


Lesenswert?

Felli schrieb:
> Wie kann ich also den Timer löschen/Rücksetzen um dann wieder 1s zählen
> zu lassen? lg

So macht man das nicht. Das kann der Timer alles ganz alleine. Guck dir 
den CTC-Mode an.

> while(TCNT0==0xFF){  //warten
> ;   //nichts
Und das versteh ich überhaupt nicht.


mfg.

: Bearbeitet durch User
von Martin K. (maart)


Lesenswert?


von spess53 (Gast)


Lesenswert?

Hi

>Wie kann ich also den Timer löschen/Rücksetzen um dann wieder 1s zählen
>zu lassen? lg

Kann er ganz allein. Stichwort CTC. Datenblatt  Timer->Modes of 
Operation-> CTC

MfG Spess

von Detlef K. (adenin)


Lesenswert?

Die Zauberformel ist "Clear Timer on Compare Match" :)
Schau mal im Datenblatt.

Und extrem wichtiglich: mach mal die x klein ;)

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.