Autor Tema: Problema tonto con pic18f2550  (Leído 2738 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado elmasvital

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 1713
Problema tonto con pic18f2550
« 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

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Problema tonto con pic18f2550
« Respuesta #1 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. }
« Última modificación: 17 de Agosto de 2006, 11:55:42 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Problema tonto con pic18f2550
« Respuesta #2 en: 18 de Agosto de 2006, 08:42:18 »
Ese programa está bien, elmasvital. Yo creo que debes tener el problema en el circuito.

Desconectado elmasvital

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 1713
Re: Problema tonto con pic18f2550
« Respuesta #3 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


Desconectado pabarriu

  • PIC10
  • *
  • Mensajes: 12
Re: Problema tonto con pic18f2550
« Respuesta #4 en: 27 de Septiembre de 2006, 17:22:08 »
Que placa entrenadora usas? Está el circuito en alguna parte.

saludos


 

anything