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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> AT90CAN128, Проблема с USART
--Ivan--
сообщение Sep 7 2007, 16:18
Сообщение #16





Группа: Новичок
Сообщений: 8
Регистрация: 1-09-07
Пользователь №: 30 221



Цитата(=GM= @ Sep 6 2007, 20:39) *
То --Ivan--. Я ж вам сказал, где у вас ошибка, чего проще, поставить сброс ТХС и проверить. А команда RETI сбрасывает ТХС! Что ж вы нас путаете?

To =GM=. Извините за поздний ответ, написал перед тем как проверить.
Сейчас добавил одну строку в функцию передачи, теперь она выглядит так:
Код
void USART1_Transmit( unsigned char data )
{
    UDR1 = data;
    while ( ! ( UCSR1A & ( 1 << TXC1 ) ) );
    UCSR1A = ( 1 << TXC1 );
}

Появился небольшой прогресс, но правильно данные все равно не передаются. Если перебирать все значения от 1 до 250 и посылать их в компорт, то в окне терминала иногда добавляется буква "А", и никаких других символов нет. До того как стал сбрасывать флаг терминал вообще не реагировал.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Sep 7 2007, 21:51
Сообщение #17


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(--Ivan-- @ Sep 7 2007, 16:18) *
Если перебирать все значения от 1 до 250 и посылать их в компорт, то в окне терминала иногда добавляется буква "А", и никаких других символов нет. До того как стал сбрасывать флаг терминал вообще не реагировал.

Такое впечатление, что ваш контроллер работает не на 16МГц. Попробуйте непрерывно передавать 0х55, на выходе передатчика должен быть меандр. А длительность одного бита вгрубе должна быть 104 мкс (для 9600 бод).


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
--Ivan--
сообщение Sep 8 2007, 14:47
Сообщение #18





Группа: Новичок
Сообщений: 8
Регистрация: 1-09-07
Пользователь №: 30 221



Как раз в случае 0х55 и возникает та самая буква "А". Похоже, осциллограф был бы весьма кстати, чтобы посмотреть сигнал. Но ведь программа написанная в кодвижн работает, и там тоже UBRR = 103, хотя fuse-биты не менялись.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Sep 10 2007, 10:47
Сообщение #19


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(--Ivan-- @ Sep 8 2007, 13:47) *
Как раз в случае 0х55 и возникает та самая буква "А". Похоже, осциллограф был бы весьма кстати, чтобы посмотреть сигнал. Но ведь программа написанная в кодвижн работает, и там тоже UBRR = 103, хотя fuse-биты не менялись

Так не должно быть. В общем, слона надо есть по частям.

1) В коудмижн уберите из программы всё, оставьте только передачу одного символа по ожиданию, и добейтесь устойчивого приёма символа на терминале.

2) Затем ту же программу пропустите сквозь иар и добейтесь того же.

3) Сравните коды обеих программ.

4) Сделайте выводы.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post

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

 


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


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