Использование Timer1
- Войдите на сайт для отправки комментариев
Вс, 13/01/2019 - 18:47
Здравствуйте! Изучаю работу таймеров. Но прошу помощи разобраться с работой Timer1. Написал простенькую программу, от которой ожидаю счета 16-битного таймера от 0 до FFFF, сброс в 0 и счет до FFFF. И так дальше.
void setup() { TCCR1B = (1 << CS12) | (1 << CS10); //Делитель 1024 таймера 1 TCNT1 = 0; // Обнуление счетчика таймера 1 Serial.begin(38400); // Инициализируем вывод данных на монитор серийного порта } void loop() { Serial.println(TCNT1); // Вывод счетчика таймера 1 }
Однако и симулирование в Протеусе, и на Arduino Uno имею одинаковый результат: регистр TCNT1 увеличивается от нуля до 255, потом уменьшается поединично до нуля, формируя пилу и не заходя в верхний регистр совсем. Использую Arduino IDE. Подскажите, пожалуйста, в чем моя ошибка, и как заставить этом таймер считать на весь диапазон 16 разрядов. Спасибо.
Этобыло бы правильно, если бы Вы работали на голом микроконтроллере, без среды ардуино. А так, она (среда) уже настроила таймер по-своему. Поэтому, если Вы хотите перенастроить его, то делайте это полностью, а не только то, что Вам непосредственно нужно. В частности, Вам нужно выставить таймер в нормальный режим.
Вставьте в строку 2 такой текст:
Спасибо большое, ЕвгенийП! Так и случилось. У меня было ощушение, что это работа среды Ардуино, но без "Звонка другу" я решения не нашел. Спасибо и со Старым Новым Годом всех!