Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ATMEGA_168 !
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
anton234ff
помогите студенту!прога передает из терминала код в Мегу.от нее требуется принять код,декодировать и выдать в цапу.отлаживаю в AVRStudio.имитирую прерывание завершения приема и пытаюсь прочитать UDR0.код куда-то теряется.может какая тонкость есть при чтении именно из UDR?????
инициализация:

;ЗАДАЕМ ПАРАМЕТРЫ КАДРА
ldi r16,0b00000110
sts UCSR0C,r16

ldi r16,0B10011000
sts ucsr0b,r16


sei

;обработка прерывания по завершении приема


usart_rx:




;ЧТЕНИЕ ИЗ БУФЕРА В Р22


lds r22,udr0




и все тут катится...UDR просто очищается и ничего никуда не пишет 07.gif
stells
Цитата(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 заменить
anton234ff
адрес UDRO у меги 168 198,команды ин аут не катят,компиллятор шлет...далеко...
defunct
Цитата(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 не читайте!
anton234ff
может у кого есть рабочие проги с уартом
stells
Цитата(defunct @ Nov 23 2009, 16:03) *
доступ к регистрам UART0 можно делать только через LDS/STS, т.к. USART0 лежит выше I/O области:

да, действительно, не посмотрел
anton234ff
да все параметры задал.все регистры memory mapped работают как Маркс завещал,а удр нет.почему тогда флаги корректно обрабатываются????записать в него можно без проблем
_Pasha
Все понимаю, кроме:
1. Для чего использовать этот прострел ноги числа в формате 0bxxxxxxxx ??? Это что - так удобно - пялиться в монитор, подсчитывая, сколько там единиц и нулей? Как только размер исходника у Вас превысит 200 строк - будете долго искать потерянную в константах единичку sad.gif
2. В обработчике прерывания делается много всякого - надо бы SREG сохранить (ну, и восстановить тоже по выходу)- у Вас этого нету.
3. Полагаться на АВРстудию - НЕНАДА. Много там гадостей в части симуляции периферии.
anton234ff
бинар тольпо потому что так на пиках учился.вы хотите сказать что прога может работать в железе но не работать в отладчике????
_Pasha
Цитата(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
anton234ff
э-э-э,знаете,мое 2.12 студио не дало положительного результата от операций сохранения статус-регистра.у вас прочитался удр без изменения проги или после оного??выход в подпрограмме один end
SysRq
У вас в таблице векторов прерываний "jmp usart_rx" вписано на 1 строчку дальше чем надо (обработчик не к RXC, а к UDRE).
Остальное не смотрел.
haker_fox
Работал с UART0, но программа была на Си++ и это избавило меня от некоторых проблем...
anton234ff
все оказалось куда интересней-на макетке все работает!!! а avrstudio выдавало ошибки.только забыл 30 вычесть,ASCII как-никак. smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.