Autor Tema: Oscilador interno  (Leído 4510 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado MatiDeve

  • PIC10
  • *
  • Mensajes: 14
Oscilador interno
« en: 31 de Agosto de 2013, 14:39:46 »
Buenas. Yo hace unos meses empece con los PIC's y empece a pedir ayuda porque no me funcionaban. Muchos me mencionaban oscilador externo e interno, cristal, etc pero nadie se profundizaba bien. Despues hable con una persona de este foro que me ayudo muchisimo y un amigo, y termine poniendo el oscilador externo de 4MHz con los dos capacitores ceramicos.

Hasta recien estaba viendo como hacer un pwm por software y vi el comentario de  dogflu66 y me copie el codigo para verlo y vi esta linea:

Define CLOCK_FREQUENCY = 8

Esa define el oscilador interno? En fin, mi pregunta es como programo el oscilador interno?

De paso pregunto: que es esta linea de codigo?

Define CONF_WORD = 0x2f50
Define CONF_WORD_2 = 0x3ffc

Segun puso es para configurar los fuses, pero que es eso

Datos:
PIC16F628A
PIC Simulator IDE
post de comentario: http://www.todopic.com.ar/foros/index.php?topic=40011.0

Gracias de antemano!
« Última modificación: 01 de Septiembre de 2013, 16:06:18 por dogflu66 »

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: [AYUDA] Oscilador interno
« Respuesta #1 en: 31 de Agosto de 2013, 15:31:11 »
Los “Define” en general no afectan a nuestro código, se utilizan para la configuración del compilador. Define Clock_Frequency = 8 le hace saber al compilador que se está trabajando a 8Mhz de frecuencia de reloj, da lo mismo que sea interno o externo. Esto permite al compilador programar correctamente las funciones internas del lenguaje que necesitan contar tiempo de una forma precisa. Por ejemplo: Waitms 1, este comando hace una pausa de 1mSeg., pero si no se le indica al compilador a que frecuencia estamos trabajando no puede configurarlo para que sepa cuantos ciclos de reloj tiene que contar hasta pasados 1 mSeg.

Estas dos líneas; Define CONF_WORD = 0x2f50 y Define CONF_WORD_2 = 0x3ffc se utilizan para alterar el funcionamiento del microcontrolador, así como algunos módulos internos, no tienen que ser solamente dos pueden ser menos o más según el tipo de pic. Se les llama de varias maneras, palabra de configuración, fuses o configuración de bit. Con un bit en concreto de estas líneas se le indica al pic que active el oscilador externo o el interno según la aplicación.

Para saber exactamente cuantos bit de configuración y para que sirve cada uno no hay mejor información que el datasheets del micro en cuestión. Para encontrar el datasheets del pic usado basta con escribir en un buscador “16f628A pdf”. En esta información encontraras las características del pic, módulos que lo componen y su correspondiente configuración, incluso te indica que condensadores tienes que colocar según la frecuencia de trabajo del oscilador externo.
Saludos desde Granada, España.

Desconectado MatiDeve

  • PIC10
  • *
  • Mensajes: 14
Re: [AYUDA] Oscilador interno
« Respuesta #2 en: 31 de Agosto de 2013, 15:45:58 »
Los “Define” en general no afectan a nuestro código, se utilizan para la configuración del compilador. Define Clock_Frequency = 8 le hace saber al compilador que se está trabajando a 8Mhz de frecuencia de reloj, da lo mismo que sea interno o externo. Esto permite al compilador programar correctamente las funciones internas del lenguaje que necesitan contar tiempo de una forma precisa. Por ejemplo: Waitms 1, este comando hace una pausa de 1mSeg., pero si no se le indica al compilador a que frecuencia estamos trabajando no puede configurarlo para que sepa cuantos ciclos de reloj tiene que contar hasta pasados 1 mSeg.

Estas dos líneas; Define CONF_WORD = 0x2f50 y Define CONF_WORD_2 = 0x3ffc se utilizan para alterar el funcionamiento del microcontrolador, así como algunos módulos internos, no tienen que ser solamente dos pueden ser menos o más según el tipo de pic. Se les llama de varias maneras, palabra de configuración, fuses o configuración de bit. Con un bit en concreto de estas líneas se le indica al pic que active el oscilador externo o el interno según la aplicación.

Para saber exactamente cuantos bit de configuración y para que sirve cada uno no hay mejor información que el datasheets del micro en cuestión. Para encontrar el datasheets del pic usado basta con escribir en un buscador “16f628A pdf”. En esta información encontraras las características del pic, módulos que lo componen y su correspondiente configuración, incluso te indica que condensadores tienes que colocar según la frecuencia de trabajo del oscilador externo.


Gracias por tu respuesta. Entonces, si pongo:

Define Clock_Frequency = 4 serian 4 MHz? Si no es asi, como lo hago para 4 MHz? (lo que yo uso).

Y algo que no me quedo claro: Como hago para usar el oscilador interno? Si programo el oscilador interno se necesita algo externo?

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: [AYUDA] Oscilador interno
« Respuesta #3 en: 31 de Agosto de 2013, 16:19:54 »
Eso es:
Define Clock_Frequency = 4 'Se trabajara a 4Mhz

Y claro, si se decide trabajar con el oscilador externo se necesitan componentes auxiliares, en general necesitaras un cristal de 4Mhz y dos condensadores cerámicos.

De aquí te puedes bajar el manual del pic:

http://ww1.microchip.com/downloads/en/devicedoc/40044d.pdf

Al final de la pagina 96, en Configuración Word Register, están los tipos de oscilador que se pueden seleccionar.
Y en las paginas siguientes explica los modos de trabajo para el oscilador interno y externo, junto con los esquemas del material adicional necesario.
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: [AYUDA] Oscilador interno
« Respuesta #4 en: 31 de Agosto de 2013, 16:37:41 »
En el menú options del PSI puedes ver el estado de los bit, en concreto en “Configuración Bits”.

Y como este micro es muy simple tan solo con estas pocas líneas deberia arrancar tu placa sin problemas:

Define CONFIG = 0x2150  'Entre otros se activa el oscilador interno y se anula el pin MCLRE.
Define CLOCK_FREQUENCY = 4  'Se trabaja a 4Mhz.
AllDigital  'Los pin analogicos trabajaran como digitales.

El oscilador interno una vez que se activa, por defecto, se autoconfigura a 4Mhz por lo que no requiere más ajustes.

Por supuesto tienes que indicarle al PSI con que pic vas a trabajar; se elige en el menú “Option”, en concreto en “Select Microcontroller” eliges el micro con el que vas a trabajar.
« Última modificación: 31 de Agosto de 2013, 16:43:20 por dogflu66 »
Saludos desde Granada, España.

Desconectado MatiDeve

  • PIC10
  • *
  • Mensajes: 14
Re: [AYUDA] Oscilador interno
« Respuesta #5 en: 31 de Agosto de 2013, 23:37:42 »
En el menú options del PSI puedes ver el estado de los bit, en concreto en “Configuración Bits”.

Y como este micro es muy simple tan solo con estas pocas líneas deberia arrancar tu placa sin problemas:

Define CONFIG = 0x2150  'Entre otros se activa el oscilador interno y se anula el pin MCLRE.
Define CLOCK_FREQUENCY = 4  'Se trabaja a 4Mhz.
AllDigital  'Los pin analogicos trabajaran como digitales.

El oscilador interno una vez que se activa, por defecto, se autoconfigura a 4Mhz por lo que no requiere más ajustes.

Por supuesto tienes que indicarle al PSI con que pic vas a trabajar; se elige en el menú “Option”, en concreto en “Select Microcontroller” eliges el micro con el que vas a trabajar.

Entendi todo lo que me dijiste, ahora estoy chusmeando la datasheet que me pasaste.

Una preguntita, que seria bien explicado lo de "AllDigital"? Osea se que es para que los pin analogicos trabajen como digitales, pero no se que significa pin analogico y digital.

Gracias por tus respuestas, de enserio. Motivan a seguir participando del foro.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: [AYUDA] Oscilador interno
« Respuesta #6 en: 31 de Agosto de 2013, 23:53:46 »
Un pin analógico esta preparado para efectuar conversiones de tensión que recibe a un valor digital.
Ese valor digital puede ser, según que PIC utilizas, de 8 bits (256 valores diferentes), de 10 bits (1024 valores diferentes) y en uos pocos casos, de 12 bits (4096 valores diferentes).

Por ejemplo, si quieres leer el valor de salida de un potenciometro, conectas este a un pin analógico y con el software especifico para leer el conversor, podrás digitalizar ese valor para usarlo en tu programa, compararlo con un valor fijo y realizar acciones, etcétera.

Un ejemplo es leer una temperatura con un sensor LM35CZ, digitalizarlo con el conversor, y usar ese valor para encender o apagar un ventilador, luego de una comparación con el valor seteado de temperatura.

En el caso de las entradas digitales (todas son digitales, pero solo algunas de ellas pueden ser analógicas, eso lo tienes en la hoja de datos del PIC) se pueden programar para usarlas como entradas o como salidas.
Una entrada digital lee pulsadores, teclas, y todo tipo de señal on/off.
Una salida digital, se maneja desde el programa de usuario, para que se ponga en 1 o en 0.
Que prenda o apague, esencialmente, ese es el uso...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado MatiDeve

  • PIC10
  • *
  • Mensajes: 14
Re: [AYUDA] Oscilador interno
« Respuesta #7 en: 01 de Septiembre de 2013, 00:13:05 »
Un pin analógico esta preparado para efectuar conversiones de tensión que recibe a un valor digital.
Ese valor digital puede ser, según que PIC utilizas, de 8 bits (256 valores diferentes), de 10 bits (1024 valores diferentes) y en uos pocos casos, de 12 bits (4096 valores diferentes).

Por ejemplo, si quieres leer el valor de salida de un potenciometro, conectas este a un pin analógico y con el software especifico para leer el conversor, podrás digitalizar ese valor para usarlo en tu programa, compararlo con un valor fijo y realizar acciones, etcétera.

Un ejemplo es leer una temperatura con un sensor LM35CZ, digitalizarlo con el conversor, y usar ese valor para encender o apagar un ventilador, luego de una comparación con el valor seteado de temperatura.

En el caso de las entradas digitales (todas son digitales, pero solo algunas de ellas pueden ser analógicas, eso lo tienes en la hoja de datos del PIC) se pueden programar para usarlas como entradas o como salidas.
Una entrada digital lee pulsadores, teclas, y todo tipo de señal on/off.
Una salida digital, se maneja desde el programa de usuario, para que se ponga en 1 o en 0.
Que prenda o apague, esencialmente, ese es el uso...

Me parece que esto me sirve para un proyecto mas adelante. Resulta que estamos haciendo un transformador de 220V a 24V-1,3V en la escuela. Si yo quiero hacer con un pic que me diga en un display cuantos V es la que hay en el momento, ahi usaria el conversor  analogico-digital?

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: [AYUDA] Oscilador interno
« Respuesta #8 en: 01 de Septiembre de 2013, 00:24:26 »
Hay un proyecto de una fuente variable muy bueno en el foro, hecho ya por muchos y en varios lenguajes de programación.
Si, el valor se lee en una entrada analógica y el pote de regulación también...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.