• Martes 14 de Mayo de 2024, 21:55

Autor Tema:  Programar En C...  (Leído 3898 veces)

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Programar En C...
« en: Jueves 10 de Marzo de 2005, 22:06 »
0
Hola! Nuevamente yo...
Bueno, quiero ponerme un poco a programar en C, pero hasta ahora siempre lo he hecho en asembler.
Hace un tiempo me baje el demo de Microchip, y escribí algo de código muy simple, que corrió en un 18F; pero al complicarlo un poco la cosa ya no funcionó :angry:
Se que hay varios compiladores dando vuelta, y ese es el problema: cuál de ellos conviene? Posiblemente el de Microchip sea el mejor, por lógica...
También veo que hay compiladores solo para los 16F; creo que conviene tener uno que soporte también los 18F.
Si alguién tiene algunos programitas de ejemplo, o sabe de algún link, o cualquier cosa, le estoy enormemente agradecido. En especial en lo que se refiere al manejo de los periféricos (AD, timers, etc...)

Bueno, desde ya las gracias a todos!

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Programar En C...
« Respuesta #1 en: Jueves 10 de Marzo de 2005, 22:28 »
0
Bueno, yo estoy en lo mismo, me parece mas simple y no seria malo saber por si acaso. En el FTP deje un manual que estoy leyendo en este momento.. todo lo que creas que sea util te invito a que lo coloques en el FTP, o dejes los links y yo me hago cargo. Gracias :)

Manual C para PIC
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

J1M

  • Miembro activo
  • **
  • Mensajes: 58
    • Ver Perfil
    • http://www.hobbypic.com
Re: Programar En C...
« Respuesta #2 en: Jueves 10 de Marzo de 2005, 23:53 »
0
Pues yo programo en CCS, no tendreis problemas en encontrar la version 3.221 (la ultima...y con pozima mágica de invulnerabilidad jejejej) claro q si lo vais a usar con fines comerciales, y en ningun caso educativos...en la página de ccs podeis adquirirlo ;)

El C18 de Microchip tb es muy potente, por experiencia (de una año hacia aká), encontrareis mas ejemplos, y librerias ya creadas para el CCS

Salu2!
..]Hobby[/color]PIC ]
Si puede pensarse, puede hacerse...

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Re: Programar En C...
« Respuesta #3 en: Viernes 11 de Marzo de 2005, 22:12 »
0
Hola! Navegando por la red encontré lo siguiente:

http://www.picant.com/c2c/c.html

Pude bajar un compilador C de esta dirección, que se integra al MPLAB y soporta los 16F y los 18F. Lo acabo de instalar sin problemas; pero ahora estoy sin saber para donde ir :( .
Tengo abierto el manual que bajé del ftp de solo código, y está interesante... pero sigo ahí.
Quiero empezar a probar con el 16F873, ya que me es más familiar que el 18F452.
Bueno, espero que el link sea útil; y si alguien tiene algún ejemplito como para empezar, será bienvenido! :)

Saludos!

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Re: Programar En C...
« Respuesta #4 en: Sábado 12 de Marzo de 2005, 19:47 »
0
Hola! Estuve practicando con el compilador C que bajé, y despacito está yendo :)
Viendo que nadie tiene ejemplos, aqui les dejo algo tonto que conseguí hacer, y funciona! :D
Es un pequeño programita para escribir en un CD4094; la cuestión es que con la poca información que tengo (el manual que dejó Jonathan, que está muy útil, y el help del compilador) pude hacer esto. Me llevó algo de tiempo, pero estoy aprendiendo...  Bueno, espero que le sea útil a quien se esté inciando.
Ah, el programa lo cargo en un 16F873.

Saludos y gracias por la ayuda! :)
    /*   PROGRAMA DE PRUEBA

       Hugo Erhard
       12.03.2005
    */
    #include <system.h>

    #pragma DATA 0x2007, 0x3D31;

    char zaehler94;

    /*
    Rutina para escritura de un byte en un CD4094
       RA1 -> strobe
       RA2 -> datos
       RA3 -> clock
    */
    void schreib_4094( char date )
    {
       char i;

       i = 0;
       while( i < 8 )               //son 8 bits a escribir
       {
          if ( date & 0x01 )         //es el bit0 = 1?
             set_bit( porta, 2 );   //si, saco un 1
          else
             clear_bit( porta, 2 );   //no, saco un 0
          set_bit( porta, 3 );      //clockeo
          clear_bit( porta, 3 );
          date = date >> 1;         //y preparo para sacar proximo bit
          i += 1;                  //incremento contador de bits a sacar
       }
       set_bit( porta, 1 );         //doy pulso de strobe para confirmar
       clear_bit( porta, 1 );
    }

    void main()
    {
       trisa = 00000001b;
       trisb = 00000000b;
       trisc = 01011001b;

       zaehler94 = 0;               //inicio contador en 0
       while(1)
       {
          set_bit( porta,4 );         //apago led
          delay_s( 1 );            //espero 1 segundo
          clear_bit( porta,4 );      //enciendo led
          delay_s( 1 );            //espero 1 segundo
          schreib_4094( zaehler94 );   //escribo el 4094
          zaehler94 += 1;            //incremento valor a escribir en el 4094
       }
    }</li>

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Re: Programar En C...
« Respuesta #5 en: Miércoles 16 de Marzo de 2005, 07:02 »
0
Hola a todos!
Para mover un poquito el tema, les propongo algo! :D
Es sobre el código que publiqué en el mensaje anterior. Lo compilé y cargué en el micro, y funcionó de maravilla. Y después ya no funcionó más... :angry:
El listado ya lo tienen, es corto y simple... Ahora les detallo del hard: es una pequeña placa experimental con 16F873; en RA0 tengo una entrada analógica, RA1 a RA3 son salidas y controlan un CD4094; en RA4 tengo un LED. El resto del hard no viene al caso ahora.
Sobre el caso en particular: tenía primero cargado un programa, totalmente distinto a este, que procesa la entrada analógica de RA0; sobre este código cargué este otro escrito en C y funcionó de maravilla :) Después desconecté la alimentación de la placa, cuando la vuelvo a alimentar, sorpresa!: no funcionó más :o . La alimentación llega desde el mismo grabador, es decir que grabador y micro están siempre alimentados.
Bien! Que pasó? Dónde está el problema? :ph34r: Yo encontré la causa, y ahora sí funciona "siempre"...
Al que le interese, le invito a ver el problema y dar alguna respuesta. Cualquier consulta, todos los días entro al foro, asi que solo dejenla aquí. La invitación va para los que recién empiezan (como es mi caso) y también para los que tienen más experiencia en C.
Ah, para que nadie me diga "tramposo"  :D , Jonathan ya tiene la respuesta.
Demos un plazo de unos días, digamos hasta el domingo, para ver como se soluciona esto!

Bueno, saludos a todos, y están invitados a "romperse el mate" :lol:  (en realidad no es nada complicado)