ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
1113681
misyachniy (02.07.2021 16:30, просмотров: 890)
Глюк компилятора IAR MSP430. 

Но подозреваю что мой ;-)


Переделываю чужой проект, чтобы клавиши отрабатывались по нажатию, а не отжатию.

Исходно программа "бегает по кругу" в начале обрабатывает состояние клавиш затем принимает решение.

По классической схеме, счетчик нажатия считает до "определенного числа" и останавливается.

Если задетектировано отпускание клавиши и счетчик равен "определенному числу" то взводится признак нажатия на 1 круг программы - импульсный сигнал у HDL.


Переделал программу под одну клавишу, чтобы срабатывало по нажатию.

Протестил, решил переписать на функцию сделать рефакторинг ;-)


Функция работает с указателями

void key_manipulation( bool key_status, // true - активное/нажатое состояние unsigned char *count_key, // счетчик времени нажатия unsigned char *key_always_pressed, // флаг выдачи сигнала unsigned char *key_pressed // импульсный сигнал ) { .. }



При отжатой клавише все правильно, указатель в R13 и указывает на правильную переменную.



А при нажатой клавише, отладчик указателя не находит, соответсвенно ни указателя и значения нет


Странно как-то. Вызов функции то всегда одинаков:

key_manipulation(!(P1IN & KEY_DOWN), &count_key_down, &key_down_always_pressed, &key_down_pressed);