roboforum.ru

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


UART инициализация

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

UART инициализация

Сообщение ~RideR~ » 04 дек 2011, 09:35

Добрый день Всем!
Я смотрю тут многим помогают. Мне тоже нужна маленькая помощь. На днях спаял MRC40 и решил поиграться с UART, посмотрел, с ним можно многое сделать: ДУ, подключать разные датчики к компу, вести калибровку робота.
Наткнулся на много проектов, но более всего понравился этот: http://chipenable.ru/index.php/programm ... -uart.html
Проблема вот в чём, там используется мега8535 на частоте 8МГц, а у меня мега16 с частотой 16Мгц. Я пишу в WinAVR . Я исправил в мейкфаиле всё под себя: частоту и МК. и поменял регистр UBRR = 103 (16 Мгц, для меги16). В регистрах посмотрел стопбиты, биты четности и размер данных (1 стоп бит, нет четности, 8 бит данных).
Загружаю терминал а он не работает с контроллером! т.е. контроллер что то получает но не то... Я не знаю что делать, я всё менял по разному, читал заного весь даташит на мегу16 (работа с уарт). Никак :(
там есть код if (sym=='q') {LED=1;} - я отсылаю любой символ и светодиод загорается, подскажите пожалуйста какие ещё регистры проверить надо... :cry: :cry: :cry: :cry:
~RideR~
 
Сообщения: 1
Зарегистрирован: 04 дек 2011, 09:26

Re: UART инициализация

Сообщение Angel71 » 04 дек 2011, 15:38

частота, на которой работает чип и скорость уарта влияет на вероятность ошибок при передаче данных. точнее уход частоты уарта от стандартного значения, но сути это не меняет - ошибки при передаче. для уарта 16мгц не очень хорошо подходит, лучше 14.745.600гц.
вероятность ошибки.JPG

если вы кварц пока менять не собираетесь, то выбирете скорость, на которой % ошибок будет как можно ближе к 0. проверьте настройки уарта, чтоб они были одинаковыми и на компьютере и у меги. я обычно вставляю биты данных - 8, чётность - нет, стоповые биты - 1, управление потоком - нет. проверять можно так:
- в меге в бесконечном цикле в компьютер отправлять (с задержками, допустим в 0,5..1сек или ещё больше) какие-нибудь данные. для удобства можно во вложеном цикле от 0 до 255. в любом терминале смотрите, что приходит.
- в меге всё принимаемое по уарт отправлять обратно в компьютер. открыли терминал, отослали данные, получили обратно.
или придумайте свой вариант
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: UART инициализация

Сообщение boez » 04 дек 2011, 18:09

Rider же написал, он грузит 103 в UBRR, это 9600 и ошибка там мизерная, нормально должно работать с 16 МГц. Но раз приходит не то, значит похоже скорость таки неправильная. В первую очередь проверить, что контроллер работает на 16 МГц, а не скажем от внутреннего RC на 1 или 8 МГц - фьюзы как выставлены, правильно? Вообще, надо просто написать простейший цикл из двух операций
Код: Выделить всёРазвернуть
while(1) {UDR='A'; _delay_ms(1000);}

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

Re: UART инициализация

Сообщение Angel71 » 04 дек 2011, 19:39

:pardon: для меня что 2, что 0,2 это совсем не вариант для отлова проблемы.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: UART инициализация

Сообщение EasyTech » 10 дек 2011, 15:13

всего один вопрос, кто знает, в CVAVR фьюз запрограммирование это галочка снята или поставленна? а то я путаю. :(
EasyTech
 
Сообщения: 239
Зарегистрирован: 15 май 2011, 19:19
Откуда: Ростов-на-Дону
Skype: levanchik322
прог. языки: WinAVR C, C#, HTML+СSS.
ФИО: Лёва


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

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 0

cron