Problema 18F2550

#1
Hola, os llevo leyendo mucho tiempo pero no posteaba. La verdad, me sabe mal empezar con una duda, pero espero empezar a aportar proyectos interesantes al foro.

Estoy comenzando con la programación de este PIC (ya he programado otros) y para empezar estoy haciendo un "Hola mundo" de lo más sencillo, hacer parpadear un LED

Decir que la programación la hago con MPLAB y PIC BASIC PRO 3. Los Configuration Bits no los pongo en el código sino manualmente en el programa. El código es el siguiente:

Código:
TrisB = 0
led var portb.3
 
main:
high led
pause 500
low led 
pause 500
goto main
end
Es lo mas sencillo que se puede hacer, pero no funciona y no se por qué. Para comprobarlo estoy usando PIC18 SIMULATOR IDE y el puerto B3 se queda en estado alto siempre...

Subo el .hex a ver si me podéis echar una mano.

PD: PBADEN está configurado de tal forma que los pines estén como entradas o salidas digitales. La ultima duda es: ¿En caso de seleccionar el oscilador interno para declarar la frecuencia sería así?
Código:
`Para 4 MHz
DEFINE OSC 4
Un saludo y muchas gracias de antemano!
 

Adjuntos

#2
Hola amigo, la declaración del oscilador esta bien como la colocas. La declaración y todo lo demás lo veo perfecto pero la verdad que no entiendo porque te hace eso. De todas formas yo voy a probar y te respondo. ;)
 
#3
Haber Prueba esto:

`Para 4 MHz
DEFINE OSC 4

TrisB = 0
PORTB=0 'configurando PORTB.
LATB=0

led var portb.3

main:
high led
pause 500
low led
pause 500
goto main
end
 
#5
syryus. He simulado el código del clasico programa del LED y si funciona.
Pero simulado con PROTEUS por que efectivamente con el PIC18 Simulator IDE no anda.
También copie tu programa directamente al editor modificandolo para tal programa,
y compilandolo para crear el HEX el cúal tambien funciona en PROTEUS.
PD. El hex que subiste también se ejecuta sin problemas.
Nota. Use PROTEUS 7.8 SP2, MicroCode Studio Plus 3 con MPASM 5.35 y PIC18 Simulator IDE 2.55
Aqui dejo los archivos de la simulación. :apreton:
 

Adjuntos

Última edición:
#8
Pues nada, no se por qué narices sigue sin funcionar...

Probado en protoboard y nada. El PIC lo lee, graba, verifica correctamente, etc... Así que descarto que esté mal. La tensión que le llega al pic es la correcta, pero creo que el fallo va a estar en la configuración del oscilador interno. ¿Alguien que lo halla hecho?
 
#10
El encapsulado de 28 pines. Cristal no estoy usando, estoy intentando hacer funcionar el oscilador interno. ¿Cómo debe ser el conexionado del pin MCRL?

A ver si me estoy equivocando ahí

Saludos!
 
#11
El encapsulado de 28 pines. Cristal no estoy usando, estoy intentando hacer funcionar el oscilador interno. ¿Cómo debe ser el conexionado del pin MCRL?

A ver si me estoy equivocando ahí

Saludos!
Para probarlo sin el botón de reset solo conectalo a VDD
Si quieres usar el Reset y lo tienes configurado con el BIT MCLRE = ON
Va con una R de 1K a 10K hacia VDD y un Push Button a hacia VSS
Aqui te dejo los Bits de configuración en un txt y pon principal atención al BIT PBADEN = OFF
y al BIT FOSC = INTOSC_HS
 

Adjuntos

Última edición:
#14
Por fiiiiiiiiiiiiiiiiiiiin!

Ya he hecho que funcione. El problema estaba en los fuses como esperaba. Hasta ahora programaba con puerto serie y con Winpic800 y era solo marcar las casillas que se quisieran. Finalmente he conseguido meter los fuses en PBP y que funcione. Aquí un minitutorial de como hacerlo:

1.- Lo primero es ir a donde tengamos instalado PBP (normalmente en C:\PBP)
2.- Entramos en la carpeta en la que tengamos los archivos .INC (en PBP 3.0 es DEVICES)
3.- Buscamos en .INC de nuestro PIC y lo abrimos con bloc de notas
4.- Añadimos ; a las lineas entre CONFIG y ENDCONFIG:

Código:
#CONFIG
        ;__CONFIG    _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L
        ;__CONFIG    _CONFIG1H, _FOSC_HSPLL_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
        ;__CONFIG    _CONFIG2L, _PWRT_OFF_2L & _BOR_ON_2L & _BORV_3_2L & _VREGEN_ON_2L
        ;__CONFIG    _CONFIG2H, _WDT_ON_2H & _WDTPS_512_2H
        ;__CONFIG    _CONFIG3H, _CCP2MX_ON_3H & _PBADEN_OFF_3H & _LPT1OSC_OFF_3H & _MCLRE_ON_3H
        ;__CONFIG    _CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L
#ENDCONFIG
5.- Copiamos esas lineas a nuestro programa modificando lo que queramos y listo!

Aquí la prueba:


Gracias por ayudar!
 
#15
Por fiiiiiiiiiiiiiiiiiiiin!

Ya he hecho que funcione. El problema estaba en los fuses como esperaba. Hasta ahora programaba con puerto serie y con Winpic800 y era solo marcar las casillas que se quisieran. Finalmente he conseguido meter los fuses en PBP y que funcione.
Gracias por ayudar!
Ok. Buen aporte ese mini tutorial, la verdad se me hizo mas facil entenderlo como lo haz explicado
que como lo habia visto anteriormente. Y gracias a ti por compartir tus ensayos.
No me quize quedar con la duda he hize un pequeño programa para comprobarlo
siguiendo tus instrucciones y ahora ya también puedo meter los FUSES dentro del editor PBP :)
Bien, púes aqui dejo el ensayo que realize, se trata del clasico Luces del Auto Fantastico.
Suerte y hasta luego. :apreton:
 

Adjuntos

Temas similares

Arriba