Oleh : SGO Aplikasi Mikrokontroler (DTG2K3) TIMER/COUNTER Oleh : SGO Aplikasi Mikrokontroler (DTG2K3)
Timer Berhubungan dengan tunda atau delay namun dilakukan secara manual, tidak menggunakan pustaka delay.
Timer ATMEGA8535/328 Timer/Counter 0 Timer/Counter 1 Timer/Counter 2
Fitur Timer ATMEGA8535/328 Timer/Counter 0 dan 2 a. 8 bit timer/counter b. Auto Reload c. Membangkitkan interupsi saat timer overflow
Timer/Counter 1 a. 16 bit timer/counter b. Auto Reload c. Membangkitkan interupsi saat timer overflow d. Memiliki input capture unit
Contoh Penggunaan Timer BLINK LED Pada PORT C menggunakan Timer 1 // Timer1 overflow interrupt service routine interrupt [TIM1_OVF] void timer1_ovf_isr(void) { // Reinitialize Timer1 value TCNT1H=00; TCNT1L=00; // Place your code here if(PINC==0) PORTC=0xFF; } else { PORTC=0x00;
Implementasi Rangkaian
Timer Pada Arduino
Program ISR(TIMER1_OVF_vect) { TCNT1 = 34286; if(dataLed == 0) { dataLed = 1; } else dataLed = 0; digitalWrite(13, dataLed); overflowCount++; void loop() Serial.print("Overflow count = "); Serial.println(overflowCount,DEC); delay(100); boolean dataLed = 0; unsigned int overflowCount = 0; void setup() { Serial.begin(9600); pinMode(13, OUTPUT); TCCR1A = 0; TCCR1B = 0; TCNT1 = 34286; TCCR1B |= (1 << CS12); TIMSK1 |= (1 << TOIE1); sei(); }
Counter
Program // Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) { // Reinitialize Timer 0 value TCNT0=0xFB; // Place your code here if (PINC==0) PORTC=0xFF; } else PORTC=0x00;