Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

31/07/2010 #1


Problema con PIC16F877A y cristal de 20 Mhz.
Buenas...

no soy de escribir pero leo el foro es muy interesante desde ya les agradesco su ayuda.

les cuento este año me recibo de tecnico electronico.

bueno el problema en si, lo tengo con Pic 16f877a con un crystal de 20Mhz.

sin los dos capacitores de 22p funciona perfecto el diseño, pero cuando se los agrego falla no respetando tiempos o directamente se "tilda". probe con diferentes valores de capacitores y pasa lo mismo.
tengo una configuracon con HS y solamente PWRTEN.

bueno al que tenga una idea sera bienvenida.

si necesitan algun dato mas pidanlo.

otra vez desde ya gracias.
23/08/2010 #2


Respuesta: Problema: Pic 16f877a con un crystal de 20Mhz
Si solo tienes activados los fuses HS y PWRTEN, es que tu WDT esta habilitado (con su valor por defecto) y tu pic se resetea a cada rato. Lo mas probable es que sea eso.
24/08/2010 #3


Respuesta: Problema: Pic 16f877a con un crystal de 20Mhz
Esto es lo que me han explicado a mi sobre los cristales:
El PIC no arranca 18f2550

Mi experiencia me dice que un cristal de 20Mhz con condensadores de 15pf funciona perfectamente y el de otro fabricante le tengo que quitar los condensadores para que funcione, parece que alguno ya los lleva incorporado.
14/06/2016 #4


Hola igual soy nuevo en este foro, de igual manera tengo un problema con un microcontrolador 16f877a no me reconoce el Osc de 20MHz igual lo estoy definiendo en el programa del micro, ya cheque la fuente que los 5v esten bien regulados, solo me agarra el de 4MHz, y estoy usando todos los puertos del micro, estoy utilizando 4 entradas de convercion analogico digital, y el programa que estoy usando es pic basic pro, si alguien pudiera orientarme por favor
Gracias.
14/06/2016 #5

Avatar de roberttorres

AbrahamMtz dijo: Ver Mensaje
Hola igual soy nuevo en este foro, de igual manera tengo un problema con un microcontrolador 16f877a no me reconoce el Osc de 20MHz igual lo estoy definiendo en el programa del micro, ya cheque la fuente que los 5v esten bien regulados, solo me agarra el de 4MHz, y estoy usando todos los puertos del micro, estoy utilizando 4 entradas de convercion analogico digital, y el programa que estoy usando es pic basic pro, si alguien pudiera orientarme por favor
Gracias.
Buenas.
Tendrías que poner mas información, el código por ejemplo, asumo que has configurado los fuses como:
Código:
@ DEVICE pic16F877A, HS_OSC
   DEFINE OSC 20    ; Definir que se trabajará con 20MHz. (Osc. EXTERNO)
si no defines los fuses y el oscilador pic basic pro pondrá el que es por default 4mhz
Imágenes Adjuntas
Tipo de Archivo: jpg oscilador 16f877a.jpg (55,1 KB (Kilobytes), 24 visitas)
14/06/2016 #6


AbrahamMtz dijo: Ver Mensaje
Hola igual soy nuevo en este foro, de igual manera tengo un problema con un microcontrolador 16f877a no me reconoce el Osc de 20MHz igual lo estoy definiendo en el programa del micro, ya cheque la fuente que los 5v esten bien regulados, solo me agarra el de 4MHz, y estoy usando todos los puertos del micro, estoy utilizando 4 entradas de convercion analogico digital, y el programa que estoy usando es pic basic pro, si alguien pudiera orientarme por favor
Gracias.
Hola...¿programa?,¿ circuito?,¿simulación?, puede ser que el cristal este dañado.
Si le pones capacitores grande a ese cristal se negara a oscilar.
Saludos.

Ric.
15/06/2016 #7


roberttorres dijo: Ver Mensaje
Buenas.
Tendrías que poner mas información, el código por ejemplo, asumo que has configurado los fuses como:
Código:
@ DEVICE pic16F877A, HS_OSC
   DEFINE OSC 20    ; Definir que se trabajará con 20MHz. (Osc. EXTERNO)
si no defines los fuses y el oscilador pic basic pro pondrá el que es por default 4mhz
hola si en mi programa ya lo estoy definiendo lo del oscilador para que trabaje a 20 y aun asi no hace nada

AbrahamMtz dijo: Ver Mensaje
hola si en mi programa ya lo estoy definiendo lo del oscilador para que trabaje a 20 y aun asi no hace nada
este es mi codigo de programacion inicial

