TODOPIC
Misceláneas - Interés General => Uso y aplicaciones de los PIC / Curiosidades electrónicas => Mensaje iniciado por: carlito en 07 de Diciembre de 2007, 21:04:20
-
Hola amigos ,tengo un grave problema con los pic ,estoy al volverme loco y tengo un proyecto para la semana entrante ,quizas a ustedes le ha pasado lo mismo ,estoy cansado de programar pic y dspic los cuales no parecian dar problemas ,per trabajando en programas mas conplejos
que nececitaban de guardar memoria en la ram de el micro ,descubri que el micro se me
RESETEABA por muchas cosas en el tiempo y por lo tanto perdia la informacion he probado
contadores en ciclo infinito ,interrupciones externas ,timers,delay etc;en todos los casos en un momento dado se RESETEA ,lo he probado en pic ,dspic fisicos y tambien simulados en el proteus y todo igual no hay posibilidad de que el micro este roto he probado con muchos ,los estoy compilando en el microc y microc dspic ,repito los pic y dspic hacen todo lo que le mandan lo unico que pasa es esto ,NO HAY CONTROL QUE VALGA SI ESTE SE RESETEA
SUGIERO QUE HAGAN UNA PRUEBA DONDE PUEDAN VER SI LES OCURRE ESTO ,YO ME DESAYUNE AHORA,
POR FAVOR QUE ALGUIEN ME DIGA QUE ESTA PASANDO ,ESTOY DESESPERADO ,SIN ESTO
NO PUEDO CUMPLIR EL PROYECTO
-
¿No tendrás activado el WachDog?
Un saludo
-
Tiene toda la pinta de ser lo que indica jfh900
Salud 8)
-
Primeramente bienvenido carlito
mmm... eso ya me paso un par de veces... :shock: :shock: y por culpa de esos dolores de cabeza que me agarraban de pensar cosas ilogicas, combinaciones fantasiosas de ruido y posibles errores en el hard no podia resolver el problema..
Pero la solucion siempre era la mas simple, algun error en el programa que habia hecho.
Solo hacia falta tranquilizarse un poco , abrir la mente y repasar todo el programa, por partes, desconfiando de todo lo escrito.
Espero que te sea de ayuda y sino podes postear el codigo para que le hechemos una mirada....
saludos
-
Pues si....un pekeño relax en medio del dolor de cabeza durante una programacion con resultados negativos mejora los resultados.....claro esta ke de regreso a la programacion ver las cosas trankilamente...cheka las configuraciones ke realizas alli casi siempre esta la solucion....ke se mejore tu enfermo :mrgreen: :mrgreen:
-
muchas gracias por ayudarme con esto ,per lo de la pacienci a me lo lleva diciendo mucho rato mis superiores,y ya llevo dos semanas en esto ,ya es un reto para mi ,sino logro esto
no puedo hacer nada solo me queda mostrarle algunos progamitas que revelan mi problema
en realidad esto no me sirve para nada pero hasta con estos da problemas.
acuerdense que esto es en el microc
1)-pic18f452 4mhz ,xt
int i = 0,cont = 0;
void main()
{
TRISC = 0;
TRISD = 0;
while(1)
{
///////////////////////////////////////////////////////////
if(i== 0) //ACCIONADO EN RESET
PORTD = 255;
///////////////////////////////////////////////////////////
if(i == 10000){ //INCREMENTAR CONT Y VER TRABAJO NORMAL
cont++;
PORTD = 0;
}
////////////////////////////////////////////////////////////
i++;
if(i== 30000) //IMPERDIR DESBORDE DE I
i = 2;
/////////////////////////////////////////////////////////////
PORTC = cont; //VISUALIZAR CONT
////////////////////////////////////////////////////////////
}
}
como ven i no deberia volver a 0 pero lo hace infinitas veces cada un tiempo determinado o sea
RESET
2)- la misma condicion
int i = 0;
void main()
{
TRISD = 0;
TRISB = 0;
while(1)
{
if(i == 0)
PORTB = 1;
else
PORTB = 0;
Delay_ms(100);
PORTD = i ++;
}
}
esto es parecido pero se ve que mientras mas retardo mas rapido es el RESET
nota : estos dos se simularon en el proteus
pero tambien real lo que con mas tiempo.
3)-dspic30f3014 4mhz*pll-16
int i = 0;
/////////////////////////////////////////////////////////////
void int0_interrup(void) org 0x000014 //RUTINA DE INT0
{
IFS0bits.INT0IF = 0;
i++;
}
////////////////////////////////////////////////////////////
void interrup_timer2(void) org 0x000020 //RUTINA TIMER2
{
IFS0bits.T2IF = 0;
PORTF = i;
//////////////////////////////////////
if(i == 0) //VERIFICAR SI HAY RESET
PORTD = 1;
else
PORTD = 0;
///////////////////////////////////
TMR2 = 16000;
}////////////////////////////////////////////////////
void main()
{
TRISF = 0;
TRISD = 0;
INTCON1bits.NSTDIS = 1;
IFS0bits.INT0IF = 0;
IEC0bits.INT0IE = 1;
IFS0bits.T2IF = 0;
IEC0bits.T2IE = 1;
IEC0 = IEC0|0x0008;
TMR2 = 16000;
T2CON = 0x8000;
while(1) ;
}
este ejemplo es mas integrador y hasta mas visible el problema ,que es serio ,y preocupante
para no poner infinidades de ejemplos
si no hubiese interrupcion de el timer y en la de int0 hubiese PORTF = i++;
se ve que en un tiempo de mas de un segundo desaparece la imformacion en F o sea RESET
esto fue real y con cuidado ,
a lo mejor a muchos le da el mismo problema y no lo save como yo que me entero ahora
por favor voy a agradecer cualquier ayuada sobre esto ,pues estoy apretado.
-
Yo de ti empezaría por averiguar cuál es el motivo del RESET. Te recomiendo que eches un vistazo a la función restart_cause del maestro Azicuetano:
http://www.todopic.com.ar/foros/index.php?topic=18647.msg130279#msg130279
-
Desconocía esa funcion restart_cause(), es una herramienta muy buena, desgraciadamente está en C y a mi me gusta el assembler, pero seguro debe haber algun registro que mantiene este dato, voy a investigarlo.
Salud 8)
-
¿Podrías poner una imagen del grabador con los fuses que usas para grabar el programa en el PIC?
Un saludo
-
amigos no conocia los problemas que podia ocacionar el whatcdog voy a probar limpiando constantemente este ,no ostante no lo deberia hacer esto,en un funcionamiento normal y me arriesgo a que se me cuelgue el sistema, jfh900 por el momento no cuento con una foto del grabador ,solo te puedo decir no tiene ninguna proteccion contra ruido ,y nocro que sea esto
porque todo lo hace bien, solo se resetea al tiempo , ahora voy a probar las distintas tecnicas
contra ruido por software y de inmediato le digo.
saludos!
-
No, no me has entendido, lo que quiero es ver si tienes desactivado el WachDog en la palabra de configuración del grabador, bueno mejor dicho la pantalla del programa que utilizas para grabar los pic.
Un saludo
-
Mi amigo aqui te mando la configuracion del winpic800,asi como lo ves es como lo programo
he modificado mucho esto .¿Dime que sugerencia me das en cuanto a esto ? te lo voy a agradecer.
saludos!
-
Tienes activado el WachDog. Desactiva la casilla FWDTEN y seguramente se solucione el problema.
Un saludo
-
jfh900 NO TE INMAGINAS LAS GANAS QUE TENGO AHORA DE DARTE UN FUERTE ABRASO ,ME HAS DEVUELTO LA VIDA ,PENSE QUE ERA EL FIN ,Y NO AHORA SE MAS QUE NUNCA QUE TODO TIENE REMEDIO ,BENDITA SEA LA HORA QUE PENSE EN EL FORUM ,SOLO UNA PROBADITA Y TODO NORMAL ,SOLO HAY ALGO QUE PASO ,EN EL PRIMER INTENTO ,ME PARECE QUE SE COLGO EL PROGRAMA, DE LA ALEGRIA RESETEE PARA NO PENSAR EN ESO LUEGO NO ME PASO MAS ,NO OBSTANTE PIENSO DEBE HABER OTRA CAUSA.TE ESTOY ETERNAMENTE AGRADCIDO
Y TAMBIEN LOS QUE PRTICIPARON EN LA ENCUESTA ESPECIALMENTE A NOCTURNO QUIEN ME ENVIO A OTRA ENCUESTA SOBRE LOS RUIDOS "MUY BUENA" ESPERO PODER AYUDARLOS
EN ALGUN PROBLEMA QUE SE LES PRECENTE,CHAO Y MUCHAS GRACIAS A TODOS ,SEGUIMOS
EN LINEA
-
Bueno no es para tanto, comprendo tu alegría, cuando uno está atascado en un punto y cuando no se ve salida y alguien te echa una mano. Este es el espíritu de este foro. Pero no te olvides que el trabajo duro lo has echo tú montando y programando el circuito, nosotros solo te hemos dado un pequeño empujoncito para que puedas seguir.
Un saludo y adelante con tu trabajo.
-
Ves, era justamente lo que sospechamosen un principio el Watch Dog, de todas formas otro que da problemas es el BOREN que en ambientes con algo de ruido provoca el reseteo del PIC también.
Salud 8)
-
excelente... :-/ :-/ :-/ es hora de abrir el champan :D :D :D
-
Jejeje... acabo de llegar del puente (he sido otro turista más invadiendo Madrid :mrgreen:) y acabo de ver este hilo.
Enhorabuena carlito. Me encanta cuando leo cosas asi :D
Un saludo desde Alicante.