Микроконтроллеры | Управление таймером по кнопкам в ATmega16 |
|
---|---|---|
Составил програмку, которая выдает заданную времянку на два порта. Частота выдачи зависит от частоты таймера/счетчика 0 (частота тактирования сейчас не принципиальна и принята 1МГц). Меняется частота по нажатию кнопок 1,2,3. Останавливается - по кнопке 0. Выложил в прикрепленном файле проект для cvavr и vmlab. В vmlabe код работает, но есть такие проблемы: 1. Если нажать и удерживать кнопку 1 или 2, то генерация частоты прекращается, а с кнопкой 3 такого не происходит (хотя частота генерации падает), почему так, непонятно? Как сделать генерацию не зависящей от того как долго удерживается клавиша? 2. Как-то громоздко мне кажется задается код опроса клавиш, но упростить не вижу как. Может кто подскажет другие, поизящнее что-ли, варианты? |
|
|
1. В конструкции if(i==116&(!(chet%2))) Вы уверены, что хотели написать один амперсанд, а не два? Один из вариантов решения п.3: int main |
|
|
chav1961: Удивительно, что он еще хоть на одной кнопке не затыкается (видимо на той, то висит на PINB.3 chav1961: В конструкции if(i==116&(!(chet%2))) Вы уверены, что хотели написать один амперсанд, а не два? chav1961: Обнуление TCNT0 в обработчике прерываний бессмысленно. chav1961: int main |
|
|
1. Особенностей работы с TCNT нет, оно бессмысленно как раз в Вашем случае - раз Вы попали в прерывание, значит, в TCNT уже ноль. А если и не ноль - не нужно сбивать счет |
|
|
chav1961: В соответствии со стандартом языка С функция main должна быть описана в виде: int main |
|
|
Тогда понятно всё. ОК ;) |
|
|
chav1961: раз Вы попали в прерывание, значит, в TCNT уже ноль. А если и не ноль - не нужно сбивать счет |
|
|
Можно TCNT менять где угодно, просто делайте это поаккуратнее, особенно при малых коэффициентах деления прескалера. Можно запросто набрать систематическую погрешность (если точность временнЫх интервалов важна), поскольку своими изменениями Вы вмешиваетесь в процесс счета. |
|
|
chav1961: Можно запросто набрать систематическую погрешность (если точность временнЫх интервалов важна |
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |