Нет, не одно и то же.alex68md писал(а):ну так это по сути тоже самое к чему я пришел выше. просто передаю значения в функцию а вы через макрос.
В случае ARV макрос привязан к конкретному значению порта или const, оно неизменно на протяжении всей выполнения программы.
К примеру так
Код: Выделить всё
#define SENSOR_PORT PIND
#define SENSOR_MASK (1<<5)
while((SENSOR_PORT & SENSOR_MASK) != SENSOR_VAL)Либо так
Код: Выделить всё
while((SENSOR_PORT & SENSOR_MASK) != 0)Код: Выделить всё
while((SENSOR_PORT & SENSOR_MASK) == 0)Код: Выделить всё
while((SENSOR_PORT & SENSOR_MASK) != SENSOR_MASK)
while((SENSOR_PORT & SENSOR_MASK) == SENSOR_MASK)Код: Выделить всё
while((SENSOR_PORT & SENSOR_MASK))
while(!(SENSOR_PORT & SENSOR_MASK))Код: Выделить всё
void soft_reset(const uint8_t wdt_prescale, const volatile uint8_t *port, const uint8_t pin, const uint8_t level)Если это так, то это
Код: Выделить всё
while ((*port & pin) ^ level);Перепишите так
Код: Выделить всё
void soft_reset(const uint8_t wdt_prescale, volatile uint8_t *port, const uint8_t pin, const uint8_t level){
wdt_enable(wdt_prescale);
if (port == NULL) while (1);
if (level) {
while(!(*port&(1 << pin))); //
} else {
while((*port&(1 << pin))); //
}
wdt_disable();
}
Код: Выделить всё
if (port == NULL) while (1);

