помогите разобраться с простым примером USART

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
спящий
Потрогал лапой паяльник
Сообщения: 303
Зарегистрирован: Сб янв 08, 2011 13:48:41

помогите разобраться с простым примером USART

Сообщение спящий »

Собственно вопрос в теме)Был бы пример простой программы в proteus -сам бы разобрался.Два контроллера mega48 передатчик и приемник,две программы для них - неделю мучаюсь :cry: )
Нету даже прерывания



передатчик:


.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes\m48def.inc"
.list
.nolist
.list

.equ XTAL = 8000000
.equ baudrate = 9600
.equ bauddivider = XTAL/(16*baudrate)-1

;
.def temp =r16;
.def delay =r17;
.def delay1 =r18;
.def delay2 =r19;
.def delay3=r20;

.org 0x000
rjmp unit;
.org 0x0014
rjmp txc; настраиваем прерывание TXC на передачу

unit :
ldi temp,0b11111110;
out DDRD,temp;

LDI R16, 0x51; скороcсть 9600
sts UBRR0L,R16
ldi temp,0b11011000;(rxcie0<<1) |(txcie0<<1)|(rxeb0<<1) прерывание по передачи
sts UCSR0a, temp;
ldi temp,0b00000110; (ucsz01<<1) | (ucsz00<<1) 8битное слово
sts UCSR0c, temp;
sei
start:
inc temp;
ldi delay1,0x05; просто задержка
ldi delay3,0x05;
;задерка
loop4:
subi delay3,1;
sbci delay1,0;
brcc loop4;

rjmp start;

txc:
ldi temp,UCSR0A; почемуто sbis UCSR0A,5 неработает(
sbrs temp,5;
RJMP txc ;
sts udr0,temp;
reti






приемник:

;
.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes\m48def.inc"
.list
.nolist
.list
.equ XTAL = 8000000
.equ baudrate = 9600
.equ bauddivider = XTAL/(16*baudrate)-1


;
.def temp =r16;

.org 0x000
rjmp unit;

.org 0x0012
rjmp RXC; настраиваем прерывание RXC на прием

unit :

ldi temp,0b11111111;
out DDRB,temp;
ldi temp,0b11111101;
out DDRD,temp;

LDI R16, 0x51; скороcсть 9600
sts UBRR0L,R16
ldi temp,0b11011000;(rxcie0<<1) |(txcie0<<1)|(rxeb0<<1) прерывание по приему
sts UCSR0a, temp;
ldi temp,0b00000110; (ucsz01<<1) | (ucsz00<<1) 8битное слово
sei
clr temp;

start:
out portB,temp;
rjmp start;

RXC:
lds temp,udr0;
reti








зачем это пишется? это на чтонибудь влияет?
.equ XTAL = 8000000
.equ baudrate = 9600
.equ bauddivider = XTAL/(16*baudrate)-1
Вложения
222222222222222222222.png
соединение контроллеров
(10.56 КБ) 376 скачиваний
Последний раз редактировалось спящий Пн май 02, 2011 17:38:08, всего редактировалось 1 раз.
Реклама
CS16AMX
Нашел транзистор. Понюхал.
Сообщения: 195
Зарегистрирован: Вт ноя 30, 2010 00:50:40

Re: помогите разобраться с простым примером USART

Сообщение CS16AMX »

xtal ето ваш кварц, относительно его мк опирается чтоб соответствовать скорости 9600/сек у вас же есть выбор 4800,9600,.......
Реклама
спящий
Потрогал лапой паяльник
Сообщения: 303
Зарегистрирован: Сб янв 08, 2011 13:48:41

Re: помогите разобраться с простым примером USART

Сообщение спящий »

это ясно,а если от внутреннегокварца будет работать?
а почему программа неработает-то??? если есть простые примеры на протеусе подскажите где их посмотреть...
CS16AMX
Нашел транзистор. Понюхал.
Сообщения: 195
Зарегистрирован: Вт ноя 30, 2010 00:50:40

Re: помогите разобраться с простым примером USART

Сообщение CS16AMX »

я в код вижене научился высылать пакеты на протеусе испытано,но принимать пока учусь.
можно без кварца ,внутрянняя RC хреновина может работать до 8мгц но не настолько стабильна и чем выше скорость, тем больше ошибок получить реально
Реклама
Эиком - электронные компоненты и радиодетали
спящий
Потрогал лапой паяльник
Сообщения: 303
Зарегистрирован: Сб янв 08, 2011 13:48:41

Re: помогите разобраться с простым примером USART

Сообщение спящий »

скинь пожалуйста,хочу посмотреть,желательно архив с протеусом - мож свои ошибки найду.
Реклама
CS16AMX
Нашел транзистор. Понюхал.
Сообщения: 195
Зарегистрирован: Вт ноя 30, 2010 00:50:40

Re: помогите разобраться с простым примером USART

Сообщение CS16AMX »

прошу ))) код вижн и в асме выдаст что он там вытворяет , в кратце не причёсанный код высылает ацп по uart
будет время,допишу)
Вложения
RGBmini.rar
(326.03 КБ) 182 скачивания
Реклама
спящий
Потрогал лапой паяльник
Сообщения: 303
Зарегистрирован: Сб янв 08, 2011 13:48:41

Re: помогите разобраться с простым примером USART

Сообщение спящий »

спасибо, разобрался косяк скорее всего был гдето в прерываниях.

Подскажите: можноли управлять IGBT транзистором через логику(или) питание до 18 вольт,транзистор открываеться при 6В.


И главное подскажите как изменить питание логики в протеус, стандартная 5В, надо хотябы 7,для точного отпирания!!
Вложения
dlya_foruma.png
(6.89 КБ) 415 скачиваний
спящий
Потрогал лапой паяльник
Сообщения: 303
Зарегистрирован: Сб янв 08, 2011 13:48:41

Re: помогите разобраться с простым примером USART

Сообщение спящий »

подскажите почему АЦП ,когда перекидываеш регистр,значение меняеться сначало очень быстро,потом очень медленно - хотя сигнал входящий меняется плавно(синусоида),в чем может быть причина?
сигнал изменяеться 0-5В,опорный 5В.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»