Итак, я попытался установить кварцевый генератор 16 МГц между выводами XTAL1 и XTAL2 на моем микроконтроллере Atmega644.Но я не заставляю его работать.
Сначала я определяю
volatile unsigned int input_timer = 150;
ISR (TIMER0_COMPA_vect) {
if (input_timer>0){
input_timer--;
}
}
Я запустил таймер следующим образом
TIMSK0 = (1 << OCIE0A); //Compare match enabled
TCCR0A = (1 << WGM01); //CTC mode
TCCR0B = ~(1 << CS02) | (1 << CS01) |( 1 << CS00); //DIVIDE 64
OCR0A = 125;
Для проверки работоспособности яя делаю следующее
int p = 0;
while(1)
{
if (input_timer == 0) {
lcd_clrscr();
char c[7]
itoa(p,c,10);
lcd_puts(c);
p++;
}
Так что в основном я обновляю ЖК-экран один раз каждый раз, когда счетчик отсчитывал от 150 до 0. Если это с осциллографом 16 МГц, это должно происходить каждый раз (16e6 / (150 * 125 * 64) = 13,3 обновления / сек.
Если это сделано с помощью F_CPU, это должно происходить каждые (1e6 / (125 * 150 * 64)) = 0,83 обновления / сек, что и происходит сейчас.
Итак, как мне на самом деле правильно реализовать генератор на выводах XTAL1 и XTAL2. Следует отметить, что я сейчас не использую правильный развязывающий конденсатор, не уверен, что это может иметь значение.