Outils pour utilisateurs

Outils du site


wiki:projets:smartphone-geiger:gpiote_ppi

Ceci est une ancienne révision du document !


Comptage :

void setup() {
  Serial.begin(9600);
 
  pinMode(6, INPUT);
 
  // Config GPIO Event (gpiote_channel, pin, polaritée)
  nrf_gpiote_event_config(0, 6, NRF_GPIOTE_POLARITY_LOTOHI);
 
  // Config counter
  NRF_TIMER1->MODE = TIMER_MODE_MODE_Counter;
  NRF_TIMER1->BITMODE = TIMER_BITMODE_BITMODE_16Bit;
  NRF_TIMER1->TASKS_START = 1;
 
  // Config PPI
  int ppi = find_free_PPI_channel(255);
  NRF_PPI->CH[ppi].EEP = (uint32_t)&NRF_GPIOTE->EVENTS_IN[0]; // Input
  NRF_PPI->CH[ppi].TEP = (uint32_t)&NRF_TIMER1->TASKS_COUNT; // Output
 
  NRF_PPI->CHEN |= (1 << ppi); // Active le canal PPI
}
 
void loop() {
  delay(2000);
  NRF_TIMER1->TASKS_CAPTURE[0] = 1; // capture le comptage dans CC[0]
  Serial.println((uint8_t)NRF_TIMER1->CC[0], DEC);
  NRF_TIMER1->TASKS_CLEAR = 1; // count = 0;
}

Suiveur :

void setup() {
  pinMode(6, INPUT);
  pinMode(5, OUTPUT);
 
  // GPIO Event (gpiote_channel, pin, polaritée)
  nrf_gpiote_event_config(0, 6, NRF_GPIOTE_POLARITY_TOGGLE);
 
  // GPIO Task (gpiote_channel, pin, polaritée, etat_initial)
  nrf_gpiote_task_config(1, 5, NRF_GPIOTE_POLARITY_TOGGLE, NRF_GPIOTE_INITIAL_VALUE_LOW);
 
  // Valeures possibles pour la polaritée :
  // NRF_GPIOTE_POLARITY_LOTOHI
  // NRF_GPIOTE_POLARITY_HITOLO
  // NRF_GPIOTE_POLARITY_TOGGLE
 
  // Config PPI
  int ppi = find_free_PPI_channel(255);
  NRF_PPI->CH[ppi].EEP = (uint32_t)&NRF_GPIOTE->EVENTS_IN[0]; // Input
  NRF_PPI->CH[ppi].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[1]; // Output
 
  NRF_PPI->CHEN |= (1 << ppi); // Active le canal PPI
}
 
void loop() {
  delay(1000);
}
wiki/projets/smartphone-geiger/gpiote_ppi.1415965022.txt.gz · Dernière modification: 2016/09/11 11:03 (modification externe)