Diskuze: Atmega2560 PWM
Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Nakonfiguruj časovač jako zdroj PWM, podle pinoutu by to měl být T0 kanál C nebo T1 kanál C.
Hotovo, jen výstup je teď moc rychlý (perioda je podle osciloskopu někde kolem 15us). Potřeboval bych ale generovat slyšitelné tóny. V nastavení PWM mám toto:
OCR0A = 0x04;
TCCR0A = (0 << COM0A1) | (1 << COM0A0) | (1 << WGM01) | (0 << WGM00);
TCCR0B = (0 << WGM02) | (0 << CS02) | (0 << CS01) | (0 << CS00);
a pak používám následující funkci s parametrem frekvence:
void SoundOutput(unsigned int tone)
{
if (tone!= 0)
{
OCR0A = tone;
TCCR0B |= (1 << CS00);
}
else
{
TCCR0B &= ~((1 << CS02) | (1 << CS01) | (1 << CS00));
}
}
Periodu můžeš nastavit pomocí frekvenční předděličky. To se dělá pomocí CS bitů v TCCR registru. Když máš všechny tři v nule tak si myslím že by to ani nemělo fungovat. Zkus si nějak pohrát s kombinacema nebo si někde najdi jaká kombinace odpovídá jaký předděličce. Obecně platí čím vyšší předdělička, tím delší bude perioda.
Díky, za rady zítra to vyzkouším!
Zobrazeno 5 zpráv z 5.