допустим мне нужны часы.
для этого мне надо чтобы таймер тикал каждую секунду.
т.е. мне нужна частота таймера = 1 герц.
для этого берём:
-ардуино. (мега328)
-таймер номер 1.
-режим номер 14. (быстрая ШИМ с верхним пределом счета ICR).
Код: Выделить всё
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 31,250 kHz
// Mode: Fast PWM top=ICR1
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x02; //WGM11=1, WGM10=0
TCCR1B=0x1C; //WGM13=1, WGM12=1 //8.000.000 Hz/256 = 31250 Hz
TCNT1H=0x00;
TCNT1L=0x00;
//unsigned int kor=31250; // коррекция часы
ICR1H=(kor>>8);//регистр захвата - верхний предел счета = 31250 Hz / 31250 Hz = 1c
ICR1L=kor; //регистр захвата - верхний предел счета = 31250 Hz / 31250 Hz = 1c
//ICR1H=0x00; //регистр захвата - верхний предел счета = 31250 Hz / 31250 Hz = 1c
//ICR1L=0x00; //регистр захвата - верхний предел счета = 31250 Hz / 31250 Hz = 1c
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
Итого:
-тактовая частота ардуино (мега328) = 8.000.000 Hz
-делитель ставим на 256. Получаем: 8.000.000 Hz/256 = 31250 Hz
-задаём верхний предел счёта ICR = 31250.
-получаем частоту таймера ровно 1 герц.
-если записать в OCR половину частоты таймера 31250/2=15625.
то получим на выходе чистый меандр частотой ровно 1 герц (и скважность 0,5).
аналогично можно настроить таймер практически любую частоту.
