Autor | Mensaje |
---|
| Asunto: El pic se queda colgado Publicado: 15 Mar, 2011 - 02:07 |
| 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;}
}
} |
| |
|
| |  | | Asunto: Publicado: 15 Mar, 2011 - 03:35 |
| Fanatico de la Electronica


Registrado: 14 Ago, 2005
Mensajes: 1894
|
| 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 |
| |
|
| |  | | Asunto: Publicado: 18 Mar, 2011 - 03:21 |
| Fanatico de la Electronica


Registrado: 14 Ago, 2005
Mensajes: 1894
|
| 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) |
| |
|
| |  | | Asunto: Publicado: 22 Feb, 2017 - 11:18 |
| Nuevo en el Foro

Registrado: 22 Feb, 2017
Mensajes: 9
|
| | |  | | Asunto: Publicado: 24 Feb, 2017 - 06:01 |
| Fanatico de la Electronica


Registrado: 14 Ago, 2005
Mensajes: 1894
|
| 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 |
| |
|
| |  | | Asunto: Publicado: 23 Abr, 2017 - 03:49 |
| Nuevo en el Foro

Registrado: 23 Abr, 2017
Mensajes: 4
|
| hola!
buscado durante mucho tiempo esta información, gracias! |
_________________ 192.168.1.1 | |
|
| |  | | Asunto: Publicado: 13 Ene, 2018 - 05:14 |
| Experto

Registrado: 27 Sep, 2017
Mensajes: 126
|
| | |  |
|
|