Sida 1 av 1

Arduino och timers

Postat: 15 juni 2024, 11:19:18
av RadioDJ
Jag håller på med ett IR sändare projekt och har hittat ett exempel på att skicka en konstant 38kHz på pinne 11.
Jag skulle vilja att enbart pinne 3 ska sända ut 38kHz.

Har ingen koll på hur man ställer in de olika timers som finns i Arduinon.
Vad jag har läst mig till så ska det gå att använda pinne 3 utan att störa millis(), då 3 och 11 använder samma timer.

Finns det någon som kan hjälp mig så att jag enbart får 38kHz på pinne 3.

Detta är koden som jag har provat och fungerar.

Kod: Markera allt

void setup() {
  pinMode (3, OUTPUT);

  TCCR2A = _BV (COM2A0) | _BV(WGM21);
  TCCR2B = _BV (CS20);
  OCR2A =  209; // ~209 = ~38kHz | ~219 = ~36kHz
}

Re: Arduino och timers

Postat: 15 juni 2024, 11:51:39
av hawkan
Vilken processor är det? atmega328?

Re: Arduino och timers

Postat: 15 juni 2024, 14:09:00
av RadioDJ
Ja, processorn är en atmega328p.
Kom på en mer sak.
Om jag vill modulera denna med exempel 1kHz alltid som en extra säkerhet.
Hur gör jag då?

Re: Arduino och timers

Postat: 15 juni 2024, 14:30:26
av hawkan
Jag har inget bra svar mer än att det finns många hardcore-personer här som gärna programmerar med register som förhoppningsvis mer än gärna hjälper dej.
Annars är det att gå till databladet för att se hur detta ska göras. https://ww1.microchip.com/downloads/en/ ... asheet.pdf

Re: Arduino och timers

Postat: 15 juni 2024, 21:50:47
av hawkan
Jaha hade inget att göra en stund så letade lite.
Först ta reda på vad som styr pwm på pinne 11 och pinne 3
Skärmbild 2024-06-15 214131.png
Det är OC2A på pinne 11, med tillhörande OCR2A du använder i din kod.
För pinne 3 är det OC2B och enligt databladet är det Timer/Counter2 med tillhörande register OCR2B .
Så OCR2B ska sättas till 38 kHz isf OCR2A.
Du får även kolla över TCCR2A och TCCR2B om de behöver ändras, och jag vet att TCCR2A behöver ändras.
Sedan kan du prova.