Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Ответ:
Отправлено
Indepth
25 апреля 2008 г. 14:34
В ответ на:
А зачем разрешать прерывания от RXC, раз они не задействованы? Поставь для начала UCSRB=0x18, а после getchar() обнуляй все возможные флаги статуса и ошибок - UCSRA=0x00. И еще - непонятно, кто и как рулит rx_counter'ом и откуда он вообще взялся
отправлено MBedder 25 апреля 2008 г. 13:47
вот прерывание
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
{
rx_buffer[rx_wr_index]=data;
if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
{
rx_counter=0;
rx_buffer_overflow=1;
};
};
}
Составить ответ
|
Вернуться на конференцию
Ответы
А если status & (... ) не равен нулю, кто эти ошибки будет сбрасывать - Пушкин? Добавь после внешнего if строку UCSRA = 0;, как я говорил выше, иначе после первой же ошибки дальнейший прием ты пропустишь
—
MBedder
(25.04.2008 15:18:11
80.92.96.19
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 12:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru