PIC16F628A->PWM
Moderátor: Moderátoři
- ebastlirna
- Příspěvky: 84
- Registrován: 10 říj 2013, 02:00
PIC16F628A->PWM
Dobrý den, když mám čas, učím se programovat MCU PIC, konkrétně PIC16F628A. A chtěl bych na svůj první mini projekt využít PWM modulaci. I když jsem se snažil to rozlouskat z datasheetu, tak jsem to stále nepochopil. Našla by se nějaká dobrá duše, která by mě aspoň nakopla a ukázala směr nebo mi trochu tuhle problematiku popsala? Budu rád za každou odpověď.
Naposledy upravil(a) ebastlirna dne 20 zář 2014, 19:52, celkem upraveno 1 x.
cau,to si se teda moc nesnazil ..
stahni si CZ datasit http://uloz.to/xjRg1yye/pic16f87xa-cz-pdf
a koukni sem http://www.module.ro/pwm.html
az si to projdes znovu tak si napis kod a ten dej sem , jinak to nema cenu
![Rolling Eyes :roll:](./images/smilies/icon_rolleyes.gif)
stahni si CZ datasit http://uloz.to/xjRg1yye/pic16f87xa-cz-pdf
a koukni sem http://www.module.ro/pwm.html
az si to projdes znovu tak si napis kod a ten dej sem , jinak to nema cenu
jako 1 projekt bys mel zacit s obycejnym blikanim pak pridat tlacitko, atd, snazit se musis ty, ja te maximalne pri takovehle snaze jen nakopnuchtěl bych na svůj první mini projekt využít PWM modulaci
Jestli dokážeš nastavit přerušení čítače např. každých 10 mikrosec, můžeš začít s tímto softwarovým pwm:
Jeden pwm cyklus trvá 100 * 10us = 1 ms.
Pwm frekvence je tedy 1 kHz.
Duty cycle (plnění) jde nastavit v krocích 1%.
Kód: Vybrat vše
//pseudokód
obsluha_preruseni_timer0: // každých 10 us
count = count +1 // počet přerušení
if count = duty then vystup = 0
if count = 100 then
vystup = 1
count = 0
endif
------------------------------------
Loop: // test
duty = 10 // duty_cycle = 10%
wait 300 ms
duty = 20 // duty_cycle = 20%
wait 300 ms
duty = 30 // duty_cycle = 30%
wait 300 ms
// atd
goto Loop
Pwm frekvence je tedy 1 kHz.
Duty cycle (plnění) jde nastavit v krocích 1%.
- ebastlirna
- Příspěvky: 84
- Registrován: 10 říj 2013, 02:00
Děkuji za ten datasheet, v cz jsem našel jenom pic16f84.MiloPS3 píše:cau,to si se teda moc nesnazil ..![]()
stahni si CZ datasit http://uloz.to/xjRg1yye/pic16f87xa-cz-pdf
a koukni sem http://www.module.ro/pwm.html
az si to projdes znovu tak si napis kod a ten dej sem , jinak to nema cenujako 1 projekt bys mel zacit s obycejnym blikanim pak pridat tlacitko, atd, snazit se musis ty, ja te maximalne pri takovehle snaze jen nakopnuchtěl bych na svůj první mini projekt využít PWM modulaci
A i ten kód je super, že je v ASM já nacházel jenom v C-ku...
O jeho existenci vážně pochybuji. Ale můžeš si přečíst 877A, ten v CZ je a pak se podívat na 887. Ty dva obvody jsou si hooodně podobné (neříkám stejné!), ale ty rozdíly najdeš a určitě jim porozumíš. Jinak jakmile se tomu dostaneš trošičku pod kůži, bude ti stačit jen AJ, páč ono je to u PICů rodiny 16F stále stejné (nebo hooodně podobné).
Žádnej učenej z nebe nespadl ...
tady sou překlady >>> http://www.copsu.cz/mikrop/mytest/index ... kropocitac
- ebastlirna
- Příspěvky: 84
- Registrován: 10 říj 2013, 02:00
Po delší době, zdravím všechny. Když jsem měl volnou chvíli, pročítal jsem si datasheet i příklady a asi nějak bych to dal do kupy, ale ještě mi není jasný jak mám použít uváděné vzorce v datasheetu. Vůbec nevím jak do nich správně dosadit. Může mi je někdo prosím objasnit?
Perioda opakovací frekvence PWM
1/ T = [(PR2) + 1] • 4 • Tosc • (TMR2 dělicí poměr předděličky Timer2)
2/ Střída PWM = (CCPR1L:CCP1CON<5:4>) • Tosc • (TMR2 dělicí poměr předděličky Timer2)
Děkuji.
Perioda opakovací frekvence PWM
1/ T = [(PR2) + 1] • 4 • Tosc • (TMR2 dělicí poměr předděličky Timer2)
2/ Střída PWM = (CCPR1L:CCP1CON<5:4>) • Tosc • (TMR2 dělicí poměr předděličky Timer2)
Děkuji.
asi ti primo neodpovim..
mas nejakej duvod pouzit nejakou pozadovanou frevvenci ?
zapni si TMR2 , povol preruseni , dej si tam breakpoint a zmer si to , to bude frekvence PWM, zmenou preddelicky si to upravis.. (delic po nema na frekvenci PWM vliv,takze nastavit 1:1)
stridu nastavujes v CCPR1L , pouzival sem jen 8bit rozliseni (rek bych dostacujici) , 1krok=0.39%...
mas nejakej duvod pouzit nejakou pozadovanou frevvenci ?
zapni si TMR2 , povol preruseni , dej si tam breakpoint a zmer si to , to bude frekvence PWM, zmenou preddelicky si to upravis.. (delic po nema na frekvenci PWM vliv,takze nastavit 1:1)
stridu nastavujes v CCPR1L , pouzival sem jen 8bit rozliseni (rek bych dostacujici) , 1krok=0.39%...
- ebastlirna
- Příspěvky: 84
- Registrován: 10 říj 2013, 02:00