Bonjour et bonne année a tous .
Je communique en rs232 entre deux pic ( liaison irda ) .
Mon problème se trouve au niveau des interruptions .
Avec un debbuger icd2 , les interruptions fonctionnent 3 voir 4 fois puis après plus rien .
Sans icd2 , les interruptions ne fonctionnent plus du tout .
j'utilise le compilateur ccs et un 18f4550 a 4Mhz.
Pourriez vous me dire ou est le problème dans mon programme ?
Code://///////////////////////////////////////////////////////////////////////////// // DECLARATION DES VOIDS // /////////////////////////////////////////////////////////////////////////////// void code (void); void emmission(void); void reception(void); /////////////////////////////////////////////////////////////////////////////// // VARIABLES // /////////////////////////////////////////////////////////////////////////////// int codage ; // codage int lecture ; // valeur reçu /////////////////////////////////////////////////////////////////////////////// // interruption sur rx // /////////////////////////////////////////////////////////////////////////////// #int_RDA RDA_isr() { reception(); code(); if(lecture==codage) { output_bit(pin_a2,1); delay_ms(1000); output_bit(pin_a2,0); emmission(); } else { output_bit(pin_a1,1); delay_ms(1000); output_bit(pin_a1,0); } } /////////////////////////////////////////////////////////////////////////////// // EMMISSION // /////////////////////////////////////////////////////////////////////////////// void emmission (void) { putchar(codage); //envoi } /////////////////////////////////////////////////////////////////////////////// // RECEPTION // /////////////////////////////////////////////////////////////////////////////// void reception (void) { lecture=getchar(); // enregistre la valeur en rx } /////////////////////////////////////////////////////////////////////////////// // PERMET DE DETERMINERLE CODE /////////////////////////////////////////////////////////////////////////////// void code (void) { codage=0; codage=input_d(); // permet de detectée le codage } /////////////////////////////////////////////////////////////////////////////// // programme principle // /////////////////////////////////////////////////////////////////////////////// void main() { setup_adc_ports(NO_ANALOGS|VSS_VDD); setup_adc(ADC_OFF); setup_psp(PSP_DISABLED); setup_spi(FALSE); setup_wdt(WDT_OFF); setup_timer_0(RTCC_INTERNAL); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_timer_3(T3_DISABLED|T3_DIV_BY_1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); enable_interrupts(INT_RDA); enable_interrupts(GLOBAL); setup_oscillator(False); setup_uart(TRUE); set_tris_d(0b11111111); while (1) { code(); } }
-----