Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: mega8 ...USART...люди добжи поможите))
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
vesel
начал с нее родимой (мега8) знакомится с атмегой ....
суть проблемы:
инитил порт и как в апах написано и из чужих примеров... не хочет принимать ничего и все туть ((
передавать передает а принимать не хочет ....
USART0_Init();
for(;;)
{

if (USART0_Receive()==0) PORTC &=~_BV(PD5); // это я для проверки ...
delay_ms(300);
if (USART0_Receive()!=0) PORTC |=_BV(PD5);
delay_ms(300);
USART0_Transmit(USART0_Receive()); ///ето из примера ...хотел попробовать ...
}
инициализацию пробовал и из примеров и CodeVisionвскую из мастера ...нифига...
тупо заставлял слать в ББ(большого брата - комп) символы ...все ок...
а принимать ничего не хочет...хотя осциллом смотрю что на RX вход сигналы сыплются ((
где грабли ? может лыжи не едуть ?

пробовал и так : if UDR == 0 ....дрыгнуть лапкой\диодом....дрыгает гат...нет там ничего ...(((
Pyku_He_oTTyda
UCSRC = _BV(URSEL)|_BV(UCSZ1)|_BV(UCSZ0); //выбор регистра и количества битов в посылке
UBRRL = 51; //выбор скорости 9600 при 8МГц

на прием
vesel
у меня кварчик на 12 многогерц стоит... попробовал счас так ..не прошло ((

хмм.... поймать сигнал он поймал ....диодик моргнул ...но вот обратно на сенд не идет (( эхо не работает ...
Pyku_He_oTTyda
Цитата
у меня кварчик на 12 многогерц стоит... попробовал счас так ..не прошло ((

конечно, у меня на 8. И скорость 9600, у вас какая скорость?
на странице 159 даташита есть таблица, там выберете UBRR в зависимости от кварца.
Палыч
Цитата(vesel @ Apr 21 2008, 05:38) *
...тупо заставлял слать в ББ(большого брата - комп) символы ...все ок...а принимать ничего не хочет...хотя осциллом смотрю что на RX вход сигналы сыплются
Вы бы привели текст инициализации USART. Наверное, ошибка в нём: например, забыли бит RXEN...
vesel
сейчас стоит как мастер прописал
UBRRL=0x4D;
UBRRH=0x00;
UCSRB=((1<<RXEN)|(1<<TXEN)); //enable rx and tx
UCSRC=0x86;

я для проверки на передачу так
if(USART0_Receive() != 10) UDR=0;
USART0_Transmit(kaka);
сыплет честно в порт ...при попытке изменить RL данные искажаются

если для проверки пишу так //if (USART0_Receive()==0) PORTC &=~_BV(PD5);
//delay_ms(300);
//if (USART0_Receive()!=0) PORTC |=_BV(PD5);
//delay_ms(300);

то диодик моргает ....
куды крестьянину подацца?((
defunct
Цитата(vesel @ Apr 21 2008, 23:24) *
то диодик моргает ....
куды крестьянину подацца?((

Дык, а в чем проблема то? Раз моргает значит принимается что-то?
Отправьте то, что принимается назад, посмотрите в чем дело...

Вы бы код USART0_Receive() привели.

А в чем смысл этой проверки?
Цитата
if UDR == 0

Ведь если читать нечего, из UDR будут читаться нули..
vesel
unsigned char USART0_Receive(void) //read func
{
while(!(UCSRA & (1<<RXC))) //wait for incoming data
return UDR; //return data
}

вот функц чтения
я уже и вот так сделал

kaka=USART0_Receive();
USART0_Transmit(kaka);

ничего обратно не шлет ... хотя чтото там есть ...раз не ноль..
defunct
Цитата(vesel @ Apr 21 2008, 23:43) *
ничего обратно не шлет ... хотя чтото там есть ...раз не ноль..

Если отключить UART, закоротить RX/TX пины и слать что-то с компа, эхо видно?
dENIM
прошу прощения, но вот эта фраза

"начал с нее родимой (мега8) знакомится с атмегой ...."

навевает мысли о фьюзах под кварц.
vesel
эхо есть при отключеном УАРТе и соединенными RX\TX....МАХ живой ....


по поводу фьюзов все в порядке ...я к этой атмелине уже нокиевскую LСDшку прикрутил ....рисую и показываю на ней ....
вот захотел по ком порту на экранчик отправлять всяко разно ...а тут облом такой (((
vesel
плюнул на это дело ....решился на управление через прерывания ...и все поехало\запырялось ))
правда пока разобрался с вижином ..упарился ....от примеров в "тупую" пора отказыватся ..
пока не запустил для ознакомления мастера не разобратся было с прерываниями ...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.