TODOPIC
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?
17 de Abril de 2014, 23:59:37

Ingresar con nombre de usuario, contraseña y duración de la sesión
Buscar:     Búsqueda Avanzada
342463 Mensajes en 38336 Temas por 39680 Usuarios
Último usuario: Manuel_97
* Inicio Ayuda Buscar Calendario Ingresar Registrarse
Buscar en TodoPIC
+  TODOPIC
|-+  Microcontroladores PIC
| |-+  Todo en microcontroladores PIC (Moderadores: marmatar, maunix, MGLSOFT, Modulay, pocher, Sasián, Suky)
| | |-+  Comenzando con PIC16F887
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Marcar como favorito Imprimir
Autor Tema: Comenzando con PIC16F887  (Leído 16655 veces)
hgp_2611
PIC10
*
Desconectado Desconectado

Mexico Mexico

Mensajes: 8


« : 10 de Octubre de 2009, 23:08:00 »

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?
En línea
Cryn
Colaborador
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Bolivia Bolivia

Mensajes: 4169


ya no te extraño =p


« Respuesta #1 : 11 de Octubre de 2009, 22:45:38 »

Está todo relacionado con este registro:


IRCF0:2 configuran la velocidad, para 8MHz por ej debe ser 111, para 4MHz 110
OSTS debe estar a 0
HTS debe estar a 1
LTS debe estar a 0
SCS debe estar a 1

Entonces debes cargar ese valor a ese registro antes de las configuraciones de los tris
OSCCON=0b1110101

Ojo que si no se acepta esa instrucción deberás previamente definir su dirección, OSCCON está en la dirección 0x8F.  O quizá haya na instrucción en el lenguaje para configurarlo, pero lo desconozco porque no programo en PBP.

Y colocar los fuses o bits en la palabra de configuración correspondiente al oscilador en INTOSC o INTOSCIO si quieres usar los pines del osc como I/O.

Espero te sirva, saludos
En línea

.
mcpiebot
PIC10
*
Desconectado Desconectado

Sexo: Masculino
Mexico Mexico

Mensajes: 8


Geek


WWW
« Respuesta #2 : 14 de Octubre de 2009, 18:30:42 »

lo del oscilador es importante, y adicionalmente, tienes que poner atencion a todos los bits de configuracion, de lo contrario el WDT y el pin de reset te pueden dar problemas.

saludos!!
En línea
hgp_2611
PIC10
*
Desconectado Desconectado

Mexico Mexico

Mensajes: 8


« Respuesta #3 : 17 de Octubre de 2009, 18:55:45 »

Primero q nada gracias por sus respuestas, que tal, yo tengo la misma pregunta para como programar mi oscilador interno (PIC16F887), trabajo con PIC SIMULADOR IDE y en CONFIGURACION DE BITS activo q tabaje con el oscilador interno, y automaticamente me configura los bites (mclr,etc) pero solo activa el oscilador mas no tiene para que yo lo programe a 2,4, u 8 mhz,aunq por default al activarlo este corre a 4mhz. cuando lo cargo con mi programa para programar el pic no me aparece ningun error en la CONFIGURACION DELOS BITS!, sin embargo, cuando hago el mismo programa (por ejemplo el parpadeo de un led) en MicroCodeStudio (q no trae para configurar los bits), compilo, y cargo el HEX a mi programador este me dice q faltan los bits de configuracion!.. espero algien me pueda ayudar.

En el Datasheet del PIC16F887 encontre lo sigiente (Traducido con Herramientas de idioma de google) :



Software selectable frequency range of 8 MHz to 31 kHz

El módulo de oscilador tiene una gran variedad de reloj las fuentes y las características de selección que le permiten ser utilizado en una amplia gama de  aplicaciones, mientras que maximiza el rendimiento del y reducir al mínimo el consumo de energía. Figura 4-1 ilustra un diagrama de bloques del módulo de oscilador.



Fuentes de reloj puede ser configurado desde exterior osciladores, resonadores de cristal de cuarzo, resonadores de cerámica y la resistencia-condensador (RC) circuitos. Además, el fuente de reloj del sistema puede ser configurado de una de dos osciladores internos, con una elección de velocidades seleccionables a través de de software. Características del reloj adicionales incluyen:

• Reloj seleccionable entre el sistema de fuente externa o internos a través de software.
• dos velocidades El modo de inicio, lo que minimiza latencia entre el inicio del oscilador externo y la ejecución de código.
• Fail-Safe Clock Monitor (FSCM) diseñado para detectar un fallo de la fuente de reloj externa (NA, XT, HS, de la CE o modos RC) y el interruptor
automáticamente en el oscilador interno.

