Перейти к содержанию
    

Приемник радиосигнала, для ворот

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;
		}

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

 

скрин.gif

#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_ */

вот хедер файл

Изменено пользователем Дмитрий МВ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...