Timer Problem (Sec. Timer)

Gast #1630556
Lesenswert?

Guten Abend

Ich versuche gerade einen Timer zum laufen zu bringen der ca. jede 
Sekunde eins nach unten zählt.

Das ganze funktioniert auch ganz gut , allerdings zählt er zu langsam !

Ich habe den Timer1 des Atmega8 gewählt.

Bei einem Prescaler von 256 sollte er in einer Sekunde bis 31250 zählen 
oder ? Ich habe deswegen den Timer erst bei 34285 starte lassen.
Leider zählt er aber viel zu langsam , ca 2-3 Sekunden pro Tick bzw bis 
er überläuft.

Habe ich einen Denkfehler bei der Rechnung ? Habe ich etwas übersehen

Hier der ganze Code


$regfile = "m8def.dat"
$crystal = 8000000



Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , _
   Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcd = 16 * 2                                         '
Cls



Dim C As Integer

C = 200





'---------------------------------------------------------
   Config Timer1 = Timer , Prescale = 256
   Enable Timer1
   On Timer1 Isr_von_timer1
   Enable Interrupts
   Timer1 = 34285
'---------------------------------------------------------




     Do


     If C = 0 Then Goto Ende
     Locate 1 , 1 : Lcd C

     Loop


'---------------------------------------------------------
   Isr_von_timer1:

      C = C - 1
      Timer1 = 34285
    Return

'---------------------------------------------------------

 '---------------------------------------------------------
   Ende:
      Lcd "Timer ist Over"
      End
    Return
Gast #1630613
Lesenswert?

Icke schrieb:
> Riecht nach fusebits CLKDIV8
hat der atmega8 nicht.

> Besser:
egal.
bei 0 hört das programm auf.

> Erst den Timer setzen dann alles andere.
auch egal.


ich tippe auf falsche fuses für den takt.
Gast #1630888
Lesenswert?

Hallo

So was habe ich mir nach dem durchlesen AVr Fuses schon geacht da ich an 
denen noch nichts geändert habe.Wie kann ich nun mit PonyProg den Atmega 
auf 8Mhz intern schalten bzw welche Fuses muss ich setzten bzw 
nichtsetzten
#1630952
Lesenswert?

Dein erstes Bild zeigte

   CKSEL3   CKSEL2   CKSEL1  CKSEL0
   Haken    Haken    Haken   kein Haken

weiters wissen wir, dass du die Fuses noch nie angerührt hast. D.h das 
entspricht dem Auslieferungszustand: interner Oszillator mit 1 Mhz

Jetzt schau ich ins Datenblatt vom Mega8 und finde die Tabelle

  1.0Mhz     0 0 0 1   (für CKSEL3 bis CKSEL0)

d.h. überall dort, wo im Datenblatt eine 0 ist, ist bei Pony ein Haken. 
Wo im Datenblatt eine 1 ist, ist kein Haken.

So weit so gut.
aus der gleichen Tabelle

  8.0Mhz     0 1 0 0

d.h. mit dem Wissen, wie die Zuordnung Haken/kein Haken ist, muss die 
Pony Einstellung lauten

   CKSEL3   CKSEL2      CKSEL1  CKSEL0
   Haken    kein Haken  Haken   Haken


(Ich geh immer über das Datenblatt und vergleiche dieses mit der 
vorhandenen Einstellung bzw. dessen Anzeige im Brennprogram. Da kann mir 
nihts passieren, ob ein Programm/Fusecalculator jetzt eine 0 als x 
ausgibt oder umgekehrt)

Also ist dein Bild richtig

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren