www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer Problem (Sec. Timer)


Autor: kime (Gast)
Datum:

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

Autor: Icke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Riecht nach fusebits CLKDIV8

C = C - 1

Besser:

If C>0 Then
  Decr C
EndIf

Auch:
Erst den Timer setzen dann alles andere.

Autor: Michael M. (Gast)
Datum:

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

Autor: kime (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Was meinst du genau damit welche Fuses sind flasch gesetzt ? wie kann 
ich das fixen.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siehe AVR Fuses

Autor: kime (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier das sind die Fuses die ich mit PonyProg auslesen konnte

http://img411.imageshack.us/i/fuses.jpg/

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

Bewertung
0 lesenswert
nicht lesenswert
> Hier das sind die Fuses die ich mit PonyProg auslesen konnte

Dein µC läuft mit internem Rc-Oszillator auf ~1Mhz

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann läuft dein uC mit internem RC Oszillator auf 1 MHz.

MFG
Falk

Autor: kime (Gast)
Datum:

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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Michael M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich sollte öfters lotto spielen! =)

für die fuses und das restliche gebrenne kann ich das hier empfehlen:
http://avr8-burn-o-mat.brischalle.de/

Autor: kime (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Danke für den Link?
Lotto nein Danke dan doch lieber PartyPoker^^

Hier laut deinem Link müssten das die richtigen Fuses sein oder für 8Mhz 
Intern

http://img52.imageshack.us/i/fuses2.jpg/

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

Bewertung
0 lesenswert
nicht lesenswert
kime schrieb:
> Hallo
>
> Danke für den Link?
> Lotto nein Danke dan doch lieber PartyPoker^^
>
> Hier laut deinem Link müssten das die richtigen Fuses sein oder für 8Mhz
> Intern
>
> http://img52.imageshack.us/i/fuses2.jpg/

Jetzt musst du nur noch aufpassen, wie PonyProg die Darstellung macht.
Was bedeutet ein gesetztes Häkchen?
(Es bedeutet eine 0 im Datenblatt)

Autor: kime (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei Atmel AVR µCs heisst eine Fuse setzen (programmieren) übrigens, 
dieses Bit auf Null zu setzen,



Dachte das müsste doch dan passen , ein Häcken bei Pony bedeutet dieses 
Fuse setzten oder ?

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

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

Autor: kime (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Besten Dank an Alle für die Hilfe jetzt läuft es so wie es sein soll

@ Karl heinz Buchegger

Danke für den Tip lieber einbmal zuviel nachgeschaut wie einmal zu wenig 
^^

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.