include "modedefs.bas"
DEFINE OSC 20 ' Define Oscilador a 20 Mhz
DEFINE LCD_DREG PORTD ' Indica que el Bus estará conectado en el Puerto D
DEFINE LCD_BITS 4 ' El bus será de cuatro bits.
DEFINE LCD_DBIT 4 ' Selección del Bit de inicio del puerto (0 o 4) en caso
' de utilizar los cuatro Bits mas significativos de la LCD
DEFINE LCD_RSREG PORTB ' Indica al uC que el pin "RS" estará en el Puerto B
DEFINE LCD_RSBIT 1 ' "RS" estará conectado en RB1
DEFINE LCD_EREG PORTB ' Indica al uC que el pin "E" estará en el Puerto B
DEFINE LCD_EBIT 0 ' "E" estará conectado en RB0
DEFINE LCD_LINES 2 ' Define el número de líneas de la pantalla
Define ADC_BITS 10 ' Define la conversión A/D a 10 Bits
DEFINE ADC_SAMPLEUS 50 ' Tiempo de muestreo en el conversor A/D es 50 uS
15/06/2016 #8

Avatar de roberttorres

Buenas.
Mmmm no veo en tu configuración el tipo de oscilador que estas utilizando, ¿como configuras los fusibles de tu micro?. Los tipos de osciladores pueden ser LP, XT y HS.
15/06/2016 #9


roberttorres dijo: Ver Mensaje
Buenas.
Mmmm no veo en tu configuración el tipo de oscilador que estas utilizando, ¿como configuras los fusibles de tu micro?. Los tipos de osciladores pueden ser LP, XT y HS.
Pues es lo que igual quisiera saber, por que si le indico como me mencionaste con anterioridad de lo del " @ DEVICE pic16F877A, HS_OSC " me marca error a la hora de compilar mi programa, y en simulación solo con DEFINE OSC 20MHz si lo hace pero al momento de pasarlo en fisico no hace ninguna función, y ya cambie un buen de veces el cristal y los cap y revice que la fuente este dando el voltaje que necesita para poder usarlo.
15/06/2016 #10
Moderador

Avatar de D@rkbytes

AbrahamMtz dijo: Ver Mensaje
En mi programa ya estoy definiendo lo del oscilador para que trabaje a 20 MHz y aún así no hace nada.
No hace nada porque te hace falta la palabra de configuración.
Si no la declaras, el compilador usará la que tiene por defecto en el archivo "16F877A.INC"
Código:
__config _XT_OSC & _WDT_ON & _LVP_OFF & _CP_OFF
Y en esa configuración se está usando _XT_OSC (Oscilador a cristal <= 4 MHz.)
Si usas un cristal superior debes usar el fuse _HS_OSC

Usa esta configuración en la cabecera del programa:
Código PHP:
;*******************************************************************************
Device PIC16F877A     Microcontrolador utilizado
Palabra de configuración:
Device HS_OSCWDT_OFFPWRT_ONLVP_OFF
;*******************************************************************************
Define OSC 20           Definir que se trabajará con 20 MHz
Nota:
La palabra de configuración definida en los archivos *.INC, está escrita en lenguaje ensamblador.
En el entorno del editor se debe escribir con la sintaxis del compilador.

Si el compilador te muestra un error al compilar usando la palabra de configuración, debes actualizarlo a la versión 2.60C
16/06/2016 #11


D@rkbytes dijo: Ver Mensaje
No hace nada porque te hace falta la palabra de configuración.
Si no la declaras, el compilador usará la que tiene por defecto en el archivo "16F877A.INC"
Código:
__config _XT_OSC & _WDT_ON & _LVP_OFF & _CP_OFF
Y en esa configuración se está usando _XT_OSC (Oscilador a cristal <= 4 MHz.)
Si usas un cristal superior debes usar el fuse _HS_OSC

Usa esta configuración en la cabecera del programa:
Código PHP:
;*******************************************************************************
Device PIC16F877A     Microcontrolador utilizado
Palabra de configuración:
Device HS_OSCWDT_OFFPWRT_ONLVP_OFF
;*******************************************************************************
Define OSC 20           Definir que se trabajará con 20 MHz
Nota:
La palabra de configuración definida en los archivos *.INC, está escrita en lenguaje ensamblador.
En el entorno del editor se debe escribir con la sintaxis del compilador.

Si el compilador te muestra un error al compilar usando la palabra de configuración, debes actualizarlo a la versión 2.60C
ya hice el intento como me indicaste con anterioridad y me marca error y la version 3.0
16/06/2016 #12

Avatar de roberttorres

