TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: bitpic en 30 de Noviembre de 2012, 18:36:28

Título: Duda MPLAB X
Publicado por: bitpic en 30 de Noviembre de 2012, 18:36:28
Buenas,

Estoy empezando a usar MPLAB X y me ocurre algo curioso, me aparecen errores marcando subrayando partes del código en rojo, pero si compilo y grabo en el PIC funciona correctamente.

¿Alguien sabe a que puede ser debido?
Título: Re: Duda MPLAB X
Publicado por: willynovi en 30 de Noviembre de 2012, 19:45:20
todavia no me he pasado al Mplab X, pero se me ocurre que si cliqueas o doblecliqueas el simbolo de exclamación quizas el mismo mplab te dirá porque la advertencia.
Título: Re: Duda MPLAB X
Publicado por: Nocturno en 01 de Diciembre de 2012, 02:34:32
Si pasas el ratón por encima de las marcas rojas debe decirte cuál es el error
Título: Re: Duda MPLAB X
Publicado por: bitpic en 01 de Diciembre de 2012, 05:30:24
Me dice que no encuentra las librerias si las declaro así:

#include <xc.h>

en cambiosi las declaro con toda la ruta hasta llegar a la carpeta donde se encuentra no sale error:

#include <../../../../Program Files (x86)/Microchip/xc8/v1.11/include/xc.h>

Pensaba que estas librerias no hacia falta poner toda la ruta porque son de MPLAB. De hecho tengo otro programa con las mismas librerías que no me marca error.

No se, creo que hay algo más y se me escapa... o que MPLAB tiene un "bug".
Título: Re: Duda MPLAB X
Publicado por: bitpic en 01 de Diciembre de 2012, 06:08:13
Parece que se ha solucionado pero no me gusta como porque no se cual era el problema.

He creado un nuevo proyecto, he copiado exactamente el mismo código y ya no aparecen errores.

No se.... esperemos que no vuelva a ocurrir.

Saludos
Título: Re: Duda MPLAB X
Publicado por: omix en 01 de Diciembre de 2012, 09:59:07
Hola,
eso es debido al indexador, que a veces no indexa correctamente todos los ficheros y te aparecen mensajes de error normalmente debido a que no encuentra algún fichero o declaración de cierta variable/constante, etc. La verdad que a mi me ocurre bastante a menudo, pero como ya se lo que es no le hago mucho caso, ya que al compilar no da errores en la consola de salida. Otra opción si no quieres ver dichos mensajes, ya que a veces te pueden causar confusión, yo lo que hago es cerrar el entorno y volverlo abrir, al menos a mi esto último funciona.

Sinceramente al MPLABX le faltan aun bastantes cosillas por pulir.

Un saludo.
Título: Re: Duda MPLAB X
Publicado por: bitpic en 01 de Diciembre de 2012, 10:47:29
Pues vaya!! No es que me importe mucho ver el error, pero lo ideal es que no marque estos errores.

En un proyecto pequeño no importa, pero a medida que se haga mayor y más complejo puede ser un problema.

Es recomendable usar el MPLAB normal con C18? C18 tiene problemas similares o esta más depurado?
Título: Re: Duda MPLAB X
Publicado por: sander en 01 de Diciembre de 2012, 11:19:48
Pues vaya!! No es que me importe mucho ver el error, pero lo ideal es que no marque estos errores.

En un proyecto pequeño no importa, pero a medida que se haga mayor y más complejo puede ser un problema.

Es recomendable usar el MPLAB normal con C18? C18 tiene problemas similares o esta más depurado?


Yo utilizo el MPLAB normal con el C18 y nunca tuve ese problema, he tenido otros  :lol: , en todo caso el C18 hace tiempo no se actualiza posiblemente nuevos dispositivos no esten soportados, es por eso que vengo utilizando el XC8 con el MPLAB normal.

Saludos
Título: Re: Duda MPLAB X
Publicado por: MerLiNz en 01 de Diciembre de 2012, 11:23:55
Este error te lo marca cuando cambias la configuracion (y creo que en otras ocasiones), pero cierras el mplabx y lo vuelves a abrir y solucionado. No es ningun error, digamos que es un bug, pero puedes compilar tranquilamente sin problemas.
Título: Re: Duda MPLAB X
Publicado por: bitpic en 01 de Diciembre de 2012, 14:56:20
En mi caso no se iba reiniciando el MPLAB X.

Bueno, de momento ahora funciona correctamente, espero no llevarme sorpresas.

Gracias por todo.

Saludos  :-)
Título: Re: Duda MPLAB X
Publicado por: bitpic en 01 de Diciembre de 2012, 17:09:34
Otra duda...

Me estoy haciendo una librería LCD y para escribir una linea lo hago de la siguiente manera:

Código: [Seleccionar]
LCD_print("Hola Mundo");
y en la librería lo ejecuto de la siguiente manera:

Código: [Seleccionar]
void LCD_print(char cadena[array_lengh]){
    int i;
    for(i=0;i<array_lengh;i++){
        LCD_char(cadena[i]);
        cadena[i]=' ';                   // Borramos array
    }
}

Me funciona pero me aparece este warning:

warning: illegal conversion between pointer types

Alguien sabe a que se debe? (por cierto array_lengh = 20)

Saludos y perdón por ser tan pesado.
Título: Re: Duda MPLAB X
Publicado por: MerLiNz en 01 de Diciembre de 2012, 18:48:47
porque "Hola mundo" pertenece a char*

prueba con LCD_print(char *cadena)
Título: Re: Duda MPLAB X
Publicado por: bitpic en 01 de Diciembre de 2012, 18:57:45
Ok, probare.

Y por entenderlo bien, esto crea un puntero verdad? Hay alguna manera de saber cuántos caracteres se han escrito en la cadena?
Título: Re: Duda MPLAB X
Publicado por: bitpic en 02 de Diciembre de 2012, 05:35:30
Hola, poniendo LCD_print(char *cadena) sigue apareciendo el mismo warning.
Título: Re: Duda MPLAB X
Publicado por: bitpic en 02 de Diciembre de 2012, 07:05:12
Vale!! todo arreglado, en vez de usar mi LCD_print() ahora lo hago usando el printf() de stdio y va perfecto.

Gracias.

Un saludo a todos!!!!!!
Título: Re: Duda MPLAB X
Publicado por: c@Lic_0 en 04 de Diciembre de 2012, 23:25:17
Segun su experiencia cual seria mejor el C18 o el XC8 no se cual de los 2 usar :P
Título: Re: Duda MPLAB X
Publicado por: bitpic en 05 de Diciembre de 2012, 05:58:00
Yo no he usado el C18 nunca, pero entiendo que debe ser muy parecido al XC8. Lo que pasa es que al ser el XC8 una versión nueva en ocasiones es normal que encuentres algún bug que deben resolver en próximas versiones.
Al ser  las herramientas de microchip personalmente te recomendaría XC8 por que creo que esta sustituirá a C18 en un futuro, así ya aprendes la versión nueva.

Seguramente algún forero con experiencia en estas herramientas nos podrá orientar mejor.

Un saludo.
Título: Re: Duda MPLAB X
Publicado por: bitpic en 06 de Diciembre de 2012, 17:24:02
Confirmado, acabo de salir de una clase de MPLAB X y me confirman que el anterior MPLAB dejará de tener soporte el proximo año.
Título: Re: Duda MPLAB X
Publicado por: sander en 06 de Diciembre de 2012, 19:15:52
Confirmado, acabo de salir de una clase de MPLAB X y me confirman que el anterior MPLAB dejará de tener soporte el proximo año.

Ah si?, que lastima a mi me sigue gustando mas el MPLAB 8. pero bue


Saludos
Título: Re: Duda MPLAB X
Publicado por: c@Lic_0 en 06 de Diciembre de 2012, 20:02:32
Bueno tons a hecharle manos al mplabX y al XC8  :D
Título: Re: Duda MPLAB X
Publicado por: c@Lic_0 en 16 de Diciembre de 2012, 15:02:22
Hay un pequeño problema y no se cual es la razon, uso la siguiente instruccion y por alguna razon no se cumple ya que sin importar si el bit RB2 este en 0 o 1 salta a la siguiente instruccion

                          while (PORTBbits.RB2==1);

cambie a esta otra y tambien sigue en lo mismo

                          while (RB2==1);

Tal ves es que si la condicion tiene que realizarse con datos del tipo char, int o otros, por que aqui la estoy realizando con bits y un char, alguna ayuda?

Saludos.
Título: Re: Duda MPLAB X
Publicado por: willynovi en 16 de Diciembre de 2012, 15:31:48
Supongo que el puerto lo definiste como entrada previamente,

TRISBbits.TRISB2=1;

no veo por cual otro motivo no funcionaría ese while()
Título: Re: Duda MPLAB X
Publicado por: bitpic en 17 de Diciembre de 2012, 16:48:40
Yo probaría lo que te dice willynovi, comprueba que hayas definido bien el pin como entrada. Yo lo defino como entrada así TRISB0 = 0; y lo leo como tu haces PORTBbits.RB5


Si esta bien definido comprueba que realmente tienes un 1 en el pin con un voltimetro, no vaya a ser que sea problema de hardware.

En ocasiones el Mplab X tiene bugs y te vuelve loco, a mi me a ocurrido con varías cosas.

Prueba de ponerlo así, a ver si es porque faltan los corchertes.

while (PORTBbits.RB2==1){
}