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