Dim B As Byte Config Timer0 = Pwm , Prescale = 8 , Compare A Pwm = Clear Up
Config Portb.0 = Output
Do For B = 1 To 255 Pwm0a = B Waitms 20 Next
For B = 255 To 1 Step -1 Pwm0a = B Waitms 20 Next Loop
End
Potřeboval bych, aby kmitočet PWM byl 4kHz a zde jsem se dočetl, že je na to vzorec f PWM = f CLK/(2 * n * TOP), tj. 9600000/(2*8*4000)=150.
A teď nevím jestli se použije Icr0=150 nebo Ocr0a=150 a kam to vložit (před a nebo za config timer)
V mém věku už se něco těžko učí z příruček a tak jsem postupem času zjistil, že je lepší, když ti to někdo vysvětlí, kdo už to umí.
Taky když jsem objevil toto forum, tak jsem byl rád za to, že je tu někdo, kdo člověku poradí, když se na něco zeptá a netušil jsem, že to bude někomu vadit
Přejdi z Bascomu na C. Výhodou C je podpora přímo v AVRStudiu od Atmelu.
Ušetříš si kryptické zápisy jako je:
Config Timer0 = Pwm , Prescale = 8 , Compare A Pwm = Clear Up Co vlastně má dělat ten kód, který jsi napsal ve svém prvním příspěvku?
Edit1: nějaké tipy ohledně pwm jsou zde:http://www.mikrocontroller.net/articles/AVR_PWM
frpr666:
ten původní program prostě zvětšuje a pak zmenšuje PWM tedy např. jas žárovky či otáčky motoru.
S tím přechodem na C , no nevím, nevím. V těch závorkách bych se já ztratil.
Velice bych doporučoval nějakou "vývojovou desku" např. EVB 5.1
sice se někomu může zdát +/- 1500,-Kčs moc ale co všechno za ty peníze dostanete. A pak lze zkoušet a zkoušet do alelujá.
kousek kodu z regulátoru kolejiště:
'---------------------------------------------------------
'nastavení PWM pro Timer0,Timer1- kmitočet 240Hz změnou Prescale
Run_240:
Config Timer0 = Pwm , Prescale = 8 , Compare B Pwm = Clear Down
Config Timer1 = Pwm , Pwm = 8 , Prescale = 8 , Compare A Pwm = Clear Down , _
Compare B Pwm = Clear Down
Return
'---------------------------------------------------------
'nastavení PWM pro Timer0,Timer1- kmitočet 1960Hz změnou Prescale
Run_1960:
Config Timer0 = Pwm , Prescale = 1 , Compare B Pwm = Clear Down
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , _
Compare B Pwm = Clear Down
Return
End 'end program
'Řízení šířkové modulace je jednoduché - změnou proměnné Pwm1a se mění poměr
'impuls/mezera. Maximální hodnota Pwm1a je 255.
'Při Pwm1a = 1 je poměr 1/255
'Při Pwm1a = 2 je poměr 2/254
'Při Pwm1a = 10 je poměr 10/246 atd
'Nastavení Timer1 pro PWM:
'Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Up
'Pwm = 8 - osmibitová PWM (Pwm1a = 1 až 255)
'Prescale = 1 - opak.kmit = 20 kHz (při oscilátoru 10MHz)
'Prescale = 8 - opak.kmit = 20/8 kHz) atd
'Compare A Pwm = Clear Down - polarita výst. impulsů je opačná než při Clear Up
Já to myslím vážně, nebylo mi marné tu mít část pro Bascom, část Arduio, část pro C, část pro B, část pro ADA, část pro FORTH... tak, abych se dalo jít přímo do tématu, které mne zajímá.