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

 
 
> Проблема с ATMega32 и RS232, Не могу запустить...
QuickWitted
сообщение Feb 18 2008, 10:11
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596



Я работал с мегами 8, 16 и 48...
там всё было нормально - определял все ноги RS232 под вход и
записывал в них 1 (этим подключал подтягивающий резистор),
потом инициализировал RS232 и всё было нормально...

теперь решил собрать на меги 32...
всё делаю так же как и на меге 16, а в комп ничего не передаётся...
полез по ногам светодиодом шарить (через сопротивление 1,5к на землю)

и выясняется у мег 8, 16 и 48 при вставании на TX светодиод горит,
а на меге 32 после инициализации нога ведёт себя как вход...

Так приплыли...
ладно думаю может порт издох... хотя проц новый...
пойдём другим путём - настраиваю ТХ как выход, записываю
в него 1 - инициализирую - проверяю - светодиод горит, но передачи как не было так и нету sad.gif

в чём может быть трабла ?


Инициализирую так:
-----------------------------------------------------------------------------
.equ UART_BAUDRATE = 115200
.equ UART_BAUDK = (CLOCK/(16*UART_BAUDRATE))-1

ldi R16_Tmp1,low(UART_BAUDK) ; Загрузка скорости ком порта
sts UBRRL,R16_Tmp1
ldi R16_Tmp1,high(UART_BAUDK)
sts UBRRH,R16_Tmp1

ldi R16_Tmp1, 0b00000000 ; Clear UART flags
sts UCSRA, R16_Tmp1

ldi R16_Tmp1,(1<<TXEN)|(1<<RXEN)|(1<<RXCIE) ; Еnable receiver and transmitter
sts UCSRB,R16_Tmp1 ; RXCIE - разрешение прерывания по приёму в UDR
; TXCIE - разрешение прерывания по передаче из UDR
; TDRIE - разрешение прерывания по пустому UDR

; ldi R16_Tmp1,(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); Set frame format: 8N1

ldi R16_Tmp1,(1<<UCSZ1)|(1<<UCSZ0) ; Set frame format: 8N1
sts UCSRC,R16_Tmp1
-----------------------------------------------------------------------------,


--------------------
Сайт с разработками http://www.mindrunway.ru/
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
=GM=
сообщение Feb 18 2008, 12:41
Сообщение #2


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(QuickWitted @ Feb 18 2008, 10:11) *
и выясняется у мег 8, 16 и 48 при вставании на TX светодиод горит, а на меге 32 после инициализации нога ведёт себя как вход...

Чудес не бывает, если после инициализации нога не встала на выход - значит вы ее не проинициализировали вот здесь
Цитата(QuickWitted @ Feb 18 2008, 10:11) *
ldi R16_Tmp1,(1<<TXEN)|(1<<RXEN)|(1<<RXCIE) ; Еnable receiver and transmitter
sts UCSRB,R16_Tmp1

Проверьте точно ли тот адрес UCSRB используете. Должен быть 0х2А для команды sts или 0х0А для команды out

Цитата(QuickWitted @ Feb 18 2008, 10:11) *
ldi R16_Tmp1,(1<<UCSZ1)|(1<<UCSZ0) ; Set frame format: 8N1
sts UCSRC,R16_Tmp1

Для доступа к регистру UCSRC надо установить бит URSEL в 1, вы этого не делаете. Ну и опять же проверьте адрес регистра. Лучше пользуйтесь командой out и адресом 0х20


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post



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

 


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


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