Hola masters,.... respecto al ciclo de la interrupcion del tmr1 aun no lo escribi porque se me planto en algo más basico que es el error que reporto tan solo por escribir #int_timer1 de todas maneras ahi va el codigo de menu_setup.c
//////////////////////////////////funcion para setup inicial de valores y parametros
void menu_setup(void)
{
///////////////////////////////////////////////////////////////////subrutina para cargar los valores desde eeprom a las variables de pm, rm, y hemisferio
rm=read_int32_eeprom(0); // leo la eeprom mediante la rutina de numeros grander y lo casigno a la variable, le doy 4 bytes de espacio por las dudas
pm=read_int32_eeprom(4); //leo la eeprom mediante la rutina de numeros grandes
hemisferio=read_eeprom(
; //leo variable hemisferio, 0 sur, 1 norte.
if (rm < 2277){
rm=2277; //cargo valor minimo en variable reduccion mecanica
write_int32_eeprom(0, rm);
}
if (pm < 180){
pm=180; //cargo valor minimo en variable pasos de motor
write_int32_eeprom(4, pm);
}
///////////////////////////////////////////////////////////////////////////subrutina para seteo de valores de pm, rm y hemisferio
lcd_putc("\f" ); //limpia lcd
vlcd=cs;
lcd_string(); //muestro "config"
lcd_gotoxy(1,2); //muevo cursor
vlcd=cs2;
lcd_string(); //muestro "sistema?"
teclado_menu_inicio(); //funcion para setear valores iniciales
////////////////////////////////////////// subrutina para calcular el valor de tmr1 y seg_paso que es el avance en segundos de arco por cada accion del motor
//calculos varios
seg_paso = ((360)/(pm*2)*(3600))/rm; //calculo cuantos segundos de arco recorre el eje RA en cada paso del motor
pasos_por_segundo_sidereo = seguimiento / seg_paso; //calculo cuantos pasos tengo que dar por segundo sidereo para seguir un astro
inter = 0.99726851 / pasos_por_segundo_sidereo; //calculo cada cuantos milisegundos tengo que dar el paso de seguimiento
//seteando el tmr1 para que produzca una interrupcion cada los milisegundos que indique inter
t1= 65536 - (inter * 20000000)/(4 *
; // calculo el valor de tmr1
diametro = 11.5 / seg_paso; //calculo el diametro maximo de espejo utilizable en la montura. En pulgadas esta el valor resultante
/////////////////////
lcd_putc("\f" ); //limpia lcd
vlcd=Vespejo;
lcd_string();
unidad=Vcm; //cargo variable unidad con "cm"
vlcd_int=(int16)diametro; //muestro valor de diametro maximo en lcd
lcd_int16(); //muestro el valor diametro maximo en cm
//lcd_gotoxy(1,2); ///////////////////////para mostrar diametro con decimales por si nos sobra memoria
//printf(lcd_putc,"%4.2f%s",diametro,unidad); //imprimo segunda fila/
while(!input(PIN_C1)); //bucle, mientras no se apriete el boton OK la pantalla mostrará el valor de diametro maximo
delay_ms(50); //rebote
if(input(PIN_C1)) //vuelvo a preguntar
{
while(input(PIN_C1)); //espero a que suelte la tecla OK
}
}
La funcion de eeprom tiene el nombre modificado pero es la libreria "internal_eeprom.c" Si es necesario el codigo lo pongo pero sino podemos ahorrar espacio en este post..
Gracias