[uquote="Jack_A",url="/forum/viewtopic.php?p=4269867#p4269867"]ТШ ставится для обострения фронтов. Если не принять других мер, то после него дребезг останется, но будет более качественным, с крутыми фронтами

. Если состояние входа опрашивается не по прерыванию (имеется в виду не прерывание по уровню, а по фронту-срезу), необходимости в нём нет. Дребезг гасится аппаратно - RC цепочкой, программно - несколькими последовательными опросами через 10..20мс. Если состояния совпадают - процесс устаканился, если разные - игнорируем, ждём до совпадения.[/uquote]
Программно дребезг я уже убрал. Реализовал не через последовательную проверку, а через длинный опрос и принятие клавиши при повторной проверке. Правда есть шанс что кто-то успеет за 50 миллисекунд нажать и отпустить кнопку, тогда программа такое движение проигнорит.

Насчет RC цепочек я знаю. Большая часть кнопок опрашиваются по прерыванию таймера. А те что висят на int-ах те по фронту. С этим я уже разобрался.
Добавлено after 4 minutes 1 second:
[uquote="veso74",url="/forum/viewtopic.php?p=4270145#p4270145"]Насколько я понимаю, в системе будет PWM? Пока есть и другие действия, PWM должен быть аппаратным. Начать писать код в обратном порядке: ШИМ, его выбранный таймер, его выбранный пин/ы, а все, что свободно, может быть легко размешать по пинах для цифрового входа или выхода и связанная с ними логика. По крайней мере, так бы сделал, чтобы начать решать задачу с ШИМ.[/uquote]
Да. именно так я и делаю. У меня пока большая часть программы написана пока на русском. Примерно так:
Код: Выделить всё
ISR(TIMER1_COMPA_vect)
{
// -- Прерывание по окну для таймера --
// Проверяем включенность прерывания.
// Если нет, Включаем прерывание окна. Переустанавливаем таймер win_max_t. return 0;
// Если да, Отключаем пины окна. Отключаем прерывание окна. Отключаем прерывание таймера. return 0;
}
Когда не знаком с языком и железом так писать удобнее. Потому что много приходится читать прежде чем написать строку кода и логика программы регулярно вываливается из головы.
Добавлено after 21 minute 9 seconds:
[uquote="VNS",url="/forum/viewtopic.php?p=4269896#p4269896"]Не понял суть вопроса… каким местом сторожевой таймер связан с таймер-счётчиком2? Сторожевой таймер – он сам по себе и не связан ни с одним тймер-счётчиком МК.[/uquote]
Ну собственно ты ответил на мой вопрос. Сторожевой таймер – он сам по себе и не связан ни с одним тймер-счётчиком МК. Именно это я и хотел уточнить. Просто не был уверен в том есть связь или нет. При прочтении всего того что я успел прочитать почему-то сложилось впечатление что работает или WD или TC2. Ну а раз они не связаны то это прекрасно.
[uquote="VNS",url="/forum/viewtopic.php?p=4269896#p4269896"]PS. Не большой совет по поводу использования аппаратных ШИМ… так как вам необходимо всего два канала ШИМ, советую использовать для этой цели ТС1, который ШИМит используя вывода РВ1 и РВ2… если использовать в качестве ШИМ ТС2, то у него задействован вывод РВ3, а этот вывод на секундочку ещё и MOSI при использовании аппаратного SPI… то есть лучше ТС2 не использовать в качестве ШИМ, так как вдруг понадобится использовать SPI для управления сдвиговым регистром в качестве расширителя выходов…[/uquote]
Ну касательно этого проекта мне SPI точно не понадобится. Я вчера в очередной раз проведя инвентаризацию всего того что хочу сделать и что у меня для этого есть пришел к выводу что я запроектировался до ручки. Потому что у меня сейчас есть свободная нога контроллера на которую я знаю какой сигнал принимать но так и не смог понять на кой хрен мне этот сигнал нужен.

А еще у меня есть кнопка для которой я не смог придумать функционал.

Ну кнопку хоть выкинуть нельзя. Ног лишних она не занимает, а вот что делать с тем сигналом ради которого в том числе я эту ветку начал ума не приложу. Это уже клиника и надо останавливаться с фантазированием. Сначала сделаю то что точно надо, а потом еще раз проведу инвентаризацию ресурсов и фантазий.
А TC1 у меня уже сильно занят. Там же счетчик 16-и битный. А так не хочется заниматься ручным подсчетом времени (считать переполнения). Сейчас у меня всё просто и элегантно, считал значение таймера, прибавил сколько надо, записал в прерывание по сравнению и забыл. Обработчик прерывания сам всё решит. Все промежутки времени меньше чем цикл переполнения таймера. Соберу завтра выходной каскад для ШИМ на макетке и тогда уже буду разбираться чем жертвовать. Элегантностью или чем-то еще.