MPLAB X IDE V5.30
之前 ATtiny85 無法中斷,更新 V5.30 版之後就正常.
這次 ATmega16 搭配 MPLAB X IDE V5.30 又發生無法模擬中斷事件..
MPLAB X IDE V5.30 之後又無法使用 32bit MPASM Compiler,所以不想升級了.#define F_CPU 1000000UL
#include
/* AVR register stuff */
#include /* AVR interrupt */
#include /* AVR program memory space */
#include /* AVR delay */
volatile unsigned char porta;
void initialize_cube (void)
{
/* Frame buffer interrupt */
TCNT2 = 0x00; /* Initial counter value 0 */
TIMSK |= (1 << OCIE2); /* Enable CTC interrupt */
/* Every 1024th cpu cycle, a counter is incremented.
* Every time that counter reaches 5, it is reset to 0
* and the interrupt routine is executed.
* 1000000/1024/5 = 195 hz refresh
* There are 5 layers to update..
* 195 hz / 5 layers = 39 FPS
*/
OCR2 = 50; /* Interrupt if counter hold value 5 */
TCCR2 = 0x02; /* Prescaler set to 1024 */
TCCR2 |= (1 << WGM01); /* Clear Timer on Compare Match (CTC) mode */
/* Set data direction on all ports to output */
DDRA = 0xFF; /* Data direction PORTA to output */
/* Enable interrupts */
sei();
}
ISR(TIMER2_COMP_vect)
{
porta++;
PORTA = porta;
}
int main (void)
{
initialize_cube(); /* Set timers, interrupts, I/O ports */
while(1) {
__asm__("nop");
__asm__("nop");
__asm__("nop");
__asm__("nop");
}
}