Технический форум по робототехнике.
trinadcatii » 29 дек 2011, 23:48
Процесор работает на заводской частоте.
пример запускаю в proteus а код пишу CVAVR.
Пытаясь разобрать с принципом работы Usart читая попутно краткий курс-самоучитель, и учитывая, что я в этом деле новичок, возник следующий вопрос:
Виртуальный терминал выдает абру кадабру из непонятных символов вместо желаемого "Hello world", что я сделал не так помогите разобраться?!
код следующий:
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86; // USART
UBRRH=0x00;
UBRRL=0x06;
putsf ("Hello world");
dccharacter » 30 дек 2011, 11:47
Скорость УАРТ-а неправильно настроил. Выясни, что такое "заводская" частота и начни с того, чтобы помигать светодиодом ровно 1 раз в секунду. Потом все получится.
EasyTech » 30 дек 2011, 11:51
Не, всё намного легче.
Проверь вот что.
1) ОБЯЗАТЕЛЬНО нужно чтобы rx соед с tx, а tx c rx.
2) Проверь в терминале настройки, чтобы они совпадали с тему что у тебя прописанны в регистрах УАРТ.
3) Проверь свою частоту работы МК. Лучше поставить внешний кварц на 8 или 16 МГЦ и поставить работы на 9600 или 19200 бод, там ошибка всего то лишь 0.2%
Добавлено спустя 1 минуту 22 секунды:
А вообще если дает абру кадарбу это на 89% из за неправильной работы скорости уарт => Начни с проверки кварца
trinadcatii » 30 дек 2011, 20:29
на заводской частоте 1МГЦ.
попробывал в CVAVR поменять частоту на 4 и 8 МГЦ таже петрушка. что то делаю не так но не пойму что
Добавлено спустя 16 секунд:
на заводской частоте 1МГЦ.
попробывал в CVAVR поменять частоту на 4 и 8 МГЦ таже петрушка. что то делаю не так но не пойму что
dccharacter » 30 дек 2011, 20:43
Лень за тебя смотреть даташит - предположим, что скорость на МК ты настроил верно - поиграйся тогда со скоростью в терминале. Попробуй все скорости по очереди.
Но вообще обычно если мусор есть - значит передача идет, просто скорости не совпадают.
И я все-таки рекомендую помигать светодиодом - чтоб уж точно.
boez » 31 дек 2011, 22:35
Не вижу самого главного - скорость со стороны компа какая?
trinadcatii » 02 янв 2012, 19:11
программа моделируется в Proteus в виртуальном терминале скорость совпадает, пробывал в терминале менять скорость результат тот же.
dccharacter
помигал диодом используя функцию delay
PORTA.1=1;
delay_ms (200);
PORTA.1=0;
delay_ms(800);
сравнивая с временем на компьютере заметно небольшое отклонение (жду совета)
dccharacter » 02 янв 2012, 20:29
сделай задержку в обоих местах по 1000 и посмотри визуально - секунда между переключением светика или нет
trinadcatii » 02 янв 2012, 20:45
dccaracter
попробывал проверил по моил ощущением пауза близка к 1,5 сек.
dccharacter » 03 янв 2012, 03:42
trinadcatii писал(а):dccaracter
попробывал проверил по моил ощущением пауза близка к 1,5 сек.
Ну скорость в терминале увеличь в 1,5 раза. Была 9600, сделай 14400 (или что там у тебя - мы ж не телепаты). Если пойдет передача, сделай соответствующие выводы (кварц не той частоты, что обознанчена; не запускается кварц и фигачит от внутренней частоты, неверно настрона частота на МК и т.д. и т.п.)
trinadcatii » 03 янв 2012, 11:47
dccaracter благодарю за отзывчивость.
Я выше писал, что пробывал менять скорость на более высокую это ничего не поменяло.
В CodeVision выбрана частота 1 МГц, в Proteus в правке свойств объекта в пункте CKSEL Fuses так же частота 1 Мгц.
А чтобы сделать правильные выводы не хватает опыта
boez » 04 янв 2012, 00:26
trinadcatii писал(а):Я выше писал, что пробывал менять скорость на более высокую это ничего не поменяло.
Я чего-то не вижу, где ты про скорость писал, токо про частоту вижу. Вообще 9600 на 1 МГц - плохой пример, там 7% ошибки. Попробуй поставить UBRR=12 и скорость 2400 в терминале. Или 8 МГц, 9600 и UBRR=51. Ну и вообще, это ж протеус, там же вроде осциллограф бесплатный должен быть - ткнись в Tx и посмотри длительность бита в микросекундах. Чтобы не смотреть, чего ж там "на глаз" мигает.
trinadcatii » 04 янв 2012, 01:17
Прошу извинения действительно не писал-новый год виноват).
у меня 2 пункта UBRRH И UBRRL куда именно поставить 12?
dccharacter » 04 янв 2012, 01:20
UBRRH = 0;
UBRRL = 12;
trinadcatii » 04 янв 2012, 01:50
[/quote]
Попробывал все тоже
в терминале ставлю
Baud Rate 2400
Data Bits 8
Parity NONE
Stop Bits 1
PCB Package Not specified