Ya llego el 5º capítulo de la serie «Arduino Tutorials». Hoy os presento las interrupciones internas, como siempre guiadas con tres ejemplos prácticos enfocados a nuestra placa Arduino UNO.
Este capítulo podríamos consideralo como la continuación del capítulo anterior «Cap 4. Interrupciones externas», ya que también trata del uso de las interrupciones.
Como siempre, aquí os dejo el link para que podáis descargar los documentos adjuntos en el videotutorial para que podáis probarlos en casa.
Sin más aquí os dejo el video, nos vemos en los próximos tutoriales.
Enjoy!
Muchas gracias 😉
Gracias a vosotros por visitar el blog!! Un saludo!
Excelente post! me ha ayudado muchisimo! Gracias =D
Hola Andrea. Muchas gracias y me alegro que te haya sido útil! ya sabes, a seguir el blog que cada mes colgamos un nuevo video tutorial!
Estube probando el ejemplo del capitulo 4 de interrupcion externa en mi arduino mega y el ejemplo 1 no funciona el resto de ejmplos en los tutoriales funcinan de maravilla.
Hola David, que fallo te aparece?¿ que IDE de Arduino estas utilizando?¿ la 0.22 o la 1.0 o superior?¿
Un saludo,
0xDA_bit
Hola, que tal mi nombre es Hayashi, tu tutorial me ha caído como anillo al dedo.
Hay alguna manera de establecer mayor prioridad de una interrupción interna sobre una externa. Es decir que si la interrupción externa se presenta, y dentro de esta se presenta la interrupción interna deje de atender a la externa para atender a la interna?
Saludos.
disculpa, donde puedo encontrar la informacion para configurar los otros dos timers
Hola Andrés!!
La información para la configuración de los otros timers la puedes encontrar en la hoja de características del microcontrolador. Te dejo las mismas tanto para el atmega 328P (Arduino UNO), como para el atmega 2560 (Arduino MEGA).
Microcontrolador Arduino UNO:
Microcontrolador Arduino MEGA:
En esos documentos tienes toda la información sobre los microcontroladores que emplean las placas Arduino UNO y Arduino MEGA2560. A ver si se pasa David y puede comentar algo más concreto sobre este tema, pero creo que con eso puedes solucionar tus dudas.
Un saludo!!
Hola Andrés,
Como dice Javi toda la información que solicitas la encontraras en el datasheet. Si ves que no te haces con la quieres puedes volver a consultarnos.
Gracias por visitarnos! Un saludo.
OxDA_bit
Muchas gracias por abordar este tema y la buena forma de expresarlas ideas, esto deja claro muchas cosas
Te felicito por esta información me saco de muchos problemas
como puedo establecer una comunicación sincrónica con arduino y el pc ?… y como puedo hacer para que el tiempo de envio de un valor 1024 sea el mismo que el valor 1 ???
Gracias a ti Ramón por visitar mi web!
Sé bienvenido!
De nada Miguel, esa es mi intención! ayudar en todo lo posible a la comunidad!!
Un saludo y gracias por visitar el blog!!
Sé bienvenido!
Hola Pedro,
Hasta la fecha toda la comunicación que he realizado con el PC la he hecho mediante comunicación serie, el único protocolo de comunicación síncrono con el que he trabajado, que yo recuerde, es I2C… deberías buscar a ver si existe la posibilidad de realizar una comunicación serie síncrona entre el PC y Arduino.
Espero haber sido de ayuda….
Un saludo y gracias por visitar el blog,
OxDA_bit
Gracias Excelente explicacion
muy buena aportación!!
que tal tengo un problema, estoy programando un pushbotton donde cuando se oprime una vez entre a un case1 donde se ejecuta un parpadeo de led con delay, si se oprime dos veces entra al case2 y ejecuta otro parpadeo de led con delay, el problema es que al presionar la primera vez se queda como estancado si vuelvo a presionar el push, no hace el cambio de case1 al case2, me di cuenta que es por el delay, como puedo solucionarlo? gracias
Hola arturo!!
Puedes probar con la función millis() en lugar de emplear delay(). Tienes un ejemplo en el propio IDE de Arduino de como usar esta función. En la sección de ejemplos en Digital –> Blinkwithoutdelay.
Un saludo!!
hola David, quería saber si tenes un tutorial para muestrar datos de una señal de piezoeléctrico y luego poder graficar los datos obtenidos en otro programa…la señal es muy corta apenas 2microsegundos, imagínate un golpe a un tambor de batería…por favor si tenes algo mándame un mail al lobatopabloariel@hotmail.com
Hola a todos, antes de nada felicitaros por la web!!
Resulta que quiero controlar mediante una emisora-receptor (hobbyking de 9 canales) un coche, robot, cuatricóptero (lo que sea). Mediante PulseIn () he leido los valores de las palancas (canales), pero veo que no responde como quisiera, debido a que hay un retardo.
Una manera que veo de poder controlar esto, es como decís en vuestro tutorial con las interrupciones.
Pero mi pregunta es: Cómo controlo 6 canales con interrupciones internas? Tengo un Arduino Uno (por eso quiero utilizar interrupciones internas). Qué usaríais un Timer2 por ejemplo todo lo rápido que pudiese (con prescaler 1)? Podéis ayudarme poniendo un ejemplo básico para control de 6 canales? Soy un poco rookie en esto del código.
Muchísimas gracias!!
Salu2
Perdonad, Javi e hypnos1975 soy yo mismo. Ayer no aparecía el comentario como Javi, y lo he vuelto a escribir, pensando que era un fallo.
Sorry!!
Salu2
Estoy trabajando en Berlin y me dieron Arduino uno para que lo desgrane y podamos utlizarlo en un futuro para futuras operaciones, te he encontrado hoy y me has hecho el proceso más facil, gracias por tus tutoriales y por los archivos descargables, sige asi, eres un crack!
Un saludo desde el exilio.
Genial, gracias por los ejemplos
Hola a todos, bueno , Yo estaba probando las interrupciones externas del arduino mega y me di cuenta que si no conecto a nada el pin de la interrupcion externa, es decir cmo q si estuviera flotante (INT0:pin2) entra siempre a la interrupcion…como que si se disparara a cada momento. Yo puse un contador en la interrupcion ( por flanco de subida) para ver si me entraba la interrupcion y si lo hace conectando un pulsador y claro q si funciona bien,..pero si no conecto nada al pin2 ese contador se me desborda,… es normal es condicon para nada deseable ?
Hola.
En el minuto 10:00 del video cuando asignas valores en los registros a los bits TOIE1 y CS10 usas sintaxis diferentes: TIMSK1=(1<<TOIE1); y TCCR1B |= (1<<CS10);
¿Hay que hacerlo así por alguna razón o lo has hecho para que se vean diferentes formas de implementarlo?
Nunca he trabajado con registros a nivel bit en C y no me queda claro cómo funciona el operador |= . He buscado bastante por internet y sólo he encontrado manuales muy generales y con ejemplos muy simples y bastante inútiles. ¿Podrías recomendarme el nombre de algún libro o manual donde pueda encontrar información sobre estos temas?
Gracias por tus videos.