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 User
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
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.
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
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
"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
@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
@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.....
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
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...
Und Leichenfledderer sind auch nicht gern gesehen.