В настоящее время я считываю значения с мыши PS/2, которая работает отлично! - Я пытаюсь только читать с мыши, когда мышь посылает тактовый сигнал (задний фронт), поэтому я пытаюсь использовать прерывание. Это часть моего кода:
Обработчик прерывания:
extern struct mouse mouseData;
CY_ISR(PS2_interrupt) {
ISR_getMouseData(&mouseData);
}
Это прерывание дает мне следующий результат, который идеален:
Я перемещаю мышь вправо, и она выводит правильную вещь, однако я ничего не могу сделать в основном цикле for. Если я, например, печатаю что-то на дисплее в основном цикле, ничего не происходит, но он все равно может считывать данные с мыши всякий раз, когда мышь отправляет..
Я узнал, что вы должны очистить прерывание, используя эту функцию:
isr_PS2_clock_ClearPending()
Когда я напишу эту функцию в обработчике прерываний, я получу следующее:
Это то же движение, что и раньше, но, как вы видите, данные я испортил. Однако я могу выполнять действия в основном цикле, когда прерывание не вызывается.
Что я делаю неправильно с точки зрения обработки прерываний?