ผมใช้ Atmega328p มีปัญหาคือ ถ้าผมเปิดใช้ timer 2 ตัวพร้อมกันจะทำให้ timer ไม่ทำงาน
ผมพลาดตรงไหน รบกวนช่วยดูให้หน่อยครับ
Quote
// Set the Timer Mode to CTC
TCCR0A |= (1 << WGM01);
// Set the value that you want to count to
OCR0A = 125;
TIMSK0 |= (1 << OCIE0A); //Set the ISR COMPA vect
sei(); //enable interrupts
TCCR0B |= (1 << CS01);
// set prescaler to 256 and start the timer
ถ้าอย่างนี้ ใช้งานได้ปกติ
แต่ถ้าเพิ่มตรงนี้ Timer จะไม่ทำงานเลย
Quote
TIMSK2 |= (1 << OCIE2A);
//Set interrupt on compare match
TCCR2B |= (1 << CS21);
// set prescaler to 64 and starts PWM
ผมพลาดตรงไหน รบกวนหน่อยครับ
ขอบคุณครับ
__disable_interrupt(); // disable interrupt
TCCR0A = 0x02; // CTC, normal operation
TCCR0B = 0x02; // prescaler8
OCR0A = 125; // set value
TIMSK0 = 0x02; // Compare Match A Interrupt Enable
TCCR2A = 0x02; // CTC, normal operation
TCCR2B = 0x02; // prescaler8
OCR2A = 125; // set value
TIMSK2 = 0x02; // compare match A interrupt enable
//~ TCCR2A = 0x00; // timer, normal operation
//~ TCCR2B = 0x02; // prescaler8
//~ TCNT2 = 125; // set value
//~ TIMSK2 = 0x01; // Timer/Counter2 Overflow Interrupt Enable
__enable_interrupt(); // enable interrupt