Comienzo con PIC's [Ayuda]

Me interesa mucho el tema de la electronica digital, he conseguido un programador de PIC's y un PIC 18f4550. Tengo conocimiento sobre programacion en C por lo que opte por usar miKroC. El proyecto con el que decidi comenzar es el de un encendido y apagado de un LED.
Aca esta mi codigo en miKroC:
(uso el oscilador interno)
Código:
void main() {
   TRISB.F1 = 0;
   while(1) {
            PORTB.F1 = 1;
            Delay_ms(800);
            PORTB.F1 = 0;
            Delay_ms(800);
   }
}
El codigo en ASM generado por miKroC:
Código:
; ADDRESS       OPCODE  ASM
; ----------------------------------------------
$0000   $EF04   F000                    GOTO    _main
$0008   $       _main:
;LEDS.c,2 ::                    void main() {
;LEDS.c,3 ::                    TRISB.F1 = 0;
$0008   $9293                           BCF     TRISB, 1, 0
;LEDS.c,4 ::                    while(1) {
$000A   $       L_main_0:
;LEDS.c,5 ::                    PORTB.F1 = 1;
$000A   $8281                           BSF     PORTB, 1, 0
;LEDS.c,6 ::                    Delay_ms(800);
$000C   $0E09                           MOVLW   9
$000E   $6E0C                           MOVWF   STACK_12, 0
$0010   $0EFF                           MOVLW   255
$0012   $6E0B                           MOVWF   STACK_11, 0
$0014   $0EFF                           MOVLW   255
$0016   $6E0A                           MOVWF   STACK_10, 0
$0018   $2E0C                           DECFSZ  STACK_12, F, 0
$001A   $D001                           BRA     $+2
$001C   $D007                           BRA     $+8
$001E   $2E0B                           DECFSZ  STACK_11, F, 0
$0020   $D001                           BRA     $+2
$0022   $D003                           BRA     $+4
$0024   $2E0A                           DECFSZ  STACK_10, F, 0
$0026   $D7FE                           BRA     $-1
$0028   $D7FA                           BRA     $-5
$002A   $D7F6                           BRA     $-9
$002C   $0E29                           MOVLW   41
$002E   $6E0B                           MOVWF   STACK_11, 0
$0030   $0EFF                           MOVLW   255
$0032   $6E0A                           MOVWF   STACK_10, 0
$0034   $2E0B                           DECFSZ  STACK_11, F, 0
$0036   $D001                           BRA     $+2
$0038   $D003                           BRA     $+4
$003A   $2E0A                           DECFSZ  STACK_10, F, 0
$003C   $D7FE                           BRA     $-1
$003E   $D7FA                           BRA     $-5
$0040   $0E6C                           MOVLW   108
$0042   $6E0A                           MOVWF   STACK_10, 0
$0044   $2E0A                           DECFSZ  STACK_10, F, 0
$0046   $D7FE                           BRA     $-1
;LEDS.c,7 ::                    PORTB.F1 = 0;
$0048   $9281                           BCF     PORTB, 1, 0
;LEDS.c,8 ::                    Delay_ms(800);
$004A   $0E09                           MOVLW   9
$004C   $6E0C                           MOVWF   STACK_12, 0
$004E   $0EFF                           MOVLW   255
$0050   $6E0B                           MOVWF   STACK_11, 0
$0052   $0EFF                           MOVLW   255
$0054   $6E0A                           MOVWF   STACK_10, 0
$0056   $2E0C                           DECFSZ  STACK_12, F, 0
$0058   $D001                           BRA     $+2
$005A   $D007                           BRA     $+8
$005C   $2E0B                           DECFSZ  STACK_11, F, 0
$005E   $D001                           BRA     $+2
$0060   $D003                           BRA     $+4
$0062   $2E0A                           DECFSZ  STACK_10, F, 0
$0064   $D7FE                           BRA     $-1
$0066   $D7FA                           BRA     $-5
$0068   $D7F6                           BRA     $-9
$006A   $0E29                           MOVLW   41
$006C   $6E0B                           MOVWF   STACK_11, 0
$006E   $0EFF                           MOVLW   255
$0070   $6E0A                           MOVWF   STACK_10, 0
$0072   $2E0B                           DECFSZ  STACK_11, F, 0
$0074   $D001                           BRA     $+2
$0076   $D003                           BRA     $+4
$0078   $2E0A                           DECFSZ  STACK_10, F, 0
$007A   $D7FE                           BRA     $-1
$007C   $D7FA                           BRA     $-5
$007E   $0E6C                           MOVLW   108
$0080   $6E0A                           MOVWF   STACK_10, 0
$0082   $2E0A                           DECFSZ  STACK_10, F, 0
$0084   $D7FE                           BRA     $-1
;LEDS.c,9 ::                    }
$0086   $D7C1                           BRA     L_main_0
;LEDS.c,10 ::                   }
$0088   $D7FF                           BRA     $

