Olá a todos,
Estou em dúvida sobre como eu posso passar um registrador como parâmetro de uma função. O que quero fazer é o seguinte:
bool get(PIN, bit) {
unsigned long tempoInicial = millis();
do {
if (PIN & (1 << bit)) { // Retorna o valor de RB0
return false;
}
} while (millis() - tempoInicial < 20);
return true;
}
void setup() {
DDRB &= ~(1 << 0); // RB0 como entrada
DDRB |= (1 << 1); // RB1 como saída
}
void loop() {
if (get(PINB, 0)) {
PORTB |= (1 << 1); // RB1 para nível alto
} else {
PORTB &= ~(1 << 1); // RB1 para nível baixo
}
}
Obviamente a função get() não está compilando, pois não informei o tipo de parâmetro que ela recebe. O objetivo é que get() retorne true apenas se a entrada digital permanecer em nível baixo por um determinado tempo (20ms neste exemplo), ou retorne false caso a entrada receber nível alto em algum momento durante esse tempo.
Alguém consegue me ajudar com isso?