mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik bascom: Timer-Prescaler mit einer Variablen setzen?


Autor: joco (Gast)
Datum:

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

: Gesperrt durch Moderator
Autor: Werner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Joco,

via Bascon geht das nicht.
Aber Bascom macht nichts anderes als die entsprechenden Bits im
Timer-Control-Register zu setzten. Es hindert Dich niemand daran die
Bits selbst zu setzen, bzw. zu modifizieren.

Welche Bits in welchem Register das sind mußt Du aus der Doku Deines
Atmel raussuchen.

Ciao,
Werner

Autor: Christoph Wagner (Gast)
Datum:

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

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst nur, und das überall, den Counter für den Timer0 (0 - 255) neu
setzen.
Such Dir für beide Varianten einen geeigneten Prescaler aus, z. B.
256.
Für blub nimmst Du dann einen Counter von 100 und für blub1 200, dann
ist blub1 halb so schnell wie blub :-)

MfG
Andi

Autor: joco (Gast)
Datum:

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

Autor: peter dannegger (Gast)
Datum:

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

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@joco: Du wolltest Anfangs den Prescaler auf 128 setzen was aber nicht
geht, da es keinen Prescaler 128 gibt.
Alle anderen, 1, 2, 64, 256 und 1024 kann man jederzeit switchen wenn
BASCOM dabei mitspielt.

MfG
Andi

Autor: HansHans (Gast)
Datum:

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

Autor: bimbo385 (Gast)
Datum:

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

Autor: Justus Skorps (jussa)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bimbo385 schrieb:

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

Dafür gibt es das Datenblatt...

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

Bewertung
0 lesenswert
nicht lesenswert
Und Leichenfledderer sind auch nicht gern gesehen.

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.