//Inicializar pino de I/O para o sinal da roda fônica e para identificar a falha //Inicializar um contador //Inicializar uma interrupção de 1u //Inicializar uma interrupção externa //Identificar a falha long int t; long int T; int ext; void EInt1_OnInterrupt(void) { //Bits1_NegBit(1); ext ++; if (ext == 1) { FC1_Reset(); Bits1_PutBit(1,FALSE); } if (ext == 2) { T = TPM2CNT; FC1_Reset(); } if(ext == 3) { t = TPM2CNT; FC1_Reset(); if (t > 2*T) { //Bits1_NegBit(1); Bits1_PutBit(1,TRUE); ext=0; } else { ext = 2; T = t; } } } //Gerar o sinal da roda fônica por interrupção int tempo; int dente; void TI1_OnInterrupt(void) { /* Write your code here ... */ tempo ++; switch (tempo) { case 1: Bits1_PutBit(0,TRUE); break; case 2: Bits1_PutBit(0,FALSE); break; case 5: dente++; if(dente<58) { tempo=0; } if(dente==58) { tempo=6; } break; case 15: tempo=0; dente=0; break; } } /* END Events */