реклама на сайте
подробности

 
 
> ATMEGA_168 !, UDR0 не прочитать
anton234ff
сообщение Nov 23 2009, 12:23
Сообщение #1





Группа: Участник
Сообщений: 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 просто очищается и ничего никуда не пишет 07.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
anton234ff
сообщение Nov 23 2009, 13:51
Сообщение #2





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



бинар тольпо потому что так на пиках учился.вы хотите сказать что прога может работать в железе но не работать в отладчике????
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Nov 23 2009, 14:18
Сообщение #3


;
******

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 22:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01369 секунд с 7
ELECTRONIX ©2004-2016