2016-12-06 5 views
0

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

прерывания:

extern struct mouse mouseData; 
CY_ISR(PS2_interrupt) { 

    ISR_getMouseData(&mouseData); 

} 

Это прерывание дает мне follwing результат, который идеально подходит: enter image description here

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

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

isr_PS2_clock_ClearPending() 

Когда я пишу эту функцию в обработчике прерывания я буду получать это: enter image description here

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

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

ответ

0

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

+0

Ну я имел такую ​​же проблему раньше, и что работало для меня –

Смежные вопросы