roboforum.ru

Технический форум по робототехнике.


Помогите с USART

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

Помогите с USART

Сообщение trinadcatii » 29 дек 2011, 23:48

Процесор работает на заводской частоте.
пример запускаю в proteus а код пишу CVAVR.
Пытаясь разобрать с принципом работы Usart читая попутно краткий курс-самоучитель, и учитывая, что я в этом деле новичок, возник следующий вопрос:
Виртуальный терминал выдает абру кадабру из непонятных символов вместо желаемого "Hello world", что я сделал не так помогите разобраться?!
код следующий:

UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86; // USART
UBRRH=0x00;
UBRRL=0x06;

putsf ("Hello world");
trinadcatii
 
Сообщения: 11
Зарегистрирован: 29 дек 2011, 23:26

Re: Помогите с USART

Сообщение dccharacter » 30 дек 2011, 11:47

Скорость УАРТ-а неправильно настроил. Выясни, что такое "заводская" частота и начни с того, чтобы помигать светодиодом ровно 1 раз в секунду. Потом все получится.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Помогите с USART

Сообщение EasyTech » 30 дек 2011, 11:51

Не, всё намного легче.
Проверь вот что.
1) ОБЯЗАТЕЛЬНО нужно чтобы rx соед с tx, а tx c rx.
2) Проверь в терминале настройки, чтобы они совпадали с тему что у тебя прописанны в регистрах УАРТ.
3) Проверь свою частоту работы МК. Лучше поставить внешний кварц на 8 или 16 МГЦ и поставить работы на 9600 или 19200 бод, там ошибка всего то лишь 0.2%

Добавлено спустя 1 минуту 22 секунды:
А вообще если дает абру кадарбу это на 89% из за неправильной работы скорости уарт => Начни с проверки кварца
EasyTech
 
Сообщения: 239
Зарегистрирован: 15 май 2011, 19:19
Откуда: Ростов-на-Дону
Skype: levanchik322
прог. языки: WinAVR C, C#, HTML+СSS.
ФИО: Лёва

Re: Помогите с USART

Сообщение trinadcatii » 30 дек 2011, 20:29

на заводской частоте 1МГЦ.
попробывал в CVAVR поменять частоту на 4 и 8 МГЦ таже петрушка. что то делаю не так но не пойму что

Добавлено спустя 16 секунд:
на заводской частоте 1МГЦ.
попробывал в CVAVR поменять частоту на 4 и 8 МГЦ таже петрушка. что то делаю не так но не пойму что
trinadcatii
 
Сообщения: 11
Зарегистрирован: 29 дек 2011, 23:26

Re: Помогите с USART

Сообщение dccharacter » 30 дек 2011, 20:43

Лень за тебя смотреть даташит - предположим, что скорость на МК ты настроил верно - поиграйся тогда со скоростью в терминале. Попробуй все скорости по очереди.

Но вообще обычно если мусор есть - значит передача идет, просто скорости не совпадают.

И я все-таки рекомендую помигать светодиодом - чтоб уж точно.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Помогите с USART

Сообщение boez » 31 дек 2011, 22:35

Не вижу самого главного - скорость со стороны компа какая?
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: Помогите с USART

Сообщение trinadcatii » 02 янв 2012, 19:11

программа моделируется в Proteus в виртуальном терминале скорость совпадает, пробывал в терминале менять скорость результат тот же.
dccharacter
помигал диодом используя функцию delay
PORTA.1=1;
delay_ms (200);
PORTA.1=0;
delay_ms(800);
сравнивая с временем на компьютере заметно небольшое отклонение (жду совета)
trinadcatii
 
Сообщения: 11
Зарегистрирован: 29 дек 2011, 23:26

Re: Помогите с USART

Сообщение dccharacter » 02 янв 2012, 20:29

сделай задержку в обоих местах по 1000 и посмотри визуально - секунда между переключением светика или нет
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Помогите с USART

Сообщение trinadcatii » 02 янв 2012, 20:45

dccaracter
попробывал проверил по моил ощущением пауза близка к 1,5 сек.
trinadcatii
 
Сообщения: 11
Зарегистрирован: 29 дек 2011, 23:26

Re: Помогите с USART

Сообщение dccharacter » 03 янв 2012, 03:42

trinadcatii писал(а):dccaracter
попробывал проверил по моил ощущением пауза близка к 1,5 сек.

Ну скорость в терминале увеличь в 1,5 раза. Была 9600, сделай 14400 (или что там у тебя - мы ж не телепаты). Если пойдет передача, сделай соответствующие выводы (кварц не той частоты, что обознанчена; не запускается кварц и фигачит от внутренней частоты, неверно настрона частота на МК и т.д. и т.п.)
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Помогите с USART

Сообщение trinadcatii » 03 янв 2012, 11:47

dccaracter благодарю за отзывчивость.
Я выше писал, что пробывал менять скорость на более высокую это ничего не поменяло.
В CodeVision выбрана частота 1 МГц, в Proteus в правке свойств объекта в пункте CKSEL Fuses так же частота 1 Мгц.
А чтобы сделать правильные выводы не хватает опыта
trinadcatii
 
Сообщения: 11
Зарегистрирован: 29 дек 2011, 23:26

Re: Помогите с USART

Сообщение boez » 04 янв 2012, 00:26

trinadcatii писал(а):Я выше писал, что пробывал менять скорость на более высокую это ничего не поменяло.

Я чего-то не вижу, где ты про скорость писал, токо про частоту вижу. Вообще 9600 на 1 МГц - плохой пример, там 7% ошибки. Попробуй поставить UBRR=12 и скорость 2400 в терминале. Или 8 МГц, 9600 и UBRR=51. Ну и вообще, это ж протеус, там же вроде осциллограф бесплатный должен быть - ткнись в Tx и посмотри длительность бита в микросекундах. Чтобы не смотреть, чего ж там "на глаз" мигает.
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: Помогите с USART

Сообщение trinadcatii » 04 янв 2012, 01:17

Прошу извинения действительно не писал-новый год виноват).
у меня 2 пункта UBRRH И UBRRL куда именно поставить 12?
trinadcatii
 
Сообщения: 11
Зарегистрирован: 29 дек 2011, 23:26

Re: Помогите с USART

Сообщение dccharacter » 04 янв 2012, 01:20

UBRRH = 0;
UBRRL = 12;
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Помогите с USART

Сообщение trinadcatii » 04 янв 2012, 01:50

[/quote] :cry: Попробывал все тоже
в терминале ставлю
Baud Rate 2400
Data Bits 8
Parity NONE
Stop Bits 1
PCB Package Not specified
trinadcatii
 
Сообщения: 11
Зарегистрирован: 29 дек 2011, 23:26

След.

Вернуться в Новичкам или основы основ роботостроения.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10