![]() |
Модераторы: PILOT, ManiaK, Mazzi |
![]() ![]() ![]() |
|
supercelt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 25.8.2005 Репутация: нет Всего: 1 |
Помогите пожалуйста разобраться.
Дано. Atmega 16 Двоичный код: 100101100001110101011001110 Нужно вывести его на порт С 0 пин с частотой 125 кгц. По положительной части задающего такта. Сначала я сделал таймер с СТС что бы на порт В 3пин выводился такт с частотой 125. Потом я пытался сделать так что когда имеем положительную часть такта на порте В 3 пин, то на порт С 0 пин вывести тоже 1. Выводить цифры это уже следующий шаг. Так вот проблема в том что импульс на PC0 немного запаздывает от импульса PB3. Хотя я видел в нете скрины что вывод на порт импульса в точности совпадает с тактом. Мой код и схема ниже.
![]() |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 3 Всего: 146 |
протеус не показатель задержек!
плюс на частотах выше 8 мегагерц протеус вообще ведет себя как хочет... я все логику проверяю на частотах ниже 8.... -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Разумеется будет запаздывать. У вас обновление порта С делается програмно, а обновление порта B - аппаратно. А любая программа требует времени для исполнения, так что как минимум задержка на вход в прерывание и исполнение пары команд между портом B и C будут. Переносите оба выхода на один порт (что бы можно было оба бита обновить одновременно одним выводом) и делайте генерацию выходной частоты програмно (в обаботчике прерываний от таймера) |
|||
|
||||
ФедосеевПавел |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 7.2.2009 Репутация: 1 Всего: 10 |
И ещё. Хотя я может и не разобрался.
PortB.3 и PortC.0 настроены как выходы, а в ISR PortB.3 считывается, но нигде не изменяется. При обмене данными по синхросигналам всегда есть периоды с достоверными и недостоверными данными. Если нужно, чтобы достоверные данные были по фронту PortB.3 - выставляйте их на PortC.0 по спаду PortB.3, когда данные на PortC уже считаются недействительными для приёмника. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |