Пример #1
0
//-------------------------------! The main function.
int main(int argc, char **argv)
{	char *ret;
	uint32 Samp, Mask, Tmr;
	uint16 Mds;
    pruIo *Io = pruio_new(PRUIO_DEF_ACTIVE, 0x98, 0, 1); 				// create new driver structure

    if (Io->Errr)
    {	printf("initialisation failed (%s)\n", Io->Errr);
    }

    //pin config OK, transfer local settings to PRU and start
    //char* pruio_config(pruIo* Io, uint32 Samp, uint32 Mask, uint32 Tmr, uint16 Mds);
    Samp = 1;
    Mask = 0x1FE;
    Tmr = 0;
    Mds = 4;
    ret = pruio_config(Io, Samp, Mask, Tmr, Mds);
    if (ret)	//pruio_config(Io, 1, 0x1FE, 0, 4))
    {   printf("config failed (%s)\n", Io->Errr);
    }
    /*=============================================
//  char* pruio_gpio_setValue(pruIo* Io, uint8 Ball, uint8 Modus);
    ret = pruio_gpio_setValue(Io, P_FANA, 1);	//
	if (ret)	   // set HIGH to turn off fan
	{   printf("failed setting PWMA output (%s)\n", Io->Errr);
	}
    ret = pruio_gpio_setValue(Io, P_FANB, 1);
	if (ret)	   // set HIGH to turn off fan
	{   printf("failed setting PWMB output (%s)\n", Io->Errr);
	}
============================================*/

    ret = pruio_gpio_setValue(Io, P_FANA, 1);	//
	if (ret)	   // set HIGH to turn off fan
	{   printf("failed setting PWMA output (%s)\n", Io->Errr);
	}
    ret = pruio_gpio_setValue(Io, P_FANB, 1);
	if (ret)	   // set HIGH to turn off fan
	{   printf("failed setting PWMB output (%s)\n", Io->Errr);
	}

	sleep(5);
    pruio_destroy(Io);       /* destroy driver structure */
	return 0;
}
Пример #2
0
//! The main function.
int main(int argc, char **argv)
{
  pruIo *Io = pruio_new(PRUIO_DEF_ACTIVE, 0, 0, 0); //! ouvrir l'interruption Pruss (/ dev / uio5),charger les instructions de pasm_init.p au PRU et les exécute, et appeler les fonctions initialize des UDT du sous-système.
  do {
    if (Io->Errr) {
               printf("initialisation failed (%s)\n", Io->Errr); break;}
if ( pruio_gpio_setValue(Io, P, 0x8F)) {printf("setValue P error (%s)\n", Io->Errr); break;}
    if (pruio_cap_config(Io, P_IN, 2.)) { //         Cette fonction configure un axe d'en-tête pour la capture et Analyse Pulse (CAP) trains. La configuration des broches est vérifié. Si elle est pas configuré comme entrée pour le module de la Cap dans le sous-système PWM, libpruio essaie d'adapter le muxing broches.
          printf("failed setting input @P_IN (%s)\n", Io->Errr); break;}

    float_t
        f1 //                         Variable for calculated frequency.
      , d1 //                        Variable for calculated duty cycle.
      , f0 = 31250 //                            The required frequency.
      , d0 = .5;   //                           The required duty cycle.
      
    if (pruio_pwm_setValue(Io, P_OUT, f0, d0)) { //Cette fonction définit la sortie PWM sur une broche d'en-tête. sortie PWM peuvent être soit générés par un eHRPWM ou d'un module eCAP. En fonction du nombre de broches spécifié (paramètre à billes), le module PWM correspondant est configuré pour la fréquence et le rapport cyclique déterminé.
        printf("failed setting output @P_OUT (%s)\n", Io->Errr); break;}


    if (pruio_config(Io, 1, 0x1FE, 0, 4)) { //Cette fonction est utilisée pour télécharger la configuration de l'hôte (ARM) au conducteur (PRU). Le PRU s'arrêté (si en cours d'exécution) et les nouvelles configurations se charger. Aussi les instructions Pru_Run se ré-initialisés.
                       printf("config failed (%s)\n", Io->Errr); break;}

    struct termios oldt, newt; //             make terminal non-blocking
    tcgetattr( STDIN_FILENO, &oldt );
    newt = oldt;
    newt.c_lflag &= ~( ICANON );
    newt.c_cc[VMIN] = 0;
    newt.c_cc[VTIME] = 1;
    tcsetattr( STDIN_FILENO, TCSANOW, &newt );

    while(1) { //                                       run endless loop

      if (pruio_cap_Value(Io, P_IN, &f1, &d1)) { //    get current input
          printf("failed reading input @P_IN (%s)\n", Io->Errr); break;}

      printf("\r    Frequency: %10f , Duty: %10f     ", f1, d1); // info
      fflush(STDIN_FILENO);
    }


    tcsetattr( STDIN_FILENO, TCSANOW, &oldt ); //         reset terminal

    printf("\n");
  } while (0);

  pruio_destroy(Io);       /* destroy driver structure */
	return 0;
}