Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

17/06/2011 #1


Hacer tren de pulsos con un PIC
Estimados usuarios,

Estoy por conseguir un tren de pulsos con un único PIC. Hasta aquí, creo que sencillo. El problema me viene cuando quiero que este tren de pulsos esté indefinidamente ejecutándose, y a su vez el PIC proceder con otras rutinas. ¿Puede un PIC ejecutar dos tareas en paralelo?

Gracias por vuestra ayuda.
17/06/2011 #2


Hola, Puedes usar un PIC con modulo PWM, al modulo Pwm le configuras la frecuencia y el ancho de pulso y este saca los pulsos en segundo plano mientras se sugue ejecutando el resto del programa.
17/06/2011 #3


Muchas gracias por responder tan rápido.
El problema que tengo es que debo usar el PIC 12f629 o bien 12f675, ambos no tienen módulo PWN. Para hacer tren de pulsos debo hacerlo por software, y clado, si se está ejecutando esta parte del software el PIC no puede, o mejor dicho, hacer el resto de instrucciones. No sé si me explico.
17/06/2011 #4


Hola, no he usado esos microcontroladores pero creo que otra forma de hacerlo es empleando la interrupcion de timer.
17/06/2011 #5


En eso estoy, pero no tengo ni idea como hacerlo. Estoy programando con el Software Niple, y estoy mira que te mira. Serías de gran ayuda si sabes darme alguna pista al respecto.

Muy agradecido jcristhian
17/06/2011 #6

Avatar de fdesergio

Si bien es cierto en el momento del cambio de estado el programa del PIC se debe desviara a la ritina de INTs para hacerlo, por eso de lleno el funcionamiento del oscilador no seria en segundo plano, si liberas al PIC de trabajo un poco pero no del todo, chauuuuuuuuuu
Como hacerlo???
Sencillamente activas la INT de desborde del TMR0, y en tu programa en la direccionde INT 0x004 colocas una rutina que cambie de estado el pin de salida, y sales a hacer lo otro, ahora el problema es que frecuencia necesitas?, que ciclo de trabajo necesitas para la señal? debes primero determinar eso, chauuuuuuuuuuu
17/06/2011 #7


Lo que necesito es hacer un detector de proximidad por IR. Quiero utilizar un único PIC el cual me sirva tanto para el emisor IR como para el fototransistor IR. Digamos que es hacer la configuración similar a la de un mando a distancia, pero sólo necesito un canal, y que el PIC haga de emisor y receptor a la misma vez. Necesito filtrar la luz ambiente que pueda recibir el fototransistor, para ello he pensado en una señal codificada que enviaría el emisor y por rebote al detectar un objeto, la recibe de nuevo el fototransistor. Por eso había pensado en el tren de pulsos. No sé si me explicado. La frecuencia entre 38 y 40 khz. ¿Captan la idea? Tengo la teoría pero en la práctica no sé como implementarlo.
17/06/2011 #8

Avatar de fdesergio

Sencillo determinas el ciclo de reloj del pic que usas de acuerdo a tu Xtal de trabajo en caso del comun de 4Mhx tu ciclo de reloj es de 1uSeg ahora tu señal debe tener frecuencia digamos 40Khz entonces el periodo es 25Useg entonces ahora calculas el valor a cargar en el TMR0 para que cuando este valor se decremente llegue a cero y se produzca la INT, bueno como el periodo es ese entonces asumamos que el tiempo en alto sera de 13uSeg y el tiempo en alto igual, entonces T=26uSeg Fr= 38.4Khz (esta entre lo que quieres)
Tu programa debe comenzar o al menos antes de hacer la rutina normal cargar el valor 13 en el TMR0 y determinar un valor en la salida digamos "0" ademas configurar el TMR0 para que se decremente con los pulsos del clok interno, asi cuando se produzca la INT por desborde del TMR0 habran pasado 13uS ahora en al rutina debes determinar el estado del pin si es "0" pasarlo a "1", cargar nuevamente el valor de 13 en el TMR0 y salir, si es "1" pasarlo a "0" cargar nuevamente el valor de 13 en el TMR0 y salir, asi cada 26 uSeg estas completando un ciclo de tu señal de 38.4Khz, asi de facil ahora en el NIPLE no se como se hace pero igual es lo mismo solo que de manera grafica, chauuuuuuuuu
17/06/2011 #9


Muchas gracias fdesergio, ahora tengo que interpretar lo que me comentas. Es la primera vez que programo un timer y me cuesta entender la verdad. Te adjunto ventana de configuración de mi TMR, no entiendo cada uno de los parámetros que me solicita y no quiero rellenarlo a lo loco.

No entiendo lo de preescalado, interrupciones ni incrementos.

Lo que si entiendo hasta ahora son los cálculos que me has presentado. Algo claro si que tengo.
Imágenes Adjuntas
Tipo de Archivo: jpg Configuración TMR_0.jpg (54,7 KB (Kilobytes), 43 visitas)
17/06/2011 #10

Avatar de fdesergio

Bueno segun veo te hace por defecto solo configuras el tiempo de la INT del TMR0 y ya, no necesitas el prescaler pues los pulsos pasaran directamente al TMR0, chauuuuuuu
17/06/2011 #11


Voy a envestigar todo lo que me has dicho. Muchas gracias.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.