uControl
Septiembre 03, 2014, 01:35:22 *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
 
   Inicio   Ayuda Buscar Ingresar Registrarse  

La gente de Niple nos ofrece un descuento especial para usuarios de uControl.
Entérate de como puedes aprovechar esta oferta haciendo click aqui.

Súmate, y ayuda a uControl con tu participación en esta interesante oportunidad que nos oferece Niple.

Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: Oscilador interno  (Leído 7231 veces)
0 Usuarios y 1 Visitante están viendo este tema.
marqueses
PIC12F
**
Desconectado Desconectado

Sexo: Masculino
Mensajes: 142


Marqueses


WWW
« : Febrero 05, 2009, 11:51:21 »

Hola abro un tema por que no se como usar el oscilador interno de un pic, en especial el 16F628A, realizando la programacion en ccs. Bien, uso el project wizard para avanzar mas rapido, tras terminar la configuración me da el siguiente codigo:

#include "C:\Direccion donde guardo el proyecto"


void main()
{

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1)Wink;
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   setup_oscillator(

   // TODO: USER CODE!!

}

Pues bien, no se como utilizar la funcion setup_oscillator() y de aqui mi duda. Estoi intentando realizar un hola mundo de esta manera, pero creo que el mundo va a tardar en oirme...
En línea

Leon Pic
Moderador
dsPIC
******
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5309


Cumulonimbus


WWW
« Respuesta #1 : Febrero 05, 2009, 02:26:36 »

Jamás utilizé un pic con oscilador interno pero no creo que demore mucho en hacerlo.

Un consejo que te doy. Antes de programarlo, debes leer el contenido del PIC porque trae grabado en una pocición de memoria el valor para calibrar el oscilador interno.
En línea

Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.
EVIERA
PIC10F
*
Desconectado Desconectado

Mensajes: 3


« Respuesta #2 : Febrero 17, 2009, 10:25:32 »

Estimado,

  Para utilizar un oscilador interno, lo que debes hacer en los #fuses debes colocar INTRC_IO, solamente y después definir el delay(4000000). Solamente eso.

el encabezado de tu programa debería ser algo como esto:

#include <16F628A.h>
#use delay(clock=4000000)
#fuses NOWDT,INTRC_IO, NOPUT, NOPROTECT, NOBROWNOUT, NOMCLR, NOLVP, NOCPD
En línea
marqueses
PIC12F
**
Desconectado Desconectado

Sexo: Masculino
Mensajes: 142


Marqueses


WWW
« Respuesta #3 : Marzo 02, 2009, 07:15:11 »

Hola de nuevo, a ver si alguien consigue ayudarme para ver si al fin consigo hacer funcionar un pic con su oscilador interno. Ahora estoy utilizando un PIC12F629, por lo que se me hace mas fundamental utilizar su oscilador interno. Aun asi no consigo hacerlo funcionar, coloco el codigo que estoy utilizando:

Código:
#include <12F629.h>
#fuses NOMCLR,NOWDT,INTRC_IO
#use delay (clock=4000000)
#use fast_io (A)


void main ()
{
set_tris_a(0x00);


 while (1)
 {
 //Numero 1
   //Dato H
   output_low(PIN_A5);
   output_high(PIN_A3);
   output_high(PIN_A5);
   //Dato G
   output_low(PIN_A5);
   output_low(PIN_A3);
   output_high(PIN_A5);
   //Dato F
   output_low(PIN_A5);
   output_high(PIN_A3);
   output_high(PIN_A5);
   //Dato E
   output_low(PIN_A5);
   output_high(PIN_A3);
   output_high(PIN_A5);
   //Dato D
   output_low(PIN_A5);
   output_low(PIN_A3);
   output_high(PIN_A5);
   //Dato C
   output_low(PIN_A5);
   output_high(PIN_A3);
   output_high(PIN_A5);
   //Dato B
   output_low(PIN_A5);
   output_high(PIN_A3);
   output_high(PIN_A5);
   //Dato A
   output_low(PIN_A5);
   output_high(PIN_A3);
   output_high(PIN_A5);
delay_ms(1000);
output_low(PIN_A4);
output_high(PIN_A4);

//Numero 2
   //Dato H
   output_low(PIN_A5);
   output_high(PIN_A3);
   output_high(PIN_A5);
   //Dato G
   output_low(PIN_A5);
   output_low(PIN_A3);
   output_high(PIN_A5);
   //Dato F
   output_low(PIN_A5);
   output_low(PIN_A3);
   output_high(PIN_A5);
   //Dato E
   output_low(PIN_A5);
   output_low(PIN_A3);
   output_high(PIN_A5);
   //Dato D
   output_low(PIN_A5);
   output_high(PIN_A3);
   output_high(PIN_A5);
   //Dato C
   output_low(PIN_A5);
   output_low(PIN_A3);
   output_high(PIN_A5);
   //Dato B
   output_low(PIN_A5);
   output_low(PIN_A3);
   output_high(PIN_A5);
   //Dato A
   output_low(PIN_A5);
   output_high(PIN_A3);
   output_high(PIN_A5);
delay_ms(1000);
output_low(PIN_A4);
output_high(PIN_A4);


  }
 }
 

(El programa en si es el manejo de un display 7 segmentos)
He intentado utilizar la funcion setup_oscillator (OSC_4MHZ); pero no me la reconoce el compilador. ¿Puede ser tambien que la version que posea sea obsoleta? ¿O se me olvida alguna linea de funcion?
En línea

1jabato1
Visitante
« Respuesta #4 : Marzo 09, 2009, 04:58:36 »

Hola Marqueses

Esta es la parte de codigo que utilizo para manejar un display de 7 segmentos,con un 74ls47 y dos digitos.El pic es un 16f628 trabajando con oscilador interno
Código:
#include <16F628.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC_IO                  //Internal RC Osc
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES MCLR                     //Master Clear pin enabled
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection

#use delay(clock=4000000


Código:
void main(void)
{

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_128);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   enable_interrupts(INT_RTCC);
   enable_interrupts(GLOBAL);
 
   set_tris_a(0b10111111);
   set_tris_b(0b00000000);
   port_b=0;
   bit_clear(port_a,6);
   tiempo=read_eeprom(1);
   do{
   int unidades,decenas;
   unsigned int const dig1[10]={0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19};
   unsigned int const dig2[10]={0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29};   
   decenas=tiempo/10;
   unidades=tiempo-(decenas*10);
   port_b=dig1[unidades];
   delay_ms(5);
   port_b=dig2[decenas];
   delay_ms(5);
   port_b=0;

Espero te ayude
En línea

La gente de Niple nos ofrece un descuento especial para usuarios de uControl.
Entérate de como puedes aprovechar esta oferta haciendo click aqui.

Súmate, y ayuda a uControl con tu participación en esta interesante oportunidad que nos oferece Niple.

Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  


La gente de Niple nos ofrece un descuento especial para usuarios de uControl.
Entérate de como puedes aprovechar esta oferta haciendo click aqui.

Súmate, y ayuda a uControl con tu participación en esta interesante oportunidad que nos oferece Niple.

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.19 | SMF © 2011, Simple Machines
SMFAds for Free Forums
XHTML 1.0 válido! CSS válido!
Página creada en 0.061 segundos con 29 consultas. (Pretty URLs adds 0.006s, 3q)
loggkey