Comenzando con PIC16F887

(1/1)

hgp_2611:
Que tal amigos,pues recientemente ingrese al mundo de los micros y con muchas ganas!

He adquirido mi primer programador de pics usb,y un PIC16f887 el cual,quiero comenzar a trabajar. He leido su datasheet y se q tiene oscilador interno,he leido sobre estos temas del oscilador pero la verdad no he logrado entender bien como hacerlo funcionar (programacion) y una vez programado como tengo q conectar el micro para q corra mi programa aunq supongo q solo hay q conectar los pines de alimentacion + y -, por q lei q tambien no lleva lo de la resistencia de pull pup a MCLR ya que tambien se hace por programacion. Quiero probar con un simple encendido y apagado de un led. utilizo este codigo

AllDigital
TRISA = 0
TRISB = 0
TRISC = 0
TRISD = 0
TRISE = 0

inicio:
PORTB.0 = 1
pause 500
PORTB.0 = 0
pause 500
Goto inicio

Lo compilo con PBP (microcodestudio) y lo guarda, lo simulo en isis simplemente conectando al portb.0 una resistenciay un led y cargando el hex al micro y si funciona bien. aun no lo he grabado al pic por qno tengo una fuente para probar,pero en eso estoy,lo q quiero es configurar el oscilador interno para por ejemplo 8mhz. q linea tengo q agregar a mi codigo?

hgp_2611:
espero sus opiniones y acesorias,mientras segire leyendo! :azn:

Fer_TACA:
No se como se configurará el oscilador interno en este pic, pero en Isis no hace falta que le conectes un oscilador para que te funcione tu programa;  por tanto revisa bien el datasheet.
Fermin

hgp_2611:
Ya logre configurar mi oscilador interno, y aca coloco como fue q lo configure por si algien maneja el mismo:


segun la datasheet para el pic 16f887 solo hay q cambiar los bits 4, 5 y 6(contando de derecha a izquerda).

asi:                 

                        bit6          bit5       bit4
Para 1Mhz           1             0           0
Para 2Mhz           1             0           1
Para 4Mhz           1             1           0
Para 8Mhz           1             1           1

Entonces para 1Mhz qda asi:

OSCCON = 0x46  \\'Se configura reloj interno a 1Mhz %0100-0110

Entonces solo hay q cambiar los bits que corresponden por el valor al que se quiera hacer trabajar al oscilador interno, por cierto se pueden poner en hex como lo puse (OSCCON = 0x46) o en binario como esta en el comentario (%01000110) claro sin el guion que solo puse para poder separar en 4 bits y asi sea mas facil convertirlo y entenderlo del hex.Ademas COmo dijo el amigo Dogflu66 es basico configurar los bits en OpTIOS- COnfigure Bits del Pic simulador ide,y poner q se va a trabajar con el oscilador interno en mi caso es: OSCILLATOR SELECTION: INTOSC (Aclaro,para pic 16F887)

Y por si a algien le interesa para q sirven los otros bits aca esta:

Igual contando de derecha a izquierda:
                                                              bit7                 bit0

                                                                  0 1 0 0 0 1 1 0

Bit 0: SCS: System Clock Select bit
1 = Internal oscillator is used for system clock
0 = Clock source defined by FOSC<2:0> of the CONFIG1 register
 
Como ven yo selecione un "0" ya que por lo que entiendo, con el 0 lo que indico es que no voy a trabajar con el oscilador interno que trae por deafault configurado (q es el de 4mhz) si no que yo lo voy a determinar con los bits que cambio del OSCCON. Aunq tengo la duda de que si sirve asi como yo dije(SI ESTOY MAL ESPERO ME CORRIJAN).

Bit 1 LTS: LFINTOSC Stable bit (Low Frequency – 31 kHz)
1 = LFINTOSC is stable
0 = LFINTOSC is not stable
Aqui yo asigne un "1" ya que le digo que este estable. (aunq en realidad supongo no me sirve en este caso ya que no estoy trabjando con Low Frequency, asiq es lo mismo si pongo un 0)

Bit 2 HTS: HFINTOSC Status bit (High Frequency – 8 MHz to 125 kHz)
1 = HFINTOSC is stable
0 = HFINTOSC is not stable

Seleccione un "1" por que aqui si selecciono una frecuencia estable y como trabajo dentro del rango q indica si debe llevar un 1.


Bit 3 OSTS: Oscillator Start-up Time-out Status bit(1)
1 = Device is running from the external clock defined by FOSC<2:0> of the CONFIG1 register
0 = Device is running from the internal oscillator (HFINTOSC or LFINTOSC)

Creo q aqui selecciono o se configura para trabajar con oscilador externo = 1 o para trabajar con el interno = 0, por eso puse 0

Bit 6-4 IRCF<2:0>: Internal Oscillator Frequency Select bits

ESto ya estaba aclarado al principio.

Bit 7 Unimplemented: Read as ‘0

Como lo indican,debe llevar un 0 siempre,no tiene uso.

Un ejemplo de un programa de parpadeo de un led, configurando el oscilador interno.

AllDigital
OSCCON = 0x46  \\'Se configura reloj interno a 1Mhz %01000110 bitsconfig
TRISB = 0

inicio:

PORTB.0 = 1
WaitMs 500
PORTB.0 = 0
WaitMs 500

Goto inicio

BUeno espero mi colaboracion haya servido de algo! AL menos para algien mas que trate de hacer lo mismo q yo. y no haya podido,o no haya entendido como se hace.

Navegación

[0] Índice de Mensajes