Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с USART на ATmega8
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
coolibin
У меня возникла проблема с USART'ом на моей ATmega8. К процессору подключена микросхема преобразования уровней(MAX232), к ней со стороны RS232 не подключено ничего. Когда я просто пытаюсь принять байт, всё работает нормально, байт не принемается, а вот когда я перед принятием байта посылаю байт через USART, то принимается какой то байт, чего быть не должно.
Собственно, сам код:
Код
USART_Transmit:
    
    sbis    UCSRA,    UDRE
    rjmp    USART_Transmit
    
    out    UDR,            r16
    ret

USART_Receive:
    sbis    UCSRA,    RXC
    rjmp    USART_Receive
    in    r16,       UDR
    ret
        ...
        rcall    USART_Transmit
        rcall    USART_Receive
        rcall    TextOut
         ...

А если закоментить строку:
Код
        ..
       ;rcall    USART_Transmit
         ...

то всё работает правильно, текст не выводится. Я делал задержку между вызовами этих функций, ничего это не дало. Функции USART_Transmit/USART_Receive взяты из ДШ ATmega8.
MrYuran
как вариант -сопля между ногами.
Цитата
Я делал задержку между вызовами этих функций, ничего это не дало

а какой эффект ожидался?
если байт пришёл в УАРТ, то он там будет, независимо от того, считаете вы его сразу или после паузы
coolibin
Цитата
как вариант -сопля между ногами.

Я пробывал выключать приём при передачи и наоборот, ничего не поменялось.

Цитата
а какой эффект ожидался?
если байт пришёл в УАРТ, то он там будет, независимо от того, считаете вы его сразу или после паузы

Да просто так, может повезётsmile.gif
@Ark
Цитата(coolibin @ May 24 2008, 20:46) *
Я пробывал выключать приём при передачи и наоборот, ничего не поменялось.
Да просто так, может повезётsmile.gif

Не исключены "наводки"... (схемку бы глянуть?).
Для начала попробуйте "подтянуть" вход и выход USARTа к питанию (5В) резисторами 5-10К.
...
radiohobbyt
Цитата(coolibin @ May 24 2008, 19:22) *
У меня возникла проблема с USART'ом на моей ATmega8. К процессору подключена микросхема преобразования уровней(MAX232), к ней со стороны RS232 не подключено ничего. Когда я просто пытаюсь принять байт, всё работает нормально, байт не принемается, а вот когда я перед принятием байта посылаю байт через USART, то принимается какой то байт, чего быть не должно.

Не тем ты занимаешься))) Даже думать ничего не надо- откуда все это узнать можно, но только силы зря потратишь. Лучше подключайся к СОМ порту и пробуй снова. +МАХ232 (схемы нет, могу только предположить) у тебя без питания скорее всего. А что тут произойдет- я не знаю. А подтягивать надо его входы, но только если у него есть питание)))
coolibin
Может что то Вам подскажет следующая информация. Провёл два эксперимента.
Первый, выключил USART, отправил байт, включил USART, принимаю байт, байт пришел! Почему так происходит, если по ходу при выключенном USART'е на ножке TxD ничего не генерируется? или я что то не так понял? это я всё по поводу наводок.
Второй, отключил выводы TxD, RxD от схемы(просто подогнул ножки). Всё нормально! никакого "левого" байта не пришло!
MrYuran
Цитата(coolibin @ May 26 2008, 10:12) *
Первый, выключил USART, отправил байт, включил USART, принимаю байт, байт пришел! Почему так происходит

байт не "отправился", а попал в буфер передатчика
после включения передатчика он отправился уже натурально и попал в приёмник таким же путём, как и раньше
Цитата
Второй, отключил выводы TxD, RxD от схемы(просто подогнул ножки). Всё нормально! никакого "левого" байта не пришло!

100% - сопля или наводка!
чудес не бывает (имхо)
coolibin
Цитата(MrYuran @ May 26 2008, 10:23) *
байт не "отправился", а попал в буфер передатчика
после включения передатчика он отправился уже натурально и попал в приёмник таким же путём, как и раньше
...

А буфер большой? потому что я отправляю 3 байта и принимаю 3 байта.
@Ark
Цитата(coolibin @ May 26 2008, 12:43) *
А буфер большой? потому что я отправляю 3 байта и принимаю 3 байта.

Ув., coolibin! Представьте, наконец, схемку того, что Вы там напаяли! smile.gif Тогда, может быть, последуют конструктивные советы.
coolibin
Цитата(@Ark @ May 27 2008, 20:35) *
Ув., coolibin! Представьте, наконец, схемку того, что Вы там напаяли! smile.gif Тогда, может быть, последуют конструктивные советы.

Только сейчас нашел всю необходимую информацию и да, кстати, забыл сказать, я не занимался разработкой данного девайса и электронщик с меня никакой так что не бейте сильно, если ляпну что не так. Схема в прикреплённых файлах, а ДШ здесь. Сопротивление между ножками RxD, TxD около 30К. Проверил осциллографом сигнал на обеих ножках и оказалось, что на ножке RxD почти то же самое что и на ножке TxD, т. е. те же 3 байта. Откуда они берутся?(((
MrYuran
Да.. Самого интересного как раз и нет...
coolibin
Цитата(MrYuran @ May 28 2008, 12:56) *
Да.. Самого интересного как раз и нет...

Чего же, если не секрет?
MrYuran
Куда же, собственно, уходят линии от ног RxD и TxD...
И где они коротятся
coolibin
Цитата(MrYuran @ May 28 2008, 14:43) *
Куда же, собственно, уходят линии от ног RxD и TxD...
И где они коротятся

Ну, как раз это на схеме есть. RxD идёт на RX(ножка 1 микросхемы), TxD идёт на TX(ножка 4 микросхемы). Микросхема L9637D, ДШ я указал.
MrYuran
А, так это K-Line чтоли...
А вы сами то ДШ смотрели?
вот этот кусок...
Нажмите для просмотра прикрепленного файла
Если я правильно понимаю, данные с выхода автоматически попадают на вход
(забыл раскрасить)
Если не прав, извиняйте, башка чё-то гудит...

Вот, раскрасил...
Нажмите для просмотра прикрепленного файла
Похоже, придётся смириться, либо запрещать приём на время передачи
SSerge
Так вот оно в чём дело!
L9637D это же ISO 9141 Interface, известный также под именем K-line.
Так и должно быть, его приёмник принимает всё, что передатчик передаёт, если, конечно, линию не закоротить.

ЗЫ. опередили меня с картинкой из ДШ. smile.gif
coolibin
Заработало! Единственное, что не нравится, это то что если быстро выключить передачю после передачи байта и включить приём всё равно приходит 1 байт. Я делаю задержку, но как это отразится на функциональности ещё не знаю.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.