Autor Tema: Me largo a C18...  (Leído 3940 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
Me largo a C18...
« en: 27 de Marzo de 2007, 10:06:27 »
Hola

Era para comentaros que me voy a c18. Estoy harto de los bugs, de la implementacion MEDIOCRE que hacer CCS del ensamblador (#asm ...codigo... #endasm) con bugs incluidos, de su ide... en fin. He perdido mañanas enteras con algo que al final resulta ser... qué, y un bug. Primero con el GLCD (un andwf con una direccion diferente), luego con el "#asm ASIS" (que un BSF 0xF81,5 era compilado como BSF 0x13,0), y finalmente con la triste y cutre compilacion asm que tiene el compilador incluso con #opt 11 (dos instrucciones iguales repetidas, cambios de banco de memoria donde no lo necesita...).

Esto ultimo direis que es algo nimio y absurdo... pero cuando se trata de "leer" un pulso de 32 bits con tiempos de 1us y 3us (alto o bajo, segun el dato) con un reloj de 20mhz, es critico.

Yo paso de esperar al siguiente compilador. Es verdad que hay menos librerias en c18, pero bueno, habra que buscarse la vida. Desdeluego, lo que busco es un compilador robusto y fiable, y sobretodo, que cuando le diga ASM, escriba ASM , no RCALLs donde no lo he pedido, ni MOVLBs redundantes. Acaso lo que es "#asm" no es linkado directamente? Mentira gorda.

En fin tampoco tengo voz ni voto para quejarme (a caballo rega...) pero dicen que quejarse es libre. Solo escribo todo esto para desahogarme un poquito (no os confundais, no estoy pegandome de cabezazos contra la mesa... simplemente hablo de forma rotunda), y para depaso, conocer vuestras experiencias con CCS, o con C18.  Siempre tengo el consuelo de que me sera mas facil pasarme a C30 de este modo.

Nada, espero vuestros comentarios. Y agradeceria que quien ya use el c18, pudiera orientarme un poco por esta terra nova que acabo de pisar. No pido un tutorial por escrito, pero aceptaria gustosamente links.

un saludo y gracias de antemano!

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Me largo a C18...
« Respuesta #1 en: 28 de Marzo de 2007, 11:07:45 »
si buscas un compilador de C robusto, te hablo del PICC de Hitech, en realidad no lo he usado mucho, pero si conozo personas que trabajan con él y me han hablado bastante bien.
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
Re: Me largo a C18...
« Respuesta #2 en: 28 de Marzo de 2007, 20:51:37 »
Habia pensado en C18 porque ademas de ser el compilador insignia del mismo fabricante , mas tarde me podria servir para pasarme a los dspic facilmente...

pero nose habra que mirar el hitech. todo sea por no volver a tocar ccs :S

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Me largo a C18...
« Respuesta #3 en: 30 de Marzo de 2007, 11:11:10 »
Si quieres compiladores profesionales, mirate el PICC de HI-TECH como te han mencionado y sobre todo el de la compañia IAR, lo malo es que la licencia de uso es demasiado costoso.

Lo único bueno del C18 es que tiene una versión STUDENT, es un buen compilador, pero con respecto a sus optimizaciones es algo precario.


Suerte!!! ;)
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Me largo a C18...
« Respuesta #4 en: 31 de Marzo de 2007, 14:34:40 »
El C18 para mi es robusto y funciona muy bien.  Lo vengo usando hace mas de 1 año y medio y te digo que hasta ahora no me ha defraudado.

Respecto a las optimizaciones, sería discutible, es cierto que tiene algunas limitaciones tal vez contra el Hitech pero tampoco me parece que sean como para decir "dejan mucho que desear", realmente no me parece que sea para tanto y si hay alguna diferencia de seguro serán de algunos pocos bytes en códigos de varios Kbytes.

Con C18 tienes control total sobre tu micro y puedes hacer esas cosas que pretendes, pero no te engañes que si tu aplicación es 100% crítica en tiempo, ningún compilador de C resolverá tu problema, solamente el ASM.  Si quieres resolver con C algo que es muy ajustado en microsegundos, o elevas la velocidad de tu microcontrolador o usas assembler.

Si bien el C puede incluir código ASM, también es cierto que el encabezado de las interrupciones no te lo puedes evitar (digo esto porque hacer tu propio controlador de interrupciones que sea compatible con el resto del código generado por C18 tampoco es una tarea tan simple y mucho menos si dices que recién comienzas con el tema), entonces tu solución tal vez solo sea ASM.  Te lo digo solo para que lo tengas presente.

El tema del código compilado con MOVLB etc, es "discutible" porque habría que ver el caso.  Tal vez tu accedes a un registro que está en el banco 4 y el compilador en ese momento está en el banco 2 entonces agrega los MOVLB para solucionar el problema.

En C18 para evitar que haga estas cosas, deberás leer en su manual cómo usar las optimizaciones.  Eso está escrito en el manual y no en otro lado.  Deberás por ejemplo indicar en qué banco están las memorias que usas para que el compilador de esa forma obvie los MOVLB.  Además deberás tu mismo ingeniartelas para que las variables que esten en un mismo bucle estén todas en un mismo banco así minimizas el uso de los MOVLB.

En cuanto a usar el C18 , tienes que saber de antemano algo de C y luego leer un par de ejemplos de cómo hacer un código lo cual está explicado en el manual el cual se baja también gratuitamente.

Saludos

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
Re: Me largo a C18...
« Respuesta #5 en: 02 de Abril de 2007, 08:56:41 »
No obstante, puedo evitar que me salve el contexto en c18 no? Como en ccs, donde pones "#interrupt xxxx FAST"

Sobre micros mas rapidos lo he pensado, pero de tener uno mas rapido, seria el 18f2550 a 48mhz o simplemente dspic. El primero lo descarto porque necesito i2c, y no tengo precisamente buena experiencia... y el segundo no comment.

Y otra cosa... si la aplicacion tiene partes "criticas" y uso ASM... es cierto que C18 traduce AS-IS el asm, exceptuando movlbs (que colocando estrategicamente las variables en la ram lo evitamos)? Respecto a lo que me dices, te dire que tambien se me ocurrio lo de los bancos en ccs, y usé la directiva #locate para poner TODAS las variables que concernian a la rutina en el mismo banco (el 4 recuerdo). Pues en fin, el ccs en la parte ASM "para optimizar" metia RCALLs, pero antes de entrar a ellos, hacia MOVLB 0, y luego en la subrutina MOVLB 4. Vamos, que sin ninguna razon, perdia 2 ciclos de reloj. Y cuatro mas del rcall.

Y con un 16f88, ponia un "SETB TRISB,5" , y total que no se como, me duplicaba la instruccion. El problema principal (segun deducí) es que tienen un algoritmo para el codigo que genera cada instruccion, pero este algoritmo no tiene en cuenta el contexto que han dejado las instrucciones anteriores, y el que está por venir.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Me largo a C18...
« Respuesta #6 en: 03 de Abril de 2007, 14:33:44 »
No obstante, puedo evitar que me salve el contexto en c18 no? Como en ccs, donde pones "#interrupt xxxx FAST"

Si, se puede hacer, aunque no le veo el sentido práctico.

Sobre micros mas rapidos lo he pensado, pero de tener uno mas rapido, seria el 18f2550 a 48mhz o simplemente dspic. El primero lo descarto porque necesito i2c, y no tengo precisamente buena experiencia... y el segundo no comment.
¿Entonces?


Y otra cosa... si la aplicacion tiene partes "criticas" y uso ASM... es cierto que C18 traduce AS-IS el asm, exceptuando movlbs (que colocando estrategicamente las variables en la ram lo evitamos)? Respecto a lo que me dices, te dire que tambien se me ocurrio lo de los bancos en ccs, y usé la directiva #locate para poner TODAS las variables que concernian a la rutina en el mismo banco (el 4 recuerdo). Pues en fin, el ccs en la parte ASM "para optimizar" metia RCALLs, pero antes de entrar a ellos, hacia MOVLB 0, y luego en la subrutina MOVLB 4. Vamos, que sin ninguna razon, perdia 2 ciclos de reloj. Y cuatro mas del rcall.
En C18 si usas inline assembly, es "as is" y si usas rutinas en assembler llamadas de C, también es 'as is'.


Y con un 16f88, ponia un "SETB TRISB,5" , y total que no se como, me duplicaba la instruccion. El problema principal (segun deducí) es que tienen un algoritmo para el codigo que genera cada instruccion, pero este algoritmo no tiene en cuenta el contexto que han dejado las instrucciones anteriores, y el que está por venir.

SETB no es una instrucción válida en el pic que mencionas así que no se a que te refieres, de todas formas, todos los compiladores tienen sus limitaciones y sí , tienen su algoritmo, al fin y al cabo son un software también.

Resumiendo, mi consejo es que uses el C18 o el Hitech.

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
Re: Me largo a C18...
« Respuesta #7 en: 04 de Abril de 2007, 03:27:01 »
Sorry... sin querer se me fue la perola a los lares del 8051... donde dije SETB quise decir "BSF" o "BCF" cualesquiera.

He empezado a trabajar un poco con el c18 y sinceramente no me aclaro ni media. Y ciertamente, no tienen demasiado soporte en internet que digamos... y hitech ya ni comento... solo poner "picc-18 examples" en google y ni rastro del tema...

maunix, tiens razon, ccs no deja de ser un software, no deja de ser un algoritmo, ya... pero es que aquel que haya pagado tropecientos dolares por una herramienta que puede ser uno de los pilares de su empresa (lease robotica,apps industriales, etc...), no puede exigir menos a un compilador. Y ellos tambien deberian de ser conscientes de ello. No me parece justo que haya pagar por un año completo de actualizaciones, cuando el 80% de ellas son bugs, y generalmente, los bugs deberian de estar "cubiertos" 100% por el fabricante. Otra cosa es, que hablemos de nuevas caracteristicas del compilador, nuevas optimizaciones, chips añadidos, etcetera.

En fin no quiero volver a reconciliarme con ccs... mirare en hitech aver que se cuece...

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Me largo a C18...
« Respuesta #8 en: 04 de Abril de 2007, 11:23:56 »
Hola manex_1987

te comento que por la red se consiguen montones de ejemplos sobre el hitech, ya he estado mirando varios, si quieres un página en concreto visita esta http://www.microchipc.com/

sobre todo en la sección de source code

yo también tuve tropiezos en el google, pero solo es cuestión de escribir bien la palabra clave (keyword), usa por ejemplo: source code picc hitech, exercise, y palabras (en inglés) relacionada al C para micros y veras que se consigue bastante información
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Blanca Sánchez

  • PIC16
  • ***
  • Mensajes: 108
    • PicsMexico: Programación con Microcontroladores
Re: Me largo a C18...
« Respuesta #9 en: 27 de Abril de 2007, 02:35:41 »
que es eso del hitech?

Desconectado manuelroin24

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 665
Re: Me largo a C18...
« Respuesta #10 en: 27 de Abril de 2007, 04:10:54 »
para el amigo manex ya se esta empezando con un nuevo post del C18 ahi podemos poner nuestras dudas los que recien empezamos.
El conocimiento se consigue a base de esfuerzo...

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Me largo a C18...
« Respuesta #11 en: 27 de Abril de 2007, 11:33:57 »
que es eso del hitech?

Es la marca de un compilador de lenguaje C para micros, los hay para varios tipos de modelos y fabricantes
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek