Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Генератор двоичного кода |
Автор: supercelt 1.8.2015, 20:59 | ||
Помогите пожалуйста разобраться. Дано. Atmega 16 Двоичный код: 100101100001110101011001110 Нужно вывести его на порт С 0 пин с частотой 125 кгц. По положительной части задающего такта. Сначала я сделал таймер с СТС что бы на порт В 3пин выводился такт с частотой 125. Потом я пытался сделать так что когда имеем положительную часть такта на порте В 3 пин, то на порт С 0 пин вывести тоже 1. Выводить цифры это уже следующий шаг. Так вот проблема в том что импульс на PC0 немного запаздывает от импульса PB3. Хотя я видел в нете скрины что вывод на порт импульса в точности совпадает с тактом. Мой код и схема ниже.
http://radikal.ru/fp/44e52de4ccb04c1baa99d8c6dc7c224a |
Автор: Romikgy 1.8.2015, 23:26 |
протеус не показатель задержек! плюс на частотах выше 8 мегагерц протеус вообще ведет себя как хочет... я все логику проверяю на частотах ниже 8.... |
Автор: ФедосеевПавел 4.8.2015, 11:07 |
И ещё. Хотя я может и не разобрался. PortB.3 и PortC.0 настроены как выходы, а в ISR PortB.3 считывается, но нигде не изменяется. При обмене данными по синхросигналам всегда есть периоды с достоверными и недостоверными данными. Если нужно, чтобы достоверные данные были по фронту PortB.3 - выставляйте их на PortC.0 по спаду PortB.3, когда данные на PortC уже считаются недействительными для приёмника. |