ATTiny461 Timer0 = 16Bit-Timer?

Gast #7320638
Lesenswert?
• ▲
▼

Abendgruss aus Magdeburg,

wollte mit dem Timer0 beim ATTiny461 einen Takt erzeugen. Interner Oszillator ist 8MHz und Takt ist auch korrekt. Eine LED blinkt im Sekundentakt! Nun toggle ich einen Port beim Interrupt (Überlauf des Timers) und messe nur 62,2 Hz! Das wäre aber bei einem 16Bit-Timer der Fall. Lt. Datenblatt ist der Timer0 aber ein 8Bit-Timer! Stehe ich auf dem Schlauch? Programmiere mit BASCOM Vers. 2.0.7.7! Danke

Gast #7320646
Lesenswert?
• ▲
▼

Lt. Datenblatt ist der Timer0 aber ein 8Bit-Timer!

? - Unter 'Features' lese ich im Datenblatt:

• 8-bit Mode with Two Independent Output Compare Units • 16-bit Mode with One Independent Output Compare Unit

Man müsste folglich das Programm sehen.

Beitrag #7320655 wurde von einem Moderator gelöscht.
Gast #7320682
Lesenswert?
• ▲
▼

Sorry!

$regfile = "ATtiny461.dat" $crystal = 8000000 'DivideClock by 1

Ddrb = &B00000011

On Timer0 Ontimer0 'Interrupt-Routine für Timer0 - Überlauf Config Timer0 = Timer , Prescale = 1
Enable Timer0
Enable Interrupts LED Alias Portb.0

Do Toggle LED 'LED blinkt im Sekundentakt Waitms 500 Loop End

Ontimer0: Portb.1 = Not Portb.1 Return

Gast #7320687
Lesenswert?
• ▲
▼

Schlecht, da hatte ich jetzt gehofft, dass mehr zu sehen ist, speziell das Setzen von TCCR0A.TCW0 - das ist nämlich für die Mode-Umschaltung zuständig. Initial value ist aber 0, d.h. 8-bit-Mode, folglich scheint BASCOM das automatisch zu setzen.

Gast #7320709
Lesenswert?
• ▲
▼

Also das steht schon auf der ersten Seite des Datenblatts:

1
• Peripheral Features
2
– One 8/16-bit Timer/Counter with Prescaler
3
– One 8/10-bit High Speed Timer/Counter with Prescaler
  1. Zeile Timer0, 2. Zeile Timer1.

Woher kommen Ihre Angaben?

#7320826
Lesenswert?
• ▲
▼

Hallo,

das notwendige TOP Register für den Takt ist beim Timer 0 nur im 8 Bit CTC Mode einstellbar. Ansonsten ist das TOP Register jeweils fix auf Maximum festgelegt. Die Frequenz ist dann nur noch grob mittels Prescaler einstellbar. 1Hz sind damit nicht möglich.

Der 10 Bit Timer 1 mit seinen vielen und größeren Prescalern ist für 1Hz und weit darunter verwendbar.

Eine andere Möglichkeit mittels ISR wäre den Timer 0 im 8 Bit CTC Mode auf eine höhere Frequenz einzustellen, passendes Vielfaches, und dann einen Zähler inkrementieren lassen der bei Vergleich auf Zielfrequenz irgendwas auslöst. In deinem Fall einen Pin umschalten. Nachteil höhere Interrupt Last. Vorteil es ist variabel und möglich. :-)

Du müßtest den passenden Prescaler und passenden Wert für das TOP Register einstellen.

Gast #7320946
Lesenswert?
• ▲
▼

Morning! Habe mal nicht die BASCOM-Befehle genommen sondern direkt die Register. Und auch mal direkt die hex-Datei mit dem ATmel-Studio 4.19 auf einem anderen PC übertragen. Jetzt funktioniert es problemlos und die LED fühlt sich erwartungsgemäß nicht mehr so gut mit über 15T Interrupts pro s. Denke das Problem liegt an der Übertragung meines alten Prog.-Adapter unter Win7. Danke noch mal für die Hinweise!

Gast #7321296
Lesenswert?
• ▲
▼

Juergen schrieb:

??? Sind die Standardwerte für Bascom wenn nicht angegeben. Habe damit noch nie Probleme bekommen und sogar mit einigen Unterprogrammen und Funktionen. Daran liegt es sicher nicht!

Wenn HWSTACK = 0 kriegt der Interrupt Probleme. Es schadet nicht, trotzdem einen Blick auf die Standartwerte zu werfen. Die sind nicht in Stein gemeißelt und veränderbar.

Antwort schreiben

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.

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.