Foros de Electrónica

Comunidad de discusión sobre Automatización, Electrónica industrial, Microcontroladores y electrónica digital, Robótica, Domótica, Telemática, Tecnologías móviles, y muchos temas más.




¿Cómo generar un segundo en un pic?


       



#1  ¿Cómo generar un segundo en un pic?
Diederick

Registrado: 25 Jun 2007
Mensajes: 24
Ubicación: USA
citar
HOla gente que tal sucede que estoy implementando un contador con pic16f877, no sé cómo calcular las interrupciones para el montaje del micro con un cristal de 20Mhz: solo sé que para un cristal de 4MHz el número de rtccs es de 15, pero cuál es el procedimiento para calcular éstas RTCCS???

Agradezco su respuesta...

UN saludo...

#2  
aiken
Invitado
citar
No se bien que es el RTCCS, pero un método con el cuál si se generaban un seg. era mediante el empleo del Timer0.
El tiempo a ingresar se conoce mediante la siguiente fórmula:
Tiempo=4*T(oscialador)*(Cuenta*Escala+2)
TMR0=256-Cuenta
En tiempo estableces el tiempo que quieres que cuente el Timer, en Escala es la preescala que puedes seleccionar en el Option Reg.
Al ser un segundo tendrás que hacer un bucle ya que se desbordará antes el Timer.
Otra forma que puedes realizar,es mediante un bucle en la que primero miras cuantas instrucciones vas ha emplear y de hay sacas el tiempo que tarda en realizarlas el pic, antes del bucle creas unos registros en los que almacenas el tiempo necesario para realizar esas intrucciones, el llenado de estos registros entraran dentro del bucle, despues los vas descontando, primero uno, cuando llegue a cero quitas uno a otro registro y rellenas el anterior y vuelves a descontar hasta cero, vuelves a quitar otro al segundo, y asi sucesivamente, espero haberme explicado bien, si eso me dices.
Un saludo.

#3  
Diederick

Registrado: 25 Jun 2007
Mensajes: 24
Ubicación: USA
citar
Mira sucede que estoy haciendo el programa en c la parte que debo modificar es la siguiente:

char const RTCCxS=15; // Número de RTCC's (interrupciones para obtener un segundo) para 1 segundo con 4 Mhz / 1:256.

El 15 hace referencia a que con un cristal de 4 MHz se deben hacer 15 interrupciones con un prescaler de 1:256, de ésta manera: 66.6 ms * 15= 999 ms (casi un seg).

Pero al hacer el montaje, cuando pongo un cristal de 20 MHz, porque obviamente está programado para 4 M; el reloj corre muy rapido, entonces necesito saber cuantas interrupciones con un prescaler de 1:256 se deben programar para que funcione perfecto con un cristal de 20 M y de ésa manera el contador incremente en tiempo real.

Hay una página dónde tratan de explicar eso pero no entiendo muy bien como ajustan las interrupciones:

http://picmania.garcia-cuervo.com/Conceptos.php#CristalyTime

Si llegas a entender algo de lo que hay en ese link, agradecería tu respuesta...

Un saludo gracias.....

#4  
Manonline

Registrado: 16 Nov 2006
Mensajes: 441
Ubicación: Vicente Lopez, Buenos Aires, Argentina
citar
no se absolutamente nada sobre pics, ni sobre nada... pero mi sentido comun dice que RTCC debe ser 75 (regla de tres simple)

4MHz________15
20MHz_______x

20MHz x 15 / 4MHz = 75

no se... supongo, pero no cuesta nada probar...

#5  
f_point

Registrado: 10 Dic 2007
Mensajes: 82
citar
Excelente observacion la de Manonline... todos necesitamos mas sentido comun Wink

Por otra parte, si no te molesta tomar una alternativa relativamente simple, y deseas una exactitud muy pero muy razonable, puedes usar el siempre confiable Timer2. El modulo Timer2 del PIC16F877A es extremadamente simple y permite generar bases de tiempo con una buena gama de valores de division de reloj posibles. Una solucion para generar 1s con el Timer2 seria:

Frecuencia de entrada al Timer2: Fosc/4 = 20MHz/4 = 5MHz

Seleccion de valores:
PR2 = 249 (hace sobreflujo cada 250 ciclos)
Valor de Prescaler: 16
Valor de Postscaler: 10

Luego, la frecuencia a la que Timer2 hace interrupciones seria:

F = 5MHz / (250 * 16 * 10) = 125Hz

Asi, para generar un segundo exacto, deberas esperar 125 interrupciones. No es nada dificil configurar el modulo Timer2 para ello, en serio. La unica parte dificil es manejar las interrupciones, que segun veo, ya tienes resuelto.

A lo mejor eso te sirva.
Saludos.

#6  
Diederick

Registrado: 25 Jun 2007
Mensajes: 24
Ubicación: USA
citar
gracias por la respuesta...voy a probar el micro con las diferentes opciones que ustedes me dan....os comentaré una respuesta apenas obtenga los resultados sean buenos o malos....si alguien tiene otra opción bienvenida sea....

Un saludo..

 Responder



Google
 


 Temas de interés 
No hay mensajes nuevos Generar una señal de video NTSC usando un PIC
No hay mensajes nuevos Generar ruido blanco
No hay mensajes nuevos Generar audio con PIC
No hay mensajes nuevos Como generar un ejecutable .EXE en TURBO C
No hay mensajes nuevos Generar senales que afecten amplificadores de audio

Foros de Electronica
|| Cuestiones Elementales de Electrónica || Fuentes de alimentacion || Circuitos de radio || Diseño de circuitos en general ||
|| Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión ||
|| Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos ||