Arduino y frambuesa Pi: construcción de sistemas confiables con contadores de tiempo del perro guardián (3 / 6 paso)

Paso 3: Cómo configurar el temporizador de vigilante interno de Arduino

Resumen: En el paso 3 de este Instructable, veremos cómo configurar el temporizador de vigilante interno de Arduino. También hablamos de los temas con el temporizador de vigilante interno de Arduino y explicar por qué un temporizador WatchDog externo, es una mejor opción en sistemas de muchos pero no todos.

Configurar el temporizador de vigilante interno de Arduino


Arduino es una máquina mucho más simple que un Raspberry Pi. Sin embargo, es realmente más fácil colgar un Arduino que es una frambuesa Pi porque todo el código es único en el Arduino. Solo roscada significa que hay solamente un programa corriendo en un momento en el Arudino (a excepción de interrupciones, de manera de pensar). El punto es que si sólo tienes un hilo en un momento, cualquiera colgar en que hilo detendrá el equipo. Naturalmente, hay otros problemas que pueden causar su código a crash y Arduino a encerrar. Tiempos de espera en los periféricos, energía cuestiones, RFI, etc., etc.. Mal código utilizando la función millis() es un problema clásico. Es necesario manejar el rollover a 49,5 días si no está utilizando un reloj en tiempo real.

Cómo utilizar el WatchDog interno de Arduino (si puede hacer que funcione)

En primer lugar de una definición. OMC se define como la cantidad máxima de tiempo que el temporizador del vigilante puede contar antes de que necesite ser reajustada (en otras palabras, cuando reiniciará el equipo si el equipo desaparece).

Hay un montón de cosas que mantendrá la vigilancia interna del trabajo en el Arduino, así que ten cuidado.

Aquí es una manera de trabajar con el temporizador interno del vigilante de Arduino. En primer lugar, la OMC de todos los modelos de Arduino es un máximo de 8 segundos. Tener en cuenta. Tener una más OMC cubre pecados mucho más en mi opinión (OMC es 16 segundos en el interior frambuesa Pi perro guardián – que todavía no es tiempo suficiente para nuestro gusto), por lo que la OMC del Arduino es un poco corto. A menudo tenemos serie procesos que se ejecutan más de 8 segundos en nuestros diseños. Sí, usted puede incorporar toques en el código, pero cuando se utiliza bibliotecas externas, es un dolor.

Para experimentar con tu Arduino WDT, construir un esquema nuevo en el IDE de Arudino. ADVERTENCIA: Si utiliza un ArduinoMega 2560 o dispositivo similar, usted puede "ladrillo suave" su dispositivo. Ver comentarios en la sección de problemas a continuación. Mi Arduino UNO de SainSmart funcionaba bien con este sketch. Comenzar con

Ejecutar el sketch y déjela funcionar durante 30 segundos o menos. Nunca debería ver el mensaje "Reinicie Arduino" otra vez después de reiniciar el sistema. A continuación, comente la declaración de RESETWATCHDOG como este:

#define RESETWATCHDOG

Ahora cuando ejecute el bosquejo, si el vigilante está trabajando, entonces usted debe ver el reinicio de Arduino cada 8 segundos o menos en el monitor serial.

Problemas con el temporizador de vigilante interno de Arduino

Uso de la Arduino interna WatchDogTimer es problemático en el mejor. El temporizador de vigilancia de Arduino tiene una OMC de 8 segundos para si estás descargando un bosquejo nuevo y el viejo bosquejo tiene activado el dispositivo de vigilancia, entonces usted puede entrar en una secuencia de reinicio infinito. Esto se llama "bricking suave". El Arduino es entonces prácticamente sin valor (sin mucho trabajo), pero sigue funcionando. Perro guardián vence, gestor de arranque se inicia, bootload obras por un tiempo, perro guardián caduca, etc., etc. etc.. Algunos cargadores de arranque ahora deshabilita el WatchDog adecuadamente, pero ten cuidado hay un montón de Arduinos por ahí (como el Mega 2560 - de que somos grandes fans) que todavía no funcionan. Puede actualizar el gestor de arranque pero no es una tarea fácil. Este es un problema que nos hemos topado varias veces.

  1. El vigilante interno de Arduino no ciclo de la energía del sistema. Reinicia el Arduino a través de la línea de Reset. Esto significa que no se reinicia en todas las condiciones. Especialmente en baja potencia / condiciones de apagón experimentan con Sistemas de energía Solar. He visto esto en Proyecto de Curazao.
  2. Hay problemas con el gestor de arranque (véase arriba)
  3. El temporizador de vigilancia interna no es totalmente independiente de la Arduino. Si el código salta a un pedazo de código desactiva el WDT, estás acabado. Tratar de sobreescribir el stack para ver qué cosas interesantes pueden pasar al código en un pequeño sistema integrado como el Arduino.
  4. La máxima OMC es de 8 segundos. Usted puede fácilmente en rutinas, tales como la comunicación serial para más de 8 segundos. Descubrir todas las posibilidades y poner llamadas wdt_reset() en el lugar correcto es difícil y con algunas rutinas seriales, imposibles.

Artículos Relacionados

Sistema Ambilight para cada entrada conectado a su televisor. WS2812B Arduino UNO frambuesa Pi

Sistema Ambilight para cada entrada conectado a su televisor. WS2812B Arduino UNO frambuesa Pi

Siempre he querido agregar ambilight a mi TV. Se ve tan genial! Finalmente lo hice y no me decepcionó!He visto muchos videos y muchos tutoriales sobre la creación de un sistema Ambilight para tu TV pero nunca he encontrado un tutorial completo para m
CupBots - 3D plataforma robótica impresa para Arduino y frambuesa Pi

