Fusebits und Timer1

Gast #1243274
Lesenswert?
• ▲
▼
Moin,
Ich habe das Evulationsboard von pollin und versuche für eine 
Druckregelung den Timer1 zu benutzen. Dieser zaehlt bei mir jedoch 
schneller als er soll. Daher mein Verdacht, dass ich die falschen 
Fusebits gesetzt habe und das er garnicht den 16MHz Quarz, der auf dem 
Board ist, verwendet. Ich benutze einen Atmega16.
Villeicht ist der Fehler aber beim Timer1, hier mein Code:

$regfile = "m16def.dat"
 $crystal = 16000000

 'PA2 auf Board
 Config Porta.1 = Output

 '###############################################
 'Display

 Config Lcd = 16 * 2
 Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , 
Db7 = Porta.7 , E = Portb.0 , Rs = Portb.2
 Config Lcdbus = 4

 'ADC Initzialisierung
 Config Adc = Single , Prescaler = Auto , Reference = Internal
 Start Adc
 '###############################################
 Dim Sekunden As Integer
 Sekunden = 0

 Dim W As Word , Channel As Byte
 Dim Wmulti As Single
 Dim Wstring As String * 10

 Channel = 0

 'Begrüßungsbildschirm
 Cls
 Locate 1 , 1
 Lcd "HS Bremen"
 Locate 2 , 1
 Lcd "Waterhammer v.1"
 Wait 2
 Cls

 'timer
 Config Timer1 = Timer , Edge = Rising , Prescale = 1024
 Enable Timer1
 On Timer1 Timer_overflow
 Enable Interrupts
 '65535 - (16000000 / 1024)
 '65535 - 15625
 '49910
 Timer1 = 49911


Do
  'Wert von ADC channel 0 auslesen
  W = Getadc(channel)

  'W umrechnen
  Wmulti = W * 0.0048288
  Wstring = Str(wmulti)
  Wstring = Fusing(wmulti , "#.&&")

  'LCD-Darstellung
  Locate 1 , 1
  Lcd "Wert: " ; W
  Locate 2 , 1
  Lcd "Sec. " ; Sekunden
  'Lcd "Volt: " ; Wstring
  Waitms 300
  Cls

Loop
End

'jede Sekunde 'Sekunden' erhöhen
Timer_overflow:
Sekunden = Sekunden + 1
Timer1 = 49911
Return

und so sehen meine Fusebits aus die ich über PonyProg einstelle:
haken bei JATGEN, SPIEN, CKOPT, BOOTSZ1, BOOTSZ0, SUT1

Zur zeit zählt er einfach viel zu schnell die Sekunden, die werden auf 
dem Addon board von Pollin ausgegeben.

Danke euch
Patrik
Lesenswert?
• ▲
▼
> schneller als er soll. Daher mein Verdacht, dass ich die falschen
> Fusebits gesetzt habe und das er garnicht den 16MHz Quarz, der auf dem
> Board ist, verwendet. Ich benutze einen Atmega16.

wenn die interne Taktquelle benutzt werden würde, müsste aber alles 
langsamer laufen als mit dem 16MHz-Quarz erwartet...
Gast
Lesenswert?
• ▲
▼
müsste langsamer laufen bzw genau so wie es soll. nen kumpel hat mir die 
fusebits eingestellt. wie muss ich die denn schalten für den atmega16 
wenn ich den internen takt verwenden will und muss ich dem dann trotzdem 
$crystal=1000000 sagen?
Lesenswert?
• ▲
▼
Patrik wrote:
> müsste langsamer laufen bzw genau so wie es soll.

du verstehst nicht was ich meine: Du glaubst, dass wegen falscher Fuses 
der interne RC-Oszillator statt dem Quarz benutzt wird, und deswegen 
dein Zähler zu schnell läuft. Der interne Oszi ist aber langsamer, 
also müsste der Zähler auch langsamer als wie von dir erwartet jede 
Sekunde eins hochzählen..

> fusebits eingestellt. wie muss ich die denn schalten für den atmega16
> wenn ich den internen takt verwenden will und muss ich dem dann trotzdem
> $crystal=1000000 sagen?

kA, vielleicht solltest du in einem Bascom-Forum fragen, hier sind nach 
meinem Eindruck mehrheitlich C & Assembler-Anwender unterwegs...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 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.