прерывание с помощью PSoC 4

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

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

extern struct mouse mouseData;
CY_ISR(PS2_interrupt) { 

    ISR_getMouseData(&mouseData);

}

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

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

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

isr_PS2_clock_ClearPending()

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

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

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


person Emil Møller Ringgaard    schedule 06.12.2016    source источник


Ответы (1)


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

person Florjan Dule    schedule 30.07.2017
comment
Ну, у меня была такая же проблема раньше, и это сработало для меня. - person Florjan Dule; 30.07.2017