Autor Tema: Interrupciones+delay  (Leído 6725 veces)

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

Desconectado juansi

  • PIC16
  • ***
  • Mensajes: 102
Re: Interrupciones+delay
« Respuesta #15 en: 08 de Mayo de 2009, 14:58:37 »
una pregunta para los heroes del foro ¿si tengo en un programa muchos delays pueden afectar de alguna manera al tiempo de mi timer0?

gracias
Las mujeres quieren "SOLUCIONES", y los hombres lo mismo pero escrito al reves.


Desconectado mrgse

  • PIC10
  • *
  • Mensajes: 42
Re: Interrupciones+delay
« Respuesta #17 en: 09 de Mayo de 2009, 11:20:33 »
Hola de nuevo, finalmente lo que he hecho es un bucle de 300 repeticiones de un delay de 1 segundo junto a una comprovacion de si se ha recibido un caracter en el buffer de recepcion (de un ST485). De esta manera, si entra en la comprovacion, puedo saber cuantos segundos han pasado, por tanto, cuantos kedan, y realizar los calculos pertinentes conociendo el tiempo de la ejecucion de la funcion que se realiza si he recibido un caracter. Esquematicamente:

Interrupcion: Cuando llega un caracter al buffer, una variable "recibido" cambia . Nada mas.
En el programa principal, un bucle de 300 repeticiones realiza:
         - Un delay de 1 segundo
         - Comprobacion de si la variable "recibido" ha cambiado
                  Si la variable no ha cambiado, no pasa nada. 
                  Si ha cambiado, hace una serie de cosas, que tardan X tiempo que puedo calcular, pasarlo a su equivalente en repeticiones, y asi no desfasarme de los 5 minutos.

Lo pongo asi porque el programa en si no esta escrito completamente ni probado.

Desconectado juansi

  • PIC16
  • ***
  • Mensajes: 102
Re: Interrupciones+delay
« Respuesta #18 en: 09 de Mayo de 2009, 12:18:56 »
mrrse yo de todas formas intentaria usar el timer0, si el caracter llega durante el delay no se si lo leera bien la verda y ademas pienso q con el timer0 no tendrias q calcular ese tiempo X del q hablas.

de todas formas cuelga el codigo cuando lo tengas pa echarle un ojo (por curiosidad).
Las mujeres quieren "SOLUCIONES", y los hombres lo mismo pero escrito al reves.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Interrupciones+delay
« Respuesta #19 en: 11 de Mayo de 2009, 12:09:32 »
juansi, si el caracter llega durante un delay no habra problema porque la interrupcion se activara igual (si tiene USART por hard, si lo hace por soft no hay interrupcion, y no se como seria).
Realmente hacer la temporizacion con un timer de 8bits es algo engorroso, y la opcion de los delays es mas elegante dentro de lo que cabe...
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Interrupciones+delay
« Respuesta #20 en: 11 de Mayo de 2009, 23:13:23 »
usar timer para hacer delay es lo mejor que hay, porque allí tu defines la base de tiempo que quieras, una interrupción ocurrirá en cualquier proceso donde te encuentres (salvo en la propia interrupción).

El truco de usar timer es precisamente administrar el tiempo para que se ejecuten otros procesos, si por ejemplo defines una base de tiempo de 20 ms, bueno lo que te queda es dividir el delay que necesitas entre 20ms y ese número corresponde a las iteraciones de interrupción del timer.

En caso de necesitar precisión, deberás por el medio que sea (simulación, osciloscopio, etc) ir midiendo los ciclos que consumen las instrucciones que existan de por medio para ir ajustando el número de iteracciones, es decir, terminas tu código completo y después ajustas los valores del delay requerido.

 
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek


 

anything