TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: elmasvital en 17 de Agosto de 2006, 11:25:41

Título: Problema tonto con pic18f2550
Publicado por: elmasvital en 17 de Agosto de 2006, 11:25:41
Tengo un problema tonto... estoy intentando compilar un programa en ccs para que parpadee un led en una placa
entrenadora de un 18f2550

el codigo es el siguiente

Código: CSS
  1. /////////////////////////////////////////////////////////////////////////
  2. ////                 Encendido LED                                   ////
  3. /////////////////////////////////////////////////////////////////////////
  4. #include <18F2550.h>
  5. #fuses HS,NOWDT,NOPROTECT,NOLVP
  6. #use delay(clock=12000000)
  7.  
  8. #define LEDV    PIN_C0
  9. #define LED_ON  output_high
  10. #define LED_OFF output_low
  11.  
  12. void main(void) {
  13.  
  14.    while (true)
  15.    {
  16.       LED_OFF(LEDV);
  17.       delay_ms(300);
  18.       LED_ON(LEDV);
  19.       delay_ms(300);
  20.      
  21.    }  
  22.  
  23. }


Tiene un cristal de 12mhz puesto y mclr activado a 5v.

Le falta algo a los fuses? porque no se me enciende el led para nada y está probado tanto continuidad del circuito como el led. Alguna idea?

1 saludo
Título: Re: Problema tonto con pic18f2550
Publicado por: RedPic en 17 de Agosto de 2006, 11:52:22
Un ejemplo completo : El PORTC para el 18F4550

(Recuerda que los PIC con USB no tienen RC3)

Código: C
  1. #include <18f4550.h>
  2. #fuses HS,MCLR,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOPBADEN,NOLVP,NOCPD,NODEBUG,NOWRT,NOVREGEN
  3. #use delay(clock=20000000)
  4. #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
  5.  
  6. #bit UCON_EUSB = 0xF6D.3
  7.  
  8. const long Low    = 666;
  9. const long Medium = 333;
  10. const long Fast   = 111;
  11. const long Mega   = 55;
  12. const long Ultra  = 22;
  13.  
  14. char Keypress=' ';
  15. char Speed;
  16.  
  17.  
  18. #int_rda
  19. void serial_isr() {
  20.  
  21.    Keypress=0x00;
  22.    if(kbhit()){
  23.       Keypress=getc();
  24.       if(Keypress!=0x00){
  25.          putchar(keypress);
  26.          if((keypress>'0')&&(keypress<'6')){
  27.             Speed=keypress;
  28.          }
  29.          if(keypress=='F'){
  30.             Speed='\0';
  31.          }
  32.          keypress=0x00;
  33.       }
  34.    }
  35. }
  36.  
  37. void My_Delay(void){
  38.  
  39.    Switch(Speed){
  40.       case '1': delay_ms(Low);    break;
  41.       case '2': delay_ms(Medium); break;
  42.       case '3': delay_ms(Fast);   break;
  43.       case '4': delay_ms(Mega);   break;
  44.       case '5': delay_ms(Ultra);  break;
  45.    }
  46. }
  47.  
  48. void main() {
  49.  
  50.    int i=0,j;
  51.  
  52.    disable_interrupts(global);
  53.    disable_interrupts(int_timer1);
  54.    disable_interrupts(int_rda);
  55.    disable_interrupts(int_ext);
  56.    disable_interrupts(int_ext1);
  57.    disable_interrupts(int_ext2);
  58.  
  59.    setup_adc_ports(NO_ANALOGS);
  60.    setup_adc(ADC_OFF);
  61.    setup_spi(FALSE);
  62.    setup_psp(PSP_DISABLED);
  63.    setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
  64.    setup_timer_0(RTCC_OFF);
  65.    setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);
  66.    setup_timer_2(T2_DISABLED,0,1);
  67.    setup_timer_3(T3_DISABLED);
  68.    setup_comparator(NC_NC_NC_NC);
  69.    setup_vref(FALSE);
  70.    port_b_pullups(FALSE);
  71.    set_tris_e(0b00010000);
  72.    set_tris_c(0b10000000);
  73.    UCON_EUSB=0;
  74.    enable_interrupts(global);
  75.    enable_interrupts(int_rda);
  76.  
  77.    Output_c(0b00000000);
  78.  
  79.    delay_ms(500);
  80.    Speed='4';
  81.    printf("\r\n\RRBOARD2 Listen on Ethernet\r\n\n");
  82.    printf("PORTC Press 1, 2, 3, 4, 5 or F\r\n\n");
  83.  
  84.    do {
  85.  
  86.       Output_c(i++);
  87.       My_Delay();
  88.       if(i==0){
  89.          for(j=1;j<5;j++){
  90.             Output_c(0xff);
  91.             My_Delay();
  92.             Output_c(0x00);
  93.             My_Delay();
  94.          }
  95.       }
  96.  
  97.    } while (TRUE);
  98. }
Título: Re: Problema tonto con pic18f2550
Publicado por: Nocturno en 18 de Agosto de 2006, 08:42:18
Ese programa está bien, elmasvital. Yo creo que debes tener el problema en el circuito.
Título: Re: Problema tonto con pic18f2550
Publicado por: elmasvital en 20 de Agosto de 2006, 10:15:35
La verdad es que el problema este me trajo de cabeza. Y practicamente me irritó tanto que estubo apunto caer todo el peso de la ira sobre la placa... ya sabeis la electronica es un mundo muy sutil, cualquier detalle te manda todo al traste.

Probé continuidad, cortocircuitos... y la prueba final infalible de desconectar fisicamente TODOS los puertos y pins del pic hasta dejarlo con vss, vdd, clock y rb0 e incluso NOMCLR y aun así no funcionaba. Y en la protoboard sí.

Finalmente me temia que era el clock y así fue... volví a repasar con el cuter por una linea que pasaba cerca un pin del clock y que estaba probada y no daba continuidad... pero fue la solución. Seguramente alguna virutilla invisible me daba el coñazo.

1 saludo

Título: Re: Problema tonto con pic18f2550
Publicado por: pabarriu en 27 de Septiembre de 2006, 17:22:08
Que placa entrenadora usas? Está el circuito en alguna parte.

saludos