Autor Tema: Posibles "bugs" del compilador de CCS  (Leído 252387 veces)

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

Desconectado matyvico

  • PIC10
  • *
  • Mensajes: 20
Re: Posibles "bugs" del compilador de CCS
« Respuesta #135 en: 25 de Enero de 2013, 20:00:51 »
Hola matyvico,

tal vez no sea ayuda ni consuelo, pero podrías intentar forzando al CCS a que guarde el array justo alineado al inicio de un banco de RAM, de esa forma por ahi el CCS te lo pone secuencialmente de corrido. Había una sentencia en CCS para indicar la posición RAM pero no la recuerdo. Tal vez es tan evidente como #RAM. Si no la encontrás decime que la busco en algún proyecto pasado.

Un gusto haberte conocido la voz.

Saludos.

BrunoF! Muchas gracias por la rapida respuesta! Si, es muy lógico lo que decís, y ademas le da sentido a algo que me sucedio al definir un char de la forma:
Código: [Seleccionar]
char imagen[9][96]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,240,240,240,240,240,240,240,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,240,240,240,
   240,240,240,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,240,240,240,240,240,240,240,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
   0,0,0,0,0,0,0,0,3,15,63,255,255,255,255,255,255,252,248,240,224,192,128,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,128,192,224,
   240,248,252,255,255,255,255,255,255,63,15,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,7,15,31,
   63,127,255,255,255,255,255,254,252,252,248,248,240,240,255,255,255,255,255,255,255,255,240,240,248,248,252,252,254,255,255,255,255,255,127,63,31,15,
   7,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,240,240,240,240,240,240,240,240,240,240,240,240,
   241,241,243,243,247,247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,247,247,243,243,241,241,240,240,240,240,240,240,240,
   240,240,240,240,240,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,15,15,15,15,15,15,15,15,15,15,143,
   143,207,207,239,239,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,239,239,207,207,143,143,15,15,15,15,15,15,15,15,15,15,15,
   15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,192,224,240,248,252,254,255,255,255,255,255,127,
   63,63,31,31,15,15,255,255,255,255,255,255,255,255,15,15,31,31,63,63,127,255,255,255,255,255,254,252,248,240,224,192,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,240,252,255,255,255,255,255,255,63,31,15,7,3,1,0,0,0,0,0,0,0,0,255,255,255,255,
   255,255,255,255,0,0,0,0,0,0,0,0,1,3,7,15,31,63,255,255,255,255,255,255,252,240,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
   0,0,0,0,0,0,0,0,12,15,15,15,15,15,15,15,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,15,15,15,15,15,15,15,
   14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

Ese char almacena la información para enviar una imagen al LCD (muestra el logo de la universidad a la que voy como presentación), el problema es que si la defino SOLO con la habitual definición de char, aparecen unas líneas salidas de contexto de la imagen, por el contrario si lo defino como:

Código: [Seleccionar]
const char imagen[9][96]={...}
La cosa cambia, la imagen se muestra perfectamente y encima se ocupa menos RAM, ya que de la ayuda de ccs, se tiene para la definición de const lo siguiente:

Citar
const Data is read-only.  Depending on compiler configuration, this qualifier may just make the data read-only -AND/OR- it may place the data into program memory to save space.


Y a la vez el inconveniente es que se convierte en solo lectura (pasa a formar parte de la memoria de programa), imposibilitando su modificación. Lo raro de todo esto es que AVECES lo hace y otras no y supongo que ese comportamiento se debe a que quizás en alguna de esas veces alguna variable definida antes o algo raro que haga el CCS genera que ese char 'consiga' un banco propio de RAM y no se vea alterado...

Respecto a lo que haces mención sobre forzarl al CCS a que guarde el array alineado al inicio de un banco de la RAM, me parece que el comando #LOCATE serviría, de la ayuda del CCS:

Citar
#LOCATE

works like #BYTE however in addition it prevents C from using the area.

 
A special form of this directive may be used to locate all A functions local variables starting at a fixed location.

