Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > ФОРМИРОВАНИЕ ВРЕМЕННЫХ ИНТЕРВАЛОВ В АВР |
Автор: pettimm 27.11.2013, 17:20 | ||
Подскажите пожалуйста, где ошибка в подсчете временного интервала, используем прерывание по совпадению Т0 фюзы выставлены так: Low: 0 1 1 0 1 0 ; Spien; EESAVE; WDTON; CKDIV8; SUT1; SUT0; 0 1 CKSEL1; CKSEL1 ;High: 1 1 1 1 0 ; SPMEN; DWEN; BODLEVEL1; BODLEVEL0; RST отсюда задающая частота проца= 4,8МГЦ/8=600 000Гц При выборе тактовой частоты То выбран предделитель на 64 значит =600 000/64= 9375 Гц значит период тактирования=1/9375=106,666666 мкс при числе в регистре совпадения = 2 и если таймер тактируется от начала импульса, то и на единицу значение счетного регистра таймера увеличится в начале первого импульса , а значит за время 106 мкс увеличение будет на 2 но осцилографом я вижу импульсы длиной 400 мкс, где я ощибаюсь в подсчете времени? Спасибо.
|
Автор: kolobok0 4.12.2013, 23:23 | ||||||
Сразу скажу - регистры так не надо писать, в ввиде нулей и единиц. Лучше использовать готовые преддефайны поставляемого вместе с компилятором на данный МК. Тогда запись будет вида(как пример)
так наглядней. и не ошибётесь. Регистр TCCR0A выставлено всё по умолчанию т.е. усе нули. Смотрим расшифровку режимов работы таймера Регистры WGM02(TCCR0B) = 0 WGM01(TCCR0A) = 0 WGM00(TCCR0A) = 0 Что соответствует режиму 0 (Normal). Обратите внимание в таблице на колонку "TOP" (вершина счёта). В строке данного режима стоит фиксированное значение 0xFF оно? |