Esta es la vista desde el programador:

(El programador estaba descontecado, es solo como muestra)

Las pruebas en proteus fueron satisfactorias, pero a la hora de ponerlo en practica, el controlador no funciona y se calienta. Tengo un transformador de 220v a 9v CC de 500 mA para el proyecto y es regulado con un 7805A (conecto el positivo en la pata de entrada del 7805 y directamente saco la conexion positiva a las 2 patas positivas de este controlador y las negativas van directamente al negativo).
Me gustaria saber que podria estar haciendo mal, desde ya, muchas gracias.
 
Hola lautarox!!


Yo tambien programo en MikroC... y ps el programa esta bien... aunque me gustaria ver los registros que le pusiste al PIC en MikroC... pero lo que mas me llama la atencion es lo que dices: el PIC se calienta... solo por curiosidad que programador utilizas?? que software?? porque a lo que haz puesto en el mensaje no deberia generar problema... cualquier cosa estoy para ayudar


Saludos
 
Muchisimas gracias por contestar, el programador es el TM-Prog (es el que subi en la foto de arriba), es creado por un particular, el PIC parece grabarse y leerse correctamente ya que despues de realizar el grabado, la lectura devuelve resultados positivos, en cuanto a la configuracion, aca esta la configuración del proyecto:
Clock: 008.000000
El tema de que el controlador se caliente puede deberse a que este este fuera de funcionamiento? (quemado, etc,) aunque parece grabarse y leerse correctamente..
La conexion parece estar bien hecha no?
 
Última edición:
Mira sinceramente yo veo bien el programa... y lo que se refiere al PIC creo que si ya quedo fuera de funcionamiento (quemado), a mi tambien me a pasado eso, programo sin ningun problema pero al momento de armarlo no responde y se calienta... lo que te recomendaria es que programes otro PIC igual y pruebes, los registros estan bien a mi parecer... yo programo con PICProg4u ya que aun estoy en la familia de los 16F :LOL:!!
Otra cosa... si pudiera hacer un programa que ponga un 1 en todas las patas del PIC y miras por si alguna no te enciende podria ser que se haya quemado esa parte del PIC, yo asi pruebo si el PIC se a quemado completamente o solo una pata, ya que me parece raro que el PIC se caliente pero al programarlo no aparezca que esta dañado...

Me cuentas y trataremos de solucionar eso ok?? te ayudo en lo que pueda


Saludos
 
Puede ser que se haya quemado por una mala conexion? es probable que haya usado el controlador con los 9v sin querer.., la conexion estaria bien hecha como la explique no?
El tema del oscilador interno, estaria bien?
 
Mira estoy revisando el datasheet de este PIC y al ver los registros creo que hay que tomar en cuenta algunos otros no solo poner los de Default, y si, tienes razon con lo que acabas de decir, pudiera ser que se haya quemado (no en su totalidad) el PIC, es por eso que aun lo reconoce el programador, otra cosa, mira en el datasheet y desactiva entradas analogicas, solo por curiosidad...

Mira aqui te pongo los registros del oscilador interno y externo,

1. XT Crystal/Resonator
2. XTPLL Crystal/Resonator with PLL enabled
3. HS High-Speed Crystal/Resonator
4. HSPLL High-Speed Crystal/Resonator
with PLL enabled
5. EC External Clock with FOSC/4 output
6. ECIO External Clock with I/O on RA6
7. ECPLL External Clock with PLL enabled
and FOSC/4 output on RA6
8. ECPIO External Clock with PLL enabled,
I/O on RA6
9. INTHS Internal Oscillator used as
microcontroller clock source, HS
Oscillator used as USB clock source
10. INTXT Internal Oscillator used as
microcontroller clock source, XT
Oscillator used as USB clock source
11. INTIO Internal Oscillator used as
microcontroller clock source, EC
Oscillator used as USB clock source,
digital I/O on RA6
12. INTCKO Internal Oscillator used as
microcontroller clock source, EC
Oscillator used as USB clock source,
FOSC/4 output on RA6


