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

 
 
> NIOS + UART прерывания
Acvarif
сообщение Aug 16 2015, 12:32
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850



Застрял на прерываниях по NIOS UART. Точнее на прерываниях по endofpacket.
Обработчик:
Код
....
alt_u8 *buf_uart;
alt_u8 uart_count = 0;
....
static void uart_isr(void* context, alt_u32 id)
{
    alt_u32 status;
    
    // Чтение регистра статуса для определения причины прерываний
    status = IORD_ALTERA_AVALON_UART_STATUS(UART_0_BASE);
    // Очистка всех флагов ошибок
    IOWR_ALTERA_AVALON_UART_STATUS(UART_0_BASE, 0);
    // Прцесс чтения irq
    if (status&ALTERA_AVALON_UART_STATUS_RRDY_MSK)
    {
        buf_uart[uart_count] = IORD_ALTERA_AVALON_UART_RXDATA(UART_0_BASE);
        uart_count++;
    }
    // Процесс записи irq
    if(uart_count >= 5)
    {
        // Флаг старта в основном цикле main
                Start = 1;
        if (status&ALTERA_AVALON_UART_STATUS_TRDY_MSK)
        {
            IOWR_ALTERA_AVALON_UART_TXDATA(UART_0_BASE, buf_uart[uart_count - 1]);
        }
        uart_count = 0;
    }
}
....


По прерыванию на прием одного байта все работает неплохо. Но хотелось бы разобраться как использовать прерывания по символу endofpacket. Пока не врубаюсь как это все должно работать. Существует регистр конца пакета. Совпадение очередного принятого байта с символом конца пакета сгенерит прерывание. В связи с этим вопросы:
1. Что это за символ? 0х0А? Если да то как он попадает в регистр конца пакета?
2. Как в случае прерывания по концу пакета записывать пришедшие до того байты самого пакета?

Кто сталкивался поясните пожалуйста коротко как это все работает.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Unfog
сообщение Aug 17 2015, 15:25
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 20-05-12
Из: Санкт-Петербург
Пользователь №: 71 932



Цитата
Как в этом случае накапливать в массив информацию?

Для простоты, имхо, лучше начать с FIFO.
Цитата
Да, стаффинг это что?

Кодирование передачи таким образом, чтобы она всегда заканчивалась на определенный символ, который при этом отсутствует в теле посылки. Очень упрощает прием. Если нужно могу подробно описать.
Go to the top of the page
 
+Quote Post



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

 


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


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