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