|
USART |
|
|
|
Jul 25 2011, 08:31
|
Участник
Группа: Участник
Сообщений: 31
Регистрация: 2-04-11
Пользователь №: 64 078
|
Нужно организовать передачу данных от микросхемы к мк atmega8. Интерфейс передачи синхронный полудуплексный. Т.е. для того чтобы использовать USART я соединил ноги rx и tx. Мк ведомое устройство. Значит инициализирую usart: Код USART_Init: ldi R16,(1<<RXEN)|(1<<TXEN) out UCSRB,R16 ldi R16,(1<<URSEL)|(1<<UMSEL)|(3<<UPM0)|(3<<UCSZ0) out UCSRC,R16 cbi PORTD,4 ret И принимаю данные: Код USART_Receive: sbis UCSRA,RXC rjmp USART_Receive in RXbyte,UDR ret Но это дело не работает. Не могу понять почему. Дайте пожалуйста мне идеи или подскажите, что я делаю не так. P.S. Или подскажите какую-нибудь микросхемку с данным интерфейсом в протеусе
Сообщение отредактировал MaUrJIu - Jul 25 2011, 08:34
|
|
|
|
|
Jul 25 2011, 08:50
|
Участник
Группа: Участник
Сообщений: 31
Регистрация: 2-04-11
Пользователь №: 64 078
|
Да, кончено, нога ХСК подсоединена к источнику синхроимпульсов. Но приема почему то не происходит.
|
|
|
|
|
Jul 25 2011, 09:42
|
Участник
Группа: Участник
Сообщений: 31
Регистрация: 2-04-11
Пользователь №: 64 078
|
Действительно перепутал значения. В дш на микросхему написано, что считывать по нарастающему фронту. Установил бит UCPOL в 1. Код USART_Init: ldi R16,(1<<RXEN)|(1<<TXEN) out UCSRB,R16 ldi R16,(1<<URSEL)|(1<<UMSEL)|(3<<UPM0)|(3<<UCSZ0)|(1<<UCPOL) out UCSRC,R16 cbi PORTD,4 ret Но все равно не работает пока. Цитата P.S. Надеюсь, что PD4 установлена на ввод. Я сделал так: cbi PORTD,4. Это правильно?
Сообщение отредактировал MaUrJIu - Jul 25 2011, 09:55
|
|
|
|
|
Jul 25 2011, 10:22
|
Профессионал
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339
|
Цитата(Палыч @ Jul 25 2011, 14:09) Установлен ли PD4 на ввод? А в 8-ке по сбросу порты не устанвливаются как входы ? Не работал с ней Цитата(MaUrJIu @ Jul 25 2011, 13:42) Действительно перепутал значения. В дш на микросхему написано, что считывать по нарастающему фронту. Установил бит UCPOL в 1. Для приема - это спадающий фронт. Нет, sorry,не туда посмотрел
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Jul 25 2011, 12:42
|
Профессионал
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339
|
Цитата(Палыч @ Jul 25 2011, 15:57) Ещё может не работать, если Baud Rate - высокий, а тактовая (Fosc) - низкая для данного Baud Rate ... Ну с этим я полностью согласен. Там Baud Rate <Fosc/4 должон быть, как минимум. Но по-моему этим Цитата Огласите Fosc и Baud Rate Вы топикстартера поставили в тупик Помягче может быть? Частота процессора , скорость обмена Цитата В дш на микросхему написано, что считывать по нарастающему фронту Не согласен. Можно считывать и так и так , но необходимо знать , по какому фронту мастер считает , что выставленный им бит - true и под этот фронт настроить приёмник т.е UCPOL
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Jul 25 2011, 15:21
|
Участник
Группа: Участник
Сообщений: 31
Регистрация: 2-04-11
Пользователь №: 64 078
|
Цитата Огласите Fosc и Baud Rate Fosc = 1 МГц Baud Rate (задает микросхема) = 10-16,7 кГц Цитата А в 8-ке по сбросу порты не устанвливаются как входы ? По умолчанию все биты DDRD установлены в ноль, т.е. наверное настроены как вход. Я изменил строку: Код cbi PORTD,4 на Код cbi DDRD,4 но пока не работает...
Сообщение отредактировал MaUrJIu - Jul 25 2011, 15:22
|
|
|
|
|
Jul 25 2011, 15:39
|
Профессионал
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339
|
Цитата(MaUrJIu @ Jul 25 2011, 19:21) Fosc = 1 МГц Baud Rate (задает микросхема) = 10-16,7 кГц По умолчанию все биты DDRD установлены в ноль, т.е. наверное настроены как вход. Я изменил строку: Код cbi PORTD,4 на Код cbi DDRD,4 но пока не работает... Отличненько , а теперь добавьте Код SBI PORTD,4 и проверьте есть единица на шине RX
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Jul 26 2011, 08:14
|
Участник
Группа: Участник
Сообщений: 31
Регистрация: 2-04-11
Пользователь №: 64 078
|
Цитата(ILYAUL @ Jul 25 2011, 19:39) Отличненько , а теперь добавьте Код SBI PORTD,4 и проверьте есть единица на шине RX Добавил. Единица есть. Но она есть и без этой строчки. У меня же rx и tx соединены.
|
|
|
|
|
Jul 26 2011, 08:26
|
Участник
Группа: Участник
Сообщений: 31
Регистрация: 2-04-11
Пользователь №: 64 078
|
Нет к сожалению. Могу посмотреть, но это все нужно делать в универе. А что нужно посмотреть?
Сообщение отредактировал MaUrJIu - Jul 26 2011, 08:27
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|