Re: Arduino generování pulzů
Petr Zapadlo
zapik na email.cz
Pondělí Červenec 31 15:08:32 CEST 2023
Zdravím,
není to kus kodu pro vaši situaci, ale spíše jen příklad.
tímto nastavím timer0 do režimu fastPWM (pozor na kolizi s Arduino
knihovnami), výstup bude na pinu PD6 (OC0A)
void pwm_setup (){
// Set to 'Fast PWM' mode
TCCR0A |= (1 << WGM01) | (1 << WGM00); //nastavení fastPWM režimu
TCCR0A &=~(1<< COM0B0);
TCCR0A &=~(1<< COM0B1); //OC0B je normální pin
TCCR0A |= (1 << COM0A1); //Clear OC0A on compare match, set OC0A at
BOTTOM,(non-inverting mode).
TCCR0B |= (1 << CS00); //CLK no prescaler
}
čítač tak běží od 0 do 0xFF a v okamžiku kdy jeho hodnota překročí
hodnotu v OCR0A, tak pin OC0A přejde do jedničky, nulováním čítače
dojde i k nulování pinu OC0A.
nastavení činitele plnění provedete v OC0A:
void pwm_set(uint8_t pwm_val){
if (pwm_val < PWMMIN){ pwm_val=PWMMIN;}
if (pwm_val > PWMMAX){ pwm_val=PWMMAX;}
OCR0A=pwm_val;
}
TAkže pokud máte Atmegu328 taktovanou na 16MHz, a ve fuse máte vypnutý
předdělič 8, tak teoreticky jste schopen mít na výstupu cca 62kHz. Pokud
potřebujete frekvenci jen hrubě, tak můžete volit vhodný předdělič.
Pokud ji potřebujete přesně, tak je cesta přes režim, kdy se nepočítá až
do 0xFF, ale do předdefinované hodnoty. Tenhle příklad ale po ruce nemám.
Stačí takto?
Petr
Dne 31. 07. 23 v 14:14 Martin Záruba napsal(a):
>
> No fajn, holt už jsem starý a blbý. Můžete napsat konkrétní příklad
> jak to udělat? Co a kam zadat aby na nějakém pinu to generovalo PWM s
> (alespoň přibližně) požadovanou frekvencí a střídou?
>
> Martin Záruba
> Dne 30.7.2023 v 22:31 Petr Labaj napsal(a):
>> Co furt máte s nějakým nastavováním bitu?
>> Přece čítač tohle umí sám. Od toho je čítačem, je to jeho práce a
>> poslání.
>> Třeba tady obrázek úplně základního nastavení čítače AVR.
>> Jeden registr udává základní opakovací frekvenci, druhý registr říká,
>> jak dlouhý bude pulz.
>> Funguje to samo, pokud nepotřebuju délku pulzu měnit.
>>
>> PL
>>
>> *********************
>>
>>
>> Dne 30.7.2023 v 22:15 Martin Záruba napsal(a):
>>>
>>> No a jak jinak nastavit příslušný bit?
>>>
>>
>> _______________________________________________
>> HW-list mailing list - sponsored bywww.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20230731/21f5ad19/attachment.htm>
Další informace o konferenci Hw-list