output_high(PIN_B4);#byte PORTB= 0xF81
#bit LED= PORTB.4
...
LED=1Yo uso CCS y Hi-Tech, personalmente me gusta más el Hi-Tech pero la facilidad de CCS y el tener viejos programas escritos para este compilador hace que no lo abandone del todo.
El Hi-Tech es un poco más complicado porque casi todo se debe hacer a pedal, diferente al CCS que con una línea de código se configuran muchos parámetros. La ventaja del Hi-Tech es que es C estandar, tiene compiladores para otras marcas de micros y el código compilado es más compacto (por lo menos en las pruebas que he hecho migrando código CCS a Hi-Tech y comparando). Además el trabajar con Hi-Tech facilita un poco el aprendizaje de C18 y C30 de microchip, aunque las últimas versiones del CCS son compatibles con casi todos los PIC.
Saludos,
Diego.
Entonces el mas "ANSI" es hitech?
Si en vez de hacer esto:Código: [Seleccionar]output_high(PIN_B4);
hacemos esto otro:Código: [Seleccionar]#byte PORTB= 0xF81
#bit LED= PORTB.4
...
LED=1
Habremos hecho lo mismo, y hemos utilizado CCS. Sin embargo, nuestro código será mucho más fácil de migrar a cualquier otro compilador.
Valga el ejemplo para cualquier instrucción de alto nivel de CCS: setup_oscillator, enable_interrupts, set_pwm1_duty...
Yo sin embargo estoy ahora sufriendo de CCSítis1 al pasarme al C30 de Microchip. Y este estaba muy "malacostumbrado" a las funciones de alto nivel del CCS y como no hice el paso previo por el ASM, mis ensambladores han sido siempre los del Z80 y los de Motorola, ahora me veo que tengo que configurar cada cosita de los 24/30/dsPIC registrillo a registrillo, detatíllo tras detallíto, bit a bit. Y se me hace inacabable y cuasi ininteligible.:D :D :D :D :D :D :D :D :D
Pero eso es lo que tiene acostumbrarse a lo fácil. :mrgreen:
1CCSítis: Inflamación de las meninges debida a una exposición exagerada a la influencia del CCS C.
gracias por los aportes,Gaston, jejeje no me toco usar micros Microchip, pero por lo que estuve viendo en el caso de usuarlo usaria el compilador de Microchip
Richi777 nos cuentas con que compilador trabajas en los casos que usas Pics?
Lo importante es que con C cualquier compilador que utilices, te simplificará las horas de trabajo programando como cuando lo hacias en asm.
yo recien empiezo con c para pics (keil/gnu para arm es excelecte) la verdad que estoy mas que desconfiado de ccs, en cierta prueba genero mas codigo que el mismo programa para mikrobasic , me enferma su interfaz extraña, la falta de "intellisense", la verdad que me jode mucho el supuesto "code explorer" donde no solo mapea mis funciones sino todas las de las librerias incluidas :shock: y el listado de archivos de proyecto va para atras. A favor como uds dicen su facilidad de uso y poca restriccion ansi (compila cualquier cosa). Estoy bajando el demo de hitech y luego les cuento cuanto pesa el mismo programa compiladoa mi la interfaz de la version 4.057 del ccs me parece amigable. ademas de la librerias y muchas cosas q trae que te simplifican la vida.... pero sabran en gustos y colores" :mrgreen:
también se comenta que genera código más grande que el de Microchip.Con esto último no estoy de acuerdo, Jesús. Te recomiendo que compiles un printf con C18/C30 y hagas la prueba con CCS. La diferencia de tamaño suele ser de 10 a 1.
también se comenta que genera código más grande que el de Microchip.Con esto último no estoy de acuerdo, Jesús. Te recomiendo que compiles un printf con C18/C30 y hagas la prueba con CCS. La diferencia de tamaño suele ser de 10 a 1.
también se comenta que genera código más grande que el de Microchip.Con esto último no estoy de acuerdo, Jesús. Te recomiendo que compiles un printf con C18/C30 y hagas la prueba con CCS. La diferencia de tamaño suele ser de 10 a 1.
fijense que se puede hacer una analogía de lo que sucede entre los pic-compiladores y los SO existentes
me explico, en los inicios linux/win se caracterizaron por robustez/fragilidad y dificultad/facilidad, parece ser que lo que se impone es la facilidad de uso a pesar de las inestabilidades que sobrelleva el software intuitivo.
¿que se puede decir?
Que una cosa complicada, no remonta mucha popularidad, y que un software intuitivo tiene mas posibilidades de ser usado.
entonces me pregunto,
¿existira la posibilidad de hacer algo robusto, potente y que tenga una curva de aprendizaje rapida?
Me parece que descubrimos los verdadedoros dueños de CCS jajajajaGaston si queres mi opinion mas dura, nunca usuaria CSS, es lo menos ANSI que vi en mi vida...asi que dudo que sea el dueño :D
Como un pequeño aporte, con respecto a las librerias que trae incluidas el CSS para el manejo de UART, IIC, etc, en el compilador que estoy usando actualemente ( CodeWarrior para micros FreeScale serir HCS08 ), tiene un programita adicional que se llama ProcessExpert, que permite visualmente setear todos los registros en forma visual, ejemplo podes programar la interfaz UART con su Baud Rate especificando el valor, y este te genera codigo "C" que toca todos los registros. El codigo generado no esta oculto sino que lo podes modificar a tu antojo, es muy piola cuando empezas de 0 y tenes monton de registros.Keil tambien lo hace y es excelente contar con eso. Sobre las librerias, ccs entrega las fuentes por lo que llevarlas a otra plataforma no deberia ser mucho trabajo
En mi caso no es lo que generalmente hago, pero este programita me dio muy buenos resultados.
Salu2 !
Trabaje con Keil usando 8051 ( Dallas ) y realmente me parecio un excelente compilador, creo que ellos fueron los inventores del modo bankeado en esta plataforma, una forma elegante de romper los 64 K de los micros de 8 bits.Como un pequeño aporte, con respecto a las librerias que trae incluidas el CSS para el manejo de UART, IIC, etc, en el compilador que estoy usando actualemente ( CodeWarrior para micros FreeScale serir HCS08 ), tiene un programita adicional que se llama ProcessExpert, que permite visualmente setear todos los registros en forma visual, ejemplo podes programar la interfaz UART con su Baud Rate especificando el valor, y este te genera codigo "C" que toca todos los registros. El codigo generado no esta oculto sino que lo podes modificar a tu antojo, es muy piola cuando empezas de 0 y tenes monton de registros.Keil tambien lo hace y es excelente contar con eso. Sobre las librerias, ccs entrega las fuentes por lo que llevarlas a otra plataforma no deberia ser mucho trabajo
En mi caso no es lo que generalmente hago, pero este programita me dio muy buenos resultados.
Salu2 !
Pero no me digas la adrenalina que lleva usar Windows + CCS para trabajar.:D :D :D mas de uno en el foro sufrimos de CCSitis como dijo RedPic.hasta orita estoy empezando a documentarme sobre el y me ha parecido mejor y mas facil de utilizar q el mikroc y otros...y muy buen analisis del paisano PalitroqueZ
Eso es vida!!! Como me siento bien joven !!! :D :D :D
Como cualquier hilo que se empiece sobre el tema, nunca tendra fin... :mrgreen: :mrgreen:
Y quien dijo que Bill Gates usa Windows ??? !!! :D :D :D
Haciendo retrospectiva,muy inteligente la observacion. Yo creo que ninguno acostumbrado a ansi permitiria las "licencias" que se toma ccs
si hubiese empezado en mis inicios con el C de microchip ó el hitech de manera forzada, aprender la manera en que se maneja el ansi en esos compiladores en profundidad, otro gallo cantaría (me sentiria dichoso, ya que es un conocimiento adquirido). Ahora bien si después me fuese topado con el ccs. viene la pregunta: ¿me hubiese cambiado?, no lo sabría :? :?
SDCC is a retargettable, optimizing ANSI - C compiler that targets the Intel 8051, Maxim 80DS390, Zilog Z80 and the Motorola 68HC08 based MCUs. Work is in progress on supporting the Microchip PIC16 and PIC18 series. SDCC is Free Open Source Software, distributed under GNU General Public License (GPL).
Linux - x86, Microsoft Windows - x86 and Mac OS x - ppc are the primary, so called "officially supported" platforms.
Para los que buscan algo verdaderamente libre y al parecer "robusto" tenemos el SDCC - Small Device C Compiler.... sinceramente no lo he probado por falta de tiempo, pero tiene buena pinta gracias a su soporte a algunos chips de diferentes fabricantes... lease la descripcion en ingles:CitarSDCC is a retargettable, optimizing ANSI - C compiler that targets the Intel 8051, Maxim 80DS390, Zilog Z80 and the Motorola 68HC08 based MCUs. Work is in progress on supporting the Microchip PIC16 and PIC18 series. SDCC is Free Open Source Software, distributed under GNU General Public License (GPL).
Tambien esta para las siguientes plataformas:CitarLinux - x86, Microsoft Windows - x86 and Mac OS x - ppc are the primary, so called "officially supported" platforms.
Para que no haya quejas en cuanto al S.O. jejeje.... he leido algo de documentacion y efectivamente es un C ANSI... solo que para especificar, lease parametros, configuraciones, etc de un dispositivo a otro si requiere algo de estudio... 8) ...
La página oficial del proyecto (no se si sigue desarrollandose, pero claro, como es OpenSource ahi te brindan el codigo fuente por si quieres mejorerle o aportarle algo...)
http://sdcc.sourceforge.net (http://sdcc.sourceforge.net/)
Si alguien ya lo utilizó... pues... que esperas!! comenta!!...
Saludos!
Y alguien sabe si existe una adaptacion del GCC ?, por lo que se es bastante "retargeteable"nop, gcc soporta arquitecturas derivadas de 8080 solamente
Salu2!
Yo también opino lo mismo.
Sin embargo me gustaría aportar un matiz.
Si en vez de hacer esto:Código: [Seleccionar]output_high(PIN_B4);
hacemos esto otro:Código: [Seleccionar]#byte PORTB= 0xF81
#bit LED= PORTB.4
...
LED=1
Habremos hecho lo mismo, y hemos utilizado CCS. Sin embargo, nuestro código será mucho más fácil de migrar a cualquier otro compilador.
Valga el ejemplo para cualquier instrucción de alto nivel de CCS: setup_oscillator, enable_interrupts, set_pwm1_duty...
struct x{
char xx
}
#bit W= x.xx.4
struct x{
char xx
}
#byte Y = x.xx
#bit YY= Y.4
los nombres de las variables son asi de pobres porque solo estoy probando
nop, gcc soporta arquitecturas derivadas de 8080 solamente
http://gcc.gnu.org/install/specific.html (http://gcc.gnu.org/install/specific.html)
nop, gcc soporta arquitecturas derivadas de 8080 solamente
http://gcc.gnu.org/install/specific.html (http://gcc.gnu.org/install/specific.html)
Disciento, hay varios micros en su listado que no son derivados el 8080.
Ej. PowerPC, Blackfin , toda línea de motorola, etc. :)
revisa esto, derivado de 8080 comunmente significa no solo de descendencia directa sino tambiem "inspirado" en 8080 como por ej PowerPC, Blackfin , toda línea de motorola, etc. :) :) , refiere a arq vonn neuman (mapeo lineal de memoria de datos y prog), varios registros de trabajo , metodos de direccionamiento complejos como base + indice o indirecto y algunas otras yerbas popularizadas por 8080Citarpsykhon, por lo que se yo, las estructuras son simples tipos de variable. Por lo tanto no puedes definir una estructura, y usarla tal cual. Seria como hacer "int; int=20;". Tienes que crear una instancia de esa estructura: "struct x MiEstructura;" y luego, podras usarlo asi: "MiEstructura.xx=25;" Las variables internas de la estructura se mantienen, lo unico que tienes que crear instancias de esa estructura.En el ej puse la declaracion de la misma y no la instanciacion, es cierto, pero no es ese el punto que quiero hacer notar.
sopresa sorpresa 8) 8)
MPLAB C30 v2.04 GCC Source (http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30v2_04.tgz)
nop, gcc soporta arquitecturas derivadas de 8080 solamente
http://gcc.gnu.org/install/specific.html (http://gcc.gnu.org/install/specific.html)
psykhon, por lo que se yo, las estructuras son simples tipos de variable. Por lo tanto no puedes definir una estructura, y usarla tal cual. Seria como hacer "int; int=20;". Tienes que crear una instancia de esa estructura: "struct x MiEstructura;" y luego, podras usarlo asi: "MiEstructura.xx=25;" Las variables internas de la estructura se mantienen, lo unico que tienes que crear instancias de esa estructura.En el ej puse la declaracion de la misma y no la instanciacion, es cierto, pero no es ese el punto que quiero hacer notar.
revisa esto, derivado de 8080 comunmente significa no solo de descendencia directa sino tambiem "inspirado" en 8080 como por ej PowerPC, Blackfin , toda línea de motorola, etc. :) :) , refiere a arq vonn neuman (mapeo lineal de memoria de datos y prog), varios registros de trabajo , metodos de direccionamiento complejos como base + indice o indirecto y algunas otras yerbas popularizadas por 8080Ah, es que me había mareado la cita.
no hay problema,el termino se usa mucho en los foros en ingles, despues te busco un art sobre la historia de los micros y vas a ver de donde sacan esa referencia. Si bien coincido en que no es lo mas correcto o literal llamarlos derivados de 8080 (por ej 6800 si lo es pero risc para nada), asi aparece en monton de foros y de gente que sabe parva sobre arquitectura de micros. Un super libro sobre la evolucion de up aunque muy "intel" es "los microprocesadores intel" de Barry Brey (una biblia que ya va por la octava edicion en esp. )revisa esto, derivado de 8080 comunmente significa no solo de descendencia directa sino tambiem "inspirado" en 8080 como por ej PowerPC, Blackfin , toda línea de motorola, etc. :) :) , refiere a arq vonn neuman (mapeo lineal de memoria de datos y prog), varios registros de trabajo , metodos de direccionamiento complejos como base + indice o indirecto y algunas otras yerbas popularizadas por 8080Ah, es que me había mareado la cita.
La verdad es la primera vez que leo lo de inspirado en 8080 signifique todo eso :).
no hay problema,el termino se usa mucho en los foros en ingles, despues te busco un art sobre la historia de los micros y vas a ver de donde sacan esa referencia. Si bien coincido en que no es lo mas correcto o literal llamarlos derivados de 8080 (por ej 6800 si lo es pero risc para nada), asi aparece en monton de foros y de gente que sabe parva sobre arquitectura de micros. Un super libro sobre la evolucion de up aunque muy "intel" es "los microprocesadores intel" de Barry Brey (una biblia que ya va por la octava edicion en esp. )Listo, me quedó más claro porqué les llaman derivados del 8080 aunque sean genialmente diferentes jijiji.
siguiendo el tema de gcc para pic18 parece que lo que mas trabajo les da (o dio si abandonaron :( ) es la paginacion de la memoria.La verdad habría que ver porqué, la memoria en los 18F tanto ram como de programa son consecutivas pero supongo que a lo que se referirán será algo más relacionado con tener arquitectura harvard que con lo demás...
Descaradisimos los mchip en sacudir 1000 verdes por algo que sacaron de un proyecto open source.Si, pero es discutible. El RedHat linux también sale u$s 300 para empresas y aún más y sin embargo también salió de un proyecto open source. Habría que leer bien los aspectos legales de la GPL a la cual adhiere gcc (ya va por la versión 3) y habrá que analizar qué requisitos debe cumplir microchip para poder 'vender' el compilador aunque sea una versión modificada.
El futuro dira si sobrevive la familia 16bits o no (comparando cualquier marca 32bits vale lo mismo o menos por chip)
Incluso he visto gente en otros foros que ha posteado que para mover bloques de memoria o calculos matemáticos un dspic no tiene nada que envidiarle al más lindo de los ARM9 (que valen bastante más).En serio leiste esto? pasame el post asi les digo que comparen un dspic con "el mas lindo de los arm9" :
Lo acabo de buscar y no encontré, pero ya lo encontraré (espero). Es alguien de la lista de correo PICLIST que hizo tales pruebas, no yo. pero recuerdo haberlo leído porque también me sorpendió. El contexto en que lo dijo era en una comparación entre micros donde se hablaba que comprarar micros así por así es muy complicado y depende la tarea para que uno lo quiera/necesite.CitarIncluso he visto gente en otros foros que ha posteado que para mover bloques de memoria o calculos matemáticos un dspic no tiene nada que envidiarle al más lindo de los ARM9 (que valen bastante más).En serio leiste esto? pasame el post asi les digo que comparen un dspic con "el mas lindo de los arm9" :
http://www.linuxdevices.com/news/NS6595510999.html (http://www.linuxdevices.com/news/NS6595510999.html)
no me estaba refiriendo a arm cuando decia que hay micros de 32 bits mas baratos (atmel,freecale) pero el que escribio eso merece...(inserte su imaginacion aqui)
y como correspone comparaciones mas justas para los dspic fijate que un arm7 de 3 dollar capaz de decodificar mp3 sin copro a media maquina (30mhz)
https://datatype.helixcommunity.org/Mp3dec.html (https://datatype.helixcommunity.org/Mp3dec.html)
sobre el ejemplo de la red, mire por donde se mire 60 mips son mas que 40Sin entrar en polémicas e irnos por las ramas, los mips es una cosa y el tiempo de ejecución de una tarea es otra muy diferente. Que tenga muchos mips no significa que su arquitectura pueda resolver en el mismo tiempo la misma tarea.
sobre lo de la gpl mas tarde voy a buscar el libro de licencias que tengo valla a saber donde, si no me equivoco la regla es "lo que gpl toca en gpl se convierte"Salvo pago de regalías. Un ejemplo muy cercano que conozco porque lo vivo casi a diario en mi laburo es que MySQL por ejemplo te permite distribuir su motor de base de datos para aplicaciones profesionales previo pago de licencia. Si tu sistema es cerrado tenés que pagar, si tu sistema es open source, no.
Si nos deviamos un monton pero me parece importante no dejar inconclusos los intercambios de ideas ya que (espero) hay mas gente leyendo o que leera esto y es justo que no terminen creyendo que un z80 puede hacer algo mejor que un pentium :z)See, obviamente. Además es lindo hablar con gente que usa otras cosas porque permite abrir la cabeza.
También hay que ver ese precio de 3 dólares por qué cantidad es. Los dspic por 10k también los podes conseguir a 4u$s o menos.por menos de tres dollar tenes arm cortex3 de luminary micro al por menor en digikey http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=726-1001-ND (http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=726-1001-ND)
Pero eso depende del soft, vos decis que eso es solo porque es ARM y que dicho código no se podría implementar con el dspic?no se si se puede o no, a la fecha no se hizo y no por falta de intento (dec. mp3). y mientras que dspic puede tener librerias para voip, en el mercado hay AHORA telefonos voip, centrales voip y demas yerbas implementados en arm. De nuevo intentar compararlos en como intentar escribir en el aire con un lapiz
Sin entrar en polémicas e irnos por las ramas, los mips es una cosa y el tiempo de ejecución de una tarea es otra muy diferente. Que tenga muchos mips no significa que su arquitectura pueda resolver en el mismo tiempo la misma tarea.
El ejemplo más básico que se me ocurre es que comparemos un Pentium IV con un DSP. El Pentium IV ejecuta más mips pero si le das a resolver una multiplicación de coma flotante tardará mucho más que un DSP diseñado a tal fin.
See, obviamente. Además es lindo hablar con gente que usa otras cosas porque permite abrir la cabeza.
Incluso he visto gente en otros foros que ha posteado que para mover bloques de memoria o calculos matemáticos un dspic no tiene nada que envidiarle al más lindo de los ARM9 (que valen bastante más).
Perdon que siga tan aferrado pero lo irrealista de la comparacion me tiene intrigado y no quiero desestimarlo por mas raro que se oiga.Yo tengo todos los mails de piclist y aún así tampoco encontré nada. El tema es que no es algo que yo haya dicho, solamente que leí y recuerdo.
Revisando a fondo esto puede llegar a ser que algunos calculos de coma flotante los haga mejor que un arm7 pero arm9 que tiene copro y +200mips??? hay que verlo
La ventaja aca es que Arm es solo un nucleo y posee infinidad de perifericos entre ellos dsp serios capaces de codificar video a 1080p por lo que es medio dificil justificar comparaciones y por otro lado, que cosa no podes emular con un micro varias veces mas potente?
no lo dudo, pero con tantos datos en este rubro la memoria nos juega malas pasadas a todosPerdon que siga tan aferrado pero lo irrealista de la comparacion me tiene intrigado y no quiero desestimarlo por mas raro que se oiga.Yo tengo todos los mails de piclist y aún así tampoco encontré nada. El tema es que no es algo que yo haya dicho, solamente que leí y recuerdo.
Revisando a fondo esto puede llegar a ser que algunos calculos de coma flotante los haga mejor que un arm7 pero arm9 que tiene copro y +200mips??? hay que verloEl tema era si dspic era mas potente en ciertas cosas el "el mas lindo arm9" pero aun asi que fuente comprobable tenes de que se vendan dspic por toneladas ?
Bueno, pero ARM9 a 200Mips cuanto cuesta? cómo lo soldas? esas cosas hay que ver también. Por eso comparar conlleva sus riesgos.
Como te dije antes, los ARM me parecen super interesantes pero los dspic se siguen vendiendo por toneladas, es decir que nicho de mercado hay.
La ventaja aca es que Arm es solo un nucleo y posee infinidad de perifericos entre ellos dsp serios capaces de codificar video a 1080p por lo que es medio dificil justificar comparaciones y por otro lado, que cosa no podes emular con un micro varias veces mas potente?
Es cierto que con un micro varias veces más potente podes emular a otro micro , pero en una comparativa como la que pusiste 40Mips vs 60Mips la cosa ya no es tan simple ni lineal y hay que ver cada caso, a eso iba mi aclaración.
Y cuando vamos al mundo real, de los negocios, si usas un ARM9 hay que ver qué precio tiene, lo cual no es menor cuando alguien hace algo masivo.
El tema era si dspic era mas potente en ciertas cosas el "el mas lindo arm9" pero aun asi que fuente comprobable tenes de que se vendan dspic por toneladas ?
si de soldar se trata hay arm9 en encapsulado lqfp "soldables a mano" (ST tiene un par) (http://www.st.com/mcu/inchtml-pages-str9.html). Comparar lleva datos tangibles, no riesgos
Si hablamos de mundo real, de los negocios, fijate que micro tiene tu celular, tu camara digital o tu dvd , probablemente arm o mips; hasta mi notebook, una ibm, tiene un avr dentro. No hay ningun producto masivo en el mercado que declare usar "mchip inside" :) que tal eso para el mundo de los negocios.
Como me gusta opinar despues de haber leido lo suficiente y saber que cuento con respaldos reales para mis opiniones aca van dos notas interesantes de la mas grande editorial de componentes electronicos Electronics Design,Strategy,News (EDN)
sobre el dominio de ARM :
http://www.edn-europe.com/fromedneuropearmtargetsautomotiveandindustrialdominance+article+1383+Europe.html#ref (http://www.edn-europe.com/fromedneuropearmtargetsautomotiveandindustrialdominance+article+1383+Europe.html#ref)
sobre el futuro incierto de los micros a 16 bits:
http://www.edn.com/article/CA6413784.html(http://) (http://www.edn.com/article/CA6413784.html)
Ojo, el que microchip cobre por usar un compilador bajo licencia GPL no es ilegal. La licencia GPL y otras de SOFT LIBRE quieren decir que eres libre de usar el soft que conseguiste para cualquier proposito, puedes modificarlo (si lo haces, debes publicar tu cambio y pasarlo) y mirar como funciona. De hecho es por eso que microchip tiene en sus servidores montado el fuente del programa que vende, y que esta comentado en un post de este foro anteriormente. Si no lo hiciera, sus cambios sobre el codigo fuente serian ilegales porque violan la misma licencia GPL que cubre a GCC.sopresa sorpresa 8) 8)
MPLAB C30 v2.04 GCC Source (http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30v2_04.tgz)
Así es y el C32 también está basado en gcc.
Igual te lo cobran u$s 1000 así que no se como sera el tema de la violación del GPL de gcc.
Me parece que descubrimos los verdadedoros dueños de CCS jajajaja