Микроконтроллеры | Какой тип таймера ATMega16 лучше использовать? |
|
---|---|---|
Согласен, что непонятно сколько, но это "непонятно сколько" по сравнению с вашими 50 герцами - исчезающе малая величина. Не берите в голову. Просто перепрограммируйте таймер на новые задержки, отсчитаете по ним свои два импульса, а затем перепрограммируйте таймер на пачку. Никаких delay, конечно не нужно, а уж в обработчике прерываний - тем более. |
|
|
Спасибо за ответы. Интересный алгоритм вырисовывается А на счёт генерации одного импульса на каждую нечётную пачку я думаю chet++; Инкреминировать и проверять условие нечётности лучше в какой момент будет, в момент перепрограммирования таймера на новые задержки? Может есть ещё варианты какие-то? P.S. не отображается два значка меньше, написал - сдвиг_влево. |
|
|
chav1961: Просто Вам нужно 38 раз поймать прерывание по переполнению, и один раз после этого - прерывание по OCR, причем в OCR должно быть число 28. 38 * 256 + 28 = 9756, что и требовалось. Таймер после последнего OCR нужно будет остановить, обнулить, и запустить заново. Частота импульсов у вас очень низкая, можете изгаляться как хотите Можно обойтись одним таймером и одним прерыванием по переполнению. Записываете в таймер остаток, например 28, и считаете прерывания 38+1 раз. Делаете, что надо, опять записываете остаток 28 и всё по-новой до скончания века. |
|
|
Вариант разумный. Вообще эту задачу можно реализовать самым дубовым способом - определить в программе массив из 15 байтов (это как раз 120 бит), и проставить в соответствующих битах нолики и единички в соответствии с времянкой. А затем по каждому тику выводить очередной бит на линию порта. Также поступить и с другим сигналом. Но это - на любителя |
|
|
Digital: Может есть ещё варианты какие-то? Я делал по-другому, и по-моему проще. Удвоил количество прерываний и на каждом прерывании выдавал наружу образ порта. Прерывание получилось очень короткое. Осталось только настроить таймер на нужную частоту. Вид образов порта примерно такой.
Можно легко добавить формирование других сигналов, отдельный импульс, как в вашем случае. Для вашей нечетности можно удвоить таблицу. |
|
|
Да, проще, правда, за счет некоторого расхода памяти. Ну, за все платить приходится... |
|
|
chav1961: определить в программе массив из 15 байтов А почему массив определять именно такого размера (8х15, ну 8 понятно почему |
|
|
Насчет размера - у Вас нижний по схеме сигнал идет как 1.0.1.0.1.0....1.0.1.0.0.0.0.0.(здесь закончилась первая пачка и началась вторая)1.0.1.0.1.0...и.т.д. Если посчитаете число таких единичек и ноликов, на период как раз 120 шт. и наберется |
|
|
Спасибо ребята, было очень интересно. Теперь осталось |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2025 |