Necesito una Interrupción Interna

Hola, necesito poder usar una interrupción interna, de forma que me asegure de que cada x milisegundos, se ejecuta una adquisición de datos en la entrada analógica (independientemente de lo que estuviera haciendo el Arduino en ese momento).

¿Es posible configurar alguna interrupción para ello?

Veo en la documentación del micro, que el Watchdog se puede configurar como simple Interrupción, pero no sé si sirve para esto....

¿Hay librerías para hacerlo?

Gracias por vuestro tiempo, dedicado a responder.

Hola

Depende de lo que llames "x milisegundos" y de como sea el resto de tu programa lo puedes hacer de una manera u otra.

1 - Por polling. Dentro de tu bucle principal haces una comprobación del número de milisegundos transcurrido desde la última vez que llamaste a tu función de lectura de la entrada analógica. Solo necesitas la función milis() y una variable para almacenar el momento de la última llamada.

2 - Por interrupciones. Usando la librería MsTimer2 Arduino Playground - MsTimer2

Según comenta Complubot, la segunda opción es más precisa. En la primera opción, el tiempo es algo variable en función de lo que hagas en el bucle principal. Si solo lees la entrada analógica, no percibirás la diferencia.

Gracias, me queda la duda si los timer disponibles son hardware, o una subrutina software de algún tipo (y que por tanto no sería muy precisa).

Me parece que la librería mencionada "MsTimer2" emplea los timer hardware del propio chip, según se describe en:

https://web.archive.org/web/20210413164913/https://www.uchobby.com/index.php/2007/11/24/arduino-interrupts/

Si estoy equivocado, por favor, decídmelo...

Creo que las interrupciones "hardware" son las que pueden provocar dispositivos externos, en las entradas apropiadas del arduino (o de cualquier otro micro). Me temo que la interrupción interna símplemente utiliza algún tipo de contador para generar la interrupción cuando llega al final de cuenta (previamente programado). Aunque dicho contador se incrementa (o decrementa) independientemente de lo que está haciendo el micro, por eso no pierde precisión, salvando la deriva que tiene el micro en largos periodos de tiempo en funcionamiento (el XTAL del que saca la frecuencia el micro tiene un pequeñísimo error)

Hola..
Una interrupción es una bifurcación del flujo normal del programa que se produce al detectar el evento que debe interrumpir la ejecución, para ejecutar una subrutina 'definida' de manera automática. Previo a la llamada de la funcion, se guardan los estados de la variables de entorno ( 'paginado', como en la recursividad), y luego se ejecuta la subrutina.

Hardware -> cambio de estado de un pin
Software -> provocada por el propio programa

Sabiendo esto, debemos determinar si realmente necesitamos una interrupción, la cual, podría cortar un envío en una comunicación o alguna tarea en medio de su ejecución.

Si tenes que ejecutar algo cada 'X' tiempo, no es una interrupcion lo que necesitas, sino un contador..
Una interrupción, se utiliza cuando el evento no responde a alguna lógica ni metrica, y debe ser ejecutado con alta prioridad . 'ej. presionar una tecla de la computadora', a pesar de lo que se este procesado, ves la letra en apantalla de inmediato..

Te dejo un link muy claro slide

saludos

Ultima respuesta Feb 22, 2011, 06:26 pm

No se a quien le respondes.

La verdad ya cansa!!

ya lo veo.

Hola:

Estos vídeos te podrá ayudar mucho a lo que buscas.

Vídeos Interrupciones Internas.

Vídeos Interrupciones externas

Saludos.

:roll_eyes: :sleeping:

Metaconta no has leido que es un post reflotado de Feb 22, 2011, 06:26 pm no hay que responder nada

Contesto a surbyte. No se porque te ha molestado la contestación a un post viejo, ya que las publicaciones sirven como referencia bibliográfica a personas pudieran tener la misma duda. Entonces si alguien tiene algo mas que aportar a un post viejo que lo haga, seguramente será aprovechado por los nuevos lectores del viejo post.

Que el post sea viejo, no queire decir que nadie mas lo leerá para evacuar dudas..

Te recomiendo que si te molesta... simplemente no lo leas..

Bueno ahora tenemos moderador.
Preguntale a el.
Si tiene mas de 120 dias no deberías responder.
Si esta mal esa regla entonces pide que se retire.
Te invito a que busques un mesaje viejo e intentes responderlo. Te aparecerá la advertencia de que tiene mas de 120 días y que es pasible de que el autor del post no te responda.

Lo que hay que hacer es crear un nuevo post, referenciar este, y aportar la solución.
Te invito, creo que hay miles solo en este subforo.

Se entiende ahora o no?
Es como poner enlaces sin tag o insertar códigos sin tag.

Eres el policia de foro???? dedíca tu tiempo a ayudar y no a criticar a alguien que hace algo positivo..
Sabes que, tenia buen concepto tuyo, me has ayudado en algunas publicaciones.. En el fondo eres un egolatra que solo ayuda para figurar en una lista de 'inteligentes'....

ya no te contestaré mas

@surbyte Si no quieres contestar, no contestes. Si lo que buscas es que no se ensucie un hilo, no participes en ensuciarlo. La última respuesta que le has dado a @alexneu Podrías haberla dado en primer lugar.

@alexneu Hay que guardar las formas en el foro. Repasa las normas de uso del foro. Esos comentarios aportan poco a la temática del hilo. Todos los usuarios de foro quieren de una u otra forma ayudar a que sirva como una verdadera herramienta. De la misma forma que has querido dar tu aportación a un usuario, a pesar de que como te han explicado, quizás algo tarde, y que ya deberías ser conocedor de ello, @surbyte quiere ayudar en conseguir un buen uso del foro.

No obstante, he de insistir en que la respuesta no es obligada, más si ésta no va a aportar nada. Ante cualquier comentario o actividad que no cumple las normas del uso del foro. Si se opta por contestar se deberá hacer cumpliendo igualmente las normas de uso del foro. O si no lo que obtenemos es precisamente el efecto contrario al que queremos corregir. La otra opción es no contestar y solicitar moderación.

He de mencionar igualmente que las intervenciones de @max_saeta y @ehrja tampoco aportan nada al hilo.

Chicos la intención es buena, pero puesto que estamos en un medio asíncrono, podemos tomarnos el tiempo que necesitemos para ofrecer la mejor de nuestras respuestas, si esta realmente cumple con las normas de uso del foro. Cumpliéndolas todos, todo funcionará bien.

(ºLe.

Hombre yo en realidad me refería a un hilo donde recientemente paso lo mismo, algo que surbyte y max saben de que hablo.

Creo que no se entendió pero ya tenia flojera de responder lo mismo.
y como lo digo en el tema citado las respuestas son responsabilidad de cada quien, si creen que pueden aportar algo pues excelente.

@ehrja Este hilo lo leyeron en su día una serie de personas, y por la resurrección volverán a leerlo probablemente otro número de personas. ¿Qué crees que aporta? dos emoticonos, o 'No se a quien le respondes.', o 'ya lo veo'...

Pese a que el hilo no debería haber sido revivido de no haber habido intervención alguna o simplemente una nota aclaratoria en los términos que ofrece @surbyte en su última intervención en el hilo habría sido sufiente ¿no crees?

Esto es ya ensuciar un hilo.

(ºLe