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

 
 
> Очистка приёмного буфера USART
nvk
сообщение Mar 28 2012, 12:17
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 22-07-11
Пользователь №: 66 352



Добрый день!

Зашёл в тупик с очисткой буфера Atmega32.
Очищаю буфер как в даташите:
void USART_Flush()
{
unsigned char dummy;
while (UCSRA & (1<<RXC))
dummy = UDR;
}
Этот вариант не работает. Написал другой вариант с очисткой битов RXEN, TXEN:
void USART_Flush()
{
UCSRB = 0x00;
UCSRB = 0x18;
}
Этот код тоже не работает, всё равно остаются несчитанные символы.
В чём проблема?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
nvk
сообщение Mar 30 2012, 03:17
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 22-07-11
Пользователь №: 66 352



Сделал по другому: после каждого обращения к модулю sim300 считываю ответ функцией даже если этот ответ не нужен для обработки.
Например:

sendSMS("string");
USART_geta(); // просто считываем ответ
USART_transmit("AT+CBC");
USART_geta();
{ обработка принятого ответа}

И это работало с самого начала, просто я хотел сделать проще...
Go to the top of the page
 
+Quote Post
xemul
сообщение Mar 30 2012, 05:23
Сообщение #3



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(nvk @ Mar 30 2012, 07:17) *
И это работало с самого начала, просто я хотел сделать проще...

Разница между USART_geta() и USART_Flush() в признаке окончания функций - UDR == 0x0d (вероятно) и RXC == 0 слегка отличаются.
Go to the top of the page
 
+Quote Post



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

 


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


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