Yo tambien estoy tratando de hacer un programa para este PIC y ps en el Proteus me tira un error... asi que tratare de solucionarlo, creo que son estos registros, miralos, me cuentas y tambien tratare de ver que pasa...
 
He probado con el otro PIC, este no se calienta, pero tampoco funciona, creeria que el error esta en el oscilador interno y su configuracion, tenes alguna informacion sobre eso?
Muchas gracias por tu ayuda
 
Ps mira amigo me a quedado solo leer el datasheet porque los registros estan bien...
ahora en Proteus al simular me sale un error, el cual se asemeja a que el oscilador interno no funciona e ignora el registro, estoy probando con distintas configuraciones en los registros del oscilador interno, haciendo comparaciones con los registros que te puse anteriormente, mira esta es la pag del datasheet: http://www.mat.ucsb.edu/~dano/CUI/PIC18F4550datasheet.pdf



Sigue intentando y me cuentas, pero ahora (si lo podemos decir asi) ya sabemos que el problema esta con en oscilador


Saludos
 
Gracias por el trabajo que te estas tomando, Proteus tira esta alerta solamente:

Creeria que lo que esta indicando es que no va a usar la velocidad indicada en la configuracion del componente ya que se esta usando el oscilador interno.
Adjunto el proyecto y el archivo hex si queres comprobarlo igual que yo.
 

Adjuntos

  • leds.zip
    15.7 KB · Visitas: 47
Exactamente lo mismo da a mi, hey sabes que prueba hice ahora (tal vez tu ya la intentaste) ? quite todos los registros referentes al oscilador, y a la hora de simularlo lo hace sin errores y tal como se quiere que sea, la verdad a mi me funcionan los proyectos cuando los hago asi (sin poner los registros de oscilador) y trabajo con el PIC 16F690 y ahora que lo intente con tu PIC me simulo el programa correctamente, sabes, porque no intentas hacer lo mismo, compila el programa quitandole los chequesitos a los registros del oscilador, lo compilas y programas el PIC, pruebalo y me cuentas

PD: Para mi es un honor ayudarte

Saludos
 
Sin los registros te anda bien en la practica? usas oscilador interno o externo en la practica?
Proteus tira una alerta de configuracion, si borras la velocidad del clock de la configuracion del componente no muestra mas la alerta..
 
Mira, en los registros del Oscilador en MikroC no le pongo ni uno, y alli mismo en la velocidad de oscilacion le pongo 8MHz, y cuando lo corro en Proteus no me tira ningun error y lo corre de maravilla!! prueba ahora programando el PIC y armando el circuito en tu protoboard para ver si asi queda... una cosa... le agregaste a tu programa la linea de:
CMCON=7?? solo para desactivar los comparadores A/D.

Hazlo y me dices...
 
CMCON=7?? solo para desactivar los comparadores A/D.
No habia visto ese comando en ningun ejemplo de mikroC, donde decis que lo ponga?
Proteus tiene una configuracion por defacto de la velocidad del oscilador interno, creo que sacar los registros no es la solucion, pero probare..
 
Amigo encontre la solucion :) ya encontre el registro para el oscilador interno, despues de tanto que busque y lei el datasheet, mira te mando el programa adjunto ya con los registros,simulalo y veras que ya funciona, al fin le encontramos la solucion.


Saludos
 

Adjuntos

  • Programa.zip
    6.4 KB · Visitas: 108
Última edición:
Simula el archivo que te acabo de mandar adjunto con mi anterior mensaje, al fin encontre el registro y ya lo puse, simulalo, programa el PIC y me cuentas!! aunque me dijeron que este PIC18F4550 necesita forzosamente un reloj externo!! pero prueba y me cuentas!!
 
Última edición:
Entonces las afirmaciones que me han dicho son ciertas!! este PIC necesita un oscilador externo obligatoriamente!! he consultado a un profesor que tuve y me a dicho esto mismo!! creo que solo falta que lo confirmes tu, pero ps viendo los registros de este PIC
avala esta afirmacion!!

Cuando quieras puedes volver a consultar y yo estare dispuesto a ayudarte nuevamente!!



Saludos
 
Atrás
Arriba