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

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.