bascom: Timer-Prescaler mit einer Variablen setzen?

Gast #155238
Lesenswert?

Moin,
ich beisse mir gerade die Zähne am Timer0 bei folgender Konstruktion
aus:
if bla = blub then
  prescaler_1 = 64
elseif bla = blub1 then
  prescaler_1 = 128
endif
.
.
.
Config Timer0 = Timer , Prescale = Prescaler_1
enable timer0

Nun gibt mir Bascom beim compiliren die Meldung, daß 'Prescale' einen
Wert von 1, 8, 64, 256 oder 1024 haben muß.
Habe ich da noch eine Chance, oder schieße ich mir damit selbst ins
Knie?
bittebittebitte.
:-) joco
Gast #155240
Lesenswert?

Machen kannst du da nichts. Für den Timer sind 3 Bits im TCCR0 Register
zuständig :

0 0 0 - keine Timerquelle
0 0 1 - Clock / 1
0 1 0 - Clock / 8
0 1 1 - Clock / 64
1 0 0 - Clock / 256
1 0 1 - Clock / 1024
1 1 0 - Timerpin (im Datenblatt nachlesen)
1 1 1 - Timerpin (im Datenblatt nachlesen)

Wie du siehst kannst du den Prescaler nur mit einen dieser Werte
betreiben.
Gast #155242
Lesenswert?

Moin,
vielen Dank erst einmal. Wenn ich das jetzt richtig verstanden habe,
nagel ich den Prescaler beim ersten 'Config Timer' für den Rest des
Programms fest und kann nur noch mit dem Counter spielen. Wenn das so
ist, ist das die Erklärung für das merkwürdige Verhalten von Timer0 bei
mir und ich habe mir tatsächlich ins Knie geschossen :-)
;.) joco
Gast #155243
Lesenswert?

"Wenn ich das jetzt richtig verstanden habe,
nagel ich den Prescaler beim ersten 'Config Timer' für den Rest des
Programms fest und kann nur noch mit dem Counter spielen."


Wenn das so ist, dann ist das aber nur eine Beschränkung des Bascom.

Der AVR kann zu jeder Zeit umgestellt werden.
Lies Dir einfach mal das Datenblatt dazu durch und dann mache es
selber, z.B. für Prescaler = 8:

TCCR0 = 2


Peter
Gast #155245
Lesenswert?

@Alle anderen, 1, 2, 64, 256 und 1024 kann man jederzeit switchen wenn
BASCOM dabei mitspielt

Bascom erlaubt dir den zugriff auf alle
AVR Register, somit ist auch das umschalten jederzeit möglich .

Das aber 128 nicht geht ist ja schon gesagt worden und somit
auch kein Problem von bascom.

auch Bascom-programmierer brauchen das Datenblatt.....
Gast #1480821
Lesenswert?

Ich muss für einen Frequenzzähler den Prescaler des Timer1 im Programm 
mehrfach ändern.

Mit welchen Befehlen in Bascom setze ich die Bits im TCCR0 Register???

Kann ich wie peter geschreiben hat einfach TCCR1 = X schreiben (in 
Bascom)???

Wenn ja sind die anderen 5 Bits in dem Register auch für was gut oder 
sind die egal????

Mfg Bimbo385
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.