nRF52840 Compare Function won't work (NANO 33 BLE)

I am trying to get the "Compare" function of the
nRF53840 to work.

The "Result" register never changes value.

I believe that the input voltages are correct.
P0_4 (A0) changes from 0 to 1024 on the printout.

Do I need to do something more other than selecting A0 to get the function
to see A0?

The ''READY" register is always 0.
How can I find out why?

Thanks for the help.

Mike

/* TESTS GPIO ACCESS

*/

#include "mbed.h"
//using namespace mbed;
//using namespace rtos;

//using namespace std::chrono_literals;
//uint32_t A, B;

void setup() {


NRF_COMP->PSEL=0;
delay(2);
NRF_COMP->MODE=0b0000000000000010;
delay(2);

NRF_COMP->SHORTS=0X00FF;
delay(2);

NRF_COMP->REFSEL=0;
delay(2);

NRF_COMP->INTENSET=0X000F;


NRF_COMP->EXTREFSEL=1;
delay(2);
NRF_COMP->TASKS_SAMPLE=1;
delay(2);

NRF_COMP->TH=0b00000000000000000000000000000001;
delay(2);


NRF_COMP->ENABLE=3;
delay(2);
NRF_COMP->TASKS_START = 1;
//delay(5);
//NRF_COMP->TASKS_START = 0;

//NRF_COMP->TASKS_SAMPLE=1;
delay(2);

//NRF_COMP->TASKS_STOP=1;
delay(2);

//NRF_COMP->TASKS_START=1;
//NRF_COMP->MODE=2;


 delay(500);
}




void loop() {
  //NRF_COMP->TASKS_SAMPLE = !NRF_COMP->TASKS_SAMPLE;
 Serial.print("TASKS_START= "); Serial.println(NRF_COMP->TASKS_START,BIN);
 
 Serial.print("TASKS_STOP= "); Serial.println(NRF_COMP->TASKS_STOP,BIN);
 
 Serial.print("TASKS_SAMPLE= "); Serial.println(NRF_COMP->TASKS_SAMPLE,BIN);

 Serial.print("EVENTS_READY= "); Serial.println(NRF_COMP->EVENTS_READY,BIN);

 Serial.print("EVENTS_DOWN= "); Serial.println(NRF_COMP->EVENTS_DOWN,BIN);

Serial.print("EVENTS_UP= "); Serial.println(NRF_COMP->EVENTS_UP,BIN);

Serial.print("EVENTS_CROSS= "); Serial.println(NRF_COMP->EVENTS_CROSS,BIN);

Serial.print("SHORTS= "); Serial.println(NRF_COMP->SHORTS,BIN);

Serial.print("INTEN= "); Serial.println(NRF_COMP->INTEN,BIN);
 
 Serial.print("EVENTS_INTENSET= "); Serial.println(NRF_COMP->INTENSET,BIN);

 Serial.print("EVENTS_INTENCLR= "); Serial.println(NRF_COMP->INTENCLR,BIN);

 Serial.print("RESULT= "); Serial.println(NRF_COMP->RESULT,BIN);

 Serial.print("ENABLE= "); Serial.println(NRF_COMP->ENABLE,BIN);

 Serial.print("PSEL= "); Serial.print(NRF_COMP->PSEL,BIN);Serial.print("   ");Serial.println(analogRead(0));
 Serial.println(analogRead(P0_4));
 Serial.println();

 Serial.print("REFSEL= "); Serial.println(NRF_COMP->REFSEL,BIN);

 Serial.print("EXTREFSEL= "); Serial.println(NRF_COMP->EXTREFSEL,BIN);

  Serial.print("TH= "); Serial.println(NRF_COMP->TH,BIN);

   Serial.print("MODE= "); Serial.println(NRF_COMP->MODE,BIN);

    Serial.print("HYST= "); Serial.println(NRF_COMP->HYST,BIN);

    Serial.print("RESULT= ");Serial.println(NRF_COMP->RESULT, BIN  );




  //Serial.println("  V \t  H                    ANALOG= ");                     
 
 
 /*
 Serial.print( analogRead(0)); Serial.print("\t");
 Serial.print( analogRead(1)); Serial.print("\t");
 Serial.print( analogRead(2)); Serial.print("\t");
 Serial.print( analogRead(3)); Serial.print("\t");
*/


  Serial.println();

  delay(1000);
}

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.