Нужна помощь, не могу разобраться с алгоритмом и просто путем дальнейших действий!...
Вообщем была схемка генератора АМ на двух дубнинских микросхемах несерийного пр-ва...Они стоят очень дорого (для тех функций, которые выполняют), поэтому появилась необходимость перехода на МК..
Ниже приведена часть схемы этого у-ва на МК ATmega8 и диаграммы выходных сигналов

Осциллограммы на выходах портов PC3, PC4, PC5

В кратце, что генератор должен делать: При наличии минуса на одном из выводов PD1, PD2,PD3,PD0,PD6 (перемычки 12-23,12-21,12-22,...13,11) выдавать на PC5 соответствующие частоты...420...500Гц... и т.д (все в пределах 1000 Гц)..это всё несущие.
При наличии минуса на одном из выводов PB5, PB4 выдавать на PC3 частоты 8 или 12 Гц - это будет модулирующая.
Ну и потом внутри это умножается (я не ошибся, именно умножается?) и на PC4 (третья осциллограмма) как видно из схемы...
Все частоты - меандры!...что, наверное, облегчает жизнь...
Так вот...
Как это рациональней всего реализовать?..
на СИ или не на СИ?
Подпрограммы задержки отпадают! Остается таймерами? Куча констант и по переполнению уходить в прерывание?так?...
8 разрядного должно хватить на 1024*2^8/10^6=0,262 c (при 1МГц такт, и 1024 Коэф.)
При том что самый длинный импульс при 8 Гц - 1/2*8=0,0625 c. - Значит 8 разрядный...
Настраиваем порты, таймеры
Опрашиваем порты, при наличии минуса на одном из них заносим константу соответствующую частоте в таймер, он считает, переполняется, далее прерывание, подпрограмма положительного импульса,...циклим, опять считает , переполняется, далее прерывание, подпрограмма отрицательного импульса,..
В целом так, или не так?...
..еще один вопрос: Вот таймер там работает, подпрограмма прерывания тоже, а если я возьму и минус подам на другой вывод, соответствующий другой частоте? программа-то не среагирует!...значит надо организовать периодический опрос портов в программе?
а как же это сделать?
еще вопрос: таймеры друг другу не будут мешаться своими прерываниями? Ведь всё делается параллельно: выдается несущая, выдается манипулирующее, умножается где-то и итоговое на выход?...Рабочая точка-то ведь у программы одна...?
не знаю с чего начать...
Думаю сначала просто поразбираться с несущей, научиться опрашивать и в соответстви с опросом выдавать на выход, а там дальше все по аналогии...
Понравился протеус, подойдет для отладки без паяния? (паять-то буду, но не сразу...)
А что насчет ШИМА?...в Атмеге их целых 3, ими можно ведь аппартно реализовать меандры?...
Заранее благодарен всем откликнувшимся на мои вопросы...
Очень нужно и очень хочу....