示例#1
0
void bsp_ppi_init( void )
{
  PPI_InitTypeDef hppi_start;
  PPI_InitTypeDef hppi_stop;

  hppi_start.Channel          = NRF_PPI_CHANNEL0;
  hppi_start.Group            = NRF_PPI_CHANNEL_GROUP0;
  hppi_start.EventEndPoint    = (uint32_t)(&TIMER_EVENTS_COPPARE(htick_start.Instance, htick_cc[1].Channel));
  hppi_start.TaskEndPoint     = (uint32_t)(&htick.Instance->TASKS_START);
  hppi_start.ForkState        = DISABLE;
  hppi_start.ForkTaskEndPoint = NULL;
  PPI_Init(&hppi_start);

  hppi_stop.Channel           = NRF_PPI_CHANNEL1;
  hppi_stop.Group             = NRF_PPI_CHANNEL_GROUP0;
  hppi_stop.EventEndPoint     = (uint32_t)(&TIMER_EVENTS_COPPARE(htick_stop.Instance, htick_cc[2].Channel));
  hppi_stop.TaskEndPoint      = (uint32_t)(&htick.Instance->TASKS_STOP);
  hppi_start.ForkState        = DISABLE;
  hppi_start.ForkTaskEndPoint = NULL;
  PPI_Init(&hppi_stop);

  PPI_ChannelCmd(&hppi_start, ENABLE);
  PPI_ChannelCmd(&hppi_stop,  ENABLE);

//  PPI_SetChannelGroup(&hppi_start, ENABLE);
//  PPI_SetChannelGroup(&hppi_stop,  ENABLE);
//  PPI_GroupCmd(&hppi_start, ENABLE);
//  PPI_GroupCmd(&hppi_stop,  ENABLE);
}
void main(void)
{ 
  unsigned short Val_Freq; // Valeur analogique de la frequence lue sur le potentiometre

  DebugClear();

  // Initialisation des ports
  PPI_Init();  
  EXPORT_Init();
  LED_Y_Init();
  LED_R_Init();

  // Initialisation de la memoire
  XHeap_init();

  // Mise en marche du convertisseur
  AdcSet(ADC0,ADCDF_128);
  AdcOn();

  while(1) { 
    Val_Freq = AdcRead(); // Acquisition de la valeur

    // affichage des 8 MSB (sur 10) de la valeur de la tension sur les LEDS hautes en SPI
    LED_R(Val_Freq>>2);
   
    Send_1(MsgBox_1, Val_Freq);


    // Affichage de la mesure dans la fenêtre 'ON-The-Fly' du mode Débug
    DebugClear();
    DebugPrint("\nValeur clignotement (0 à 1023) : ");
    DebugSHORT(Val_Freq,DEC);
  }
}
void main(void)
{ 
  unsigned short Val_Freq; // Valeur analogique de la frequence recuperee en Heap
  int led;
  int sens_led;
  int demi_periode;

  // Init des ports
  PPI_Init();
  EXPORT_Init();
  LED_Y_Init();
  LED_R_Init();

  // Init des variables
  led=0;
  sens_led=0;
  demi_periode=0;

  while(1) { 
    Val_Freq = Receive_1(MsgBox_1);

    // Affichage de la valeur lue dans la fenêtre 'ON-The-Fly' du mode Débug
    DebugClear();
    DebugPrint("\nValeur clignotement (0 à 1023) : ");
    DebugSHORT(Val_Freq,DEC);

    //demi_periode = 10 + (int)(1024/(Val_Freq+1));
    demi_periode = 5 + (int)((1024-Val_Freq)/2);
    DebugPrint("\nValeur demi periode : ");
    DebugINT(demi_periode,DEC);

    // Attente correspondante (entre 11 et 1034 ms)
    Delay_ms(demi_periode);

    // Clignotement effectif
    // Gestion pour decaler (d'un cran) l'allumage des LEDS en chenillard
    LED_Y_Off(led); // extinction de la precedente LED
    if (sens_led==0) { 
        led++; // incrementation - decalage droite
        if (led>7) {
          led=6;
          sens_led=1;
        }
    } else {
        led--; // decrementation - decalage gauche
        if (led<0) {
           led=1;
           sens_led=0;
         }
    }
    LED_Y_On(led); // allumage de la nouvelle LED
  }
}