CupBots - 3D plataforma robótica impresa para Arduino y frambuesa Pi

Aquí es un proyecto de robótica de gran fin de semana para emprender con amigos o gente en su espacio local del fabricante. Usted necesitará una impresora 3D práctico 3D impresión los archivos STL adjuntan como parte de los pasos a continuación y una
El tiempo en pantalla utilizando Arduino y frambuesa Pi

El tiempo en pantalla utilizando Arduino y frambuesa Pi

Este proyecto es sistema de visualización de tiempo usando 16 * 2 lcd, arduino, frambuesa pi, internetEste proyecto es muy fácil necesidad muy menos AsambleaEs mostrar el tiempo en cualquier mercancías en mundo en 16 * 2, se puede ajustar lo que dese
Controles de lectura/emular con Arduino y frambuesa Pi

Controles de lectura/emular con Arduino y frambuesa Pi

Mandos a distancia están en todas partes. Son la interfaz a su televisores, sistemas de música y qué no. Probablemente tienes unos cuantos de repuesto ahí, devastada en la desaparición de su mejor. Animarlos y les ponga en uso! (Skynet aprueba...)Aqu
Construir tu Robot de Streaming de Video en Internet controlado con Arduino y frambuesa Pi

Construir tu Robot de Streaming de Video en Internet controlado con Arduino y frambuesa Pi

< el instructivo y el código están listos. ¡ Disfrute! Dejo un comentario Comentarios! >Yo soy (aka LiquidCrystalDisplay / Italia), un estudiante de 14 años de aprendizaje de Israel en el Max Shein secundaria para matemáticas y ciencia avanzada. Est
¿Arduino Vs frambuesa Pi que es mejor para usted?

¿Arduino Vs frambuesa Pi que es mejor para usted?

El Arduino y frambuesa Pi plataformas son muy diferentes en la forma en que manejan tareas, ¿cómo sabe el diy'er medio que es adecuado para ellos?En este instructable iré sobre las principales diferencias y mostrar lo que los diferentes consejos son
Basados en Arduino - sistema de Control para la PC del coche del RPi

Basados en Arduino - sistema de Control para la PC del coche del RPi

Hola a todos! Michalis Vasilakis de www.ardumotive.com y en esta guía de le mostrará cómo hacer un simple - basados en Arduino - sistema de Control para la PC del coche del RPi.Este sistema está diseñado para evitar el cierre abrupto del PRi coche si
Rápido Termómetro Digital usando barato convertidor de USB a TTL y DS18B20 - sin Arduino o frambuesa Pi

Rápido Termómetro Digital usando barato convertidor de USB a TTL y DS18B20 - sin Arduino o frambuesa Pi

En mi anterior instructable le di una introducción al termómetro Digital uso de DS18B20 y ESP8266 nodemcu con pantalla OLED de SPI y programación utilizando el IDE de Arduino. Requiere conocimientos de electrónica básica, programación y requiere un p
DIY Arduino y frambuesa Pi estación y servidor web

DIY Arduino y frambuesa Pi estación y servidor web

Este es un proyecto que llevará la temperatura usando el sensor de temperatura TMP36 IC y una placa Arduino . Esta información será envía en serie a la Frambuesa Pitablero de edición de una página web que el Raspberry Pi es anfitrión de sí mismo. Par
Tierra Globo giratorio con Arduino o frambuesa Pi controlado por Motor paso a paso

Tierra Globo giratorio con Arduino o frambuesa Pi controlado por Motor paso a paso

Este instructivo describe cómo actualizar su globo a una versión motorizada. Parece increíblemente mejor en el estante que está girando lentamente, y cualquier manifestación con sus hijos (para explicar el ciclo día/noche o las estaciones) ganará int
Cómo convertir frambuesa Pi en HI FI sistema de Audio con RuneAudio

Cómo convertir frambuesa Pi en HI FI sistema de Audio con RuneAudio

Hey chicos, fin de semana se acerca y está esperando para hacer un proyecto fresco con Rpi, pero no tienes ninguna pista. Anímate!!, yo he venido para arriba con un proyecto con el que uno puede convertir frambuesa Pi en un reproductor de música Hi F
Sistema GPS con Arduino + M2M escudo

Sistema GPS con Arduino + M2M escudo

En el siguiente tutorial realizaremos un sistema GPS con Arduino y un escudo especial para ello llama escudo de M2M de Arduino desarrollado por electrónica MCI, donde obtendremos el recorrido realizado junto con el valor de un sensor, estos pueden se
Frambuesa PI USB vs comunicaciones en serie con gsm shield (escudo de a-gsm itbrainpower.net)

Frambuesa PI USB vs comunicaciones en serie con gsm shield (escudo de a-gsm itbrainpower.net)

Sobre este cómoEste cómo se refiere a la itbrainpower.net del escudo de un gsm, teniendo características principales siguientes:Compatibilidad en todo el mundo - módulo de banda cuádrupleGSM / GPRS / SMS / DTMF compatibleDos zócalos SIM (sola SIM act
Cubo de LED de media pulgada: Arduino había controlado 3 x 3 x 3 con LEDs SMD!

Cubo de LED de media pulgada: Arduino había controlado 3 x 3 x 3 con LEDs SMD!

Tomando la tarea comenzó con mí pensando 'bueno, podría hacer un cubo de LED más pequeños mediante LEDs SMD".   Sí, la idea era soldar los LEDs de montaje superficial en el espacio!    Y sí lo hice (sigue siendo la pregunta "Por qué").  Vid