по радиотракту: ну максимум он и есть максимум, возьмем золотую середину, потом, когда заработает - увеличим частоту
по тактированию тиньки с кварцем 20 мгц:
нам нужно формировать импульсы и паузы минимальной длительностью
1\3000*2 = 1\6000 = 0.00016 сек = 0.16 мс = 160 мкс
счетчик кварца может считать с предделителями (ты уже начал читать про Т1?)
для простоты попробуем посчитать с предделителем = 1
1\20 000 000 мгц=0.05 мкс - длительность одного "тика" счетчика
160 мкс
\ 0.05 мкс\1тик = 3200 тиков счетчика на передачу одного импульса или паузы
то есть время T которое мы выводили в прошлом посте про длительности импульсов будет длиться 3200 тиков таймера Т1
соответственно 2T будет длиться 6400 тиков
теперь нужно подумать в какой
режим нужно получить от
таймера T1.
первый режим таймера это просто счет.. от 0 до 65535, потом опять 0 и опять до 65535 - режим простой, но нам не интересный: придется в программе сидеть и ждать нужного момента, потом дергать ножкой, и опять сидеть и ждать
гораздо интереснее режим СТС с заданием вершины счета в регистре OCR1A
в этом случае таймер считает от 0 до значения установленного нами в OCR1A, и когда это происходит - генерирует прерывание чтобы мы могли в этот момент сделать что-то нам нужное, причем одновременно, таймер начинает снова считать с 0.. (сбрасывает текущий счетчик) - этот метод гораздо точнее будет измерять временные промежутки чем первый режим (для нашей задачи такая точность конечно мало важна)
нам придется в прерывании лишь дернуть ножкой и задать новое значение длительности в OCR1A для передачи
дополнительно, к вышеуказанному режиму можно включить опцию чтобы таймер САМ ПЕРЕКЛЮЧАЛ НОГУ ТИНЬКИ из одного состояние в другое ! нам самим не придется дрыгать ножкой вручную, и так же при автоматическом переключении мы получим просто кварцованную точность на выводе тиньки по частоте.. (еще раз повторюсь: для твоего проекта это не особо нужно, а вот например для моего где я генерирую программно вывод на телевизор видеосигнала это очень важно, так как ошибка даже в 1 мкс в длительности импульса приводит к искажению изображения или даже срыву синхронизации)
теперь открывай datasheet на свой контроллер и смотри как настроить T1 чтобы он работал так как я описал (подсказка: это раздел 16 bit Timer/Counter, далее подраздел 16 bit Timer/Counter Register Description (он последний в списке подразделов таймера)
нужно установить следующие регистры
TCCR1A
TCCR1B
TCNT1
OCR1A
TIMSK
потом посмотри а на какой же все таки ноге будут генерироваться импульсы?
и потом посмотри на свою схему - не задействован ли этот архинужный нам для передачи вывод какой нить другой фигней (которую нужно будет перебросить на другой вывод и соответственно переписать код этой другой фигни чтобы все работало правильно

)
справишься ?
p.s. заодно для себя на будущее делаем вывод что начинать продумывать схему нужно одновременно с продумыванием как именно функционал мы будем реализовывать программно.
как пример подобной ошибки в проектирования (чтобы ты не думал что только ты так ошибс

я ) могу привести
такую промышленно изготавливаемую аппаратуру, там генерировать импульсы приходиться вручную, так как нужный для этого вывод разведен на какую то фигню типа кнопки - кто допустил такой ляп трудно сказать, то ли схемотехники рулили и сделали как им удобно, то ли программисты не подсказали первым как сделать более правильно..
ошибка конечно не смертельная, но делать вручную то что контроллер сделает сам в автоматическом режиме я считаю не умным
