Посмотрел я тут на описание команд - состоят они из двух байт.
Первый байт как раз и указывает на команду, а второй - параметр команды.
Я предлагаю такую структуру
Цитата:
//-----------------------------------------------------
//Определим структуру для хранения полученной по ИК команды
typedef struct IR_Comand {
uint8_t name; //наименование команды
uint8_t param;//параметр команды
} tir_comand;
Откойте файл types.h и опишите её в любом месте (копи-паст
)
Теперь добавим к глобальным переменным новую переменную для принятой команды.
Открываем файл global_variables.c и добавляем
Цитата:
volatile tir_comand ir_comand; //принятая по ИК команда
volstile говорит компилятору - "не удаляй и не игнорируй эту переменную при оптимизации!"
Чтобы наша глобальная переменная была видна из других файлов проекта - экспортируем её.
Пропишем в файле ltag_ascetic.h следующее
Цитата:
export volatile tir_comand ir_comand; //принятая по ИК команда
Теперь не плохо бы написать фукцию, которая брала бы из буфера принятую команду и заносила её в нашу новую переменную.
Задекларируем нашу новую функцию в файле ltag_ascetic.h
Цитата:
tir_comand get_ir_comand(void);//получим из буфера ИК приемника команду
Функция вернет структуру, которую мы описали для нашей переменной ir_comsnd
Элементарно!
В файле ltag_ascetic.c пишем реализацию функции
Цитата:
tir_comand get_ir_comand(void){//получим из буфера ИК приемника команду
tir_comand cmd_tmp; //создаем временную пересенную нужного типа
cmd_tmp.name = rx_buffer[0];//имя функции в первом принятом байте (индекс 0)
cmd_tmp.param= rx_buffer[1];//параметры функции во втором принятом байте (индекс 1)
return cmd_tmp;
}
с чем может быть это связано? Не могу никак победить прием команд с пульта, фиксирует все как ошибку приема.