Прерывать с помощью PSoC 4

В настоящее время я читаю значения с мыши PS/2, которая работает отлично! - Я пытаюсь читать только с мыши, когда мышь посылает тактовый сигнал (падающий фронт), поэтому я пытаюсь использовать прерывание. Это часть моего кода на данный момент:

Обработчик прерываний:

extern struct mouse mouseData;
CY_ISR(PS2_interrupt) { 

    ISR_getMouseData(&mouseData);

}

Это прерывание дает мне следующий результат, который идеально подходит: введите описание изображения здесь

Я перемещаю мышь вправо, и она выводит правильные данные, однако я не могу ничего сделать в основном цикле for. Если я, например, что-то напечатать на дисплее в основном цикле, ничего не происходит, но он все равно может читать данные с мыши, когда мышь отправляет..

Я обнаружил, что вы должны очистить прерывание с помощью этой функции:

isr_PS2_clock_ClearPending()

Когда я напишу эту функцию в обработчике прерываний, я получу это: введите описание изображения здесь

Это то же движение, что и раньше, но, как вы можете видеть, данные я испортил. Однако я могу выполнять вещи в основном цикле всякий раз, когда intterrupt не вызывается.

Что я делаю неправильно с точки зрения обработки прерываний?

1 ответ

Попробуй использовать isr_PS2_clock_ClearInterrupt() очистить флаг

Другие вопросы по тегам