Дмитрий МВ 0 1 октября, 2023 Опубликовано 1 октября, 2023 (изменено) · Жалоба int main(void) { port_ini(); timer_ini(); interrupt_ini(); sei(); while (1) { if (button_open) { flag_button_open = true; } if (button_close) { flag_button_close = true; } if (button_lgth && ~flag_button_lgth)//нажали кнопку и пока держим обработчик INT1_vect считает шаги { flag_button_lgth = true; open;// открываются ворота } if (~button_lgth && flag_button_lgth)//когда отпустили кнопку и проверяем что она была нажата ранее flag_button_lgth { eeprom_write_byte (2,step);//заносим длину ворот по адрессу 2 в память flag_button_lgth = false;//сбрасываем флаг } if (flag_button_open) { //копируем массив memcpy((void *)massive_open,(const void *)massive_signal,2);//куда копируем, что копируем(источник данных), обьем памяти //заносим массив в память eeprom_write_block((const void *)massive_open,(void *)0,2);//какой массив, адресс, обьем памяти flag_button_open = false; } if (flag_button_close) { memcpy((void *)massive_close,(const void *)massive_signal,2); eeprom_write_block((const void *)massive_close,(void *)1,2); flag_button_close = false; } unsigned int massive_open_memories[10]; unsigned int massive_close_memories[10]; eeprom_read_block((void *)massive_open_memories,(const void *) 0,2);//massive_open_memories куда пишем из памяти //0 - адрес в EEPROM откуда ведем чтение //2 - количество байт которое читаем eeprom_read_block((void *)massive_close_memories,(const void *) 1,2); if (memcmp ((void *)massive_open_memories, (const void *)massive_signal, 2) == 0)//если массивы равны memcmp возвращает 0 { open; } if (memcmp ((void *)massive_close_memories, (const void *)massive_signal, 2) == 0) { close; } step_memory = eeprom_read_byte((const *)2); if (alarm || (step_memory == step)) { stop; step = 0; } И так, вот что имеем на данный момент. С логикой вроде все правильно. Проблема только с варнингами, не понимаю в чем дело, прошу помощи. #ifndef MAIN_H_ #define MAIN_H_ #define data_input PIND2 #define step_input PIND3 #define button_lgth PINB7 #define button_close PIND5 #define button_open PIND6 #define open PORTD|= (1<<PIND7) #define alarm PORTB|=(1<<PINB0) #define close PORTD|= (1<<PIND7);PORTB|= (1<<PINB1) #define stop PORTD&=~(1<<PIND7);PORTB&=~(1<<PINB0) #define blink_save_open PINC2 #define blink_save_close PINC3 #define blink_save_step PINC5 bool flag_button_open; bool flag_button_close; bool flag_button_lgth; unsigned short i = 0; unsigned int massive_signal[10];//10 - ширина пачки сигнала unsigned int massive_open[10]; unsigned int massive_close[10]; unsigned char step = 0; //шаги длины ворот unsigned char step_memory = 0;//длина (шаги) из памяти #endif /* INCFILE1_H_ */ вот хедер файл Изменено 1 октября, 2023 пользователем Дмитрий МВ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться