Autor Tema: Oscilador interno PIC16F88  (Leído 5728 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Oscilador interno PIC16F88
« en: 26 de Marzo de 2006, 16:01:00 »
Hola

Quiero programar el PIC16F88 para que corra sin cristal externo.

Leyendo la 16f88.h y su datasheet encontré que hay varias velocidades para que el PIC corra, quisiera usar la de 8MHz.

Según creo yo, la configuración sería así...

#include "16f88.h"
#fuses nowdt,noput,nobrownout,nolvp,noprotect,NOMCLR,INTRC_IO
//nomclr... habilita la patita mclr para que sea RA5 (I/O)
//intrc_io... usa reloj interno, habilita RA6 y RA7 como I/O
#use delay(clock=8000000)

De esta forma tendría 16 terminales I/O y no usaría cristal.

También leí que hay un comando llamado setup_oscillator, esta función cambia la velocidad del oscilador interno, ¿es posible que el pic se cambie a sí mismo la velocidad a la que está corriendo?

Gracias por la ayuda


Avergonzado

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Oscilador interno PIC16F88
« Respuesta #1 en: 26 de Marzo de 2006, 16:17:00 »
Claro que el pic puede cambiar la velocidad a la que trabaja, pero no con #use delay sino con setup_oscillator.
Ese pic es una pequeña maravilla que te deja usar todos sus pines, excepto los de alimentacion.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Oscilador interno PIC16F88
« Respuesta #2 en: 26 de Marzo de 2006, 16:22:00 »
jejeje y ¿está bien mi configuración?

Para seguir haciendo mi programita.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Oscilador interno PIC16F88
« Respuesta #3 en: 26 de Marzo de 2006, 16:33:00 »
Creo que esta bien, pero con el asistente proyect Wizard de CCS lo puedes configurar fácilmente.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Oscilador interno PIC16F88
« Respuesta #4 en: 26 de Marzo de 2006, 16:36:00 »
Codigo:
setup_oscillator(OSC_INTRC | OSC_8MHZ | OSC_STATE_STABLE);


Sonrisa Gigante

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Oscilador interno PIC16F88
« Respuesta #5 en: 26 de Marzo de 2006, 17:12:00 »
OK, gracias Nocturno. Sonrisa Gigante

Modulay, según CCS...

INTRC      Internal RC Osc
INTRC_IO      Internal RC Osc, no CLKOUT

¿Cuál es la diferencia entre INTRC y INTRC_IO?

es que pones osc_intrc, y creo que con esa opción se usa RA6 como salida del oscilador interno... loco, con intrc_io creo que se usa RA6 como Ra6 Sonrisa Gigante


Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Oscilador interno PIC16F88
« Respuesta #6 en: 26 de Marzo de 2006, 17:39:00 »
Tal y como dices.
La primera opción parece que es para que saque la señal de reloj por el pin

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Oscilador interno PIC16F88
« Respuesta #7 en: 26 de Marzo de 2006, 18:22:00 »
Thanks Modulay! Divertido

Desconectado Artifox

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 455
    • Quadbot
RE: Oscilador interno PIC16F88
« Respuesta #8 en: 26 de Marzo de 2006, 23:08:00 »
Bueno, ya que recien leo el post, aca dejare mi contribucion... Yo tambien estuve con el ojo cuadrado intentando configurarlo y finalemente hice un programita que enciende y apaga 1 led

/* Programa que enciende y apaga un led cada 1seg, usando el oscilador interno del PIC a 8MHz */
#include <16F88.h>
#FUSES INTRC, NOWDT, NOLVP, NOCPD, NOWRT, NODEBUG, NOPROTECT, NOFCMEN, NOIESO, NOMCLR, NOBROWNOUT, CCPB3
#use delay(clock=8000000)

void main()
{
   setup_oscillator(OSC_8MHZ|OSC_INTRC);
   output_bit( PIN_B0, 0);
   while(1)
   {
      output_toggle(PIN_B0);
      delay_ms(1000);
   }
}


A mi me funciono perfectamente, espero les sirva... RebotadoRebotadoRebotado
Video Quadbot
Saludos desde mi querido Perú.
Si realmente queremos que el mundo cambie debemos empezar por nosotros mismos... ;)

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Oscilador interno PIC16F88
« Respuesta #9 en: 27 de Marzo de 2006, 01:11:00 »
Gracias Artifox

Este es el que yo hice, es para usar el pwm a 38kHz

------------
//migsantiago@tutopia.com
#include "16f88.h"
#fuses nowdt,noput,nobrownout,nolvp,noprotect,NOMCLR,INTRC_IO,ccpb3
//nomclr... habilita la patita mclr para que sea RA5 (I/O)
//intrc_io... usa reloj interno, habilita RA6 y RA7 como I/O
//CCPB3... CCP1 input/output multiplexed with RB3
#use delay(clock=4000000) //4MHz internos
#use fast_io (a)
#use fast_io (b)

#BYTE trisb = 0x86 //para cambiar estado TRISB

int16 duty_time;

void main(void)
{
   duty_time=0x0034; //esto nunca cambia (13us)
   set_tris_a(0x00); //todo salida
   set_tris_b(0x00); //todo salida

   SETUP_ADC(ADC_OFF);
   SETUP_ADC_PORTS(NO_ANALOGS);

   setup_timer_2(T2_DIV_BY_1,25,1);
      //PR2=25
   set_pwm1_duty(duty_time);
      //13us
   setup_ccp1(CCP_PWM); //activa PWM

   while(1)
   {
   delay_ms(1000); //espera 1s
   set_tris_b(trisb|0x08); //pone a 1 b3, apaga pwm
   delay_ms(1000); //espera otro 1s
   set_tris_b(trisb&0xf7); //pone a 0 b3, prende pwm
   }
}


---------


 

anything