The underlying hardware counter insists on seeing one falling edge before it will count a rising edge by design. A common mistake when testing is to write something like this (in GP3 JavaScript):


// LED connected to counter


gp3.setLED(true);


gp3.setLED(false);


print(gp3.counter());


This will always print 0 because the counter is looking for an initial falling edge after a reset. It gets that from the the setLED(false) statement but then reading the counter resets it (note that GP3A chips can read the counter without reseting it).