TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: toniarro en 19 de Septiembre de 2010, 19:58:10
-
Hola buenas a todos! soy nuevo en este foro y me gustaria poder participar con vosotros. La verdad esque hace poco que entrado en el mundo de los pics y le hecho ganas... Bueno he empezado con el primer programa de encender y apagar un led a intervalos de 1 segundo con pic 16f628A. Yo uso el lenguaje basic y utilizo el micro code studio para crear el programa. Cuando he creado el programa y lo compilo me sale que esta todo bien. En la practica cuando lo monto en el entrenador no me funciona. I mi duda esta en el tema del oscilador. Se dice que el pic16f628A no necesita un oscilador externo; pero no se si tengo que configurar algo para que trabaje a esa frecuencia (4Mz). Tengo el grabador pick it2. Si alguien me puede hechar un cable con este tema le estaria muy agradecido ya que estoy estancado aqui sin poder avanzar.
Gracias un saludo a todos!!
-
Como trabajas en basic no puedo ayudarte exactamente, pero si es necesario configurar al inicializar el microcontrolador la velocidad a la cual el oscilador interno trabajará.
Te podrán ayudar más en detalle si colocas el código que estas implementando, con la configuración de Fuses y el esquema eléctrico que implementas.
Saludos!
-
Saludos suky soy nuevo en foro y anoche estuve leyendo tus excelentes explicasiones sobre los pic 16f628a pero al igual que toniarro tengo mis dudas si lleva un cristal interno o hay que configurarlo para uno externo ... Tengo un pickit 3 y unos cuantos pic 16f628a que me llegaron esta semana y te agradeceria toda orientacion sobre cuales programas tu me recomiendas para desarrollar algun proyecto con esto que recien he adquirido
-
Para utilizar el oscilador interno, primero se debe configurar el Fuse adecuado. En este caso hay 2 opciones: interno con los dos pines (RA6 y RA7) como I/O digitales seteando _INTOSC_OSC_NOCLKOUT, y la otra opción es que por el pin RA6 se obtenga una señal con frecuencia Fosc/4, seteando _INTOSC_OSC_CLKOUT.
Pero además modificando el bit OSCF del registro PCON <0x8E> se puede seleccionar la velocidad entre 4MHz o 48 kHz. Esto se puede controlar ni bien se inicializa el microcontrolador.
Saludos!
-
Hola Toniarrro:
para configurar el oscilador por programa se debe de realizar de acuerdo al compilador utilizado por ejemplo:
Define CLOCK_FREQUENCY = 8 ' (8Mhhz) para el compilador => Pic Simulator Ide
XTAL=4 '( 4MHz) para el compilador Proton
Parra Miicrocode mira la ayuda de ru programa que seguro que viene. Esto vale para el oscilador externo y para indicar con que frecuencia vas a trabajar para por ejemplo tenerse en cuenta en la rutinas de Delay.
Ademas como dice Suky debes de indicarle en la configuracion de los fuses si el oscilador es interno o externo y el tipo de oscilador en caso de que sea externo que puede ser RC, XT, HS pero esto viene en el datasheet del micro.
F.
-
Hola, otra opción sería poner DEFINE OSC 4 al principio del programa, esto te permite trabajar con un cristal de 4 Mhz.
Atte. Kuo Yao Ming
-
Muchas gracias por vuestra ayuda! Al final encontré el problemilla con el oscilador interno del pic 16f628a. Para los que utilizen el pick it 2; veran que hay un apartado donde pone configuración; que si le das click luego te aparece un patrón de 15 bits para configurar. Bueno pues los bits 4,1-0 corresponen a las posibles configuraciones de oscilacion de dicho pic.
Si le ponemos un "1" al bit 4, un "0" al bit 1 y otro "0" al bit 0, automaticamente se configura el oscilador de 4 Mgz interno que lleva el pic. Que por cierto va de maravilla ( muy preciso ).
Si leen el datasheet del pic 16f628a ( la página 96 ), veran las diferentes combinaciones de bits para hacer trabajar el oscilador.
;-)
-
automaticamente se configura el oscilador de 4 Mgz interno que lleva el pic
Disculpame que te corriga Megahertz se abrevia Mhz, no te ofendas es solo una aclaracion, que bueno que encontraste el problema y que lo posteaste, asi nos sirve por si algun dia nos pasa.
-
Muchas gracias por vuestra ayuda! Al final encontré el problemilla con el oscilador interno del pic 16f628a. Para los que utilizen el pick it 2; veran que hay un apartado donde pone configuración; que si le das click luego te aparece un patrón de 15 bits para configurar. Bueno pues los bits 4,1-0 corresponen a las posibles configuraciones de oscilacion de dicho pic.
Si le ponemos un "1" al bit 4, un "0" al bit 1 y otro "0" al bit 0, automaticamente se configura el oscilador de 4 Mgz interno que lleva el pic. Que por cierto va de maravilla ( muy preciso ).
Si leen el datasheet del pic 16f628a ( la página 96 ), veran las diferentes combinaciones de bits para hacer trabajar el oscilador.
;-)
Saludos, yo tambien esto empezando con los PIC's y tengo el mismo prblema tuyo que por lo que veo ya lo has solucionado. Yo temabien estoy usando el MicroCode Studio y lo tengo integrado con el PICkit 2, tambien quise hacer como prueba el prendido y apagado del led, pero desgraciadamente no se porque no me funciona, te cuento lo que tengo hasta ahora. Como dije en microcode studio tengo el siguiente programa:
led var portb.0
ini:
high led
pause 1000
low led
pause 1000
goto ini
end
como ves no defino el oscilador, no se si sea necesario. Luego compilo este programa usando la opción Compile Program del MicroCode y como ya tengo enlazado el PICkit este se abre. Luego en PICkit doy: file>import hex y escogo el archivo .hex que me genera el MicroCode, luego le doy en en el PICkit en el apartado que tu mencionas para configurar los bits del pic, aca pongo todos los bits en uno menos el bit 1 y el bit 0, para poner la configuracion de oscilador interno. Por lo tanto cuando cierro la pantalla de configuracion me queda el numero 21FC, al tener esto listo le do en write para quemar el pic y dice que la operacion se realizo satisfactoriamente. Posteriormente conecto el pic con el led en el puerto b0 pero no pasa nada, el se queda prendido pero nada mas, podrias decirme si lo que yo hago concuerdo con el proceso que tu realizas?
-
Hola dillion. Me he fijado en el programa que has creado, y creo que el posible fallo que puedas tener es que no has puesto el trisb=0 justo antes de poner la etiqueta ini. ( eso configura los terminales del puerto b como salidas ). Pruebalo y dime que tal te ha ido. Por lo que veo eres una de las pocas personas que utiliza el microcode studio con el grabador pick it. Me gustaría compartir los problemas que vayan saliendo a menudo ;-) suerte
-
Hola yo tambien estoy haciendo las mismas pruebas para trabajar con el 628 sin oscilador externo pero ya he echo una serie de pruebas y no me jala he incluso he visto la pagina 96 del datasheet pero no encuentro como configurar el oscilador interno he intentado con esta instruccion y he tratado de modificar los registros pero no se como, me marca error al compilar, uso el microcode y este es el encbezado que utilizo segun yo para trabajar sin el oscilador externo
_INTOSC_OSC_NOCLKOUT
trisb=$0F
slleno var portb.0
svacio var portb.1
ssobrelleno var portb.2
ssiagua var portb.3
encender var portb.4
noagua var portb.5
fallasensores var portb.6
a var bit
b var byte
a=0
te agradeceria como modificaste los registros si puedo ver tu programa mejor.