@@ -111,8 +111,8 @@ void readRTC()
111
111
112
112
bool store = false ;
113
113
114
- // Timer 1 interrupt service routine (ISR)
115
- ISR (TIMER1_COMPA_vect )
114
+ // Timer 3 interrupt service routine (ISR)
115
+ ISR (TIMER3_COMPA_vect )
116
116
{
117
117
store = true ;
118
118
}
@@ -360,22 +360,33 @@ void setup()
360
360
}
361
361
362
362
cli (); // disable interrupts during setup
363
- // Configure Timer 1 interrupt
363
+
364
+ // Configure Timer 3 interrupt
364
365
// F_clock = 8 MHz, prescaler = 1024, Fs = 0.125 Hz
366
+ TCCR3A = 0 ;
367
+ TCCR3B = 1 <<WGM32 | 1 <<CS32 | 0 <<CS31 | 1 <<CS30;
368
+ // OCR3A = ((F_clock / prescaler) / Fs) - 1
369
+ OCR3AH = 0xF4 ; // 62499 Set sampling frequency Fs, period 8 s
370
+ OCR3AL = 0x23 ; // 62499 Set sampling frequency Fs, period 8 s
371
+ TCNT3H = 0 ; // reset Timer 1 counter
372
+ TCNT3L = 0 ; // reset Timer 1 counter
373
+ TIMSK3 = 1 <<OCIE3A; // Enable Timer 1 interrupt
374
+
375
+
376
+ // Configure Timer 1 for Input Capture
377
+ // Voltage reference
378
+ ADMUX = INTERNAL2V56 << 6 ;
379
+ // Comparator
380
+ ACSR = 1 <<ACBG | 1 <<ACIC;
381
+ DIDR1 = 1 <<AIN1D | 1 <<AIN0D;
382
+ // F_clock = 8 MHz, prescaler = 1, Fs = 8 MHz
365
383
TCCR1A = 0 ;
366
- // TCCR1B = 1<<WGM12 | 0<<CS12 | 1<<CS11 | 1<<CS10;
367
- TCCR1B = 1 <<WGM12 | 1 <<CS12 | 0 <<CS11 | 1 <<CS10;
368
- // OCR1A = ((F_clock / prescaler) / Fs) - 1
369
- OCR1A = 62499 ; // Set sampling frequency Fs, period 8 s
370
- // OCR1A = (62500/2)-1; // Set sampling frequency Fs, period 4 s
384
+ // TCCR1B = 0;
385
+ TCCR1B = 1 <<ICES1 | 0 <<CS12 | 0 <<CS11 | 1 <<CS10;
371
386
TCNT1 = 0 ; // reset Timer 1 counter
372
- TIMSK1 = 1 <<OCIE1A; // Enable Timer 1 interrupt
373
387
374
388
store = false ;
375
389
sei (); // re-enable interrupts
376
-
377
- ADMUX = (INTERNAL2V56 << 6 ) | ((0 | 0x10 ) & 0x1F );
378
-
379
390
}
380
391
381
392
@@ -415,6 +426,20 @@ void loop()
415
426
// delayMicroseconds(4);
416
427
digitalWrite (DRESET, HIGH);
417
428
uint16_t adcVal = SPI.transfer16 (0x0000 );
429
+
430
+ /*
431
+ uint16_t ToT;
432
+ //TIFR1 = 1<<ICF1;
433
+ //while (!(TIFR1 & (1 << ICF1)));
434
+ //TCNT1 = 0; // reset Timer 1 counter
435
+ //delayMicroseconds(1000);
436
+ ToT = TCNT1 -ICR1;
437
+ Serial.print(adcVal);
438
+ Serial.print("*");
439
+ //Serial.print(TCNT1);
440
+ //Serial.print("*");
441
+ Serial.println(ToT);
442
+ */
418
443
// if(adcVal>17000)
419
444
{
420
445
// Serial.println(adcVal);
0 commit comments