Arduino och timers

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
RadioDJ
Inlägg: 449
Blev medlem: 7 november 2005, 16:18:15
Ort: Helsingborg

Arduino och timers

Inlägg 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
}
hawkan
Inlägg: 3546
Blev medlem: 14 augusti 2011, 10:27:40

Re: Arduino och timers

Inlägg av hawkan »

Vilken processor är det? atmega328?
RadioDJ
Inlägg: 449
Blev medlem: 7 november 2005, 16:18:15
Ort: Helsingborg

Re: Arduino och timers

Inlägg 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å?
hawkan
Inlägg: 3546
Blev medlem: 14 augusti 2011, 10:27:40

Re: Arduino och timers

Inlägg 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
hawkan
Inlägg: 3546
Blev medlem: 14 augusti 2011, 10:27:40

Re: Arduino och timers

Inlägg 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.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Skriv svar