Use: #locate Auto = address


This directive will place the indirected C variable at the requested address.

No se que opinen, pero esto ya me esta desesperando, pregunte a otros amigos y no podían creer que no pudiera hacer lo que quería con un char global!

Nos vemos! Y gracias por recibimiento!  :mrgreen:

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Posibles "bugs" del compilador de CCS
« Respuesta #136 en: 26 de Enero de 2013, 14:08:23 »
Hola de nuevo,

estuve leyendo el código. Pensé que era un array de estructuras, como el caso en el que mencionaba que ocurre el bug, pero veo que tu caso es un simple array de dos dimensiones.


Creo que tenés varios errores en el código, por eso no te funciona.No logré que compile tu código, lo que tiene cierta lógica porque veo un par de cosas que no deberían poder compilar.

Qué es lo que debe hacer la subrutina menú? Imprimir el texto del número de opción seleccionada actualmente?
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado matyvico

  • PIC10
  • *
  • Mensajes: 20
Re: Posibles "bugs" del compilador de CCS
« Respuesta #137 en: 26 de Enero de 2013, 14:37:08 »
Creo que tenés varios errores en el código, por eso no te funciona.No logré que compile tu código, lo que tiene cierta lógica porque veo un par de cosas que no deberían poder compilar.

Si, estoy seguro que tiene miles de errores, igual ese pedacito de código que no me funcionaba un poco lo arme de memoria porque el código original que no me compilaba lo borre y en cambio hice lo que ahora si me funciona (que es declarar el array de dos dimensiones localmente para cada subrutina).

Qué es lo que debe hacer la subrutina menú? Imprimir el texto del número de opción seleccionada actualmente?

La subrutina menú debería imprimirme en el LCD el menú que a mi se me ocurra enviarle a través del array "opc[7][15]" y la forma en que yo quiero hacerlo es generando el array GLOBAL opc y que antes de llamar a la subrutina menú se le asigne lo que se quiere mostrar al array, de esta forma la subrutina ubica (con el gotoxy) el cursor en el LCD y envía uno de los elementos del array opc (primer elemento del array y por consiguiente del menu a ser escrito en el LCD), lo mismo con el segundo, y el tercer elemento del array y así sucesivamente hasta que se termine el contenido del array (por eso uso un for)...

No se si fui muy claro, y en todo caso si hay una mejor (mas eficiente o correcta) forma de hacerlo...

Desconectado judio

  • PIC10
  • *
  • Mensajes: 7
    • MI SITIO EN YOUTUBE
Re: Posibles "bugs" del compilador de CCS
« Respuesta #138 en: 14 de Febrero de 2013, 07:52:24 »
Hola, espero alguien me pueda asesorar con la version 4.068 de CCS porque no puedo compilar todos los codigos fuentes abiertos cada uno en una pestaña diferente?, solo compila el de la primer pestaña!!

 :(
SI TU DICES QUE YO LO DIJE SIEMPRE LO VOY A NEGAR

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Posibles "bugs" del compilador de CCS
« Respuesta #139 en: 15 de Febrero de 2013, 00:36:26 »
Hola de nuevo,

estuve leyendo el código. Pensé que era un array de estructuras, como el caso en el que mencionaba que ocurre el bug, pero veo que tu caso es un simple array de dos dimensiones.


Creo que tenés varios errores en el código, por eso no te funciona.No logré que compile tu código, lo que tiene cierta lógica porque veo un par de cosas que no deberían poder compilar.

Qué es lo que debe hacer la subrutina menú? Imprimir el texto del número de opción seleccionada actualmente?

Hola Bruno y Matyvico

Sí, hay varias cosas fuera de lugar en el código. Aquí una versión funcional del mismo, sin cosas de CCS para poderlo probar.

Código: [Seleccionar]
const char opc[7][15]={"Tipo de onda","Frecuencia","Periodo","1","2","3","4"}; //VECTOR GLOBAL

void menu(const char* str)
{
     printf("%s\n", str);
}

int main(int argc, char *argv[])
{   
     int i = 0;
     for( ;i < 7; ++i)
     {
            menu(&opc[i][0]);
     }
    system("PAUSE");
}

La salida:

Código: [Seleccionar]
Tipo de onda
Frecuencia
Periodo
1
2
3
4
Presione una tecla para continuar . . .

Bruno, un gusto leerte por los foros  :D

Saludos  :mrgreen:

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Posibles "bugs" del compilador de CCS
« Respuesta #140 en: 15 de Febrero de 2013, 13:42:00 »
Bruno, un gusto leerte por los foros  :D

El gusto es todo mío Santiago. :)

