ontares Inserito: 20 ottobre 2011 Segnala Inserito: 20 ottobre 2011 Salve a tutti,sto scrivendo del codice per un micro delle Renesas R8C/M11A. Sono riuscito a configurare tutto l'hradware che mi serve, ma ora mi sono fermato sulla cosa che credevo più facile: voglio azionare il Timer Rj2 interno al micro e attreverso gli interrupt comandare l'accensione/spegnimento di un led.Ho scritto il codice che riporto nelle prossime righe, ma non funziona niente. Sapreste dirmi dove ho sbagliato.GrazieOntaresvoid initTimerRJ2(void){ tstart_trjcr = 0; //Timer RJ Control Register: TRJCR tstart_trjcr = 0; // Timer RJ count start bit //tcstf_trjcr = 0; // Timer RJ count status flag tstop_trjcr = 0; // Timer RJ count forced stop bit tedgf_trjcr = 0; // Active edge judgment flag tundf_trjcr = 0; // Timer RJ underflow flag //Timer RJ I/O Control Register: TRJIOC tedgsel_trjioc = 0; // I/O polarity switch bit topcr_trjioc = 0; // TRJIO output control bit //tipf0_trjioc = 0; // TRJIO input filter select bit tipf1_trjioc = 0; // TRJIO input filter select bit tiogt0_trjioc = 1; // TRJIO count control bit tiogt1_trjioc = 1; // TRJIO count control bit //Timer RJ Mode Register: TRJMR tmod0_trjmr = 0; // Timer RJ operating mode select bit tmod1_trjmr = 0; // Timer RJ operating mode select bit tmod2_trjmr = 0; // Timer RJ operating mode select bit tedgpl_trjmr = 0; // TRJIO edge polarity select bit tck0_trjmr = 0; // Timer RJ count source select bit tck1_trjmr = 0; // Timer RJ count source select bit tck2_trjmr = 0; // Timer RJ count source select bit tckcut_trjmr = 0; // Timer RJ count source cutoff bit //Timer RJ Event Select Register: TRJISR rccpsel0_trjisr = 0; // Timer RC output signal select bit rccpsel1_trjisr = 0; // Timer RC output signal select bit rccpsel2_trjisr = 0; // Timer RC output signal inversion bit //Timer RJ Interrupt Control Register: TRJIR trjif_trjir = 0; // Timer RJ interrupt request flag trjie_trjir = 1; // Timer RJ interrupt enable bit //Timer RJ Counter Register: TRJ trj=4000; //(1/20M)*20000=200us //Interrupt Priority Level Register B: ILVLB ilvlb0 = 1; // Interrupt priority level setting bit ilvlb1 = 0; // Interrupt priority level setting bit ilvlb4 = 0; // Interrupt priority level setting bit ilvlb5 = 0; // Interrupt priority level setting bit tstart_trjcr = 1;}#pragma interrupt _timer_rj2(vect=22)void _timer_rj2(void);void _timer_rj2(void){ asm("FCLR I"); trjif_trjir = 0; /* Timer RJ interrupt request flag */ switchLedOnOff(); asm("FSET I");}
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora