El código C de frambuesa se atasca debido a un bucle infinito para

0

Soy nuevo en Raspberry Pi (Raspbian). Cualquier orientación en la materia será apreciada!

He escrito un código C que incluye C Filehandling & Biblioteca wiringPi.h para manipulaciones GPIO.

He reducido el problema al bucle infinito vacío. Si lo incluyo en la función principal, mi terminal se congela y ¡ni siquiera Hello World! se imprime.

¿Debo implementar este bucle infinito de alguna otra manera porque es una frambuesa? Si es así, entonces ¿cómo?

Así es como se ve la función main ():

// Main function
int main (void)
{
  printf("Hello world!");
  delay(1000);

  // Read updated preferences file
  readPrefs();

  // Initialize WiringPi Library
  wiringPiSetup () ;

  // Setup falling edge interrupt on INPUT pin
  wiringPiISR (INPUT, INT_EDGE_FALLING, &myInterrupt0) ;

  // Setup OUT1 & OUT2 as output
  pinMode (OUT1, OUTPUT) ;
  pinMode (OUT2, OUTPUT) ;

  // Initialize motor
  motorSTOP();

  for (;;)
  {
    // Empty loop since all the work is done in Interrupt routine

  }

  return 0 ;
}

Aquí está la rutina de interrupción:

// Interrupt Service routine
void myInterrupt0 (void) { 

    motorFWD();
    delay(FWDDelay);

    motorSTOP();
    delay(WaitDelay);

    motorBCK();
    delay(BCKDelay);

    motorSTOP();    
}
    
pregunta Mohsin

1 respuesta

4

Las secuencias, en las que funciones como printf() escriben, exhiben por defecto el comportamiento de line buffered , y normalmente no escriben la salida del búfer hasta que se encuentra un final de línea o se llama a un explícito fflush() .

Por lo tanto, cambie su mensaje para incluir una nueva línea:

printf("Hello world!\n");

O explícitamente vaciar el flujo

printf("Hello world!");
fflush(stdout);

Como esta es realmente una pregunta de programación genérica que no tiene nada que ver en particular con el hardware o la Raspberry Pi, probablemente habría pertenecido mejor a Stackoverflow, donde sin duda se ha respondido varias veces en el pasado. Aunque es bastante comprensible por qué el uso de interrupciones en una parte adyacente del código podría distraer, aunque en realidad no sea relevante para el problema.

    
respondido por el Chris Stratton

Lea otras preguntas en las etiquetas