Goeiemorgen beste CO'ers,

Ik ben nu al 2 dagen aan het stoeien met het disablen van de clock divider in Bascom. Ik weet dat het via de Fuse bits moet, maar ik gebruik Proteus ISIS als simulatieprogramma, en hier kan ik de clock divider fuse wel op 0 zetten, maar dan krijg ik onzin uit mijn seriële terminal . Weet iemand hoe ik dit in de code moet configureren, zodat mijn ATtiny2313 weet dat hij op 8Mhz draait ipv 1 mhz?

Nog even mijn code:

$regfile = "attiny2313.dat"
$crystal = 8000000
Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Print "lol"
Dim Rood As Byte
Dim Groen As Byte
Dim Blauw As Byte


Rood = 112
Groen = 50
Blauw = 200

Config Portb.2 = Output
Config Portb.3 = Output
Config Portb.4 = Output
'Config Portd.1 = Output

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Config Timer0 = Pwm , Pwm = On , Compare A Pwm = Clear Down , Prescale = 1

Enable Interrupts
Enable Timer0
Enable Timer1
Gosub Setpwm
Start Timer0
Start Timer1

Main:

Input "Rood?" , Rood
Input "Groen?" , Groen
Input "Blauw?" , Blauw
Gosub Setpwm
Goto Main

Setpwm:

 Compare1a = Rood
 Compare1b = Groen
 Pwm0a = Blauw
Return

End

Da's een missertje van Atmel. De fuses worden niet in code gedefinieerd. Microchip heeft dat met z'n pic-dingen wat eleganter opgelost.

Kijk even in de software bij / voor je programmer. Daar kun je vast op de een of andere manier wel fuses zetten.

Overigens: ik vind het over het algemeen een slecht idee om zonder Xtal oid. time-based communicatie te gaan doen. Interne oscillators driften vaak best nog wel wat. En ja, zeker als het ding calibrated is werkt het meestal wel. Als het dan niet werkt, zoek je je helemaal de tandjes...

Ik wil ook gaan werken met een extern kristal, maar dit moet toch ook bepaald worden door een fuse instelling? :p

hier kan ik de clock divider fuse wel op 0 zetten...

Als je het CKDIV8 van de low-fuse op nul zet, wordt de clock divider actief!
Je moet het bit dus op 1 zetten, om de divider uit te schakelen.

Op 1 oktober 2009 12:27:32 schreef pros:
[...]
Als je het CKDIV8 van de low-fuse op nul zet, wordt de clock divider actief!
Je moet het bit dus op 1 zetten, om de divider uit te schakelen.

Perfect, dat wist ik niet. Daarom geeft hij rotzooi met een $crystal = 8000000 en de CKDIV8 op 0 in ISIS. Waarom zijn het altijd van die simpele problemen, die gewoon te weinig beschreven zijn.

In ieder geval hartstikke bedankt allebei! :)