Timers Interrupts etc

Willka
Offline
Зарегистрирован: 29.05.2013

Доброго времени суток.

Решил научиться программировать МК на уровне регистров (если так правильно можно выразиться), ну впрочем не использовать ардуиновские обвязки и примочки. Так как во первых, непонимаение как оно внутри устроено все это дело, а программировать не понимая что ты делаешь, к хорошему не приведет. Ну помигал я лампочками, попересылал значения по UART'у готовыми инструментами, а как оно внутри хочется разобраться, чтобы писать серьезные проекты.

Есть плата ArduinoMega2560

Тут дошло дело в ходе изучения  до таймеров, и вот несколько вопросов возникли у меня

Пределитель: Как я понял это некий делитель частоты счета, т.е. я как пользователь могу выбрать подходящий мне коэффициент деления для дальнейших нужд. Т.е например делим на 8 и счетчик считает 1 раз в 8 тактов?? Т.е. он почитает не  65536 - 1 раза, а 8192 - 1 раза(я про 16 битный счетчик имею ввиду), так? Верно ли мое представление?

И вот про прерывания по совпадению со значением имеется вопрос. Я понял что например нужно мне досчитать до 1234 скажем, настроили таймер необходимым образом и поехали. Теперь будет событие происходить как досчитаем до этого значения. А как мне быть, если мне например надо в 1 счетчике несколько значений проверить, досчитало ли до него и выполнить событие? Так по идее можно только с чем-то одним сравнивать?

Но тут в инструкции, в таблице прерываний и в описании таймеров есть такая штука, как, сопадение со значением А

значением В

значением С

 

например в первом таймере, т.е. тут я могу сравнить в одном счетчике сразу 3 неких значения?

а вот во втором таймере только 2, так?

 

Я просто хочу подробно понять тему, чтобы сразу разложить по полочкам в голове что есть что, расставить все точки над И так сказать с самого начала.

 

Заранее спасибо всем откликнувшимся!

maksim
Offline
Зарегистрирован: 12.02.2012

Willka пишет:

Пределитель: Как я понял это некий делитель частоты счета, т.е. я как пользователь могу выбрать подходящий мне коэффициент деления для дальнейших нужд. Т.е например делим на 8 и счетчик считает 1 раз в 8 тактов?? Т.е. он почитает не  65536 - 1 раза, а 8192 - 1 раза(я про 16 битный счетчик имею ввиду), так? Верно ли мое представление?

Неверно. Предделитель делит частоту МК, тем самым задает частоту таймера. То есть предделитель 8 сделает чатоту таймера в восемь раз меньше частоты МК и на 8 тактов МК таймер тикнет 1 раз. Разрядность таймера не изменится - таймер будет тикать 65536 раз независимо от предделителя.

Willka пишет:

например в первом таймере, т.е. тут я могу сравнить в одном счетчике сразу 3 неких значения?

вот во втором таймере только 2, так?

Верно.