AbrahamMtz dijo: Ver Mensaje
ya hice el intento como me indicaste con anterioridad y me marca error y la version 3.0
Buenas
En PBP 3.0 la configuración de los fuses es diferente, por eso es importante que des la máxima información posible.
prueba con esta configuración en tu cabecera del código:
Código:
;.......................................configuracion de fuses PBP3.0......................................
#CONFIG
      __config _HS_OSC & _WDT_OFF & _LVP_OFF & _CP_OFF
#ENDCONFIG

include "modedefs.bas"
DEFINE OSC 20 ' Define Oscilador a 20 Mhz
DEFINE LCD_DREG PORTD ' Indica que el Bus estará conectado en el Puerto D
DEFINE LCD_BITS 4 ' El bus será de cuatro bits.
DEFINE LCD_DBIT 4 ' Selección del Bit de inicio del puerto (0 o 4) en caso
' de utilizar los cuatro Bits mas significativos de la LCD
DEFINE LCD_RSREG PORTB ' Indica al uC que el pin "RS" estará en el Puerto B
DEFINE LCD_RSBIT 1 ' "RS" estará conectado en RB1
DEFINE LCD_EREG PORTB ' Indica al uC que el pin "E" estará en el Puerto B
DEFINE LCD_EBIT 0 ' "E" estará conectado en RB0
DEFINE LCD_LINES 2 ' Define el número de líneas de la pantalla
Define ADC_BITS 10 ' Define la conversión A/D a 10 Bits
DEFINE ADC_SAMPLEUS 50 ' Tiempo de muestreo en el conversor A/D es 50 uS
16/06/2016 #13


roberttorres dijo: Ver Mensaje
Buenas
En PBP 3.0 la configuración de los fuses es diferente, por eso es importante que des la máxima información posible.
prueba con esta configuración en tu cabecera del código:
Código:
;.......................................configuracion de fuses PBP3.0......................................
#CONFIG
      __config _HS_OSC & _WDT_OFF & _LVP_OFF & _CP_OFF
#ENDCONFIG

include "modedefs.bas"
DEFINE OSC 20 ' Define Oscilador a 20 Mhz
DEFINE LCD_DREG PORTD ' Indica que el Bus estará conectado en el Puerto D
DEFINE LCD_BITS 4 ' El bus será de cuatro bits.
DEFINE LCD_DBIT 4 ' Selección del Bit de inicio del puerto (0 o 4) en caso
' de utilizar los cuatro Bits mas significativos de la LCD
DEFINE LCD_RSREG PORTB ' Indica al uC que el pin "RS" estará en el Puerto B
DEFINE LCD_RSBIT 1 ' "RS" estará conectado en RB1
DEFINE LCD_EREG PORTB ' Indica al uC que el pin "E" estará en el Puerto B
DEFINE LCD_EBIT 0 ' "E" estará conectado en RB0
DEFINE LCD_LINES 2 ' Define el número de líneas de la pantalla
Define ADC_BITS 10 ' Define la conversión A/D a 10 Bits
DEFINE ADC_SAMPLEUS 50 ' Tiempo de muestreo en el conversor A/D es 50 uS
Me marca igual error en estas lineas:
#CONFIG
__config _HS_OSC & _WDT_OFF & _LVP_OFF & _CP_OFF
#ENDCONFIG
16/06/2016 #14

Avatar de roberttorres

AbrahamMtz dijo: Ver Mensaje
Me marca igual error en estas lineas:
#CONFIG
__config _HS_OSC & _WDT_OFF & _LVP_OFF & _CP_OFF
#ENDCONFIG
Podrías subir tu programa completo con la simulación en un archivo.rar para ver si puedo compilarlo.
16/06/2016 #15


roberttorres dijo: Ver Mensaje
Podrías subir tu programa completo con la simulación en un archivo.rar para ver si puedo compilarlo.
listo

serialCFE.rar

---------- Actualizado después de 29 minutos ----------

AbrahamMtz dijo: Ver Mensaje
listo

serialCFE.rar
cuando lo simulo en proteus si lo hace, el problema es al pasarlo al protoboard
CFE.rar
16/06/2016 #16
Moderador

Avatar de D@rkbytes

AbrahamMtz dijo: Ver Mensaje
ya hice el intento como me indicaste con anterioridad y me marca error y la version 3.0
AbrahamMtz dijo: Ver Mensaje
Me marca igual error en estas líneas:
#CONFIG
__config _HS_OSC & _WDT_OFF & _LVP_OFF & _CP_OFF
#ENDCONFIG
Es muy extraño.
Sería interesante saber que versión de PBP estás usando realmente.
Cuando compilas se debe generar un archivo .asm en la misma carpeta de tu proyecto.
Dentro de ese archivo se puede ver la versión del compilador, que no es la misma que la del editor.
El editor o entorno de desarrollo, se llama MicroCode Studio, (MCS) y el compilador se llama PICBasic Pro. (PBP)

