devfs Gpio and interrupt
I read gpio.txt in Documentation of kernel and try to use it.
I use:
# echo 13 > /sys/class/gpio/export # echo in > /root/tasto1/direction # cat /root/tasto1/direction in
# cat /root/tasto1/value 1
when the button is pressed:
# cat /root/tasto1/value 0
# cat /root/tasto1/edge none # echo both > /root/tasto1/edge
# cat /sys/kernel/debug/gpio [...] B5 gpio-13 (sysfs ) in hi irq-77 edge-both [...]
# cat /proc/irq/77/spurious p count 15 unhandled 0 last_unhandled 0 ms cat: p: No such file or directory Ture:~# cat /proc/irq/77/spurious count 15 unhandled 0 last_unhandled 0 ms
I try the follow code in a while (1):
// /root/tasto1 is a symbolic link to /sys/class/gpio/gpio13/
pfd.fd = open("/root/tasto1/value", O_RDONLY);
pfd.events = POLLPRI | POLLERR;
//ready = poll(&pfd, 1, -1);
ready = poll(&pfd, 1, 100000);
lseek (pfd.fd, 0, SEEK_SET);
val = read(pfd.fd, buf, 254);
//the output are: 1, 10, 10
printf ("%d, %d, %d\n", ready, pfd.revents, pfd.events);
printf ("%d, %s\n", val, buf );
close(pfd.fd);
But it don't wait for an edge but they exit immediatly. Why? where is the problem?
Signature · 2 lines
Mancausoft - http://www.mancausoft.org/ GPG key: B53F90F2
Quoted 13 lines · Mancausoft
I read gpio.txt in Documentation of kernel and try to use it. pfd.fd =
open("/root/tasto1/value", O_RDONLY); pfd.events = POLLPRI | POLLERR;//ready =
poll(&pfd, 1, -1);
ready =poll(&pfd, 1, 100000);lseek (pfd.fd, 0,
SEEK_SET);val =
read(pfd.fd, buf, 254);
//the output are: 1, 10, 10
printf ("%d, %d, %d\n", ready, pfd.revents, pfd.events);
Quoted 6 lines
printf ("%d, %s\n", val, buf );
close(pfd.fd);
But it don't wait for an edge but they exit immediatly. Why? where is the problem?
My Bad!
now work:
pfd.fd = open("/root/ledverde/value", O_RDWR );
while (1)
{
pfd.events = POLLPRI | POLLERR; // | POLLWRBAND;
lseek (pfd.fd, 0, SEEK_SET);
val = read(pfd.fd, buf, 254);
buf[val] = 0;
//printf ("%d, %s\n", val, buf );
ready = poll(&pfd, 1, -1);printf("%d\n", ++i);
}
Signature · 2 lines
Mancausoft - http://www.mancausoft.org/ GPG key: B53F90F2