TODOPIC

Otros Microcontroladores / Dispositivos programables => Microcontroladores ARM => Mensaje iniciado por: GRUNFELD69 en 18 de Abril de 2011, 16:29:54

Título: INTERRUPCION CADA 100 ms
Publicado por: GRUNFELD69 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.
Título: Re: INTERRUPCION CADA 100 ms
Publicado por: LABmouse 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.



Título: Re: INTERRUPCION CADA 100 ms
Publicado por: GRUNFELD69 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);
}
Título: Re: INTERRUPCION CADA 100 ms
Publicado por: LABmouse 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);
Título: Re: INTERRUPCION CADA 100 ms
Publicado por: GRUNFELD69 en 25 de Abril de 2011, 12:45:34
Perfecto!!! tienes toda la razon, agregue las lineas de codigo y funciono. Te agradezco muchisimo :-/