Autor Tema: Problema 12F1822  (Leído 8460 veces)

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

Desconectado f-traxx

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 116
Problema 12F1822
« en: 24 de Marzo de 2011, 07:54:16 »
Hola buenas, mi problema es que no consigo que el PIC 12F1822, me funcione como yo quiero, lo unico que estoy probando es de programar el PIC para que me haga parpadear un LED conectado a RA0, y lo que me hace el pic quando doy tension es encender el LED y no volver a apagarlo, aqui adjunto el codigo en CCS por si alguien me quiere ayudar.
Por cierto, alguien lo ha usado alguna vez?? le ha funcionado??

Saludos f-traxx
« Última modificación: 24 de Marzo de 2011, 08:00:30 por f-traxx »

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: Problema 12F1822
« Respuesta #1 en: 24 de Marzo de 2011, 08:33:48 »
Hola f-traxx, veo que haces la definición de pines para comunicación con RS232 asi:

Citar
#use rs232(baud=9600,parity=N,xmit=PIN_A0,rcv=PIN_A1,bits=8)

luego defines el LED asi:

Citar
#define LED PIN_A0   // ya usaste el pin A0 con #use rs232

y más adelante defines un pin análogo así:

Citar
setup_adc_ports(sAN1|VSS_VDD);   // ya usaste el pin A1 con #use rs232

Si defines los pines A0 y A1 para ser usados en la comunicación RS232, no los puedes usar luego para el LED y para entrada análoga al mismo tiempo. Debes usar pines diferentes para cada función.

Saludos!

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Problema 12F1822
« Respuesta #2 en: 26 de Marzo de 2011, 14:39:19 »
Con con que programador lo estas quemando? Que yo sepa su tensión de VPP es diferente en estos PICs.

Desconectado f-traxx

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 116
Re: Problema 12F1822
« Respuesta #3 en: 28 de Marzo de 2011, 03:34:05 »
He probado lo que me ha dicho bmb y no tiene nada que ver, sigue igual.

Respecto a lo que me ha dicho jeremylf lo estoy haciendo con el pickit2 clone, pero es culpa de algo del compliador, he descartado la posibilidad de que sea del programador, porque me pasaron un hex. de pardadear un LED hecho con asm. y funcionó perfectamente, en cambio quando yo hago lo mismo con los mismos fuses, pero con CCS version 4.114 no me funciona...

Gracias por el comentario

Saludos f-traxx
« Última modificación: 28 de Marzo de 2011, 04:21:44 por f-traxx »

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: Problema 12F1822
« Respuesta #4 en: 28 de Marzo de 2011, 09:13:42 »
He probado lo que me ha dicho bmb y no tiene nada que ver, sigue igual.

Hola f-traxx, por el hecho de que aún no funciona el programa no quiere decir que lo que te he dicho no tenga nada que ver.  Puedes estar seguro que los pines que usas para un LED y una entrada análoga, no puedes usarlos a la vez con la comunicación serial.
De la versión que estás usando de CCS, si te puedo decir que está llena de problemas.  Trata de actualizarla o reinstala una versión anterior.
Puedes subir el código con los cambios?

Saludos!

Desconectado f-traxx

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 116
Re: Problema 12F1822
« Respuesta #5 en: 28 de Marzo de 2011, 12:54:44 »
Este es el codigo con los cambios:
Código: C
  1. #include <12F1822.h>
  2.  
  3. #FUSES NOWDT                    //No Watch Dog Timer
  4. #FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT
  5. #FUSES NOCPD                    //No EE protection
  6. #FUSES NOPROTECT                //Code not protected from reading
  7. #FUSES NOMCLR                   //Master Clear pin used for I/O
  8. #FUSES NOBROWNOUT               //No brownout reset
  9. #FUSES NOIESO                   //Internal External Switch Over mode disabled
  10. #FUSES NOFCMEN                  //Fail-safe clock monitor disabled
  11. #FUSES NODEBUG                  //No Debug mode for ICD
  12. #FUSES WDT_NOSL              
  13. #FUSES NOWRT                    //Program memory not write protected
  14. #FUSES PLL                  
  15. #FUSES NOSTVREN                 //Stack full/underflow will not cause reset
  16. #FUSES BORV19                
  17. #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
  18. #FUSES PUT                      //Power Up Timer
  19. #FUSES NOCLKOUT              
  20.  
  21. #use delay(int=4000000)
  22.  
  23. #define LED PIN_A0
  24.  
  25.  
  26. void main()
  27. {
  28.    setup_oscillator(osc_4mhz);
  29.    setup_adc_ports(NO_ANALOGS);
  30.    setup_adc(ADC_CLOCK_INTERNAL);
  31.    setup_spi(SPI_SS_DISABLED);
  32.    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
  33.    setup_timer_1(T1_DISABLED);
  34.    setup_timer_2(T2_DISABLED,0,1);
  35.    setup_ccp1(CCP_OFF);
  36.    setup_comparator(NC_NC);
  37.  
  38.  
  39.     while(true)
  40.     {
  41.     output_low(LED);
  42.     delay_ms(1000);
  43.     output_high(LED);
  44.     delay_ms(1000);
  45.     }
  46. }

