/* Function: interrupciones_init Inicializa la tabla de vectores de atencion a rutinas */ void interrupciones_init(void) { mbar_writeByte(MCFSIM_PIVR, V_BASE); // Fija comienzo de vectores de interrupción en V_BASE. ACCESO_A_MEMORIA_LONG(DIR_VTMR0) = (ULONG) _prep_TOUT0; // Escribimos la dirección de la función para TMR0 ACCESO_A_MEMORIA_LONG(DIR_VTMR1) = (ULONG) _prep_TOUT1; // Escribimos la dirección de la función para TMR1 ACCESO_A_MEMORIA_LONG(DIR_VTMR2) = (ULONG) _prep_TOUT2; // Escribimos la dirección de la función para TMR1 habilitar_interrupciones(); }
// Descripción: // Función de inicialización del TIMER0 // // Argumentos de Entrada: VOID // Argumentos de Salida: VOID // // Autores: Equipo docente de SDII //------------------------------------------------------------------------------ void timers_init (void) { mbar_writeByte(MCFSIM_PIVR,V_BASE); // Fija comienzo de vectores de interrupción en V_BASE. ACCESO_A_MEMORIA_LONG(DIR_VTMR0)= (ULONG)_prep_TOUT0; // Escribimos la dirección de la función para TMR0 mbar_writeShort(MCFSIM_TMR0, (PRESCALADO_TMR0-1)<<8|0x3D); // TMR0: PS=1-1=0 CE=00 OM=1 ORI=1 FRR=1 CLK=10 RST=1 mbar_writeShort(MCFSIM_TCN0, 0x0000); // Ponemos a 0 el contador del TIMER0 mbar_writeShort(MCFSIM_TRR0, CNT_INT0); // Fijamos la cuenta final del contador }