Hi Udo,
ging schneller als ich dachte:
Ohne digitalWrite(dcf77_sample_pin, HIGH); im setup bekomme ich ein Signal:
---------+---------+---------+----1XXXXXXXXXX----+---------+---------+---------+---------+---------
11, +---------+---------+---------+----3XXXXXXXXXX1---+---------+---------+---------+---------+---------
12, +---------+---------+---------+-----8XXXXXXXXX----+---------+---------+---------+---------+---------
13, +---------+---------+---------+-----7XXXXXXXX9----+---------+---------+---------+---------+---------
14, +---------+---------+---------+----3XXXXXXXXX8----+---------+---------+---------+---------+---------
15, +---------+---------+---------+----1XXXXXXXXXXXXXXXXXXXX2---+---------+---------+---------+---------
16, +---------+---------+---------+----2XXXXXXXXXXXXXXXXXXXX2---+---------+---------+---------+---------
17, +---------+---------+---------+-----8XXXXXXXXXXXXXXXXXXX1---+---------+---------+---------+---------
18, +---------+---------+---------+----2XXXXXXXXXX3---+---------+---------+---------+---------+---------
19, +---------+---------+---------+-----XXXXXXXXXX1---+---------+---------+---------+---------+---------
20, +---------+---------+---------+-----XXXXXXXXXX1---+---------+---------+---------+---------+---------
21, +---------+---------+---------+----4XXXXXXXXXX1---+---------+---------+---------+---------+---------
22, +---------+---------+---------+-----9XXXXXXXXX2---+---------+---------+---------+---------+---------
23, +---------+---------+---------+-----7XXXXXXXXX2---+---------+---------+---------+---------+---------
24, +---------+---------+---------+----4XXXXXXXXXXXXXXXXXXXX----+---------+---------+---------+---------
25, +---------+---------+---------+----1XXXXXXXXXX----+---------+---------+---------+---------+---------
26, +---------+---------+---------+-----9XXXXXXXXX----+---------+---------+---------+---------+---------
27, +---------+---------+---------+-----XXXXXXXXXX2---+---------+---------+---------+---------+---------
28, +---------+---------+---------+----4XXXXXXXXX9----+---------+---------+---------+---------+---------
29, +---------+---------+---------+-----XXXXXXXXX9----+---------+---------+---------+---------+---------
30, +---------+---------+---------+-----9XXXXXXXXXXXXXXXXXX7----+---------+---------+---------+---------
31, +---------+---------+---------+----1XXXXXXXXXXXXXXXXXXX9----+---------+---------+---------+---------
32, +---------+---------+---------+----4XXXXXXXXXXXXXXXXXXX9----+---------+---------+---------+---------
Jetzt lass ich das mal ne Stunde laufen auf dem Arduino Micro.
Den Timer Code hab ich aus der MsTimer2 lib entnommen (und etwas an deinen Code angepasst):
#elif defined (__AVR_ATmega32U4__)
ISR(TIMER4_OVF_vect) {
process_one_sample();
}
void initTimer2() {
float prescaler = 0.0;
int tcnt2;
TCCR4B = 0;
TCCR4A = 0;
TCCR4C = 0;
TCCR4D = 0;
TCCR4E = 0;
if (F_CPU >= 16000000L) {
TCCR4B = (1<<CS43) | (1<<PSR4);
prescaler = 128.0;
} else if (F_CPU >= 8000000L) {
TCCR4B = (1<<CS42) | (1<<CS41) | (1<<CS40) | (1<<PSR4);
prescaler = 64.0;
} else if (F_CPU >= 4000000L) {
TCCR4B = (1<<CS42) | (1<<CS41) | (1<<PSR4);
prescaler = 32.0;
} else if (F_CPU >= 2000000L) {
TCCR4B = (1<<CS42) | (1<<CS40) | (1<<PSR4);
prescaler = 16.0;
} else if (F_CPU >= 1000000L) {
TCCR4B = (1<<CS42) | (1<<PSR4);
prescaler = 8.0;
} else if (F_CPU >= 500000L) {
TCCR4B = (1<<CS41) | (1<<CS40) | (1<<PSR4);
prescaler = 4.0;
} else {
TCCR4B = (1<<CS41) | (1<<PSR4);
prescaler = 2.0;
}
tcnt2 = (int)((float)F_CPU * 0.001 / prescaler) - 1;
OCR4C = tcnt2;
TIFR4 = (1<<TOV4);
TCNT4 = 0;
TIMSK4 = (1<<TOIE4);
}
#endif