Aiuto per ridurre consumo CPU programma C++

di il
3 risposte

Aiuto per ridurre consumo CPU programma C++

Ciao a tutti, per la tesina ho creato una specie di rilevatore di sostanze inquinanti, quindi ho attaccato vari sensori ad un PIC (16F877) il quale, appunto, legge questi valori e li invia in modo seriale ad un convertitore Seriale->USB (il CP2102) che è attaccato ad una presa USB del RaspberryPi (sarebbe un computer in miniatura con sistema Linux). Oltre a quei dati, invio anche lo stato di alcuni pulsanti che hanno la funzione di reset e di arresto. Ho creato un programma in C++ (che allego sotto) Il quale legge in continuo dalla seriale (o per meglio dire dall' USB) e ogni 10 minuti immette dentro un database MySQL i dati dei sensori. Devo leggere in continuo proprio per vedere se il pulsante di arresto o di reset viene premuto, quindi non posso leggere solo ogni 10 minuti, ma la lettura deve avvenire in modo continuo. E qua sorge il problema, il programma, leggendo in continuo dalla seriale attraverso un loop infinito, mi genera un consumo eccessivo di CPU (96%), come posso fare per rimediare e creare un servizio simile all' Hyper Terminal del vecchio Windows XP ?

PS: Il programma, chiamato mainprog, si avvia all' avvio del RaspberryPi, e sarà sempre in esecuzione in background.


La libreria utilizzata è

3 Risposte

  • Re: Aiuto per ridurre consumo CPU programma C++

    1)nel firmware del pic quando si preme il tasto di reset o di arreto invii al pc i dati
    2)devi simulare un interrupt della seriale qui trovi un esempio,poi ogni 10 minuti invii le classiche richieste al pic
  • Re: Aiuto per ridurre consumo CPU programma C++

    Basta inserire nel ciclo di ricezione nel tuo programma C uno

    sleep

    di qualche millisecondo per poter "addormentare" la CPU ciclicamente.

    Con questo semplice accorgimento non dovrebbe più esserci il problema del consumo eccessivo di CPU.
  • Re: Aiuto per ridurre consumo CPU programma C++

    Ora provo con lo sleep, poi se non dovesse funzionare inizio a pensare agli interrupt, grazie per le risposte.
Devi accedere o registrarti per scrivere nel forum
3 risposte