Микроконтроллеры | Разработка таймера на основе PIC16F628(A) с программой на языке С |
|
---|---|---|
Сергей К: Хочу предложить свой вариант обработки прерывания Чё-то АВРщики в своих ветках притииихли... |
|
|
|
||
А вобще, потом, я бы не отказался от функции цифрового термометра |
|
|
picmaniac: А если подумать? Прерывание по таймеру происходит строго через каждые 4 мс, и этот интервал не зависит от времени входа в прерывание, определения источника и т.п. Промежуток времени между моментами инкремента переменной всё равно останется 4 мс. На то он и таймер. |
|
|
Именно. Вектор прерываний у нас только 1. Во-первых уйдет время на распознание прерывания от таймера if (T0IF==1). Затем мы икрементируем нашу переменную(например A), каждые 4мс. Если мы хотим инкрементировать переменную каждую секунду, то нам это значение A нужно сравнить с цифрой 250, на это тоже уходит время. Вот пример обработчика прерываний } |
|
|
Zandy: TMR0, его ж еще предустанавливать надо после входа в прерывание Ну, в общем-то, всё правильно. Формулировка мне не вполне понятна была. Сергей К: я бы не отказался от функции цифрового термометра |
|
|
предложение по выводу цифр-инициализировать массив значениями кодов символов,потом просто указывать индекс: тогда кейсы не надо использовать |
|
|
Может не совсем по теме, но что будет, если прерывание совпадет с выполнением двухтактовой команды? Может быть ошибка в один такт? |
|
|
Zandy: Может не совсем по теме, но что будет, если прерывание совпадет с выполнением двухтактовой команды? Может быть ошибка в один такт? Maksim_86: Именно. Вектор прерываний у нас только 1. Во-первых уйдет время на распознание прерывания от таймера if (T0IF==1). Затем мы икрементируем нашу переменную(например A), каждые 4мс. Ты не вник в суть Zandy: И если между моментом входа в прерывание и предустановкой проделывается некое количество команд, то период прерывания (по сравнению с расчетным) увеличится ровно на время выполнения этих команд. То есть, если перегружать счётчик в самом начале обработчика прерывания, и учесть при перезагрузке время выполнения команд до этой перезагрузки, то всё будет работать как часы |
|
|
Кстати, вспомнил хитрый приём, который применял на сцениксах:
там была спец. команда возврата из прерываения retiw, которая вычитала из счётчика таймера число в аккумуляторе (период прерывания). Получалось совершенно неважно, сколько длился обработчик прерывания, лишь бы не дольше периода.
|
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2025 |