roboforum.ru

Технический форум по робототехнике.
Текущее время: 26 ноя 2024, 21:34

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Как запрограммировать UCSRC у Меги 16?
СообщениеДобавлено: 26 сен 2005, 18:11 
Не в сети

Зарегистрирован: 13 май 2005, 17:41
Сообщения: 20
Откуда: Донецк
В даташите написано что, для программирования UCSRC надо бит URSEL установить в 1, а если он 0 то запишется в UBRRH. А у меня пишется и в UCSRC и в UBRRH одновременно независимо от состояния URSEL.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 27 сен 2005, 12:32 
Не в сети

Зарегистрирован: 07 фев 2005, 17:41
Сообщения: 367
Откуда: Санкт-Петербург
Такого быть не может.  Покажи как ты этого добился в проге...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 27 сен 2005, 12:57 
Не в сети

Зарегистрирован: 13 май 2005, 17:41
Сообщения: 20
Откуда: Донецк
Вот такой текст

clr temp
out UCSRA, temp
ldi temp, 0x10
out UCSRB, temp
ldi temp, 0x86
out           UCSRC, temp
ldi temp, 0x00
out UBRRH, temp
ldi temp, 0x33
out UBRRL, temp

Потом в AVRStudio в отладчике смотрю как записывается в регистры. При записи в  UCSRC 0x86 тоже самое записывается в UBRRH, а потом при обнулении UBRRH они оба обнуляются.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 27 сен 2005, 14:57 
Не в сети

Зарегистрирован: 07 фев 2005, 17:41
Сообщения: 367
Откуда: Санкт-Петербург
Сразу могу предупредить что в AVR Studio ты не сможешь увидеть что записано в каждом из этих регистров по отдельности. Это происходит из-за того что регистры имеют одинаковый адрес.

И самое главное - писать как и читать надо последовательно сначала один, а потом сразу же другой регистр, без посторонних команд между ними. Для проверки того,что записано в регистрах надо просто их прочитать. В дополнение скажу, что точки останова на командах чтения/записи в эти регистры ставить нельзя.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 01 окт 2005, 11:51 
Не в сети

Зарегистрирован: 13 май 2005, 17:41
Сообщения: 20
Откуда: Донецк
Делаю все по даташиту, инициализация, а потом читаю из регистров и там в оба регистра записывается 86:
clr r16
out UCSRA, r16
ldi r17, 0x33             ; уст. скорость 9600

out UBRRH, r16
out UBRRL, r17

ldi r16, (1<<RXEN)   ;разрешаем приемник
out UCSRB, r16

ldi r16, (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0)   ; данные 8 бит
out UCSRC, r16    

nop

in r19, UBRRH
in r20, UCSRC


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 окт 2005, 11:58 
Не в сети

Зарегистрирован: 07 фев 2005, 17:41
Сообщения: 367
Откуда: Санкт-Петербург
Хорошо, завтра выложу как делаю это я ... :wink:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 окт 2005, 15:02 
Не в сети

Зарегистрирован: 13 май 2005, 17:41
Сообщения: 20
Откуда: Донецк
Да, хотелось бы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 окт 2005, 16:01 
Не в сети

Зарегистрирован: 07 фев 2005, 17:41
Сообщения: 367
Откуда: Санкт-Петербург
YuriY писал(а):
Да, хотелось бы.

....Плавно перетекает на завтра...  :lol:  :lol:  :lol:  :wink: склероз, батенька.... :wink:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 06 окт 2005, 17:17 
Не в сети

Зарегистрирован: 07 фев 2005, 17:41
Сообщения: 367
Откуда: Санкт-Петербург
Вот например кусок из проги для ATmega162, кусок инициализации УАППа:
"
; инициализация последовательного интефейса USART0
;USART Control and Status Register B ? UCSRB

; 11111000 - full (0xF8)
; 10010000 - only receiver on (0x90)
;

sts UART_bin_Flags_H,r0
sts UART_bin_Flags_L,r0

ldi r16,UBRR_num_L ;
out UBRR0L,r16 ; записываем значение в регистр счётчика

ldi r17,UBRR_num_H ;

ldi r18,0x8E

out UBRR0H,r17 ; записываем значение в регистр счётчика
out UCSR0C,r18

ldi r16,0x90 ; записываем в регистр байт вкл приёмника
out UCSR0B,r16 ; записываем в регистр управления

nop
nop
;----------------------------------------------------

"


Единственное отличие этого контроллера от меги16 - два УАППа. Но пара регистров UBRR0H, UCSR0C находится по одному и тому же адресу.
Проверять в AVR Studio что записано в любом из этих регистров через отладчик - бесполезное занятие. Нужно проверять только на живом контроллере и без точек останова на командах чтения/записи этих регистров.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 06 окт 2005, 21:20 
Не в сети

Зарегистрирован: 13 май 2005, 17:41
Сообщения: 20
Откуда: Донецк
А как проверить на контроллере? Я с меги посылаю на 2313, а он не принимает ничего, а если два 2313 соединяю то все нормально работает


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 07 окт 2005, 11:10 
Не в сети

Зарегистрирован: 07 фев 2005, 17:41
Сообщения: 367
Откуда: Санкт-Петербург
А проверяется это очень просто:
Берём кусок кода, например:

ldi r17,UBRR_num_H ;

ldi r18,0x8E

out UBRR0H,r17 ; записываем значение в регистр счётчика
out UCSR0C,r18

ldi r16,0x90 ; записываем в регистр байт вкл приёмника
out UCSR0B,r16 ; записываем в регистр управления

nop
nop
 

и к нему добавляем ещё один кусок:

nop
nop
in r19, UBRR0H
in r20, UCSR0C
nop
nop


главное, ставить точку останова на самой последней команде (nop). И если ты используешь JTAG, то надо запускать этот код до точки останова.  Такая же схема записи регистров была ещё и в серии AT90 при записи в 16-ти разрядный регистр 16-ти разрядного счётчика ...

...А в симуляторе такое я не пробовал т.к. всегда отлаживался на контроллере под интерфейсом JTAG.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 08 окт 2005, 12:25 
Не в сети

Зарегистрирован: 13 май 2005, 17:41
Сообщения: 20
Откуда: Донецк
Пасиба, буду пробовать


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 06 ноя 2005, 06:29 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Проверяйте проги в симуляторе VMLAB - вам сразу понравится.

пример задачи 3 и 8 курса.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO