16+
Воскресенье
22 октября
Вход |Карта сайта | |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

Микроконтроллеры AVR

 
   Новая тема Правила Регистрация Поиск »» Архив
Вернуться в конференциюТопик полностью
Звероящер  (28.09.2017 09:22) , в ответ на На жаль тут работают - а то бы было о бы решение моего вопроса автор: symbions
А зачем на единицу-то проверять? Результат IFa булевый же. Вот как-то... 
#pragma type_attribute=__interrupt
#pragma vector=USART_RX_vect
void CUsart::usart_Rx_interrupt()
{
    u8 status;
    u8 data;
    u8 sreg = SREG;
    
    status=UCSR0A;
    data=UDR0;
    
    usart_RxHead=(usart_RxHead+1)&usart_Rx_buffer_mask;//store new index
    
    if(status & ( (1<<FE0)|(1<<DOR0)|(1<<UPE0) ) )
    {
        usart_RxBuf[usart_RxHead]=0xff;//ошибка
        return; 
    }       
    if(usart_RxHead==usart_RxTail)//если переполнение буфера
    {                                    
        usart_RxBuf[usart_RxHead]=0xff;//ошибка
        usart_RxBuf[++usart_RxHead]=0xff;//ошибка
        return;                          
    }
    usart_RxBuf[usart_RxHead]=data;
    SREG = sreg;
}
 [x][x][x][x][x][x] [x][x][x][x][x][x][x][x]

Тема выделяется по переводу строки или автоматом

 

Имя


Регистрация позволит вам редактировать и перемещать ваши сообщения и прикреплять к ним файлы.
 
Символы: á é ó ú ý « »
Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7526 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXVII