FAQ FAQ  •  Buscar Buscar  •  Registrarse Registrarse  •  Entre para ver sus mensajes privados Entre para ver sus mensajes privados
Login Login

El pic se queda colgado
Índice de los Foros Electronica Facil » FOROS ELECTRONICA » Microcontroladores PIC
Publicar nuevo tema   Responder al tema
Ver tema anteriorEntre para ver sus mensajes privadosVer tema siguiente
AutorMensaje
chamita
Asunto: El pic se queda colgado MensajePublicado: 15 Mar, 2011 - 01:07
Nuevo en el Foro
Nuevo en el Foro


Registrado: 14 Mar, 2011
Mensajes: 1

Buenas noches amigos de la comunidad. Soy nueva en todo esto. Espero me sirvan de apoyo en este problema que causa en mi microcontrolador 18f4550. Surge el inconveniente que el mismo esta programado para enviar datos por teclado y mostrarlos en una pantalla lcd.Estos datos son nivel, flujo y presion. Se diseño una hmi creando para ello un sitio virtual y por lo que la programacion cuando es enviada desde una pagina web hacia el micro este se cuelga, les envio la programacion a ver en que me ayudan. la comunicaion es serial

esta es la codificacion para el micro pero no veo donde esta el desborde del timer que me hace se cuelgue el micro. Por favor su aporte es esencial para seguir trabajando en la mejora de la comunicacion de la hmi. Gracias

/ CONTROL DE NIVEL
// SENSOR FLUJO RS-257-149
//**************************

#include <18F4550.h>
#device adc=10 //resolucion de 10bit
#FUSES XT,NOWDT,NOPROTECT,NOBROWNOUT,NOPUT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,VREGEN
#USE delay(clock=4000000) // CRYSTAL

#include <stdlib.h>
#include <usb_nivel.h>
#include <lcd420.c>

#USE FAST_IO(A)
#USE FAST_IO(B)
#USE FAST_IO(C)
#USE FAST_IO(D)
#USE FAST_IO(E)

#bit MODO_AUTO =0X0F80.1 //RA1
#bit MODO_MAN =0X0F80.2 //RA2
#bit VALVULA =0X0F83.0 //RD0
#bit BOMBA =0X0F82.2 //RRC2

BYTE MODO=0;
LONG FLUJO=0,SP_NIVEL=0;
CHAR TEMPUSB=0;
FLOAT PRESION=0,NIVEL=0,TEMP=0;

VOID MENU();
VOID MEDICION();
VOID VER_LCD();

//--------------------
VOID MAIN()
{
// CONFIGURACION DE PUERTOS
setup_adc_ports (AN0);
setup_adc(ADC_CLOCK_DIV_64); //ADC_CLOCK_DIV_64
set_tris_a(0x01);//PORTA SALIDA-ENTRADA
set_tris_b(0x00);//PORTB SALIDA
set_tris_c(0x01);//PORTC SALIDA-ENTRADA
set_tris_d(0x00);//PORTD SALIDA
set_tris_e(0x00);//PORTE SALIDA

MODO_AUTO=0;
MODO_MAN=1;
VALVULA=0;
BOMBA=0;

lcd_init();
lcd_putc("\f"); //borra lcd

// PRESENTACION EN LCD
lcd_gotoxy(1,1);
lcd_putc(" MODULO CONTROL");

lcd_gotoxy(1,2);
lcd_putc(" NIVEL DE AGUA ");

lcd_gotoxy(1,3);
lcd_putc(" -- TG. MG --");

lcd_gotoxy(1,4);
lcd_putc(" **UNEXPO** ");

DELAY_MS(3000);

lcd_putc("\f"); //borra lcd



usb_cdc_init();

usb_init();

while(!usb_cdc_connected())
{

lcd_gotoxy(1,3);
lcd_putc(" MODULO ");
lcd_gotoxy(1,4);
lcd_putc("SIN COMUNICACION");
DELAY_MS(1000);
lcd_putc("\f"); //borra lcd
DELAY_MS(1000);
}




DO{

usb_task();
if (usb_enumerated())
{

//DATA USB RECIBIDA
IF (usb_cdc_kbhit())
B {
TEMPUSB=usb_cdc_getc();

//-----
//COMANDOS
IF(TEMPUSB=='A') //MODO DE CONTROL AUTO
{

MODO=1; //AUTO
VALVULA=0;
BOMBA=0;
}
IF(TEMPUSB=='B') //MODO DE CONTROL MANUAL
{
MODO=0; //MANUAL
VALVULA=0;
BOMBA=0;
}


//VISUALIZACION EN LCD
VER_LCD();



//----- CONTROL MANUAL

IF(MODO==0)// MODO MANUAL
{

IF(TEMPUSB=='C')
VALVULA=1; //OPEN VALVULA

IF(TEMPUSB=='D')
VALVULA=0; //CLOSE VALVULA

IF(TEMPUSB=='E') // ON BOMBA
BOMBA=1;

IF(TEMPUSB=='F') // OFF BOMBA
BOMBA=0;
}




//-----

IF(MODO==1)// MODO AUTO
{

IF(TEMPUSB=='G') //COMANDO DESDE HMI PARA CARGA SP
{
WHILE (!usb_cdc_kbhit()){}
SP_NIVEL=usb_cdc_getc();
}

IF(NIVEL>SP_NIVEL)// NIVEL ES MAYOR QUE SP?
{BOMBA=0; VALVULA=1;}
ELSE
{BOMBA=1; VALVULA=0; }
}







}


//VISUALIZACION EN LCD
VER_LCD();

}

}WHILE(1);

}





VOID MEDICION()
{
/// FLUJO
clear_interrupt(INT_TIMER1); //Limpia bandera de sobreflujo
set_timer1(0);
setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1); //Modo contador,Div_F=1
delay_ms(1000);
setup_timer_1(T1_DISABLED); //Apago el timer 1
FLUJO=get_timer1(); //Extraigo dato del Timer1(# pulsos)

/// PRESION
set_adc_channel(0); //Canal AN0
delay_ms(10);
PRESION=read_adc();

PRESION=PRESION-82;
PRESION=PRESION/327;
PRESION=PRESION*1.47;
PRESION=( PRESION + 0.16);

/// NIVEL


NIVEL=(PRESION-1.6);
NIVEL=(NIVEL/1.44);

NIVEL=NIVEL*100;
NIVEL=NIVEL+100;


}

VOID VER_LCD()
{
//VISUALIZACION EN LCD
MEDICION();
//DATA ENVIADA A HMI
printf(usb_cdc_putc,"ABC%03LD%1.2f%1.2F",FLUJO,NIVEL,PRESION);

lcd_gotoxy(1,1);
printf(lcd_putc,"FI=%03LD Lt/Min ",FLUJO);
lcd_gotoxy(1,2);
printf(lcd_putc,"LI=%1.2F cm ",NIVEL);
lcd_gotoxy(1,3);
printf(lcd_putc,"PI=%1.2F mmH2O ",PRESION);

IF(MODO==0)
{
lcd_gotoxy(1,4);
printf(lcd_putc,"MODO=MAN ");
MODO_AUTO=0;
MODO_MAN=1;
}
ELSE
{
lcd_gotoxy(1,4);
printf(lcd_putc,"MODO=AUTO ");
MODO_AUTO=1;
MODO_MAN=0;

IF(NIVEL>SP_NIVEL)// NIVEL ES MAYOR QUE SP?
{BOMBA=0; VALVULA=1;}
ELSE
{BOMBA=1; VALVULA=0;}

}
}
 
 Ver perfil de usuario Enviar mensaje privado  
Responder citando Volver arriba
rina
Asunto:  MensajePublicado: 15 Mar, 2011 - 02:35
Fanatico de la Electronica
Fanatico de la Electronica


Registrado: 14 Ago, 2005
Mensajes: 1892

un saludo de antemano..
la verdad que no creo que asi de primeras te pueda servir de mucha ayuda solo tengo echo alguna cosilla con el 16f84. aunque el programa que tienes hay seve vasante simple, pero no llego a etender que es lo que ace (te puestra informacion que mandas de una web al pic)

no llegue a entender esto y bien...
cuando es enviada desde una pagina web hacia el micro este se cuelga.
o bueno lo que llegue a entender es eso que coje la informacion de una web y la muertra por pantalla (lo que tampoco se como y que protocolos de comunicacion usaste)
que tampoco es que conozca muchos.... jjjeejejej

miraste si la trama de informacion que manda desde la web sea mas grande y por eso desvorde la buffer???

lo que estuve buscando es un chisme que muestra los pulsos altos y bajos, vamos las transiciones de 1, 0, -1, en un periodo de tiempo te aconsejava ver conectando ese chisme ala entrada + y - del usb y examinar como la la trama de informacion de uno y del otro (lo mas seguro sea algun biblioteca que tengas mal abierta en el pc cuando envias la informacion al pic o viceversa que el el pic no te adactes a ese problema aun asi para entenderlote aconsegava mirarlo por el chisme ese.. jejejejej
bueno o tambien acer un programa simple donde almacenes en la epron la informacion asta que se cuelgue y la miras por el cachivache ese.
(pongamos que yo muchas veces si no se como va a interpretar algo el pic siempre trato de acer pequeñas partes de programa y almacenar los valores en la epron para despues leer el pic y mirar como lo interpreto)
intenta acer un programa mas simple paramirar el fallo.

(y bueno como dije normal mente lo que ago son pequeños programas o bueno segun voy tanteandolo es algo grande pero despues de entenderlo ya siempre se puede dejar en una subrrutina o cacho de programa mas simplificado solucionando posibles errores) lo bueno de trabajas asi que si quiero una parte de ese programa solo tengo que copiar el cacho o la subrrutina)

en tu caso te aconsejava que te concentrases mas en las trasferencias de dados y bueno segun vayas aprendiendo vayas dejando distintos programas ehos con las distintas variantes o fallos o terminar aciendo uno valido para todo lo que vayas hacer con el pic y despues ya te pones con otras cosas como el transferir informacion ala pantalla.. que igual es el problema igual estras trasfiriendo ala pantalla informacion y de golpe te manda la informacion de la web y la pañas amedias adiendo que se desvorde la buffer al no terminar de leer.. nose deveria entender un poco mas el como funciona eso.. pero ya tedigo aprovechate de la etron o algunos diodos para sacer en que parte del programa estas y si algunos valores no saves lo que te van a dar usa la epron para almacenarlos y despues lo lees desde el pc y lo estudias

un saludo
 
 Ver perfil de usuario Enviar mensaje privado  
Responder citando Volver arriba
rina
Asunto:  MensajePublicado: 18 Mar, 2011 - 02:21
Fanatico de la Electronica
Fanatico de la Electronica


Registrado: 14 Ago, 2005
Mensajes: 1892

y me pregunto te pusiste con algo e lo quete comente o estas como la mayoria aver si le dan un trabajo ya echo...
ami tambien me gusta ver y estudiar ciruitos echos por otros (y alo tonto y bobo voy comprendiendo un poco esos lenguejes y las funciones de las bibliotenas o partes de programas ya ehos)
 
 Ver perfil de usuario Enviar mensaje privado  
Responder citando Volver arriba
sova105
Asunto:  MensajePublicado: 22 Feb, 2017 - 10:18
Nuevo en el Foro
Nuevo en el Foro


Registrado: 22 Feb, 2017
Mensajes: 10

Saludos! Lo siento, eso no es el tema! Me gusta mucho tu foro! Gracias, estoy contigo)

_________________
88sears com associates schedule
 
 Ver perfil de usuario Enviar mensaje privado  
Responder citando Volver arriba
rina
Asunto:  MensajePublicado: 24 Feb, 2017 - 05:01
Fanatico de la Electronica
Fanatico de la Electronica


Registrado: 14 Ago, 2005
Mensajes: 1892

sova105 escribió:
Saludos! Lo siento, eso no es el tema! Me gusta mucho tu foro! Gracias, estoy contigo)


no se si sera por mi, pero este no es mi foro... simplemente que puedo poner libremente a mas de algun fitipaldi en su sitio sin censuras.. mas cuando solo bienen buscando algo ya echo no una ayuda o empuje para desarrorllarlo.

un saludo
 
 Ver perfil de usuario Enviar mensaje privado  
Responder citando Volver arriba
malkovich
Asunto:  MensajePublicado: 23 Abr, 2017 - 02:49
Nuevo en el Foro
Nuevo en el Foro


Registrado: 23 Abr, 2017
Mensajes: 4

hola!
buscado durante mucho tiempo esta información, gracias!

_________________
192.168.1.1
 
 Ver perfil de usuario Enviar mensaje privado  
Responder citando Volver arriba
Mostrar mensajes anteriores:     
Cambiar a:  
Todas las horas son GMT + 1 Hora
Publicar nuevo tema   Responder al tema
Ver tema anteriorEntre para ver sus mensajes privadosVer tema siguiente
 Índice de los Foros Electronica Facil » FOROS ELECTRONICA »  Microcontroladores PIC
powered by phppowered by MySQLPOWERED BY APACHEPOWERED BY CentOS© 2004 - 2017Información LegalPrensa