Para versiones anteriores o igual a la versión 2.60C, debe tener algo así en la cabecera del archivo:
Código:
; PICBASIC PRO(TM) Compiler 2.60C, (c) 1998, 2011
Y para la versión 3.X.X.X debe tener algo así:
Código:
; PICBASIC PRO(TM) Compiler 3.0.9.1, (c) 1998, 2016
La versión del entorno de desarrollo e igualmente la del compilador, también se puede ver en el "Acerca de..."

Nota:
También se generan errores al compilar cuando se usa Windows a 64 bits y PBP 2.XX.
Pero eso ya no sucede con PBP3.
16/06/2016 #17


D@rkbytes dijo: Ver Mensaje
Es muy extraño.
Sería interesante saber que versión de PBP estás usando realmente.
Cuando compilas se debe generar un archivo .asm en la misma carpeta de tu proyecto.
Dentro de ese archivo se puede ver la versión del compilador, que no es la misma que la del editor.
El editor o entorno de desarrollo, se llama MicroCode Studio, (MCS) y el compilador se llama PICBasic Pro. (PBP)

Para versiones anteriores o igual a la versión 2.60C, debe tener algo así en la cabecera del archivo:
Código:
; PICBASIC PRO(TM) Compiler 2.60C, (c) 1998, 2011
Y para la versión 3.X.X.X debe tener algo así:
Código:
; PICBASIC PRO(TM) Compiler 3.0.9.1, (c) 1998, 2016
La versión del entorno de desarrollo e igualmente la del compilador, también se puede ver en el "Acerca de..."

Nota:
También se generan errores al compilar cuando se usa Windows a 64 bits y PBP 2.XX.
Pero eso ya no sucede con PBP3.
Ya lo encontre es Pic Basic Pro 2.50A
y la versión de microcode studio es 3.0.0.5

Entonces tengo que buscar una actualización para que funcione correctamente.
16/06/2016 #18

Avatar de roberttorres

AbrahamMtz dijo: Ver Mensaje
Ya lo encontre es Pic Basic Pro 2.50A
y la versión de microcode studio es 3.0.0.5

Entonces tengo que buscar una actualización para que funcione correctamente.
Efectivamente tienes que actualizar el Pic Basic Pro a 2.6c para compilar correctamente.
PD: yo compile sin problemas el programa que subiste con el pic basic pro 2.6:
Código:
;*******************************************************************************
@ Device PIC16F877A     ; Microcontrolador utilizado
; Palabra de configuración:
@ Device HS_OSC, WDT_OFF, PWRT_ON, LVP_OFF
;*******************************************************************************
Define OSC 20           ; Definir que se trabajará con 20 MHz.  
include "modedefs.bas"
DEFINE LCD_DREG PORTD ' Indica que el Bus estará conectado en el Puerto D
DEFINE LCD_BITS 4 ' El bus será de cuatro bits.
DEFINE LCD_DBIT 4 ' Selección del Bit de inicio del puerto (0 o 4) en caso
' de utilizar los cuatro Bits mas significativos de la LCD
DEFINE LCD_RSREG PORTB ' Indica al uC que el pin "RS" estará en el Puerto B
DEFINE LCD_RSBIT 1 ' "RS" estará conectado en RB1
DEFINE LCD_EREG PORTB ' Indica al uC que el pin "E" estará en el Puerto B
DEFINE LCD_EBIT 0 ' "E" estará conectado en RB0
DEFINE LCD_LINES 2 ' Define el número de líneas de la pantalla
Define ADC_BITS 10 ' Define la conversión A/D a 10 Bits
DEFINE ADC_SAMPLEUS 50 ' Tiempo de muestreo en el conversor A/D es 50 uS
17/06/2016 #19


Hola ya actualice la versión de pic basic pro y me sigue marcando error en lo de @ device hs_osc
pero ya trabajo el oscilador de 20mhz solo con el define osc 20

Pero en la versión anterior no trabajaba, esto es un poco extraño, pero al fin y acabo se soluciono.

Pero ahora tengo otra pregunta, es que ahora quisiera probar con otro pic el 18f452 en el pic basic no hay problema o eso pienso yo, pero al momento de querer grabar el pic mi programador me dice que faltan los bits de hexadecimal.
17/06/2016 #20
Moderador

Avatar de D@rkbytes

¿A qué versión actualizaste, qué Windows tienes y cuál programador estás usando?
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.