Saludos f-traxx

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: Problema 12F1822
« Respuesta #6 en: 28 de Marzo de 2011, 13:02:47 »
Hola, te falta colocar el pin como salida.

saludos
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado f-traxx

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 116
Re: Problema 12F1822
« Respuesta #7 en: 28 de Marzo de 2011, 13:31:28 »
con este codigo hace lo mismo:

Código: C
  1. #include <12F1822.h>
  2. #device adc=8
  3.  
  4. #FUSES NOWDT                    //No Watch Dog Timer
  5. #FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT
  6. #FUSES NOCPD                    //No EE protection
  7. #FUSES NOPROTECT                //Code not protected from reading
  8. #FUSES NOMCLR                   //Master Clear pin used for I/O
  9. #FUSES NOBROWNOUT               //No brownout reset
  10. #FUSES NOIESO                   //Internal External Switch Over mode disabled
  11. #FUSES NOFCMEN                  //Fail-safe clock monitor disabled
  12. #FUSES NODEBUG                  //No Debug mode for ICD
  13. #FUSES WDT_NOSL              
  14. #FUSES NOWRT                    //Program memory not write protected
  15. #FUSES PLL                  
  16. #FUSES NOSTVREN                 //Stack full/underflow will not cause reset
  17. #FUSES BORV19                
  18. #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
  19. #FUSES PUT                      //Power Up Timer
  20. #FUSES NOCLKOUT              
  21.  
  22. #use fast_io(a)
  23.  
  24. #use delay(int=4000000)
  25.  
  26. #define LED PIN_A0
  27.  
  28.  
  29. void main()
  30. {
  31.    setup_oscillator(osc_4mhz);
  32.    setup_adc_ports(NO_ANALOGS);
  33.    setup_adc(ADC_CLOCK_INTERNAL);
  34.    setup_spi(SPI_SS_DISABLED);
  35.    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
  36.    setup_timer_1(T1_DISABLED);
  37.    setup_timer_2(T2_DISABLED,0,1);
  38.    setup_ccp1(CCP_OFF);
  39.    setup_comparator(NC_NC);
  40.  
  41.    set_tris_a(0b00000000);
  42.  
  43.     while(true)
  44.     {
  45.     output_low(LED);
  46.     delay_ms(1000);
  47.     output_high(LED);
  48.     delay_ms(1000);
  49.     }
  50. }

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: Problema 12F1822
« Respuesta #8 en: 28 de Marzo de 2011, 18:52:51 »
Hola f-traxx, intenté compilar tu código y no me lo permitió.  Me salen varios errores por el uso de fuses que no corresponden al PIC, entonces con el PIC Wizard del CCS V4.108 armé un código similar que compiló bien. Te lo dejo para que lo ensayes.

Código: C
  1. #include <12F1822.h>
  2. #device adc=8
  3.  
  4. #FUSES NOWDT                    //No Watch Dog Timer
  5. #FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT
  6. #FUSES NOCPD                    //No EE protection
  7. #FUSES NOPROTECT                //Code not protected from reading
  8. #FUSES NOMCLR                   //Master Clear pin used for I/O
  9. #FUSES PUT                      //Power Up Timer
  10. #FUSES NOBROWNOUT               //No brownout reset
  11. #FUSES NOIESO                   //Internal External Switch Over mode disabled
  12. #FUSES NOFCMEN                  //Fail-safe clock monitor disabled
  13.  
  14. #use delay(int=4000000)
  15.  
  16. #define LED PIN_A0
  17.  
  18. void main()
  19. {
  20.    setup_adc_ports(NO_ANALOGS|VSS_VDD);
  21.    setup_adc(ADC_CLOCK_DIV_2);
  22.    setup_spi(SPI_SS_DISABLED);
  23.    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
  24.    setup_timer_1(T1_DISABLED);
  25.    setup_timer_2(T2_DISABLED,0,1);
  26.    setup_ccp1(CCP_OFF);
  27.    setup_comparator(NC_NC_NC_NC);
  28.    setup_oscillator(OSC_4MHZ|OSC_INTRC|OSC_PLL_OFF,0);
  29.  
  30.    while(true)
  31.    {
  32.       output_low(LED);
  33.       delay_ms(1000);
  34.       output_high(LED);
  35.       delay_ms(1000);
  36.    }
  37. }

