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

 
 
> MEGA64 + uart, что за ошибка не пойму
skilful
сообщение Feb 17 2007, 08:20
Сообщение #1


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

Группа: Свой
Сообщений: 186
Регистрация: 23-04-06
Из: Сочи
Пользователь №: 16 411



привет всем. Короче, пытаюсь передать по rs232 из Mega64 в комп данные, но что-то не получается (передает "00" и все тут). Кварц = 11,059 МГц

Питание везде проверил - все норм. "Соплей" тоже нет.

Текст самый простенький:


.include "m64def.inc"
.CSEG
.org 0
rjmp reset
reset:

ldi r16,low(RAMEND)
out SPL,r16

ldi r16,high(RAMEND)
out SPH,r16
;-------------------------------------------------------------------------------
;UART enabled
ldi r16,(3<<UCSZ00) | (1<<UCPOL0) ;8 bit

sts UCSR0C,r16

ldi r20,17 ;определение скорости = 38400
out UBRR0L,r20


ldi r21,0
sts UBRR0H,r21




ldi r16,(1<<TXEN0) ;разрешение прередатчика
out UCSR0B,r16

;-------------------------------------------------------------------------------

ldi r16,0xAA
out UDR0,r16



rep:

rjmp rep

;-------------------------------------------------------------------------------


НЕ вижу ошибки - хоть убей smile.gif Прога для приема COM Port Toolkit. Данные передаются, но только = "0x00" вместо "0xAA". Помогите плз.
Заранее благодарю.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
skilful
сообщение Feb 17 2007, 20:42
Сообщение #2


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

Группа: Свой
Сообщений: 186
Регистрация: 23-04-06
Из: Сочи
Пользователь №: 16 411



блин, снова не получается - все сделал как Вы предлагали, но без результатно (нули передаются), даже на другой порт перекинул все. Получилаьс такая эспериментальная фигня.


.include "m64def.inc"
.CSEG
.org 0
rjmp reset
reset:

ldi r16,low(RAMEND)
out SPL,r16

ldi r16,high(RAMEND)
out SPH,r16
;-------------------------------------------------------------------------------
;передача массива чисел
;UART enabled
; ldi r16,(3<<UCSZ00) | (1<<UCPOL0) sts UCSR0C,r16

ldi r21,0
sts UBRR1H,r21



ldi r20,17 ;определение скорости = 38400
sts UBRR1L,r20

ldi r16,(1<<TXEN1) ;разрешение прередатчика
sts UCSR1B,r16

;-------------------------------------------------------------------------------
ldi r16,0xAA
sts UDR1,r16


nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop

ldi r16,0xAB
sts UDR1,r16


rep:

rjmp rep



Да вот еще решил фьюзы посмотреть - оказалось стоял M103C. Думал из-за него. Сейчас фьюзы таковы:




Может из-за них, ща еще и сам в даташите посмотрю...Спасибо за ответы
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
=GM=
сообщение Feb 18 2007, 00:05
Сообщение #3


Ambidexter
*****

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



Цитата(skilful @ Feb 17 2007, 17:42) *
блин, снова не получается - все сделал как Вы предлагали, но без результатно (нули передаются), даже на другой порт перекинул все. Получилась такая эспериментальная фигня.

;UART enabled
; ldi r16,(3<<UCSZ00) | (1<<UCPOL0) sts UCSR0C,r16
ldi r21,0
sts UBRR1H,r21
ldi r20,17 ;определение скорости = 38400
sts UBRR1L,r20 ldi r16,(1<<TXEN1) ;разрешение прередатчика
sts UCSR1B,r16
;-------------------------------------------------------------------------------
ldi r16,0xAA
sts UDR1,r16
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
ldi r16,0xAB
sts UDR1,r16
rep: rjmp rep
Да вот еще решил фьюзы посмотреть - оказалось стоял M103C. Думал из-за него. Сейчас фьюзы таковы:
Может из-за них, ща еще и сам в даташите посмотрю...Спасибо за ответы


1) Вообще-то, честнее было бы перед записью байта в UDR1 проверять бит UDRE1 на предмет готовности передатчика к передаче.

2) Через 15 тактов (а это порядка 1.4 мкс) после передачи первого байта вы начинаете передачу второго байта, прерывая тем самым передачу первого. Передатчик, конечно, начнет передавать второй байт, но что будет на приемном конце?

Поэтому надо обязательно проверять бит UDR1 (или бит ТХС1, зависит от задачи).

Как-то так
Код
wait:  sbis   UCSR1A,UDRE1
       rjmp   wait
       sts    UDR1,r16


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

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


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

 


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


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