Stránka 1 z 1
PIC16F628A->PWM
Napsal: 19 zář 2014, 22:11
od ebastlirna
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ěď.
Napsal: 20 zář 2014, 08:34
od MiloPS3
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
chtěl bych na svůj první mini projekt využít PWM modulaci
jako 1 projekt bys mel zacit s obycejnym blikanim pak pridat tlacitko, atd, snazit se musis ty, ja te maximalne pri takovehle snaze jen nakopnu
Napsal: 20 zář 2014, 12:25
od AB1
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:
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
Jeden pwm cyklus trvá 100 * 10us = 1 ms.
Pwm frekvence je tedy 1 kHz.
Duty cycle (plnění) jde nastavit v krocích 1%.
Napsal: 20 zář 2014, 12:41
od ebastlirna
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 cenu
chtěl bych na svůj první mini projekt využít PWM modulaci
jako 1 projekt bys mel zacit s obycejnym blikanim pak pridat tlacitko, atd, snazit se musis ty, ja te maximalne pri takovehle snaze jen nakopnu
Děkuji za ten datasheet, v cz jsem našel jenom pic16f84.
A i ten kód je super, že je v ASM já nacházel jenom v C-ku...
Napsal: 20 zář 2014, 17:06
od MiloPS3
na ten DS jsem chtel dat odkaz ale uz sem to nikde nenasel ,asi to uz smazaly, tak sem to upnul ja
staci pouzit G a najit ten spravny nazev , dneska uz se da opravdu hodne veci najit na netu...i kdyz to chvylku trva
Napsal: 20 zář 2014, 19:51
od Chenzee
Jen si dávej pozor, v českých překladech jsou občas chyby. Takže doporučuji mít po ruce i originál a důležité pasáže zkontrolovat.
Napsal: 20 zář 2014, 20:08
od hakamusai
Neví někdo o překladu datasheetu 16F887 ?
Napsal: 21 zář 2014, 05:54
od Chenzee
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é).
Napsal: 21 zář 2014, 07:10
od Pawalo
Napsal: 06 říj 2014, 17:25
od ebastlirna
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.
Napsal: 06 říj 2014, 17:55
od MiloPS3
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%...
Napsal: 06 říj 2014, 19:12
od ebastlirna
Děkuji za radu. No přesnou frekvenci potřebuji, abych rozblikal ledku zhruba na 5Hz a přitom mohl měnit intenzitu. Například, že si udělám 3 stavy. Kdy
1. bude blikat 5Hz a střída bude 100%.
2. opět 5 Hz a střída 70%
3. 5 Hz střída a střída 40 %
Možná, že tenhle koncept je nesmyslný nebo ne?
Napsal: 06 říj 2014, 21:39
od MiloPS3
hm. napis jak bys to udelal.... jen tak heslovite
ja bych to udelal takle : nastavit tmr2 na 1:2/4 treba. tmr1 na preruseni po 100ms (zalezi na kolika ti to bezi) v tom si nastavovat stridu toglovane 0 nebo promena . v mainu si krmit promenou 40% nebo 70% nebo 100% + se muze mcu dloubat v nose....