Форум РадиоКот https://radiokot.ru/forum/ |
|
помогите разобраться с простым примером USART https://radiokot.ru/forum/viewtopic.php?f=20&t=47570 |
Страница 1 из 1 |
Автор: | спящий [ Пн май 02, 2011 15:27:07 ] | ||
Заголовок сообщения: | помогите разобраться с простым примером USART | ||
Собственно вопрос в теме)Был бы пример простой программы в proteus -сам бы разобрался.Два контроллера mega48 передатчик и приемник,две программы для них - неделю мучаюсь ![]() Нету даже прерывания передатчик: .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
|
Автор: | CS16AMX [ Пн май 02, 2011 15:39:59 ] |
Заголовок сообщения: | Re: помогите разобраться с простым примером USART |
xtal ето ваш кварц, относительно его мк опирается чтоб соответствовать скорости 9600/сек у вас же есть выбор 4800,9600,....... |
Автор: | спящий [ Пн май 02, 2011 17:08:29 ] |
Заголовок сообщения: | Re: помогите разобраться с простым примером USART |
это ясно,а если от внутреннегокварца будет работать? а почему программа неработает-то??? если есть простые примеры на протеусе подскажите где их посмотреть... |
Автор: | CS16AMX [ Пн май 02, 2011 20:03:04 ] |
Заголовок сообщения: | Re: помогите разобраться с простым примером USART |
я в код вижене научился высылать пакеты на протеусе испытано,но принимать пока учусь. можно без кварца ,внутрянняя RC хреновина может работать до 8мгц но не настолько стабильна и чем выше скорость, тем больше ошибок получить реально |
Автор: | спящий [ Вт май 03, 2011 11:13:58 ] |
Заголовок сообщения: | Re: помогите разобраться с простым примером USART |
скинь пожалуйста,хочу посмотреть,желательно архив с протеусом - мож свои ошибки найду. |
Автор: | CS16AMX [ Вт май 03, 2011 23:30:59 ] | ||
Заголовок сообщения: | Re: помогите разобраться с простым примером USART | ||
прошу ))) код вижн и в асме выдаст что он там вытворяет , в кратце не причёсанный код высылает ацп по uart будет время,допишу)
|
Автор: | спящий [ Вс май 08, 2011 14:11:19 ] | ||
Заголовок сообщения: | Re: помогите разобраться с простым примером USART | ||
спасибо, разобрался косяк скорее всего был гдето в прерываниях. Подскажите: можноли управлять IGBT транзистором через логику(или) питание до 18 вольт,транзистор открываеться при 6В. И главное подскажите как изменить питание логики в протеус, стандартная 5В, надо хотябы 7,для точного отпирания!!
|
Автор: | спящий [ Вс май 22, 2011 23:28:04 ] |
Заголовок сообщения: | Re: помогите разобраться с простым примером USART |
подскажите почему АЦП ,когда перекидываеш регистр,значение меняеться сначало очень быстро,потом очень медленно - хотя сигнал входящий меняется плавно(синусоида),в чем может быть причина? сигнал изменяеться 0-5В,опорный 5В. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |