Autor Tema: INTERRUPCION CADA 100 ms  (Leído 2750 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado GRUNFELD69

  • PIC10
  • *
  • Mensajes: 37
INTERRUPCION CADA 100 ms
« en: 18 de Abril de 2011, 16:29:54 »
Hola foreros: En esta ocasion deseo pedir ayuda acerca de como poder activar una interrupcion por software (no importa el canal) para un microcontrolador JM60. Mi intención es leer un canal ADC cada 100 ms.

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: INTERRUPCION CADA 100 ms
« Respuesta #1 en: 18 de Abril de 2011, 17:28:13 »
Hola GRUNFELD,

Para ello puedes usar el RTC del JM60.  Inclusive, puedes programar el RTC para que de manera automática de una orden al ADC y este a su vez te daría una interrupción cada vez que termina un conversión AD.

Puedes guiarte con el Processor Expert para que veas como genera código para ello.




Desconectado GRUNFELD69

  • PIC10
  • *
  • Mensajes: 37
Re: INTERRUPCION CADA 100 ms
« Respuesta #2 en: 18 de Abril de 2011, 17:58:25 »
Bueno intente activar el modulo RTC pero desafortunadamente no hace nada. Aqui copio un trozo del codigo esto lo coloque en el main

#include "EFmJM60_StackConfig.h"   //Libreria de Configuracion Global
#include "lcd_16x2_h.h"


/********************************************************************/
/*---------- Espacio para declaracion de constantes  ---------------*/
/********************************************************************/




/********************************************************************/
/*------- Espacio para declaracion de variables globales  ----------*/
/********************************************************************/
 

/********************************************************************/
/********************************************************************/
/*-------------------- Espacio para funciones  ---------------------*/
/********************************************************************/
 #define enable_interrupts(INT_RTC);
 

/********************************************************************/
/********************************************************************/
/*------------------- Espacio de codigo principal ------------------*/
/********************************************************************/                     
void main(void) {
mcu_init();                   //Inicializa microcontrolador (No Borrar)
delay_ms(1000);
LCD_init(DISPLAY_10X5|_2_LINES , DISPLAY_ON);
delay_ms(1000);
LCD_pos_xy(0,0);
LCD_write_string("VOLTAJE: ");
setup_adc_clock(ADC_CLOCK_DIV_4);
setup_adc_ports(AN6);
RTC_init(100);


  for(;;)
 
  }
}
 
y esta en la interrupcion esta


interrupt void isr_INT_RTC(void){
  set_adc_channel(ChAN6);
  dato_adc=read_adc();
  bin_to_string(dato_adc,medida);
  LCD_pos_xy(9,0);
  LCD_write_string(medida);
  clear_interrupt(INT_RTC);
}

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: INTERRUPCION CADA 100 ms
« Respuesta #3 en: 25 de Abril de 2011, 10:15:58 »
hola,

solo te falta esto:


Código: C
  1. /*Habilita interupcion por TIMER RTC*/
  2.         enable_interrupt(INT_RTC);
  3.  
  4.  
  5. /*Habilita interupcion por TIMER RTC*/
  6.         enable_interrupt(INT_GLOBAL);

Desconectado GRUNFELD69

  • PIC10
  • *
  • Mensajes: 37
Re: INTERRUPCION CADA 100 ms
« Respuesta #4 en: 25 de Abril de 2011, 12:45:34 »
Perfecto!!! tienes toda la razon, agregue las lineas de codigo y funciono. Te agradezco muchisimo :-/


 

anything