Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: После портирования прошивки с IAR под GCC не работает последовательный порт
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
cvv
С чего начать разруливание?

Осцилографа нетsad.gif
aesok
Цитата(cvv @ Feb 5 2008, 18:22) *
С чего начать разруливание?


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

Анатолий.
cvv
Цитата(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
Сергей Борщ
Цитата(cvv @ Feb 5 2008, 18:05) *
Для оформления исходников вверху формы ввода есть кнопочка с символом "#".
Не видно разрешения прерываний ( sei(); ). Коды, которые вы заносите в регистры USART переведите из шетнадцатиричных цифр в имена битов самостоятельно. Возможно, визард CV и прост в освоении, но читать его код несколько неудобно. Что не работает вы тоже не указали - нет приема, принимается не то, прерывания не происходят? Передача работает?

Начать разруливания можно с инвертирования ноги. А на ногу повесить светодиод или подключить вольтметр. Сначала убеждаетесь, что вам удалось просто инвертировать ногу. Потом переносите это инвертирование в прерывание. Запускаете гипертерминал, нажимаете любую кнопку, символ передается, убеждаетесь, что он дошел до процессора, прерывание вызвалось, нога инвертировалась. Посылаете следующий символ. Убеждаетесь, что ситуация повторяется, т.е. из прерывания программа выходила и снова вошла. Потом перемещаете дерганье ногой по программе и проверяете, куда заходит ваша программа.
cvv
>Не видно разрешения прерываний ( sei(); ).

Разрешения есть в ф-и main() которую я не приводил.

>Передача работает?

Приемная часть ничего не принимает.

> А на ногу повесить светодиод или подключить вольтметр.

Сейчас проверну
Сергей Борщ
Цитата(cvv @ Feb 7 2008, 11:37) *
>Передача работает?

Приемная часть ничего не принимает.
Ну, хотите шифроваться - шифруйтесь. Я пытался у вас получить побольше косвенной информации, чтобы понять что конкретно не работает и что может быть причиной.
cvv
Цитата(Сергей Борщ @ Feb 7 2008, 14:32) *
Ну, хотите шифроваться - шифруйтесь. Я пытался у вас получить побольше косвенной информации, чтобы понять что конкретно не работает и что может быть причиной.


у меня тут мысли запутались. прошивка по наступлению некоторого внешнего события (нажата кнопка) должна посылать код события через UART. После перекомпиляции GCC пакеты приходить перестали, при этом по загорающимся лампочкам видно что процеесор обрабатывает нажатия корректно.

меня тут убедили отказатся от испорльзования UART в текущей схеме по причине отсутствия кварца, тем не менее мне придется в ближайшем будущем снова программировать UART в паре других железок с кварцем

\\wbr Vitaly
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.