Vai al contenuto
PLC Forum


Timer Rj2 On R8c/m11a By Renesas - problema nell'abilitazione di un timer


ontares

Messaggi consigliati

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.

Grazie

Ontares

void 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");

}

Link al commento
Condividi su altri siti


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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...