AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
13.06.2013, 09:39
|
|
Гражданин KAZUS.RU
Регистрация: 16.06.2005
Сообщений: 944
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
|
Re: Глючит uasart в mega16
Сообщение от vynt
|
что ещё может разрешить UCSRC?
|
Например смену битрейта на ходу, бит уресел не забывать ноликом прописать, размер символа. Словом все параметры, коими данный регистр управляет. А насчёт реальности, а не теории, был случай, мне надо было работать с одним хитрым модулем, через УСАРТ, и помимо этого с RS485. Так вот хитрость модуля была в том, что ему клок усарт требовался по нарастанию фронта, а в обычном мах485 - наоборот. Так и приходилось помимо разрешений для мах485 и модуля ещё и полярность постоянно переключать.
|
|
|
|
13.06.2013, 10:12
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,044
Сказал спасибо: 2,559
Сказали Спасибо 11,882 раз(а) в 5,959 сообщении(ях)
|
Re: Глючит uasart в mega16
Сообщение от vynt
|
Думаю, проблема не в программе.
|
И я не про программу, а про компилятор. Как распределяется адресное пространство? Никто ни с кем не пересекается?
Ведь, вернемся к началу, проблема возникла при замене компилятора, тут и смотреть подробней.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
13.06.2013, 10:37
|
|
Почётный гражданин KAZUS.RU
Регистрация: 02.03.2011
Адрес: Россия, КБР
Сообщений: 629
Сказал спасибо: 108
Сказали Спасибо 596 раз(а) в 334 сообщении(ях)
|
Re: Глючит uasart в mega16
Проблема не в очистке буфера приёмника, а в сбросе флага UDRE - сигнала о том что в буфере был записан байт (сигнал прерывания), этот флаг/бит сбрасывается только при чтении из буфера и при выключении питания МК (аппаратный/программный резет не помогает). Так вот, если запретить прерывания но не отключать приёмник во время и/но до окончания приёма байта, UDRE будет установлен всё равно а прерывания не произойдёт, не произойдёт оно и после разрешения прерываний поскольку тригер изменения состояния этого бита не сработает (на момент разрешения уже есть признак срабатывания). Ситуация маловероятная но случается. Никакому потребителю не понравиться, ездить за несколько километров и МК включать/выключать, даже раз в неделю... Случайно обнаружил у себя такое поведение при переносе проекта с одной меги на другую (намного чаще стала возникать, думаю ввиду отказа от внешней памяти, просто операции перезаписи из памяти в буфер передатчика стали быстрее происходить).
|
|
|
|
13.06.2013, 10:42
|
|
Почётный гражданин KAZUS.RU
Регистрация: 02.03.2011
Адрес: Россия, КБР
Сообщений: 629
Сказал спасибо: 108
Сказали Спасибо 596 раз(а) в 334 сообщении(ях)
|
Re: Глючит uasart в mega16
Сообщение от akegor
|
И я не про программу, а про компилятор. Как распределяется адресное пространство? Никто ни с кем не пересекается?
Ведь, вернемся к началу, проблема возникла при замене компилятора, тут и смотреть подробней.
|
Я в симуляторе проверил его проект (hex), нет там ошибок. Если у него терминал показывает не те символы, то это либо частота кварца не та либо уровни преобразования TTL-RS232 на грани между логическим нулём и единицой. И не факт что при смене компилятора, может и при подключении терминала. Я уже писал, следует либо исключить сам терминал, либо минимизировать его влияние (поставить хотя бы диод в разрыв RX)
Последний раз редактировалось vynt; 13.06.2013 в 11:05.
|
|
|
|
13.06.2013, 11:36
|
|
Гражданин KAZUS.RU
Регистрация: 16.06.2005
Сообщений: 944
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
|
Re: Глючит uasart в mega16
Сообщение от vynt
|
а в сбросе флага UDRE - сигнала о том что в буфере был записан байт (сигнал прерывания)
|
Вообще-то этот флаг (USART Data Register Empty) говорит о том, что дата регистр передатчика пуст. И готов к приёму новых данных для передачи. Т.е. это флаг для передачи данных, и относится не к модулю чтения (RXEN), а к модулю записи (TXEN). Для чтения этот флаг не используется. Или дословно
The UDRE Flag indicates if the transmit buffer (UDR) is ready to receive new data. If UDRE is one, the buffer is empty, and therefore ready to be written.
|
|
|
|
13.06.2013, 11:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 02.03.2011
Адрес: Россия, КБР
Сообщений: 629
Сказал спасибо: 108
Сказали Спасибо 596 раз(а) в 334 сообщении(ях)
|
Re: Глючит uasart в mega16
Кстати! На скриншоте в первом посте, буфер приёмника расположен по адресу 2AF, а по факту в хексе, данные записываются по адресу 11C... И вопрос к топикастеру - а зачем константы (строки) храните в ОЗУ?
Последний раз редактировалось vynt; 13.06.2013 в 12:02.
|
|
|
|
13.06.2013, 11:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 02.03.2011
Адрес: Россия, КБР
Сообщений: 629
Сказал спасибо: 108
Сказали Спасибо 596 раз(а) в 334 сообщении(ях)
|
Re: Глючит uasart в mega16
Сообщение от Someone
|
Вообще-то этот флаг (USART Data Register Empty) говорит о том, что дата регистр передатчика пуст. И готов к приёму новых данных для передачи. Т.е. это флаг для передачи данных, и относится не к модулю чтения (RXEN), а к модулю записи (TXEN). Для чтения этот флаг не используется. Или дословно
The UDRE Flag indicates if the transmit buffer (UDR) is ready to receive new data. If UDRE is one, the buffer is empty, and therefore ready to be written.
|
очепятался ![Смущение](images/smilies/icon_redface.gif) поздно уже было... спать хотелось... флаг RXC конечно же
|
|
|
|
13.06.2013, 12:41
|
|
Вид на жительство
Регистрация: 02.11.2008
Сообщений: 319
Сказал спасибо: 17
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: Глючит uasart в mega16
Сообщение от vynt
|
Я в симуляторе проверил его проект (hex), нет там ошибок. Если у него терминал показывает не те символы, то это либо частота кварца не та либо уровни преобразования TTL-RS232 на грани между логическим нулём и единицой. И не факт что при смене компилятора, может и при подключении терминала. Я уже писал, следует либо исключить сам терминал, либо минимизировать его влияние (поставить хотя бы диод в разрыв RX)
|
Терминал показывает как раз правду, а в буфере МК билеберда.
|
|
|
|
13.06.2013, 12:57
|
|
Почётный гражданин KAZUS.RU
Регистрация: 02.03.2011
Адрес: Россия, КБР
Сообщений: 629
Сказал спасибо: 108
Сказали Спасибо 596 раз(а) в 334 сообщении(ях)
|
Re: Глючит uasart в mega16
Сообщение от TechMike
|
Терминал показывает как раз правду, а в буфере МК билеберда.
|
Билеберда там как раз и может быть из-за терминала... Зачем его вообще подключать потребовалось? Проект был рабочий/отлажен и перестал работать? или просто захотелось проверить, что после смены среды проектирования (компилятора) он всё ещё работает?
|
|
|
|
13.06.2013, 13:00
|
|
Вид на жительство
Регистрация: 02.11.2008
Сообщений: 319
Сказал спасибо: 17
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: Глючит uasart в mega16
Сообщение от vynt
|
Билеберда там как раз и может быть из-за терминала... Зачем его вообще подключать потребовалось? Проект был рабочий/отлажен и перестал работать? или просто захотелось проверить, что после смены среды проектирования (компилятора) он всё ещё работает?
|
Терминал для отладки, при рождении проект успешно работал с сотовым телефоном, теперь с модемом. Типа эволюционирует.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:59.
|
|