roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 мар 2025, 00:19

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: UART инициализация
СообщениеДобавлено: 04 дек 2011, 09:35 
Не в сети

Зарегистрирован: 04 дек 2011, 09:26
Сообщения: 1
Добрый день Всем!
Я смотрю тут многим помогают. Мне тоже нужна маленькая помощь. На днях спаял 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:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART инициализация
СообщениеДобавлено: 04 дек 2011, 15:38 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
частота, на которой работает чип и скорость уарта влияет на вероятность ошибок при передаче данных. точнее уход частоты уарта от стандартного значения, но сути это не меняет - ошибки при передаче. для уарта 16мгц не очень хорошо подходит, лучше 14.745.600гц.
Вложение:
вероятность ошибки.JPG
вероятность ошибки.JPG [ 142.96 КиБ | Просмотров: 1791 ]

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART инициализация
СообщениеДобавлено: 04 дек 2011, 18:09 
Не в сети

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

И так по кругу. И смотри, что в терминал падает. Если мусор, но раз в секунду - что-то с согласованием уровней. Если не раз в сек, а реже - значит мега не на той частоте работает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART инициализация
СообщениеДобавлено: 04 дек 2011, 19:39 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
:pardon: для меня что 2, что 0,2 это совсем не вариант для отлова проблемы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART инициализация
СообщениеДобавлено: 10 дек 2011, 15:13 
Не в сети

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 4 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO