Bueno probe toda la noche y estoy 100% seguro que el codigo esta bien!!! no se por que no me nada....
Code:
Timer0:
#INT_TIMER0
void Desbordamiento()
{
PasosDimer++;
if (PasosDimer == Intencidad){ //Ensiende el Trian
triac_on;
LED3_ON;
}
if (PasosDimer == Intencidad + 2 ){ //Espera 100 Us para apagar el Triac
triac_off;
LED3_OFF;
}
}
Interrupcion:
#INT_EXT
void CrucePor0()
{
set_timer0(Periodo);
PasosDimer=0;
Intencidad = 197; //Regulo la intencidad manual mente por ahora variando esta variable y compilando (de 1 a 195)
if (j==0){
j=1;
LED1_OFF;
LED2_OFF;
ext_int_edge(H_TO_L); // Cambio la detección del flanco, para que la proxima sea de bajada
} else {
j=0;
LED2_ON;
LED1_ON;
ext_int_edge(L_TO_H); // La próxima interrupción será de subida
}
}
Variables y Definiciones:
#define triac_on OUTPUT_BIT(pin_a1,1)
#define triac_off OUTPUT_BIT(pin_a1,0)
#define LED1_ON OUTPUT_BIT(pin_c0,1)
#define LED1_OFF OUTPUT_BIT(pin_c0,0)
#define LED2_ON OUTPUT_BIT(pin_c1,1)
#define LED2_OFF OUTPUT_BIT(pin_C1,0)
#define LED3_ON OUTPUT_BIT(pin_c2,1)
#define LED3_OFF OUTPUT_BIT(pin_c2,0)
//CONSTANTE
const int Periodo=255; //255; //Tiempo total q demora cada medio ciclo
//VARIABLES
int PasosDimer; // se incrementa en 1 cada X vueltas del timer, coincidendo con la captura de bits del mando
int Intencidad; //Variable de
int j=0; // Identifica Cruce por 0 si es alto o bajo
No se fijate que el codigo hace lo correcto pero el pic no entra nunca al maldito IF q prende el Triac