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); }