El módulo de oscilador puede ser configurado en uno de los ocho los modos de reloj.
1. CE - reloj externo con I / O en OSC2/CLKOUT.
2. LP - 32 kHz Modo de bajo consumo de Cristal.
3. XT - medio de ganancia de cristal o de cerámica Resonador El modo de oscilador.
4. HS - High Gain cristal o de cerámica Resonador modo.
5. RC - External resistor-Condensador (RC) con FOSC / 4 de salida en OSC2/CLKOUT.
6. Rcio - Externo Resistencia-Condensador (RC) con I /O en OSC2/CLKOUT.
7. INTOSC - oscilador interno con FOSC / 4 de salida en OSC2 y E / S en OSC1/CLKIN.
8. INTOSCIO - oscilador interno con I / O en OSC1/CLKIN y OSC2/CLKOUT.

Modos de fuente del reloj están configurados por la FOSC <2:0> Configuration Word Register 1 (CONFIG1). El reloj interno se pueden generar a partir de dos internos de osciladores. El HFINTOSC es una alta frecuencia calibrada oscilador. El LFINTOSC es un sin calibrar oscilador de baja frecuencia.


BUeno hasta aquicreo  qesta todo claro, respecto a la info que saq del datasheet, lo q destaco es que no sabia q trae para poder configurar el oscilador interno de modo que, cuando hay una falla en el oscilador externo este se active, el modoq se llama Fail-Safe Clock Monitor (FSCM).
Y aqui es dondeviene lo interesante (continuo poniendo la info q saq del datasheet):


4.2 Oscilador de control
El control de oscilador (OSCCON) registro (Figura 4-1) controla el reloj del sistema y la frecuencia de selección de opciones. El registro OSCCON  contiene los siguientes bits:
• Bits de selección de frecuencia (IRCF)
• Frecuencia de bits de estado (HTS, LTS)
• Bits de control del reloj del sistema (OSTOS, SCS),


Nota 1: Restablece Bit a '0' con dos velocidades de arranque y de LP, XT o HS seleccionado como el modo de oscilador o Fail-Safe mode está activado.


Lei en otro foro algo respecto a lo q me dices CRYN ( http://micros.mforos.com/1149902/8402879-como-se-programa-el-oscilador-interno-en-mikrobasic/#80211317) que por cierto, si entiendo  muyc laramente eso de la configuracion cambiando los bits de acuerdoa lo que yo desee, pero mi duda ahora queda en:

COmo cambiar el registro OSCCON para poderle cambiar los bits de acuerdo a lo que yo lo quiera ocupar, y a suvez,como sabes q está en la dirección 0x8F??

Y como hacerlo en PIC SIMULADOR IDE, o en Microcodestudio .

BUeno por de mientras,creo q lo de la direcccion de registro q dices la puedo sacar del datasheet,lo buscare,espero una respeusta y una ayuda pronto.
En línea
hgp_2611
PIC10
*
Desconectado Desconectado

Mexico Mexico

Mensajes: 8


« Respuesta #4 : 18 de Octubre de 2009, 15:01:00 »

COn una leidita a mi datasheet y unas pruebas ademas de la ayuda del amigo Cryn,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.


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.
En línea
hgp_2611
PIC10
*
Desconectado Desconectado

Mexico Mexico

Mensajes: 8


« Respuesta #5 : 18 de Octubre de 2009, 15:16:18 »

Entonces un programa q puse al principio queda asi:

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
En línea
Cryn
Colaborador
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Bolivia Bolivia

Mensajes: 4169


ya no te extraño =p


« Respuesta #6 : 18 de Octubre de 2009, 18:23:18 »

que bueno que ya lo lograste

bueno la dirección del registro OSCCON la saque de la hoja de datos en la parte de Memory Organization, en C se hace la definición de esa posición así:

#byte OSCCON=0x8f

para después darle su valor de configuración por ejemplo:

OSCCON=0b1001010

y si no te permitía hacer directamente OSCCON=0b1001010 se debe colocar una definición de la posición previamente con el #byte en C de CCS.

pero como en el lenguaje que usas no hace falta definirlo porque ya vienen definidos, no hay problema.

pero ojo! si en los fuses o config word se debe colocar como oscilador interno.
En línea

.
TODOPIC
   

 En línea
Páginas: [1] Imprimir 
« anterior próximo »
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines XHTML 1.0 válido! CSS válido!
Página creada en 0.082 segundos con 23 consultas.
anything