Problemas base de tiempo tmr1 & tmr2
Resultados 1 al 7 de 7

Tema: Problemas base de tiempo tmr1 & tmr2

  1. #1
    Usuario
    Ubicación
    Colombia
    Mensajes
    97
    Gracias
    47
    Agradecido 38 veces en 16 posts

    Problemas base de tiempo tmr1 & tmr2

    Bueno la verdad me siento idiota consultando esto, pero no he podido conseguir.

    El cuento es que tengo el timer2 del 18F4550 andando a 37500 Hz, y en el timer1 tengo una base de tiempo de 1/2 segundo.

    Lo que quiero hacer es que medio segundo este generando los 37500 Hz y el otro medio segundo no.

    He intentado habilitando y desabilitando el timer2 a través del timer1 pero nada el led se queda a veces encendido a veces apagado...

    Help please.

  2. #2
    Moderador Avatar de byboRRe
    Mensajes
    271
    Gracias
    140
    Agradecido 178 veces en 115 posts
    Cita Iniciado por luisko Ver mensaje
    El cuento es que tengo el timer2 del 18F4550 andando a 37500 Hz, y en el timer1 tengo una base de tiempo de 1/2 segundo.
    Osea te desborda el timer cada 26 uS ???

    Cita Iniciado por luisko Ver mensaje

    He intentado habilitando y desabilitando el timer2 a través del timer1 pero nada el led se queda a veces encendido a veces apagado...
    Aquí me perdí un poco, toggleas el led en cada desborde del timer2 ???

    Cita Iniciado por luisko Ver mensaje
    He intentado habilitando y des habilitando el timer2 a través del timer1 pero nada el led se queda a veces encendido a veces apagado...
    No sera por que quizá se quede en el ultimo estado antes de que se te desactive el 1/2 segundo.

    ¿En que lenguaje programas?, Quizá dando un vistazo a tu código veamos cual es el problema.

    Saludos!!
    Última edición por byboRRe; 21/03/2012 a las 00:10
    µPraxis- Electrónica en Practica

  3. #3
    Usuario
    Ubicación
    Colombia
    Mensajes
    97
    Gracias
    47
    Agradecido 38 veces en 16 posts
    Programo en CCS....

    Trabajando a 48Mhz.


    Así tengo configurados los timers 1 & 2:


    setup_timer_2(T2_DIV_BY_16,20,1);

    // enable_interrupts(INT_TIMER2);


    setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); // setup interrupts


    enable_interrupts(INT_TIMER1);


    Y este es el código:



    #INT_TIMER2
    void timer2(){


    output_toggle(led);




    // disable_interrupts(INT_TIMER2);


    // PERIODO DE PWM (4/48000000)*16*20=0,0000266666
    // FRECUENCIA PWM 1/PERIODO = 37500Hz


    }










    #INT_TIMER1
    void wave_timer() {




    //disable_interrupts(INT_TIMER0);
    //disable_interrupts(INT_TIMER1);


    set_timer1(60536);//5536


    ++seconds;




    if (seconds==150){


    enable_interrupts(INT_TIMER2);
    conta2=0;
    set_timer2(0);
    seconds=0;


    ban_timer=1;
    ban_timer2=1;
    output_toggle(PIN_D3);

    // ban_timer=1;
    // ban_timer2=1;

    }

    }

    // en el while(true)

    while(TRUE)

    {




    if(ban_timer==1){

    disable_interrupts(INT_TIMER2);

    ban_timer=0;
    ban_timer2=0;

    // StackTask();
    // HTTPTask();

    }

  4. #4
    Usuario
    Ubicación
    Colombia
    Mensajes
    97
    Gracias
    47
    Agradecido 38 veces en 16 posts
    Tengo un poco más de código en el programa, pero creo que es lo más relevante.

  5. #5
    Moderador Avatar de byboRRe
    Mensajes
    271
    Gracias
    140
    Agradecido 178 veces en 115 posts
    Si la sabiola no me falla creo que todo esta bien, solo una pregunta

    output_toggle(led);

    y

    output_toggle(PIN_D3);

    Son el mismo o diferentes ??.

    A lo que veo es que pasa esto enciendes y apagas el led, puede que en el momento que apagues el led te detenga el timer 2, entonces ya no lo "toggleara" (jeje no se burlen del spanglish) y lo deja en bajo, o puede que este en alto y lo detengas y asi lo dejara en estado alto.

    ¿Me explico? ¿Usas Isis?, puedes probar con el osciloscopio en simulación,

    Saludos
    µPraxis- Electrónica en Practica

  6. #6
    Usuario
    Ubicación
    Colombia
    Mensajes
    97
    Gracias
    47
    Agradecido 38 veces en 16 posts

    Funcionando pero con dudas.

    Bueno muchas gracias por responder, he seguido trabajando y tengo lo siguiente:



    Cita Iniciado por byboRRe Ver mensaje
    Si la sabiola no me falla creo que todo esta bien, solo una pregunta

    output_toggle(led);

    y

    output_toggle(PIN_D3);

    Son el mismo o diferentes ??.


    No señor, son diferentes, con uno veo el funcionamiento de un timer y con el otro pues el otro timer.
    A lo que veo es que pasa esto enciendes y apagas el led, puede que en el momento que apagues el led te detenga el timer 2, entonces ya no lo "toggleara" (jeje no se burlen del spanglish) y lo deja en bajo, o puede que este en alto y lo detengas y asi lo dejara en estado alto.

    Bueno te cuento que hice algunos cambios y está funcionando, el cambio más importante es el hecho de establecer la bandera dentro del timer y desactivarla dentro del mismo timer.

    Antes la activaba en el timer y la desactivaba en el bucle.

    ALGUIEN ME PODRÍA EXPLICAR PORQUÉ?
    ¿Me explico? ¿Usas Isis?, puedes probar con el osciloscopio en simulación,

    Saludos

  7. #7
    Moderador Avatar de byboRRe
    Mensajes
    271
    Gracias
    140
    Agradecido 178 veces en 115 posts
    Cita Iniciado por luisko Ver mensaje
    Bueno te cuento que hice algunos cambios y está funcionando, el cambio más importante es el hecho de establecer la bandera dentro del timer y desactivarla dentro del mismo timer.

    Antes la activaba en el timer y la desactivaba en el bucle.

    ALGUIEN ME PODRÍA EXPLICAR PORQUÉ?
    Tiene algo que ver con esto que te explique mas arriba.


    Cita Iniciado por byboRRe Ver mensaje
    A lo que veo es que pasa esto enciendes y apagas el led, puede que en el momento que apagues el led te detenga el timer 2, entonces ya no lo "toggleara" (jeje no se burlen del spanglish) y lo deja en bajo, o puede que este en alto y lo detengas y asi lo dejara en estado alto.
    Desactivando el timer desde la interrupción, no le das tiempo a que toggle ni una ves mas el LED y así no te queda en un estado bajo o alto.
    µPraxis- Electrónica en Practica

  8. Los siguientes usuarios agradecen a byboRRe por este post:

    luisko (21/03/2012)

Temas similares

  1. Base refrigerante para portatil
    Por julian andres en el foro Consultas Técnicas
    Respuestas: 1
    Último mensaje: 02/02/2012, 21:12
  2. Restaurar base de datos sql server 2008
    Por bluesky777 en el foro Programación
    Respuestas: 2
    Último mensaje: 12/08/2011, 01:51
  3. [Linux] Linea del tiempo
    Por jorgedalesp en el foro Software
    Respuestas: 3
    Último mensaje: 29/04/2011, 22:29
  4. placa base no reconoce discos SATA
    Por apocusant en el foro Consultas Técnicas
    Respuestas: 2
    Último mensaje: 20/04/2011, 01:10

Los visitantes encuentran esta página buscando por:

timer2 ccs

tmr1

modificar tmr2 ccs interrupciones

explicacion timer2 ccs

TMR1 TMR2 CON PIC EN CCSbase de tiempo timer 2 picccs timer2 1 segundogenerar una base de tiempo de 1 segundo con TMR1 enutilizar el timer2 ccscomo crear una base de tiempos timer 2ccs timer 2programacion tmr1configurar timer1 pic18f4550 1 segundotimer2 18f4550 tmr2 en ccscomo sacar 5 seg con el tmr1 en ccsno ocurre interrupcion timer 1 18f4550define tmr1 en ccsgenerar pwm con tmr1 en ccsprogramar tmr1 y tmr2 pic cprogramar tmr2configurar timer 2 ccsccs usar timer0 y timer2 al mismo tiempointerrupcion tmr2 1 seg ccstimer 2 pic 18f4550

Etiquetas para este tema

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37