BASCOM...PWM 38 kHz

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
Vojrik
Příspěvky: 8
Registrován: 03 bře 2012, 01:00

BASCOM...PWM 38 kHz

#1 Příspěvek od Vojrik »

Opět zdravím. Nevíte prosím někdo, jak dostat z ATmegy32 programované v BASCOMu PWM signál o 38 kHz pro IR senzor?...Mě se to pořád nedaří. Dík za radu :wink:

Jenda_KL
Příspěvky: 1173
Registrován: 10 zář 2008, 02:00
Bydliště: Kadaň
Kontaktovat uživatele:

#2 Příspěvek od Jenda_KL »

Nastavit timer na tuto frekvenci, režim PWM s výstupem OCnx a s přerušením při dovršení.
Režim výstupu je tam tušim napsáno "Set at 0 reset at CompareMatch"
Do přerušení nacpat rotaci nějakýho registru a podle 1/0 nastavit OCRnx na 0x00 (nevysílat) nebo 0x80 (vysílat).

Uživatelský avatar
Vojrik
Příspěvky: 8
Registrován: 03 bře 2012, 01:00

#3 Příspěvek od Vojrik »

Nemohl by jsi mi to prosím napsat přímo kousek toho programu, protože mi to nějak nejde

Uživatelský avatar
nekmil
Příspěvky: 780
Registrován: 06 bře 2005, 01:00
Bydliště: Havířov

#4 Příspěvek od nekmil »

"RC5SEND" by použít nešlo ? I když ten je asi na 36kHz.

Uživatelský avatar
popopepe
Příspěvky: 548
Registrován: 26 říj 2005, 02:00

#5 Příspěvek od popopepe »


Uživatelský avatar
Crifodo
Příspěvky: 14471
Registrován: 11 říj 2005, 02:00

#6 Příspěvek od Crifodo »

Abys dostal frekvenci jinou než vychází "kulatým" dělením při přetečení čítače, musíš vhodně zkrátit vhodnou nižší frekvenci.
Můžeš použít timer1 v režimu pwm se zkráceným cyklem pomocí registru ICR1, kterým nastavíš vrchol čítače TCNT1.
Například: 16 MHz hodiny procesoru, předdělič 1, režim fázově/frekvenčně korigované pwm na timeru 1:

f PWM=f CLK/2 * n * TOP,

n=prescale, TOP je vrchol čítače zapsaný do registru ICR1.
zápis v Bascomu:
$regfile = "m32def.dat"
$crystal = 16000000
Tccr1a = &B10000000
Tccr1b = &B00010001
Icr1 = 210 'pro f CLK=16 MHz, prescale 1, frekvence =16M/2*N*TOP, N=prescale, TOP=ICR1,=38095 Hz

Ddrd = &B00100000 'pin OC1a, D.5 jako vystupni (OC1A, vystup pwm)
Ocr1a= x '0 až 210 (ICR1)=šířka pwm
A nebo použít fázově korigovanou pwm s hodinama 20 MHz a dostaneš pwm frekvenci 39215 Hz, kdyby to nevadilo.

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#7 Příspěvek od Andrea »

Crifodo píše:f PWM=f CLK/2 * n * TOP,
Tak velkou frekvenci AVR určitě generovat neumí, jestli by to nemělo být spíš
f PWM = f CLK/(2 * n * TOP)

Uživatelský avatar
Crifodo
Příspěvky: 14471
Registrován: 11 říj 2005, 02:00

#8 Příspěvek od Crifodo »

Vnímavější čtenář si to lomítko jistě představí jako zlomkovou čáru.
V html se dost blbě píšou rovnice, když řádek ignoruje počáteční mezery.

Jinak je to v datashitu.

Uživatelský avatar
AB1
Příspěvky: 312
Registrován: 23 lis 2009, 01:00

#9 Příspěvek od AB1 »

f PWM=f CLK/2 * n * TOP
Vnímavější čtenář si to lomítko jistě představí jako zlomkovou čáru.
Představil jsem si místo lomítka zlomkovou čáru ale vyšlo mi to špatně.
Přílohy
vzorec.png
(2.03 KiB) Staženo 110 x

Uživatelský avatar
Crifodo
Příspěvky: 14471
Registrován: 11 říj 2005, 02:00

#10 Příspěvek od Crifodo »

Kdo chce onanovat s všemi možnými alternativními výklady, i když moc dobře ví o co jde, má samozřejmě téměř neomezený prostor. A mně může políbit.
Přílohy
pwm.png
(18.54 KiB) Staženo 129 x

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#11 Příspěvek od Andrea »

Kdo moc dobře ví, o co jde, se tu neptá. A silně připomínáš fera.

Uživatelský avatar
AB1
Příspěvky: 312
Registrován: 23 lis 2009, 01:00

#12 Příspěvek od AB1 »

No, nic ve zlém, Crifodo.
Nemusíme se přece hned uchylovat k pornografii.

Chtěl jsem jenom upozornit, že matematický výraz musí být napsaný správně.
Alternativní výklad jsi mu přisoudil ty.
Kdybys řekl, že jsi zapomněl na závorky, tak to bylo v pořádku.

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“