⚡ Descuentos en cursos en video - Lleva tu aprendizaje técnico al siguiente nivel y aprovecha precios especiales antes de que termine la oferta. 🔥 Aprovechar oferta ahora 🔥
Microcontroladores y sistemas digitales

mi 18f252 se resetea solo que podra ser?

dosavat
hace 15 años
hace 15 años
Hice una plaqueta de control de velocidad de un motor de DC 30v, por control de ancho de pulso, y con un display de 7 segmentos que indica el porcentaje de velocidad. El problema es que transcurrido cierto tiempo el control se resetea y no se por que?. Me da la impresión que el problema esta en la programación porque no detecto calentamiento o cosas raras en la plaqueta. El pic es 18F252, y me da la impresión que ocurre un reset por falta de configuración de algo o un desbordamiento de alguna variable, pero ya lo revise y me pareció que estaban bien. Me darian una manito?
mammuky
mammuky
640
hace 15 años
hace 15 años
Ok. El WDT esta habilitado? Sino postea codigo o hex y esquema y chuequeamos.- Saludos.-
dosavat
hace 15 años
hace 15 años
//************************************************* //PIC 18F252 //CONTROL MICROMOTOR EGEO CON DISPLAY 7 SEG. Y CONTROL PW // 10-07-2010 //************************************************* #include <p18f252.h> #include <delays.h> // Libreria de demoras delays #include <stdio.h> // Contiene a sprintf #include <ctype.h> //************************************************** //DEFINICION DE PUERTOS //************************************************** #define RA0 PORTAbits.RA0 //SAL.: N/C #define RA1 PORTAbits.RA1 //SAL.: N/C #define RA2 PORTAbits.RA2 //SAL.: BUZZER #define RA3 PORTAbits.RA3 //SAL.: MOTOR PULSO DE CONTROL #define RA4 PORTAbits.RA4 //SAL.: N/C #define RA5 PORTAbits.RA5 //SAL.: RELE INVERSOR //************************************************** #define RB0 PORTBbits.RB0 //ENT.: N/C #define RB1 PORTBbits.RB1 //ENT.: DISPLAY DIGITO "E" #define RB2 PORTBbits.RB2 //SAL.: DISPLAY DIGITO "D" #define RB3 PORTBbits.RB3 //SAL.: DISPLAY DIGITO "C" #define RB4 PORTBbits.RB4 //SAL.: DISPLAY DIGITO "B" #define RB5 PORTBbits.RB5 //SAL.: DISPLAY DIGITO "A" #define RB6 PORTBbits.RB6 //SAL.: DISPLAY DIGITO "F" #define RB7 PORTBbits.RB7 //SAL.: DISPLAY DIGITO "G" //************************************************** #define RC0 PORTCbits.RC0 //SAL.: N/C #define RC1 PORTCbits.RC1 //SAL.: PEDAL #define RC2 PORTCbits.RC2 //SAL.: LED DE GIRO 1 #define RC3 PORTCbits.RC3 //SAL.: LED DE GIRO 2 #define RC4 PORTCbits.RC4 //SAL.: PULSADOR BAJA RPM #define RC5 PORTCbits.RC5 //SAL.: PULSADOR POWER MOTOR #define RC6 PORTCbits.RC6 //SAL.: PULSADOR SUBE RPM #define RC7 PORTCbits.RC7 //SAL.: PULSADOR INVERSOR DE GIRO //************************************************** //CONFIGURACION DE PUERTOS //************************************************** void CONFIG (void) { TRISA=0X00; // Inicializo puerto A todos salidas TRISB=0X01; // Inicializo RB7 salida, el resto salidas pero lo configura la libreria XLCD.H TRISC=0XF2; ADCON1=0X07; // Configuro: puerto A todo digital PORTA=0; PORTB=0; PORTC=0; INTCON=0X00; INTCONbits.GIEH=0; //INTCON.GIEH=0; return; } //************************************************** //DISPLAY 7 SEG //************************************************** void DISPLAY (char b) { switch(b) { case 0: { RB7=0; RB6=1; RB5=1; RB4=1; RB3=1; RB2=1; RB1=1; }; break; case 1: { RB7=0; RB6=0; RB5=0; RB4=1; RB3=1; RB2=0; RB1=0; }; break; case 2: { RB7=1; RB6=0; RB5=1; RB4=1; RB3=0; RB2=1; RB1=1; }; break; case 3: { RB7=1; RB6=0; RB5=1; RB4=1; RB3=1; RB2=1; RB1=0; }; break; case 4: { RB7=1; RB6=1; RB5=0; RB4=1; RB3=1; RB2=0; RB1=0; }; break; case 5: { RB7=1; RB6=1; RB5=1; RB4=0; RB3=1; RB2=1; RB1=0; }; break; case 6: { RB7=1; RB6=1; RB5=0; RB4=0; RB3=1; RB2=1; RB1=1; }; break; case 7: { RB7=0; RB6=0; RB5=1; RB4=1; RB3=1; RB2=0; RB1=0; }; break; case 8: { RB7=1; RB6=1; RB5=1; RB4=1; RB3=1; RB2=1; RB1=1; }; break; case 9: { RB7=1; RB6=1; RB5=1; RB4=1; RB3=1; RB2=0; RB1=0; }; break; } return; } //************************************************** //BUZZER //************************************************** void BUZZER (void) { RA2=1; Delay10KTCYx(15); RA2=0; return; } //************************************************** //PROGRAMA PRINCIPAL //************************************************** void main(void) { char a, b, buffer, inversor, mo1, mo2, power; int time, n0, n1,n2; CONFIG(); a=10, b=0; power=0; mo1=0; RA5=0; time=1; buffer=0; RC3=0; RC2=1; n0=0; n1=0; n2=0; inversor=0; BUZZER(); Delay10KTCYx(5); BUZZER(); Delay10KTCYx(5); DISPLAY(b); //************************************************** while(1) { if(RC6==1 && b<=8 && buffer==0) //PULSADOR SUBE RPM { b=b+1; a=10-b; buffer=1; } if(RC4==1 && b>=1 && buffer==0) //PULSADOR BAJA RPM { b=b-1; a=10-b; buffer=1; } if(RC5==1 && mo1==0 && buffer==0) //PULSADOR ENCIENDE EL MOTOR { mo1=1; buffer=1; } if(RC5==1 && mo1==1 && buffer==0) //PULSADOR APAGA EL MOTOR { mo1=0; buffer=1; } //**************************************************** if(RC1==1) //PEDAL ENCIENDE EL MOTOR { power=1; } if(RC1==0) //PEDAL APAGA EL MOTOR { power=0; } //**************************************************** if(RC7==1 && RA5==0 && buffer==0) //PULSADOR INVIERTE SENTIDO DE GIRO { RA5=1; RC3=1; RC2=0; buffer=1; inversor=1; } if(RC7==1 && RA5==1 && buffer==0) //PULSADOR INVIERTE SENTIDO DE GIRO { RA5=0; RC3=0; RC2=1; buffer=1; inversor=1; } //time=2*(a); //lo lleve mas abajo if (buffer==1) { DISPLAY(b); } //*********************************** if(buffer>=1) //HABILITA EL BUZZER Y CUENTA 500 CICLOS ANTES DE HABILITAR LOS BOTONES { n1++; RA2=1; } if(n1>=700) //if(n1>=500) { n1=0; RA2=0; buffer=0; } //*********************************** mo2=mo1+power; if(mo2>=1) //ESTRUCTURA IF AGREGADA PARA EL PEDAL { mo2=1; } RA3=0; time=2*(a); for(n0=0;n0<=time;n0++) //DEMORA QUE HACE EL ANCHO DE PULSO EN BAJO { Delay1TCY(); } if(inversor==1 && n2<=4000) { n2++; RA3=0; } else { n2=0; inversor=0; RA3=mo2; //REEMPLACE MOTOR POR MOTOR2 PARA AGREGAR EL PEDAL } } }
dosavat
hace 15 años
hace 15 años
el WDT esta desactivado, mmm... se podra desactivar el MCLR en el 18F252? Gracias por la manito que me estás dando.

¿Conoces una solución?

¡Aprende a reparar con estos cursos YoReparo!

4.6
(10)

Curso Localización de Fallas en Refrigeración en Heladeras/Neveras On/Off

Yamil Alarcón
$ 29 USD
$ 12 USD
4.94
(16)

Curso Refrigeración Comercial Aplicado a Diagnóstico y Reparación

Ing. Georga Melgarejo
$ 40 USD
$ 13 USD
4.64
(45)

Curso Tecnología Inverter - Fabricación de probadores y herramientas

Yamil Alarcón
$ 240 USD
$ 40 USD
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos?
Regístrate gratis