Egentligen menar jag inte begränsning men i alla fall begränsning i den väldigt enkla delen av Arduino.
Jag försöker hitta information om att ändra PWM frekvensen på en Arduino Uno. Det jag hittar är lite olika versioner av denna tabell.
Kod: Markera allt
//---------------------------------------------- Set PWM frequency for D5 & D6 -------------------------------
//TCCR0B = TCCR0B & B11111000 | B00000001; // set timer 0 divisor to 1 for PWM frequency of 62500.00 Hz
//TCCR0B = TCCR0B & B11111000 | B00000010; // set timer 0 divisor to 8 for PWM frequency of 7812.50 Hz
TCCR0B = TCCR0B & B11111000 | B00000011; // set timer 0 divisor to 64 for PWM frequency of 976.56 Hz
//TCCR0B = TCCR0B & B11111000 | B00000100; // set timer 0 divisor to 256 for PWM frequency of 244.14 Hz
//TCCR0B = TCCR0B & B11111000 | B00000101; // set timer 0 divisor to 1024 for PWM frequency of 61.04 Hz
//---------------------------------------------- Set PWM frequency for D9 & D10 ------------------------------
//TCCR1B = TCCR1B & B11111000 | B00000001; // set timer 1 divisor to 1 for PWM frequency of 31372.55 Hz
//TCCR1B = TCCR1B & B11111000 | B00000010; // set timer 1 divisor to 8 for PWM frequency of 3921.16 Hz
TCCR1B = TCCR1B & B11111000 | B00000011; // set timer 1 divisor to 64 for PWM frequency of 490.20 Hz
//TCCR1B = TCCR1B & B11111000 | B00000100; // set timer 1 divisor to 256 for PWM frequency of 122.55 Hz
//TCCR1B = TCCR1B & B11111000 | B00000101; // set timer 1 divisor to 1024 for PWM frequency of 30.64 Hz
//---------------------------------------------- Set PWM frequency for D3 & D11 ------------------------------
//TCCR2B = TCCR2B & B11111000 | B00000001; // set timer 2 divisor to 1 for PWM frequency of 31372.55 Hz
//TCCR2B = TCCR2B & B11111000 | B00000010; // set timer 2 divisor to 8 for PWM frequency of 3921.16 Hz
//TCCR2B = TCCR2B & B11111000 | B00000011; // set timer 2 divisor to 32 for PWM frequency of 980.39 Hz
TCCR2B = TCCR2B & B11111000 | B00000100; // set timer 2 divisor to 64 for PWM frequency of 490.20 Hz
//TCCR2B = TCCR2B & B11111000 | B00000101; // set timer 2 divisor to 128 for PWM frequency of 245.10 Hz
//TCCR2B = TCCR2B & B11111000 | B00000110; // set timer 2 divisor to 256 for PWM frequency of 122.55 Hz
//TCCR2B = TCCR2B & B11111000 | B00000111; // set timer 2 divisor to 1024 for PWM frequency of 30.64 Hz
31372.55 Hz ≈ 31.4 kHz
62500.00 Hz = 62.5 kHz
De IR moduler jag har tänkt jobba med ligger på:
30 kHz
36 kHz
38 kHz
40 kHz
56 kHz
När jag programmerade PIC med assembler så använde jag en ISR, denna ställdes in med hjälp av en lämplig prescaler, och sedan hade jag ofta också en egen variabel som räknades upp och som jag kunde välja hur långt den skulle räkna för varje cykel. Detta gjorde att jag fick väääldigt många olika möjligheter på Frekvenser.
Så, två frågor.
Går det på ett enkelt sätt att göra liknande på en Arduino?
Hur känsliga brukar IRmoduler var till sin frekvens, alltså skulle man kunna använda 31.4kHz på en modul som är tillverkad för 30kHz?
Ber om ursäkt om frågan är ställd slarvigt, kort om tid.
MVH Peter