Página 1 de 1

Interrupção 18F4550 com Mikroc

MensagemEnviado: 27 Ago 2010 23:02
por dremel
Alguem sabe como usar interrupção no mikroc, preciso usar para gerar um evento mas não consigo nem no simulador nem no debuger.
Os registros TMR0L e TMR0H não são acrescentados, estão sempre em zero.
Postei parte do código para análise para ver onde pode estar o erro.

int cont;

// inicializa interrupcoes
void TMR0_init(){
TMR0L = 0; //limpa TMR0L
INTCON = 0xA0; //habilita TMRO
T0CON = 0x80;
}

// leitura AD
void _ad(){ //rotina AD
CMCON=7; //comparadores desligados
ADCON1=7; //canal A analogico
TRISA=1; //AN0 entrada e restante saida
_ad0=ADC_Read(0); //le e guarda valor
_ad0=(_ad0/2); //converte 1024 para 255
byteToStr(_ad0,num1); //converte numero para string
}

// controle Backlight
void _back(){ //rotina backlight
PWM1_Init(2000); //configura PWM com 10Khz
PWM1_Start(); //start do PWM
PWM1_Set_Duty(_ad0); //coloca valor lido pelo AD para setar PWM
}


// interrupcao
void interrupt(){
cont++; // Increment value of interval on every interrupt
INTCON = 0x20;
}

// escrita GLCD
void _lcd(){ //rotina lcd
//Glcd_Fill(0); // limpa GLCD
Glcd_Write_Text("vaz ele", 22, 0, 1);
Glcd_Write_Text("tronics", 64, 0, 1);
Glcd_Write_Text("eixo X:", 0, 2, 1);
Glcd_Write_Text(num1, 46, 2, 1);
Glcd_Write_Text("eixo Y:", 0, 3, 1);
Glcd_Write_Text(num1, 46, 3, 1);
Glcd_Write_Text("eixo Z:", 0, 4, 1);
Glcd_Write_Text(num1, 46, 4, 1);
delay_ms(100);
}

// rotina MAIN
void main(){ //rotina main
Glcd_Init(); // initializa GLCD
Glcd_Set_Font(font5x7, 5, 7, 32); // define fonte
Glcd_Image( vaz_bmp );
delay_ms(6000);
Glcd_Fill(0); //limpa GLCD
TMR0_init(); //inicializa Tmr0
while(1){
_lcd();
//_back();
}
}

MensagemEnviado: 03 Set 2010 18:17
por Cleber
Pelo que via aqui vc esta desligando a interrupção dentro do seu void interrupt, tenta assim.

void interrupt(){
if (INTCON.TM0IF){
cont++; // Increment value of interval on every interrupt
INTCON.TM0IF = 0;
}
}

outra coisa se for usar mais de uma interrpção pergunta antes que interrupção aconteceu.

Espero ter ajudado, e se funfar avisa.

MensagemEnviado: 04 Set 2010 14:49
por dremel
Valeu Cleber,
valeu a dica, realmente funcionou.