Autor Tema: bug printf/puts?  (Leído 17070 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Prototipe88

  • PIC12
  • **
  • Mensajes: 92
Re: bug printf/puts?
« Respuesta #15 en: 28 de Abril de 2014, 18:59:13 »
ponle un break point despues de la función del printf y deja correr el programa, porque si lo imprime eso significa que si está pasando por ahí correctamente

Me sigue abriendo el fichero que te comenté así que no sé. He probado lo de los breakpoint pero no me aclaran nada... En mi caso se me abre el fichero del PIC16F88 sale una flecha verde apuntando al principio del fichero y parece que se queda ahi hasta que le da la gana salir y vuelve al inicio del programa. Probando fisicamente el programa. A veces cuando le envio una trama del estilo "$ADQ,P01,CH0\r" me imprime un resultado solo una unica vez. Si le envio una trama del estilo "$TST,P01\r" me imprime el dato que quiero mcuhas veces...
« Última modificación: 29 de Abril de 2014, 03:00:43 por Prototipe88 »

Desconectado Prototipe88

  • PIC12
  • **
  • Mensajes: 92
Re: bug printf/puts?
« Respuesta #16 en: 29 de Abril de 2014, 06:23:52 »
Tengo unas teorias a ver que te parecen:

1ª- Pudiera ser que la funcion PRINTF ocupara tanta memoria ram que el pic en algunos momentos se quedara "loco" o hiciera cosas que no debería hacer? (al compilar me indica ROM-31% y RAM 57%-61% así que creo que no debería ser ese el problema)

2ª-Resulta que yo habilito estas interrupciones:

Código: [Seleccionar]
enable_interrupts(GLOBAL); //HABIlLITO TODAS LAS INTERRUPCIONES GLOBALES
enable_interrupts(INT_RDA); //HABILITO LA INTERRUPCIÓN UART

Y antes de enviar el dato (activo el PIN B0) y luego de enviar el dato (desactivo el PIN B0)... quizás estoy realizando alguna interrupción externa en el PIC que hace que se quede "parado" en algunos momentos no crees? (ya que he definido enable_interrupts(GLOBAL) )

3ª- como le envio un dato de más de 2bytes puede ser que el buffer del puerto serie del pic se sature y quede algo pendiente ahi... no lo sé. (aunque creo que eso se solventa como lo he diseñado ya que voy leyendo lo que recibo por puerto serie)

Son solo unas teorias.
« Última modificación: 29 de Abril de 2014, 08:01:21 por Prototipe88 »

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: bug printf/puts?
« Respuesta #17 en: 29 de Abril de 2014, 10:29:04 »
no creo que sean las interrupciones, ya que solo habilitas la int_rda, haz intentado hacer un programa que solo envíe una cadena usando el printf?
"Nada es imposible, no si puedes imaginarlo"

Desconectado Prototipe88

  • PIC12
  • **
  • Mensajes: 92
Re: bug printf/puts?
« Respuesta #18 en: 29 de Abril de 2014, 11:10:20 »
no creo que sean las interrupciones, ya que solo habilitas la int_rda, haz intentado hacer un programa que solo envíe una cadena usando el printf?

rivale he puesto que se encienda un led cada vez que entro en la interrupcion serie. La primera vez que entra se enciende el led. Pero luego ya no consigue entrar. Creo que el problema es el puerto serie, algun flag del PIC no vuelve a cero cuando salgo de la interrupcion.... Puedo probar de poner el registro RCIF a cero. Como se haría en el programa? (He probado con la funcion clear_interrupts(INT_RDA) pero no me sirve...

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: bug printf/puts?
« Respuesta #19 en: 29 de Abril de 2014, 11:24:16 »
puedes borrar la bandera de la interrupción usando la intrucción

clear_interrupt(int_rda)
"Nada es imposible, no si puedes imaginarlo"

Desconectado Prototipe88

  • PIC12
  • **
  • Mensajes: 92
Re: bug printf/puts?
« Respuesta #20 en: 29 de Abril de 2014, 11:26:04 »
puedes borrar la bandera de la interrupción usando la intrucción

clear_interrupt(int_rda)

He probado con un printf cada vez que entre a la interrupcion serie. Pero solo entra una unica vez. Luego ya no vuelve a entrar más. Es como si se quedara colgado.

Desconectado Prototipe88

  • PIC12
  • **
  • Mensajes: 92
Re: bug printf/puts?
« Respuesta #21 en: 29 de Abril de 2014, 11:55:47 »
DEFINITIVAMENTE es problema del puerto serie. Inicio el programa y se ejecuta la INTERRUPCION DEL PUERTO SERIE, luego le intento enviar caracteres y no los detecta. Probaré de limpiar el bit manialmente el RCIF que pertenece al registro PIR1 que está en la dirección de memoria 0x0C pero no sé como ponerlo en el programa para poner dicho bit a 0. ¿Como se haría? Es la única opcion que me queda...
« Última modificación: 29 de Abril de 2014, 12:17:42 por Prototipe88 »

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: bug printf/puts?
« Respuesta #22 en: 29 de Abril de 2014, 12:15:15 »
Yo del ccs no me fiaria, prueba otra versión del compilador
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: bug printf/puts?
« Respuesta #23 en: 29 de Abril de 2014, 12:15:50 »
Porque no pones el esquemático de tu proyecto??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Prototipe88

  • PIC12
  • **
  • Mensajes: 92
Re: bug printf/puts?
« Respuesta #24 en: 29 de Abril de 2014, 12:21:50 »
Éste es el codigo SIMPLE que estoy utilizando para probar.... qué es lo que hago mal? tengo la version 1.042 del CCS donde dicen que se han solucionado muchos bugs... me estoy desesperando con esto...


Código: [Seleccionar]
#include <16f88.h>

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


#fuses HS, NOWDT, NOLVP, NOBROWNOUT, NOPROTECT, PUT
#use delay(clock=8000000)
#use rs232(baud=9600, xmit=PIN_B5, rcv=PIN_B2) //CONFIGURO PUERTO SERIE

char trama_entrada[5]={0};

#INT_RDA
void INT_UART() {

clear_interrupt(INT_RDA);

trama_entrada[0]=getc(); //SOLO LE ENVIO UN CARACTER PARA VER SI RECIBE

printf("$ADQ,P77,CH7,1000\r");

}


void main(){

enable_interrupts(INT_RDA); //HABILITO LA INTERRUPCIÓN UART
enable_interrupts(GLOBAL); //HABIlLITO TODAS LAS INTERRUPCIONES GLOBALES


while(1){

}

}
« Última modificación: 29 de Abril de 2014, 12:26:24 por Prototipe88 »

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: bug printf/puts?
« Respuesta #25 en: 29 de Abril de 2014, 12:28:18 »
Éste es el codigo SIMPLE que estoy utilizando para probar.... qué es lo que hago mal? tengo la version 1.042 del CCS donde dicen que se han solucionado muchos bugs... me estoy desesperando con esto...


yo creo que es por la versión, esa es muuuy vieja, ya van en la 5.025, intenta cambiarla por alguna mas reciente
"Nada es imposible, no si puedes imaginarlo"

Desconectado Prototipe88

  • PIC12
  • **
  • Mensajes: 92
Re: bug printf/puts?
« Respuesta #26 en: 29 de Abril de 2014, 12:29:09 »
He probado de todo.... de dejar el while vacio, de meterle un parpadeo de un led... de resetear el micro cuando termina la interrupcion de puerto serie... de desabilitar la interrupcion y abilitarla cuando acabo... de todo ya... La simulacion parece que va bien pero no sé...   Qué version del CCS me podria ir bien....??? tengo la 4.042 y utlizo MPLAB 8.87 con el programador ICD2 de microchip...

Desconectado Prototipe88

  • PIC12
  • **
  • Mensajes: 92
Re: bug printf/puts?
« Respuesta #27 en: 29 de Abril de 2014, 12:30:27 »
Éste es el codigo SIMPLE que estoy utilizando para probar.... qué es lo que hago mal? tengo la version 1.042 del CCS donde dicen que se han solucionado muchos bugs... me estoy desesperando con esto...


yo creo que es por la versión, esa es muuuy vieja, ya van en la 5.025, intenta cambiarla por alguna mas reciente


PERDONA queria decir la version 4.042.... me confundí esta version no es tan vieja

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: bug printf/puts?
« Respuesta #28 en: 29 de Abril de 2014, 12:30:44 »
al menos yo no he tenido problemas con rs232 usando versiones 4, yo creo que a partir de ahí hacia la 5 no deberías tener problemas
"Nada es imposible, no si puedes imaginarlo"

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: bug printf/puts?
« Respuesta #29 en: 29 de Abril de 2014, 12:32:48 »
Porque no pones el esquemático de tu proyecto??
++;

pon tu diagrama o simulación para darme mas idea, porque no se como tienes conectado tu circuito
"Nada es imposible, no si puedes imaginarlo"


 

anything