Problema con Headers, CCS en MPLab

Hola a todoos!!

Espero que estén muy bien.

Aún con la ayuda de nuestro amigo forero Moyano, no he podido avanzar en el siguiente problema:

Estado:
CCS embebido en MPLab. CCS versión 4.065 instalado especialmente, ya que escuché que las versiones siguientes tenían errores. MPLab 8.53.

Bien, el problema es, que al compilar, no se está tomando en cuenta el header del main (SolarTrackV1.h). Compilo y me reclama que a otra librería (usb.h) le falta un #device, el cual ya está en el header SolarTrackV1.h. Nuestro amigo Moyano me ayudó obviando este problema, incluyendo todo el .h en el main.c (SolarTrackV1.c), copiando y pegando. El caso es el mismo.

Para que tengan todas las herramientas para ver lo que pasa, les adjunté el proyecto armado, para que les sea fácil abrirlo, compilarlo, y ver el error.

Me he puesto a pensar lo que podría estar pasando... revisé todos los settings del MPLab, instalé una versión anterior del CCS ... me preocupé ahora de que todos los archivos (que están al rededor del main) tengan el mismo nombre... que el CCS esté bien configurado... ya no sé que hacer.

Alguien podría revisar qué pasa? Agradecería mucho cualquier ayuda.
Saludos!
 

Adjuntos

  • Error.PNG
    Error.PNG
    54 KB · Visitas: 18
  • SolarTrack.zip
    117.7 KB · Visitas: 6
Y donde está el main.h del que hacés el #include en el SolarTrackV1.c?

PD: Tenés el clock en 48MHz ?
 
Cierto. El Main que estoy llamando allí se me quedó así al probar si era un problema de nombres de archivo, pero con el susto de haber pasado una verguenza por la observación que me hiciste, corregí hasta ese error, pero el error que me manda el compilador permanece: quiere que le ponga un #device en el usb.h, y no sé por qué. Ahora estoy seguro de que los nombres de archivos están todos buenos y que están llamados de la forma correcta.

Pienso que no está tomando en cuenta el header "SolarTrackV1.h".

Otra razón puede ser, que en el .h sale:

#device ICD=TRUE
#device adc=16

pero ningún #device que tenga algo que ver con el USB. La verdad es que dudo que sea este el problema...

Por si acaso, he buscado harto en este foro, pero nadie ha tenido el mismo problema.
Saludos!
 
Es que no sé como has armado el proyecto de compilación, me parece que ahí está bodrio.
Probá de agregar #define PIC18F2550 (o el PIC que estés usando) o #include<18F2550.h> al comienzo del USB.h
Se me hace que tenés un lío con la inclusión de los headers...
 
Hmm, probé con ambos, y nada.
Para el segundo me tira más de 80 errores: prácticamente deja de reconocer al header completo.

Probé además poniendo lo que el quería: #device PIC18F2550
Tampoco, nada...
 
No se...hay algo raro con los headers (80 errores de qué?) o con la forma en la que has armado el proyecto. Cuando esté en el trabajo pruebo de levantarlo con el CCS para ver que pasa.
 
Acá te subo el SolarTrackV1.c corregido...mas todo lo otro tal como estaba.

El problema es que o has tocado los archivos USB*.c, o has agregado código al boleo o el paquete de archivos del USB es un desastre por que usa #define y #use externos....o una mezcla de todo.
Lo que te subo compila OK pero dá 3 warnings:

  • Una por el 1 en el while...OK
  • Dos por deshabilitar interrupciones en código reentrante...y eso no se de donde viene...
pero igual debería funcionar.

Vas a tener que estudiar mas C por que al tanteo no vas a avanzar nada.
 

Adjuntos

  • SolarTrack.zip
    183.7 KB · Visitas: 11
Última edición:
Mil más mil gracias ezavalla!!

En CCS ahora me compila bien también, con los Warnings que me dijiste. Entendí también los cambios que hiciste. Se aprende.

MPLab insiste con lo mismo. Dice que falta un #device. Ahora bien, detecté algo que creo que nos acerca bastante a la fuente del problema:

MPLab lo que hace, es compilar MI "main", y después por separado compila el "usb.c". Después de eso es OBVIO que falta el #device, ya que ese está definido en el SolarTrack.c.

Hay que decirle al MPLab que no ejecute dos veces el CCS compilando cada cosa por separado. Tengo que encontrar la opción que deshabilita ese modo.