Saludos!

EDITO: Acabo de hacer la simulación con Mplab SIM y funciona muy bien.
« Última modificación: 28 de Marzo de 2011, 19:02:59 por bmb »

Desconectado f-traxx

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 116
Re: Problema 12F1822
« Respuesta #9 en: 29 de Marzo de 2011, 03:13:41 »
A mi con la versión 4.114 me lo deja compilar a la perfección.
He cogido tu codigo y lo he compilado directamente SIN tocar nada y a mi no me funciona, creo que acabo de encontrar otro bug de CCS... pasame el archivo .hex y asi pruebo si con el que genera la versión 4.108 es correcto, muchas gracias por todo.

Saludos
« Última modificación: 29 de Marzo de 2011, 03:19:22 por f-traxx »

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: Problema 12F1822
« Respuesta #10 en: 29 de Marzo de 2011, 08:43:21 »
Hola, como te había mencionado antes, tengo entendido que la versión 4.114 tiene muchos problemas.  Te adjunto el archivo .hex para que hagas la prueba.

Saludos!

Desconectado f-traxx

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 116
Re: Problema 12F1822
« Respuesta #11 en: 29 de Marzo de 2011, 10:52:13 »
Hola bmb en el archivo que me has pasado falta la configuración de los fuses, o como mínimo eso es lo que me dice el PICKIT2, si me pudieras decir qual utilizas tu... por si acaso ya me estoy bajando la version 4.108.

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: Problema 12F1822
« Respuesta #12 en: 29 de Marzo de 2011, 17:34:54 »
Hola f-traxx, no conozco como funciona el pickit2 y por lo tanto no sabría decirte el por qué te dice que faltan los fuses.  El archivo .hex que te envié corresponde al código que te muestro en la respuesta #8 en donde como ves tiene configurados los fuses.

No será posible con el pickit2 simplemente transferir el archivo .hex al PIC como se hace con cualquier programador?

Saludos!
« Última modificación: 29 de Marzo de 2011, 17:59:37 por bmb »

Desconectado f-traxx

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 116
Re: Problema 12F1822
« Respuesta #13 en: 30 de Marzo de 2011, 03:31:04 »
Ya lo he hecho, primero cogi el ejemplo que me pasaste tu, lo compile y lo grabé en el micro... no funcionó, después le pase directamente el .hex que tu me pasaste... no funcionó, me baje la version 4.108 hize un programa nuevo, compile y.... NO funcionó... ya estoy de este PIC hasta.... nunca me habia pasado esto y con este PIC se me está acabando la paciencia, porque en las simulaciones funciona, pero en la protoboard NO... solo me funcionó un ejemplo que me pasaron en hitech, me pasaron el archivo .hex y funcionó a la perfeccion, el led a parpadear... pero en CCS aun no lo he conseguido, el problema es que nada mas dar tensión, el led se enciende y ya no se apaga mas, como si no hiciera caso de los delay_ms...

Tu lo probaste en una protoboard bmb??

Saludos

Desconectado barral

  • PIC10
  • *
  • Mensajes: 37
Re: Problema 12F1822
« Respuesta #14 en: 30 de Marzo de 2011, 03:54:42 »
En en 16F1823, no funciona la función delay_ms, creo que es un bug de CCS en esa versión. No se decirte si está arreglado en versiones posteriores, pero te aseguro que con la 4.114 da problemas con delay_ms y con la conversión A/D. Hice hace poco un programa con este micro, y al final algunas cosas las hice haciendo yo las funciones (concretamente el delay, la configuración del A/D y el uso del mismo).

Por cierto, en este hilo cuentan alguna cosa sobre esto:

http://www.ccsinfo.com/forum/viewtopic.php?t=43333

Saludos
« Última modificación: 30 de Marzo de 2011, 03:58:07 por barral »