Modulo Timer

El timer utilizado en el videotutorial es el timer 1, pero este pic, el 16f88 consta de 3 timer, de 8,16 y 8 bit respectivamente. Los timer, pueden tener varias aplicaciones,(contadores, temporizadores).

Al tener un tiempo finito, puede parecer que estén limitados, pero con ayuda de los prescaladores y el código, esa limitación finita queda solucionada.

Pueden hacer saltar las interrupciones, de este modo no tenemos por que estas comprobando todo el rato la situación del timer, y poder realizar otras tareas.

En este segundo vídeo, se explica el código fuente, del ejmplo propuesto, y cuya configuración, se puede aplicar a cualquier aplicación deseada, ajustando los parámetros deseados. Se ve también, como el compilador CCS ayuda en esta tarea de configuración.

Y por ultimo, el vídeo demostrativo, de que esto funciona, montado en una protoboard. Espero que os guste.

48 Comentarios

  1. tito

    cordial saludo.
    están interesantes todos los tutoriales, y muy explicativos, seguramente nos van a servir mucho para quienes queremos aprender…. gracias y felicitaciones por tal trabajo compartido.

  2. Roberto (Publicaciones Autor)

    Hola Tito.

    Gracias a ti por seguir los videos, y espero que los que estan por venir te sigan gustando.

    Un saludo

  3. mario cañas

    Lo unico que tengo que decir es que DIOS TODOPODEROSO me los bendiga y me les de mucha mas sabiduria para que sigan enseñando todo lo que saben a toda la HUMANIDAD..De verdad Mil gracias por todo lo que hacen.. estoy aprendiendo muchisimo con lo que ustedes me enseñan…GRACIAS…

  4. Alejandro

    Me parecio excelente su pagina… muchas gracias

  5. Twistx77

    Muchas gracias!

  6. alantkd

    Hola como estas?
    felicidades muy buenos videos …
    soy estudiante de ing. electronica y me han sido de mucha utilidad.

    kisiera ver si podrias subir algunos proyectos con microcontroladores pic o Dspic.
    seria genial…
    mas de lo ke es …

    bueno un saludo

  7. Roberto (Publicaciones Autor)

    Hola Alantkd,

    Gracias por visitarnos. Nuestra intención es ir poco a poco subiendo más proyectos prácticos, así que espero que los siguientes te gusten.

    Un saludo.

  8. Twistx77

    Gracias!

    Siento decirte que por ahora voy a centrarme en la serie 16 y 18 puesto a que pasar de ahí a los Dspic es bastante sencillo. Quizás más adelante. Saludos!

  9. Carlos Borrero

    Buenas noches Alejandro, como siempre muchas gracias por tu tutorial y por la disposicion de tu tiempo para que aprendamos cada vez mas y queria preguntarte si aun no has colocado el codigo fuente y el esquematico en el Blog porque no lo consegui en ningun lado y como el Tutorial de Entradas/Salidas lo colocaste justo abajo del ultimo video queria estar seguro si no lo habias colocado aun o estaba en otro sitio.

    Gracias,
    Carlos

  10. Twistx77

    Buenas Carlos,

    lo siento, la entrada en la web la hizo mi amigo Roberto, se le habrá pasado, lo voy a subir en cuanto pueda para que lo puedas descargar. Lo pongo de la misma forma que en el tutorial anterior.

    Saludos!

  11. roberto peraza rico

    AMIGO TODO ESO LO ENTIENDO PERO COMO BAJAS ESE PROGRAMA PARA TRABAJAR EN TU COMPUTADORA

  12. Twistx77
  13. victor

    Hermano, te pasaste, de verdad, gracias por tu trabajo educativo. Gracias a internet por permitir que la gente se reuna y comparta su conocimiento. Saludos

  14. Twistx77

    Muchas gracias! Saludos!

  15. ROdrigo

    Hiola Twistx77…quisiera felicitarte y agradecerte por esta serie de tutoriales…la verdad es que le has dedicado mucho tiempo.

    Tambien quisiera hacerte una pregunta…Estoy intenando hacer este ejemplo con el CCS y el proyecto compila bien…pero cuando lo quiero simular en el proteus, la interrupcion nunca se ejecuta…es como si el timer nunca se desborara.

    Que puede ser? el proteus? me puede faltar alguna configuacion del oscilador o algo?

    Muchas gracias!

  16. Twistx77

    Gracias.

    En cuanto a tu pregunta.

    ¿Como estás comprobando si entra o no a la interrupción?

  17. AVEAE

    Hola que tal tus tutoriales están excelentes muchas gracias y es realmente fácil comprenderlos.
    Saludos y espero sigas realizando aún más.

  18. Twistx77

    No hay de que. Saludos!

  19. eliud

    Buenas, primero dejame te felicito por tus videos, y queria hacerte una pregunta, hace un mes hice un proyecto con motorreductores, un pic 16f877a , un l293d y varios sensores, el problema es que no funcionada cuando usaba una sola fuente para todo, y cuando usaba fuentes separadas el pic se volvia loco y ya no hacia sus funciones, me refiero a que por decir le programaba para querecibiera un 1 de un sensor y se moviera la llanta a una dirreccion y con un 0 hacia otra, al principio funcionaba bien pero pasaba un minuto y ya no, el motor solo se movia pero no respondia a las entradas del pic, lo tenia que resetear, eso fue con dos fuentes una de una pila de 9v, con un 7805 para el pic y l alogica del l293d, y otra de 6V 1Ah para el voltaje del os motorreductores, y con una fuente los motores ni se movian, o aveces s emovian pero a pequeños pasos, la coneccion del pic fue una resistenca de 10k en MCLR el cristal de 20mHZ con sus capacitores de 27pF, y 5V directos a vdd y las conecciones de las salidas.
    ¿Que crees que pueda ser? Gracias

  20. Twistx77

    Buenas,

    creo que tus problemas, son un para. Para empezar, si no te funcionaba todo con una fuente, supongo que justo cuando el motor se movía, el pic se reseteaba o se volvía loco. Si fue así, lo más probable es que haya sido porque al girar el motor, se produce una fuerza contra-electromotríz importante, que genera una tensión inversa a la de tu alimentación, haciendo que esta última baje mucho, puede incluso bajar por debajo de 0 con lo que se resetea el PIC por la caída de tensión, en el mejor de los casos ya que en el peor, si la linea de alimentación se hace negativa puedes dañar el pic muy fácilmente.

    Por otra parte, si usas fuente separadas y se te vuelve el PIC loco, apuesto a que no has puesto las masas comunes de ambas fuentes. Si no lo has hecho, hazlo, puesto a que el driver de tu motor en este caso el L293, tiene una referencia de masa diferente a la del circuito de controlo, tu pic. Por lo tanto si pones 5V en un pin de tu L293, esos 5 voltios de tu pic son 5V con respecto a la masa del PIC pero si tienes otra fuente con una masa que no es la misma del PIC, la tensión de salida del pin del PIC puede ser cualquier otra con respecto a la masa de tu segunda fuente. Por eso no te va a funcionar correctamente si no conectas las masas.

    Pruebalo a ver si ahí tienes el error. Si no, necesito más detalles.

    Saludos!

  21. eliud

    pues ya funciona con una sola fuente, lo raro es que tuve que conectar un capacitor de 10uF entre el voltaje de salida del 7805 y masa, pero le tuve que poner una resistencia de 330 ohm a vdd del pic, y ya funciona bien, el capacitor que puse que funcion hace??
    gracias 🙂

  22. Sfiro

    Hola muy buenos los vídeos me han ayudado mucho muchas gracias.
    tengo una pregunta, quiero saber como poder hacer para que un timer dure exactamente 1 segundo, pero que no tenga ningún pulso externo, ojala pudiera ser con el timer 0 que como ya nos explicaste maneja 8 bits.

    muchas gracias por los vídeos.

  23. Twistx77

    Buenas,

    Puedes hacer que el timer 1 dure medio segundo funcionando con un cristal de 4Mhz el PIC. Para ello tienes que cargar, 3036 si mal no recuerdo en el Timer 1 y configurarlo con un preescalado de 8 creo recordar. Si quieres un segundo tendrás que usar un cristal más lento. Con el Timer 0 necesitarías un cristal de menor frecuencia. Lo que puedes es usar un contador para contar segundos cada vez que se produce la interrupción, sumas al contador y compruebas si ha pasado ya un segundo.

    Desde ya te digo que si quieres hacer un reloj, estos métodos no te van a servir a menos que no te importe que el reloj varíe la hora quizás un par de minutos por semana.

    Saludos!

  24. pablo gomez

    bunenisimos sus tutoriales

  25. Twistx77

    Muchas gracias.

  26. David

    Muy bueno tus tutoriales y gracias por compartir tus conocimientos pero tengo una duda y es que en muchos programas el tiempo no es exacto con pic c y en vez de cargarlo con el valor calculado ponen otro tiempo y lo llaman ajuste fino y ajuste (grueso) y pues te agradeseria si me explicara ese tema.

  27. Twistx77

    Necesito que especifiques más, no entiendo a que tiempo te refieres… del oscilador? un timer? el tiempo de ejecución de un código?

  28. David

    Hola reitero que tus tutoriales son de infinita auda para mi muchas gracias
    con respecto mi pregunta el tiempo que se calcula con los timer en un codigo porque en el programa hay como dijiste retardos a la hora de ejecutarse. Entonces he visto que hacen ajuste fino y otros para corregir ese error de tiempo a la hora de ejecutar en proteus.

  29. David

    y si quiero colocar con output_high y output_low coloco el siguiente codigo y no me sale:
    TIMER1_isr()
    {
    set_timer1(3036);
    setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
    output_high(PIN_A1);
    set_timer1(3036);
    setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
    output_low(PIN_A1);
    } le agradesco su respuesta ya que tengo esa duda en vez de usar output_toggle

  30. ANDRES

    parce muchas gracias muy explicativo he aprendido varias cosillas con los videos empece a mirar esto de programacion en c hace unos dias jajjajaja solo por q es mas facil programar los modulos lcd (y me picaba tenia q usar un modulo jaja) en fin me llamo la atencion trabajar en c por eso empece a ver los tutoriales esto de los timer no lo conocia me gustaria q subieras esta informacion pero en lenguaje assembler me ayudaria bastante pues es el lengueje en el q programo y no tengo ni idea de como se configuraria todo eso
    aaaaaa otra cosa no yo uso el 16f84a y 16f877a cre q no tiene osc interno siempre uso cristal de 4Mhz entocnes para ver si la informacion en assembler q depronto pueda subir sea usanso el cristal bn.
    pero = muy chimba la pagina muy educativa gracias por todo el esfuerzo
    y hasta la proxima

  31. Twistx77

    Gracias.

    Si tienes preguntas o sugerencias, por favor, postéalas en el foro.

    Saludos!

  32. Andres

    muy interesante y sobre todo muy clara la explicacion

  33. Andres

    interesante con todo y explicacion

  34. Ariel

    Postee una duda al respecto del timer, espero la vean, mas que todo los moderadores.
    titula: temporizador con PIC
    esta en el área de micorocontroladores.
    Muchas gracias.

  35. Roberto (Publicaciones Autor)
  36. rolo

    Buen dia..podrias subir un ejemplo de esto.. realice mi programa tal cual tu lo haces pero cuando lo verifico en proteus no funciona como deberia.. es decir el timer no se desbordaa y solo prende y apaga segun el delay que le ponga.. ayudaa porfaa

  37. ANDRES

    hola
    quisiera preguntarte como haces para retardos o interrupciones grandes digamos 5 minutos cosas asi ?? repitiendo eso varias veces digamos 10 veces segun el codigo ya hecho pero como hago la repeticion pues en asm lo hagoasi repitiendo varias veces un bucle

  38. and_ve

    tengo un apregunta con respecto del montaje, para que le pone una resistencia a tierra para el pulsador

  39. mauricio

    Hola
    tus tutoriales son excelentes, estoy en 4 semestre de ing electrónica y estos tutoriales me han sido de gran utilidad, espero nos puedas seguir transmitiendo todos tus conocimientos por este medio.

    Hasta pronto
    Saludos desde Colombia

  40. Juan Pablo

    Por primera vez entro a este blog y tiene el mejor contenido de la red en estos temas de verdad es usted un maestro.Soy un aficionado a la electronica y creo que voy a visitar muchas veces este blog.
    Saludos

  41. Daniel

    oye amigo, estoy enteramente agradecido contigo, es mi primera vez con los micros pero después de dos días de ver tus videos y con alguna información en la red tengo clarita la idea de los timers, aunque aún no me queda muy claro algo y es lo siguiente, en el CCS, cuando estabas poniendo la frecuencia del cristal, por qué si se supone que el pic trabajaba con un cristal externo, le pusiste en la parte de los FUSES que ibas a trabajar con el oscilador interno RC?
    Nuevamente muchas gracias, sos el duro del tubo.
    Saludos desde Colombia.

  42. sebastian

    Muy buenos tutoriales, quisiera saber:

    ¿Como hago para llevar cuenta en us del timer a una variable, para luego mostrar el tiempo en un LCD 16×2?

  43. johan

    ey.. amigo excelente material que has puesto en la red y realmente de mucha ayuda para quienes estudiamos o ya terminamos nuestros estudios para reforzar dudas y hasta mejorar nuestros conocimientos adquiridos la verdad son pocas las personas que hacen esto y de verdad mis mas sinceras felicitaciones espero seguir en contacto con ustedes, aqui desde Colombia.

  44. aldo

    oye disculpa ya solucionaste este problema xq a mi me pasa exactamente lo mismo que a ti?? Y te agradecería que me dijeras como le hiciste

  45. AlexV

    Que tal! no pude encontrar el esquematico, cual es la direccion para descargarlo, muchisimas gracias

  46. Ruben

    Felicidades por un trabajo que anima a mucha gente aprender cosas nuevas, yo soy ingeniero eléctrico y mis conocimientos de electrónica era básicos y gracias a tus tutoriales me animé a entrar en el mundo de los Pic. Tengo conocimientos de programación en C pero hasta ahora no le había encontrado gran utilidad. gracias por cambiar eso

    un saludo desde España

    PD: el manual del CCS no contiene los marcadores? el que descargue no los visualiza

  47. Edgar

    Desde hace años atras utilizo sus tutoriales para orientarme desde electronica lineas y ahora en Pic, me doy cuenta de su humildad y amor a la electronica y como comparte con nosotros los neofitos desinteresadamente, sin pedir nada a cambio. Señor parece familia de Mahama Ghandi o Mariata Teresa de Calcuta. Dios le siga bendiciendo y le colme de muchos exitos. Saludos y mis mas sinceros respetos, Dios se lo tome en cuenta esta obra misionera,
    desde Dominicana. Se me cuida.

  48. rojacorp

    hola, el manual del ccs lo has subido?, gracias de ante mano, un saludo y gracias por tus tutoriales

Dejar un comentario