Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unsigned int timer1_counter; // Variavel Para valor de precontagem de timer1
- long freq; // Variavel para contagem
- unsigned long tempo; // Variavel para tempo de calculo
- unsigned long intervalo = 1000; // Variavel para intervalo de medida
- #define DEBUG;
- //--------------------------
- void setup()
- {
- #ifdef DEBUG; // Bloco para debug
- // TCCR2B = TCCR2B & B11111000 | B00000001; // Define frequencia PWM para D3 & D11 31250
- TCCR2B = TCCR2B & B11111000 | B00000010; // Define frequencia PWM para D3 & D11 3906.25
- // TCCR2B = TCCR2B & B11111000 | B00000011; // Define frequencia PWM para D3 & D11 976.5625
- // TCCR2B = TCCR2B & B11111000 | B00000100; // Define frequencia PWM para D3 & D11 488.28125
- // TCCR2B = TCCR2B & B11111000 | B00000101; // Define frequencia PWM para D3 & D11 244.140625
- // TCCR2B = TCCR2B & B11111000 | B00000110; // Define frequencia PWM para D3 & D11 122.0703125
- // TCCR2B = TCCR2B & B11111000 | B00000111; // Define frequencia PWM para D3 & D11 30.517578125
- pinMode(11, OUTPUT); // Define port como output
- analogWrite(11, 240); // Saida PWM no Port 11
- #endif; // Bloco para debug
- Serial.begin(115200); // Habilita serial em 115200
- noInterrupts(); // Desabilita todos interrupts
- TCCR1A = 0; // Limpa registrador de controle de timer1
- TCCR1B = 0; // ==
- timer1_counter = 65535; // Tempo 65535 - overflow a cada 10 pulsos
- TCNT1 = timer1_counter; // Tempo pre carregado
- TCCR1B |= (1 << CS12); // Usa pulso externo
- TCCR1B |= (1 << CS11); // ==
- TCCR1B |= (1 << CS10); // ==
- TIMSK1 |= (1 << TOIE1); // Habilita timer1 overflow interrupt
- interrupts(); // Habilita todos interrupts
- tempo = millis(); // Atualiza tempo
- }
- //--------------------------
- ISR(TIMER1_OVF_vect) // Servico de interrupcao do time1
- {
- TCNT1 = timer1_counter; // recarrega temp
- freq++; // Incrementa contage de frequencia
- }//--------------------------
- void tacometro()
- {
- if ((millis() - tempo) > intervalo)
- {
- Serial.println(freq); // Calcula RPM com base em 60 segundos
- freq = 0; // Zera contagem
- tempo = millis(); // Atualiza tempo
- }
- }
- //--------------------------
- void loop()
- {
- tacometro();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement