#include <stdio.h>
#include "pico/stdlib.h"
int currentTime = 0;
int externalClockSwitch = 14;
int externalClockIn = 15;
bool externalClock = false;
int externalClockT0 = 0;
int externalClockT1 = 0;
bool externalClockTick = false;
int internalClockPin = 13;
int internalClockTimer = 0;
int internalClockDelay = 500;
int internalClock = false;
int main() {
stdio_init_all();
// internal clock setup ***************************
gpio_init(internalClockPin);
gpio_set_dir(internalClockPin, GPIO_OUT);
gpio_put(internalClockPin, internalClock);
// ***********************************************
// external clock setup ***************************
gpio_init(externalClockIn);
gpio_set_dir(externalClockIn, GPIO_IN);
gpio_init(externalClockSwitch);
gpio_set_dir(externalClockSwitch, GPIO_IN);
// ***********************************************
currentTime = time_us_64() / 1000;
printf("Starting...\n");
printf("%i",currentTime);
while (true) {
currentTime = time_us_64() / 1000;
if (currentTime > (internalClockTimer + internalClockDelay/2))
{
internalClockTimer = currentTime;
internalClock = !(internalClock);
gpio_put(internalClockPin,internalClock);
//printf("internal tick\n");
}
if (gpio_get(externalClockSwitch) & gpio_get(externalClockIn))
{
if (!externalClockTick)
{
int t = (currentTime - externalClockT0);
externalClockT0 = currentTime;
printf("%i -> %i\n",internalClockDelay, t);
externalClockTick = true;
}
}
else
{
externalClockTick = false;
}
//printf("%i",currentTime);
sleep_ms(1);
}
}