Tiempo de espera mínimo de Raspberry Pi

2

Logré conectar un antiguo teclado PS / 2 a los pines GPIO de mi Raspberry Pi. Obtengo datos correctos del teclado, lo que significa que cuando presiono 'A' en el teclado obtengo 'A' en mi código C. El gran problema que tengo ahora es que no puedo poner un retraso de suspensión en mi código porque incluso usleep(1) está tomando demasiado tiempo, por lo que ya no obtengo los datos correctos, ni siquiera datos. También probé nanosleep , pero por alguna razón mi código lo ignoró por completo. ¿Hay alguna manera agradable de poner en un breve retraso? Sin demora, mi código está consumiendo el 99% del tiempo de CPU.

    
pregunta arminb

1 respuesta

3

Lamentablemente, realmente no hay una buena manera de hacer esto. Cuando se llama a la suspensión, se realiza una llamada al sistema y el sistema operativo se apaga y ejecuta otros programas mientras usted duerme. Pero el programador del sistema operativo tiene un intervalo mínimo de tiempo en el que hará eso, y eso es del orden de milisegundos, no de microsegundos. Como resultado, los sueños muy pequeños tenderán a no ocurrir en absoluto o a durar demasiado tiempo, que es lo que está viendo.

Tiene dos opciones realistas: escriba un módulo de kernel que no sufra bajo las mismas restricciones de programación, o use un procesador externo, como una MCU barata de 8 bits para hacer la decodificación, enviando los resultados a través de una serie Puerto. Yo recomendaría este último.

    
respondido por el Nick Johnson

Lea otras preguntas en las etiquetas