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

 
 
> После портирования прошивки с IAR под GCC не работает последовательный порт
cvv
сообщение Feb 5 2008, 15:22
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 3-02-08
Пользователь №: 34 700



С чего начать разруливание?

Осцилографа нетsad.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aesok
сообщение Feb 5 2008, 15:37
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(cvv @ Feb 5 2008, 18:22) *
С чего начать разруливание?


Вы ждете что я вам скажу номер строки где надо внести изменения???? У меня нет исходников.....

Анатолий.
Go to the top of the page
 
+Quote Post
cvv
сообщение Feb 5 2008, 16:05
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 3-02-08
Пользователь №: 34 700



Цитата(aesok @ Feb 5 2008, 17:37) *
Вы ждете что я вам скажу номер строки где надо внести изменения???? У меня нет исходников.....

Анатолий.


Ок,

настройка USART:

// USART initialization^M
// Communication Parameters: 8 Data, 1 Stop, No Parity^M
// USART Receiver: On^M
// USART Transmitter: On^M
// USART0 Mode: Asynchronous^M
// USART Baud rate: 38400 (Double Speed Mode)^M
UCSR0A=0x02;^M
UCSR0B=0x98;^M
UCSR0C=0x06;^M
UBRR0H=0x00;^M
UBRR0L=0x19; ^M

Обработчик:

// USART Receiver interrupt service routine^M
#ifndef __GNUC__
interrupt [USART_RXC] void usart_rx_isr(void)^M
#else
ISR(USART_RX_vect)
#endif
{ ^M
char status,Rdata/*,x*/;^M
unsigned long K;^M
status=UCSR0A;^M
Rdata=UDR0; ^M
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)^M
{^M
^M
if(rx_index0==0)^M
{^M
if(Rdata=='E')^M
{^M
//for(x=0;x<data[2];x++)putchar((data[x]));^M
PutDataBuff(); ^M
//putchar(crc8_compute(&data[1],5)); ^M
rx_index0=0;goto end_rx_isr;^M
}//resived error need retransmit last paket^M
}^M
if(rx_index0>32)rx_index0=0;^M
rx_buffer0[rx_index0++]=Rdata; ^M
if(rx_index0==2)rx_weit_index0=Rdata;//set paket size^M
if (rx_weit_index0 == rx_index0)//paket resived^M
{^M
//check CRC^M
if((rx_buffer0[rx_weit_index0-1])==(crc8_compute(&rx_buffer0[0],rx_weit_index0-1)))^M
{//crc ok^M
.....
}^M
else {PutError('C');}//crc error^M
rx_index0=0;^M
}^M
^M
}^M
else {PutError('F');rx_index0=0;}//frame error^M
^M
end_rx_isr: ^M
return;^M
} ^M
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 14:23
Рейтинг@Mail.ru


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