Hallo Leute,
ich bin momentan an einem Datenlogger am Arbeiten. Das Starten des Loggens soll per Taster erfolgen. Nun hab ich die Beispiele aus diesem Beitrag mir angesehen und mich für die pigpio Lib entschieden. Meine Fragen beziehen sich auf den im Beispiel hinterlegten Code.
Erstes Problem: Ich krieg das Eingangssignal nicht entprellt. Normalerweise sollte das ja mit gpioDelay passieren. Doch diesen kann ich ändern wie ich will, da tut sich eigentlich gar nichts. Wie sag ich also dem Interrupt dass er den GPIO nur alle z.B. 50ms abfragen soll?
Das andere ist die Flanke, ich möchte ja nur beim Signalwechsel low->high bzw. umgekehrt einen Sprung in die Interruptroutine bekommen. So eine Funktion ist in dieser Lib nur im Python Teil drin, wenn ich nichts übersehen habe.
#define Tast1 11 /* GPIO 11 as interrupt input */
void alert(int pin, int level, uint32_t tick);
int main (int argc, char *argv[])
{
if (gpioInitialise()<0) return 1;
gpioSetMode(Tast1, PI_INPUT);
gpioSetAlertFunc(Tast1, alert);
while (1)
{
gpioDelay(10 * 1000);
}
gpioTerminate();
}
void alert(int pin, int level, uint32_t tick)
{
fprintf(stderr, "Sensor Alarm!\n");
}
Alles anzeigen
Please help.
Gruß - Markus
Ok, das mit der Flanke habe ich jetzt gefunden. In der Interrupt Routine kommt der Level - Wert mit. 0 bedeutet fallingedge, 1 risingedge. Hab den Code mal erweitert:
void alert(int pin, int level, uint32_t tick)
{
if (level == 0) //falling edge
{
printf("pin %d - %d\n", pin, level);
}
}
Hat sich aber nicht viel geändert. Wenn ich den Taster drücke kommen zwar nur noch Werte mit Level 0, aber auch beim loslassen des Tasters wird mir ein Wert angezeigt. Auch mit Level 0 ???
Any Idea?