kopia lustrzana https://github.com/roncarr880/QRP_LABS_WSPR
Experiments with U3S
rodzic
b7fc6d1819
commit
e00546ef07
20
WWVB_PPS.ino
20
WWVB_PPS.ino
|
@ -207,9 +207,11 @@ const uint8_t counts[8] = { 100,100,150,150,150,150,100,100 }; // total of 1000
|
||||||
static uint8_t secs,errors,early,late;
|
static uint8_t secs,errors,early,late;
|
||||||
static uint8_t dither = 4; // quick sync, adjusts to 1 when signal is good
|
static uint8_t dither = 4; // quick sync, adjusts to 1 when signal is good
|
||||||
char ch[2];
|
char ch[2];
|
||||||
|
static int max_loops; // debug, how many millis is missed ?
|
||||||
|
|
||||||
loops = t - old_t;
|
loops = t - old_t;
|
||||||
old_t = t;
|
old_t = t;
|
||||||
|
if( loops > max_loops ) max_loops = loops;
|
||||||
|
|
||||||
while( loops-- ){ // repeat for any missed milliseconds
|
while( loops-- ){ // repeat for any missed milliseconds
|
||||||
|
|
||||||
|
@ -232,8 +234,13 @@ char ch[2];
|
||||||
// 8 dumps of the integrator is one second, decode this bit
|
// 8 dumps of the integrator is one second, decode this bit
|
||||||
wwvb_count++;
|
wwvb_count++;
|
||||||
wwvb_count &= 7;
|
wwvb_count &= 7;
|
||||||
if( wwvb_count == 1 && rtotal < 250.0 && rtotal > -250.0) digitalWrite( PPS_OUT,HIGH);
|
if( wwvb_count == 6 ){ // send pps at end of second as U3S adds one second
|
||||||
if( wwvb_count == 2 ) digitalWrite( PPS_OUT,LOW), gsec = secs; // que serial messages
|
digitalWrite( PPS_OUT,HIGH); // pps not accurate rising edge to falling, use 00 10 for calibrate in U3S
|
||||||
|
}
|
||||||
|
if( wwvb_count == 7 ){
|
||||||
|
digitalWrite( PPS_OUT,LOW);
|
||||||
|
gsec = secs; // que serial messages
|
||||||
|
}
|
||||||
|
|
||||||
wwvb_clk = counts[wwvb_count]; // 100 100 150 150 150 150 100 100
|
wwvb_clk = counts[wwvb_count]; // 100 100 150 150 150 150 100 100
|
||||||
// decode 0 1 sync stop should be high
|
// decode 0 1 sync stop should be high
|
||||||
|
@ -323,6 +330,7 @@ char ch[2];
|
||||||
errors = 0;
|
errors = 0;
|
||||||
LCD.printNumF( (float)tot_phase/(float)NUM_HISTORY,2,RIGHT,4*8,'.',6,' ' );
|
LCD.printNumF( (float)tot_phase/(float)NUM_HISTORY,2,RIGHT,4*8,'.',6,' ' );
|
||||||
LCD.printNumI( (int)rtotal,LEFT,4*8,5,' ' );
|
LCD.printNumI( (int)rtotal,LEFT,4*8,5,' ' );
|
||||||
|
LCD.printNumI( max_loops, RIGHT,5*8,3,' ' );
|
||||||
phase = 0;
|
phase = 0;
|
||||||
if( wwvb_errors > 0 ) keep_time();
|
if( wwvb_errors > 0 ) keep_time();
|
||||||
}
|
}
|
||||||
|
@ -430,10 +438,10 @@ void keep_time(){
|
||||||
LCD.printNumI(gmin,CENTER,2*8,2,'0');
|
LCD.printNumI(gmin,CENTER,2*8,2,'0');
|
||||||
LCD.setFont(SmallFont);
|
LCD.setFont(SmallFont);
|
||||||
LCD.printNumI(gmon,0,5*8,2,'0');
|
LCD.printNumI(gmon,0,5*8,2,'0');
|
||||||
LCD.print("/",3*6,5*8);
|
LCD.print("/",2*6,5*8);
|
||||||
LCD.printNumI(gday,5*6,5*8,2,'0');
|
LCD.printNumI(gday,3*6,5*8,2,'0');
|
||||||
LCD.print("/",8*6,5*8);
|
LCD.print("/",5*6,5*8);
|
||||||
LCD.printNumI(gyr,10*6,5*8,2,'0');
|
LCD.printNumI(gyr,6*6,5*8,2,'0');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue