Forum: Mikrocontroller und Digitale Elektronik ATTiny461 Timer0 = 16Bit-Timer?


von Juergen (Gast)


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

von S. Landolt (Gast)


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 vom Autor gelöscht.
von Juergen (Gast)


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

von S. Landolt (Gast)


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.

von Juergen (Gast)


Lesenswert?

Habe mal Timer1 genommen. Gleiche Werte.
Ist ja auch ein 16Bit-Timer. ;-(

von S. Landolt (Gast)


Lesenswert?

Nicht dass ich wüsste - mein Kenntnisstand ist 10-bit für Timer1.

von S. Landolt (Gast)


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?

von spess53 (Gast)


Lesenswert?

Hi

>Woher kommen Ihre Angaben?

Datenblatt?

MfG Spess

von Veit D. (devil-elec)


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.

von Juergen (Gast)


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!

von Sören (Gast)


Lesenswert?

Wie sind die Einstellungen für

?

HWSTACK
SWSTACK
FRAMESIZE

?

von Juergen (Gast)


Lesenswert?

???
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!

von Uwe D. (monkye)


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!

Am Programmieradapter auch nicht. Der ändert doch keinen Code…

von Sören (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.