Saludos!
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado thegame

  • PIC18
  • ****
  • Mensajes: 441
    • Mcu Tronics
Re: Posibles "bugs" del compilador de CCS
« Respuesta #141 en: 18 de Febrero de 2013, 17:59:23 »
Que tal, no se si este bug este ya colocado igual lo pongo

version CCS 4.130
PIC utilizado PIC16F1933

en la rutina de interrupción para cambio de estado (INT_RB),nunca borra la bandera y por tanto se queda en la rutina en un ciclo infinito.

simulado con MPLAB y comprobado fisicamente.

Solucion:

Borrar manualmente la bandera al finalizar la rutina,similar a hitech o C18.

Eso pasa por confiarse del compilador jeje.
Nunca se deja de aprender

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: Posibles "bugs" del compilador de CCS
« Respuesta #142 en: 18 de Febrero de 2013, 19:30:34 »
Que tal, no se si este bug este ya colocado igual lo pongo

version CCS 4.130
PIC utilizado PIC16F1933

en la rutina de interrupción para cambio de estado (INT_RB),nunca borra la bandera y por tanto se queda en la rutina en un ciclo infinito.

simulado con MPLAB y comprobado fisicamente.

Solucion:

Borrar manualmente la bandera al finalizar la rutina,similar a hitech o C18.

Eso pasa por confiarse del compilador jeje.

Hola thegame, esta particularidad del INT_RB ya ha sido tocado en el foro, no es problema de esa version pues se presenta en las muuuchas que he probado, la solución es dentro de la rutina de interrupcion leer el puerto b  input_b(); para que el flag sea borrado, también se puede usar clear_interrupt(INT_RB);.

Saludos.

A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado thegame

  • PIC18
  • ****
  • Mensajes: 441
    • Mcu Tronics
Re: Posibles "bugs" del compilador de CCS
« Respuesta #143 en: 25 de Febrero de 2013, 17:10:53 »
que tal Kallitos

bueno si es vdd que eso ya estaba mencionado en el foro,y precisamente realice eso mismo,poner input_b() y nada seguia sin borrar el flag,hice tambien lo de clear interrupt y tampoco la borro,lo hizo hasta que fui directamente al registro de banderas y puse un bit_clear, solo asi lo resolvi,desconozco porque pero eso me paso a mi
Nunca se deja de aprender

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Posibles "bugs" del compilador de CCS
« Respuesta #144 en: 07 de Marzo de 2013, 08:41:55 »
Versión de CCS 4.140
Micro PIC18F2550
Bug: Posible cálculo erróneo del baudrate de la USART

¡Por favor que no me presenten personalmente a nadie de CCS! Porque termino en la cárcel, seguro.

Después de una semana luchando a brazo partido con un hardware que estoy desarrollando, alrededor de un 18F2550, no he sido capaz de comunicar con él por el puerto serie .... parece como si el baudrate estuviese loco y no transmite o recibe a una velocidad estándar ...

Tras revisar hasta el infinito el hardware y viendo que al menos en apariencia todo estaba perfecto se me ocurrió hacer una prueba, gato escaldado del agua fría huye, prueba que ya hice hace tiempo al ocurrirme un error similar ... compilé exactamente el mismo programa, sin tocar un punto y coma, pero con mi versión de referencia del CCS, la 3.242 ...

Y voilá todo funcionando. Sin problema alguno envía y recibe a su baudrate adecuado y sin mayor problema.  :5] :5] :5] :5] :5]

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Posibles "bugs" del compilador de CCS
« Respuesta #145 en: 07 de Marzo de 2013, 08:59:11 »
Versión de CCS 4.140
Micro PIC18F2550
Bug: Posible cálculo erróneo del baudrate de la USART

¡Por favor que no me presenten personalmente a nadie de CCS! Porque termino en la cárcel, seguro.

Después de una semana luchando a brazo partido con un hardware que estoy desarrollando, alrededor de un 18F2550, no he sido capaz de comunicar con él por el puerto serie .... parece como si el baudrate estuviese loco y no transmite o recibe a una velocidad estándar ...

Tras revisar hasta el infinito el hardware y viendo que al menos en apariencia todo estaba perfecto se me ocurrió hacer una prueba, gato escaldado del agua fría huye, prueba que ya hice hace tiempo al ocurrirme un error similar ... compilé exactamente el mismo programa, sin tocar un punto y coma, pero con mi versión de referencia del CCS, la 3.242 ...

Y voilá todo funcionando. Sin problema alguno envía y recibe a su baudrate adecuado y sin mayor problema.  :5] :5] :5] :5] :5]



Mas que error del CCS, creo que es error del Diego... en este caso.
Si miras bien las funciones de comunicacion de CCS, veras que ya tiene muchos parametros mas, algunos de los cuales son por defecto y otros hay que declararlos, y no precisamente mantienen compatibilidad con las versiones viejas.
Por supuesto, estas refiriendote a la version mas estable que hasta ahora pudo tener el CCS, cuando hablas de la 3.249...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Posibles "bugs" del compilador de CCS
« Respuesta #146 en: 07 de Marzo de 2013, 09:37:14 »
Uffff no se que decirte.

Le he puesto todos los parámetros ó solo los imprescindibles y nada de nada ...

Código: CSS
  1. #include <18f2550.h>
  2. #fuses HS,MCLR,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOPBADEN,NOLVP,NOCPD,NODEBUG,NOWRT,NOVREGEN
  3. #use delay(clock=20000000)
  4. #use rs232(BAUD=115200, XMIT=PIN_C6, RCV=PIN_C7, BRGH1OK, BITS=8, STOP=1, PARITY=N)

Para el 3.242 solo tengo que quitarle el STOP=1 que no lo tiene, o sea que el 3.242 funciona con y sin todos los parámetros y el 4.140 ni con ni sin ellos, así que ya no se que pensar. ¿Qué mas necesitaría el 4.x?  :?
« Última modificación: 07 de Marzo de 2013, 09:41:37 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Posibles "bugs" del compilador de CCS
« Respuesta #147 en: 07 de Marzo de 2013, 12:19:11 »
Mira las opciones de Use_Delay() .
Prueba ponerle Crystal en vez de Clock (esta opcion ahora es distinta) y despues me dices si hay resultado...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Posibles "bugs" del compilador de CCS
« Respuesta #148 en: 07 de Marzo de 2013, 16:15:26 »
Mira las opciones de Use_Delay() .
Prueba ponerle Crystal en vez de Clock (esta opcion ahora es distinta) y despues me dices si hay resultado...

Yes, tienes razón   :-/

Con esto ya me funciona ...

Código: CSS
  1. #use delay(clock=20000000,Crystal=20000000)

Muchísimas gracias  :mrgreen:
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Posibles "bugs" del compilador de CCS
« Respuesta #149 en: 07 de Marzo de 2013, 16:35:55 »
Estoy usando un PIC24HJ128GP504.
Ya renegue con esas opciones para conseguir transmitir por la USART, por eso ya lo aprendi.

Ahora estoy tratando de comunicar a traves del Bus CAN y me esta matando no lograrlo, je..je

Es maravilloso este micro, pero el tema de redireccionar los pines de varios modulos (el CAN es uno de ellos) no sabes lo que te hace sufrir... :D :D :D
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.


 

anything