реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> При включении устройства, от него по UART сразу "приходит" 0
SZ0
сообщение Mar 16 2008, 17:35
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 14-02-06
Пользователь №: 14 331



На ATtiny2313 столкнулся. Как только разрешам передачтик UART тут же получаю на COM порт компа 0. А после это байт $AA:

Код
ldi    r16,(1<<RXEN)|(1<<TXEN)
out    UCSRB,r16
ldi    r16,$AA
out    UDR,r16


делал так:
Код
ldi    r16,$AA
out    UDR,r16
ldi    r16,(1<<RXEN)|(1<<TXEN)
out    UCSRB,r16


тоже сперва получаю 0. Как с этим бороться?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 16 2008, 18:21
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(SZ0 @ Mar 16 2008, 19:35) *
Как с этим бороться?
Можно попробовать поставить подтяжку с выхода передачи к питанию, чтобы обеспечить в линии высокий уровень до инициализации UART. И при инициализации порта, если она происходит до настройки UART, обеспечить единицу на этом выходе.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Baser
сообщение Mar 16 2008, 18:58
Сообщение #3


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(SZ0 @ Mar 16 2008, 19:35) *
Как только разрешам передачтик UART тут же получаю на COM порт компа 0. А после это байт $AA:
Как с этим бороться?

Как с этим бороться, вам уже Сергей написал, а природа этого явления в том, что у вас изначально на передатчике (Tx UART-а) логический нуль, который является "стартом". Этот старт принимается UART-ом ПК. И когда ваша программа инициализирует UART на МК, логический нуль сменяется единицей, которая является "стопом". Терминальная программа на ПК при этом читает из UARTа 0x00, которого на самом деле не было.
Если быть точным, то в этой ситуации микросхема UARTа ПК выдает сигналы ошибок framing error и break, но обычно терминальные программы на них не реагируют sad.gif
Go to the top of the page
 
+Quote Post
injen-d
сообщение Mar 16 2008, 19:26
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 91
Регистрация: 10-10-07
Из: Воронежа
Пользователь №: 31 250



Обычно бывает достаточно просто НЕ инициализировать линию Tx как выход. По сбросу все порты настроены как входы, а это будет распознаваться как "пассивная" "1" или "висячий провод". Т.е. если использовать для согласования с COM-портом какую-нибудь микросхемку тапа MAX232, MAX233, проблем обычно не возникает. На счет транзисторных преобразователей - не знаю.
ЗЫ: попадался мне старый девайс, у которого для согласования с COM-портом использовались древние военные микросхемки хххАПх и хххУПх, грелись они так, что аш обжигали, но работали! Правда каждый раз при включении и выключении девайса на комп приходил всякий мусор.


--------------------
- Бендер, ты же робот, зачем тебе пить пиво?
- Незачем! Я могу бросить в любой момент!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 12:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.01351 секунд с 7
ELECTRONIX ©2004-2016