|
|
  |
ATMEGA_168 !, UDR0 не прочитать |
|
|
|
Nov 23 2009, 12:23
|
Группа: Участник
Сообщений: 12
Регистрация: 8-08-09
Пользователь №: 51 791

|
помогите студенту!прога передает из терминала код в Мегу.от нее требуется принять код,декодировать и выдать в цапу.отлаживаю в AVRStudio.имитирую прерывание завершения приема и пытаюсь прочитать UDR0.код куда-то теряется.может какая тонкость есть при чтении именно из UDR????? инициализация: ;ЗАДАЕМ ПАРАМЕТРЫ КАДРА ldi r16,0b00000110 sts UCSR0C,r16 ldi r16,0B10011000 sts ucsr0b,r16 sei ;обработка прерывания по завершении приема usart_rx: ;ЧТЕНИЕ ИЗ БУФЕРА В Р22 lds r22,udr0 и все тут катится...UDR просто очищается и ничего никуда не пишет
|
|
|
|
|
Nov 23 2009, 12:52
|

внештатный сотрудник
     
Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401

|
Цитата(anton234ff @ Nov 23 2009, 15:23)  lds r22,udr0 in r22,udr0 Цитата(anton234ff @ Nov 23 2009, 15:23)  ldi r16,0b00000110 sts UCSR0C,r16 ldi r16,0B10011000 sts ucsr0b,r16 sts тоже надо на out заменить
|
|
|
|
|
Nov 23 2009, 13:02
|
Группа: Участник
Сообщений: 12
Регистрация: 8-08-09
Пользователь №: 51 791

|
адрес UDRO у меги 168 198,команды ин аут не катят,компиллятор шлет...далеко...
|
|
|
|
|
Nov 23 2009, 13:03
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(stells @ Nov 23 2009, 14:52)  in r22,udr0 sts тоже надо на out заменить доступ к регистрам UART0 можно делать только через LDS/STS, т.к. USART0 лежит выше I/O области: Код адрес регистр (0xC6) UDR0 (0xC5) UBRR0H (0xC4) UBRR0L (0xC2) UCSR0C (0xC1) UCSR0B (0xC0) UCSR0A причина в чем-то другом. Цитата и все тут катится... бод-рейт задали? и отладчиком UDR0 не читайте!
|
|
|
|
|
Nov 23 2009, 13:07
|
Группа: Участник
Сообщений: 12
Регистрация: 8-08-09
Пользователь №: 51 791

|
может у кого есть рабочие проги с уартом
Прикрепленные файлы
168.txt ( 4.54 килобайт )
Кол-во скачиваний: 110
|
|
|
|
|
Nov 23 2009, 13:21
|
Группа: Участник
Сообщений: 12
Регистрация: 8-08-09
Пользователь №: 51 791

|
да все параметры задал.все регистры memory mapped работают как Маркс завещал,а удр нет.почему тогда флаги корректно обрабатываются????записать в него можно без проблем
|
|
|
|
|
Nov 23 2009, 13:51
|
Группа: Участник
Сообщений: 12
Регистрация: 8-08-09
Пользователь №: 51 791

|
бинар тольпо потому что так на пиках учился.вы хотите сказать что прога может работать в железе но не работать в отладчике????
|
|
|
|
|
Nov 23 2009, 14:18
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(anton234ff @ Nov 23 2009, 16:51)  бинар тольпо потому что так на пиках учился.вы хотите сказать что прога может работать в железе но не работать в отладчике???? 1. Лучше hex - так хоть виднее, что куда 2. Может быть и так, сейчас проверим... Avr Studio 4.14 build 589 Указанных пакостей не обнаружил. Однако, текст прерывания должен быть примерно таким (проблемы прежде всего в этом): Код .def SaveSreg = r15 ............ Usart_RxC: in SaveSreg,Sreg ; <ISR body> ......................... ISR_Exit: out Sreg,Savesreg reti В общем, множественные точки выхода надо заменить на rjmp ISR_exit Не забывайте о контексте. Если надо сразу же разрешать прерывания, пишите примерно так: Код Usart_RxC: push r0 in r0,Sreg sei push r0 ; <ISR body> ......................... ISR_Exit: pop r0 cli out Sreg,r0 pop r0 reti
|
|
|
|
|
Nov 23 2009, 14:32
|
Группа: Участник
Сообщений: 12
Регистрация: 8-08-09
Пользователь №: 51 791

|
э-э-э,знаете,мое 2.12 студио не дало положительного результата от операций сохранения статус-регистра.у вас прочитался удр без изменения проги или после оного??выход в подпрограмме один end
|
|
|
|
|
Nov 24 2009, 10:21
|
Группа: Участник
Сообщений: 12
Регистрация: 8-08-09
Пользователь №: 51 791

|
все оказалось куда интересней-на макетке все работает!!! а avrstudio выдавало ошибки.только забыл 30 вычесть,ASCII как-никак.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|