/* * DCF77.cpp * * Created: 19/12/2013 14:06:30 * Author: Adrien */ #include "DCF77.h" #include "timer.h" #include #include volatile uint8_t dcf77_bits_capture[6]; //Tableau comportent les bits décoder (6 * 8bits) volatile unsigned long int time_low = 0; volatile unsigned long int time_high = 0; volatile bool dcf77_flag_start = 0; // Drapeau qui permet de savoir si on peut commencé la capture volatile bool dcf77_flag_decode = 0; // " " " " " " " " " le décodage volatile int dcf77_bit_count = 0; // Compte le nombre de bit déja encodé void dcf77::start_capture() { timer1_init(); dcf77_flag_start = 0; DDRD |= 1<= 0 ; y--) { if(z == 0 && !(dcf77_bits_capture[0] >> 8)) //Bit 00 TOUJOURS à 0 { if(decodage_bit_n <= 19) // Bit 00 à 19 ne nous interesse pas {} else if(decodage_bit_n <= 28) //Partie minutes { if((dcf77_bits_capture[z]>>y) && decodage_bit_n == 20) //Bit 20 TOUJOURS à 1 {} else return false; if (decodage_bit_n > 20 && decodage_bit_n <= 28)//Arrivé a la partie minute { if(decodage_bit_n == 21) place_bit = 0; if(decodage_bit_n != 28) { Minute |= ((dcf77_bits_capture[z]>>y) & 0x01) << place_bit; place_bit++; } else if((Minute&0x1) && !((dcf77_bits_capture[z]>>y)&0x01) || !(Minute&0x1) && ((dcf77_bits_capture[z]>>y)&0x01)) {} else return false; } } } else return false; decodage_bit_n++; } } } ISR(INT0_vect) { if(PORTD&(1< 59)//Après le décodage 60e bit { dcf77_flag_start = 0; //Remise a zero du drapeau de démarage dcf77_flag_decode = 1; //Mise a un du drapeau decode dcf77_bit_count = 0; //Mise à zero le nombre de bit decodé } } else //Passage au niveau bas { time_high = millis() - time_high; //Calcul du temps Haut time_low = millis(); //Démarage du comptage du temps bas if(time_high > 800) //Si le Temps bas est > à 800, début de la transmition dcf77_flag_start = 1; } }