Te preguntarás por qué yo insisto con el mplab... bueno, es que hace tiempo invertí bastante dinero en comprarme el PicStart+ (programador), y no pienso tener que cambiarme de programador por culpa de este detalle. Si CCS tuviese una forma de tratar con este programador, ok, me cambio a CCS, y no molesto más.

Y te agradezco mucho denuevo!!

Si alguien sabe cómo hacer que MPLab (mediante CCS) no compile las cosas por separado... agradezco también! Buscaré la forma yo mismo mientras tanto.

Un saludo!
 
OK. Me alegro que te quede mas claro!
No entiendo lo del MPLab y el PICStart+ :eek:

Que tiene que ver un programador (que hay como 50000 dando vueltas) con el entorno de desarrollo? (No conozco al PicStart+ :oops:)

Yo tengo el programador THOR que tiene un zócalo ZIF y conector ICSP, y que se maneja con el PICKIT2 y uso el CCS para desarrollo...compilo, genero el hex y el otro programa lo carga al PIC...y se acabó la historia...
Que tiene el PicStart+ que lo haga diferente?

PD: Si compila el main por un lado y el usb.c por otro, hay algo que funciona MUY MAL, por que vos tenés un #include "usb.c" en tu programa, y eso fuerza al preprocesador a METER junto con el código del main a todo el código del usb.c (es como si lo hubieras copiado dentro del archivo que tiene al main), así que no hay razón para que compile por separado NADA.
 
Última edición:
El PicStart+ en verdad no tiene ninguna cosa especial, o bueno, es que necesita un driver para funcionar, y ese ya viene con MPLab. Ya que hasta ahora siempre me ha funcionado con todo, no he tenido la idea de tener que cambiarme de programa para cargar el Hex a travez de este programador.

Y si, esto no puede ser más raro. Entiendo perfectamente que si está el "include", se "incluye" el programa del segundo archivo y se compila todo en uno.
He estado indagando, hasta llegar al lugar donde el MPLab le da algunos comandos especiales al CCS, que tienen esta forma:

+DF +LN +T +A +M -Z +Y=9 +EA

Ya sé que el Y=9 es el nivel de optimización, pero eso no viene al caso.
Asique estoy en eso de leer el manual, a ver si encuentro qué significa cada cosa. Puede que ande por allí el asunto.

Tengo entendido que gran parte del Post Destacado que sale más arriba, del autor Moyano Jonathan, ha sido hecho en CCS con entorno MPLab. O por último alguien debe haber andado así. Y nadie más tuvo el mismo problema al parecer.

Nuevamente gracias ezavalla.

Saludos!
 
Estimadísimos ezavalla y Jonathan,

problema solucionado.

Efectivamente, se compilaban ambas cosas una tras otra. Y la solución no puede ser más tonta...

Si se fijan, en la ventana Project, estaba el archivo del main pero TAMBIÉN estaba el usb.c.
ESE era el problema. Saqué el archivo de esa lista, mandé a compilar, y como salía #include, no era necesario adjuntarlo a la lista en forma extra, como era antes.

Listo!!
Muhísimas gracias a los dos, espero que este problemita, o más bien, este post, le sirva a otra gente.

Saludos!
 
Efectivamente, se compilaban ambas cosas una tras otra. Y la solución no puede ser más tonta...

Si se fijan, en la ventana Project, estaba el archivo del main pero TAMBIÉN estaba el usb.c.
ESE era el problema. Saqué el archivo de esa lista, mandé a compilar, y como salía #include, no era necesario adjuntarlo a la lista en forma extra, como era antes.

Te lo dije en mi segundo mensaje ;)

ezavalla dijo:
Es que no sé como has armado el proyecto de compilación, me parece que ahí está bodrio.
 
Estimadísimos ezavalla y Jonathan,

problema solucionado.

Efectivamente, se compilaban ambas cosas una tras otra. Y la solución no puede ser más tonta...

Si se fijan, en la ventana Project, estaba el archivo del main pero TAMBIÉN estaba el usb.c.
ESE era el problema. Saqué el archivo de esa lista, mandé a compilar, y como salía #include, no era necesario adjuntarlo a la lista en forma extra, como era antes.

Listo!!
Muhísimas gracias a los dos, espero que este problemita, o más bien, este post, le sirva a otra gente.

Saludos!

Quote: amigo, se que no me conoces pero tu solución me hizo por fin acostarme, graciaaaaaaaaaaaaas

Gustavo
 
Atrás
Arriba