Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> UART и запись в порт, MEGA128 
V
    Опции темы
xelax
Дата 6.6.2006, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 12.4.2005

Репутация: 0
Всего: 1



Такой ламерский вопрос. Передаю - принимаю данные через UART он же порт E пин 1-2 и тут (предположим в прерывании от таймера) мне необходимо изменить значение пина 4 порта E. Если я тупо 
Код

PORTE |= 0x10;


испортит ли мне это обмен через UART? Если да, то есть ли иные способы изменить значение пина? 
PM MAIL   Вверх
ManiaK
Дата 6.6.2006, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

Репутация: 2
Всего: 29



Цитата(xelax @  6.6.2006,  14:11 Найти цитируемый пост)
испортит ли мне это обмен через UART? Если да, то есть ли иные способы изменить значение пина? 

Выполнение данной команды по своему смыслу уже предполагает: выставление только пятого бита в порту.
Ни один другой бит порта трогаться не будет.

Если тебя терзают сомнения по поводу того, что чип сначала должон прочитать порт, потом изменить, а потом записать, то можешь быть спокоен: каждому порту должен соответствовать регистр защёлок, который не зависит от того, какой уровень в данный момент на самом порту есть. Чтение производится как раз от туда. 
PM MAIL WWW   Вверх
PILOT
Дата 6.6.2006, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



Объяснение правильное. В ассемблере правильно это будет выглядеть так (опять же, если пользоваться асмом, то вопросов не возникаетsmile ) :
Код

   ClI;
   In   R16,PortE; возможно нужно LdS пользоваться, не помню
   OrI   R16,$10;
   Out   PortE,R16;
   SeI;


СУВ.  


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
xelax
Дата 8.6.2006, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 12.4.2005

Репутация: 0
Всего: 1



А что собственно защёлкивается в этом регистре защёлок?
Это первый вопрос. 

Получается таким образом что ли, разрешая UART, у порта E теряют свою функциональность два разряда. И порт E становится 6-разрядным ;)? 
Это второй вопрос. 

Это сообщение отредактировал(а) xelax - 8.6.2006, 08:59
PM MAIL   Вверх
PILOT
Дата 9.6.2006, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



Порты всегда 8-ми разрядные, только те выводы, которые используются как альтернативные не могут быть записаны.

То что ты хочешь увидеть на порту ты записываешь в защелку, она хранит то что ты выдал в порт, а вот физическое состояние выводов порта можно получить считывая не Port, a PIN.

СУВ. 


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
Woodoo
Дата 14.6.2006, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 13.6.2006
Где: Севастополь || Ял та

Репутация: нет
Всего: нет



мой тебе совет: поставь авр студио - там все прекрасно можно проверить за пару минут!
На счет портов (на сколько помню) -  если ты используешь альтернативню функцию порта (в тваем случае - UART), то функция порта афтоматом отключается (вот  точно не помню, патамучто в таймере1 для етого надо спец. биты выставлять, а в уарт вроде не надо). Это все можно прочитать в пдф на проц 8) .
Да и вот, для разъясненее мелочей: при использованиии альтернативной ф-ции порта, не регистр DDRx, не регистр PORTx ни как не влияют на то что будет установлено ны ножке проца, т.е. чтобы ты не выводил в порт (твоё PORTE |= 0x10;) - никакого результата не даст. 
PM MAIL   Вверх
xelax
Дата 14.6.2006, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 12.4.2005

Репутация: 0
Всего: 1



Всем откликнувшимся спасибо. Разобрался. Всё работает как надо ;) 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.1142 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.