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

 
 
> ткните носом чо не так то (AVR USART), жара достала....(((
vazz
сообщение Aug 3 2010, 10:41
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 189
Регистрация: 21-01-10
Пользователь №: 54 971



Вобщем как-то пару месяцев назад игрался я с USARTом атмеги16 типа "первые шаги" и что самое удивительное припоминаю что у меня даже что-то получалось, т.е. принималось отправлялось, но потом как всегда бывает возникли задачи поважнее и я енто дело отложил. Сейчас имеется необходимость все закрепить и поиграться уже по взрослому. Короче пол дня уже сижу и так и эдак и ничего не получается, принять даж не получается ничего(( Кварц у меня 11,0592МГц (по ДШ без удвоения скорости в делитель UBRR нуна 11 записать)

Код
;
;  +-------------------------------------------------------------------------+
;  |                           инциализация USART                            |
;  +-------------------------------------------------------------------------+
;
;
    ldi        temp1,0b10000110    ;устанавливаем регистр UCSRC
    out        UCSRC,temp1    ;7-URSEL = 1 (выбор регистра 0=UBRRH, 1=UCSRC)
;                    ;6-UMSEL = 0 (0=асинхр., 1=синхр.)
;                    ;5-UPM1  = 0 (выбор контроля четности
;                    ;4-UPM0  = 0 (нет контроля))
;                    ;3-USBS  = 0 (кол-во стоп-битов (1=2 стоп-бита))
;                    ;2-UCSZ1 = 1 (количество бит (0-1-1=8бит),
;                    ;1-UCSZ0 = 1  см.UCSZ2 в рег.UCSRB)
;                    ;0-UCPOL = 0 (при синхр.передаче, см.ДШ)
    ldi        temp1,0b00000000    ;устанавливаем регистр UBRRH
    out        UBRRH,temp1    ;7-URSEL = 0 (выбор регистра 0=UBRRH, 1=UCSRC)
;                    ;6-NU
;                    ;5-NU
;                    ;4-NU
;                    ;3-UBRR11= 0 (установка битрэйта, старшая
;                    ;2-UBRR10= 0  тетрада UBRR)
;                    ;1-UBRR9 = 0
;                    ;0-UBRR8 = 0
    ldi        temp1,0b00001011    ;устанавливаем регистр UBRRL (57600кбод)
    out        UBRRL,temp1    ;UBRR7...0 = 11 (младший байт битрэйта)
    ldi        temp1,0b00000000    ;уст. регистр A упр. и статуса UCSRA
    out        UCSRA,temp1    ;7-RXC   = 0 (флаг завершения приёма)
;                    ;6-TXC   = 0 (флаг завершения передачи)
;                    ;5-UDRE  = 0 (флаг освобождения регистра данных)
;                    ;4-FE    = 0 (ошибка приёма (нет стоп-бита)
;                    ;3-DOR   = 0 (флаг переполнения (при заполнении принят очередной старт-бит))
;                    ;2-UPE   = 0 (ошибка условия четности, в ДШ название просто "PE")
;                    ;1-U2X   = 0 (1=удвоение скорости)
;                    ;0-MPCM  = 0 (1=многопроцессорный обмен (фильтруются посылки без адреса))
    ldi        temp1,0b11011000    ;уст. регистр B упр. и статуса UCSRB
    out        UCSRB,temp1    ;7-RXCIE = 1 (1=разр.прерывание USARTRXC)
;                    ;6-TXCIE = 1 (1=разр.прерывание USARTTXC)
;                    ;5-UDRIE = 0 (1=разр.прерывание USARTDRE)
;                    ;4-RXEN  = 1 (1=разр.работу приёмника)
;                    ;3-TXEN  = 1 (1=разр.работу передатчика)
;                    ;2-UCSZ2 = 0 (кол-во бит, см.рег.UCSRC)
;                    ;1-RXB8  = 0 (9ый бит приёма (при 9ти битах))
;                    ;0-TXB8  = 0 (9ый бит перед. (при 9ти битах))
;

А это у меня вектор по приему:

;
;  +-------------------------------------------------------------------------+
;  |                         Приём по USART завершен                         |
;  +-------------------------------------------------------------------------+
USARTRXC:
    in        temp1,UDR
    ldi        ZH,1
    ldi        ZL,108
    st        Z,temp1
    reti


Ну а дальше в основном теле я беру данные из этой ячейки SRAM и отправляю их на дисплей

Прибор уже полностью работает, осталось тока 485-интерфейс воткнуть с модбасом(

Ткните носом где я чего не так сделал, в симуляторе AVRStudio отследить ничего не получается

(исходные замечания: модуль работы с дисплеем работает 100%, преобразователь 232/485 тоже живой 100%, контактной болезни нет, процессор живой, программа для работы с com-портами тоже не раз пользованая, явно что-то в программе не то делаю)

Сообщение отредактировал rezident - Aug 3 2010, 11:07
Причина редактирования: Оформление цитаты исходника.


--------------------
Не так страшна автоматизация, как её малюют.
Go to the top of the page
 
+Quote Post



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

 


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


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