Ethernet Shield останавливается через некоторое время

Возможно, вы можете принять некоторые из соглашений Unix.

В другом ответе пользователь David предложил

sysexits.h имеет список стандартных кодов выхода. Кажется, что это датируется по меньшей мере до 1993 года, и некоторые крупные проекты, такие как Postfix, используют его, поэтому я думаю, что это путь.

На странице руководства OpenBSD:

В соответствии со стилем (9) нецелесообразно вызывать exit (3) с произвольными значениями, чтобы указать условие отказа при завершении программы. Вместо этого следует использовать предопределенные коды выхода из sysexits, поэтому вызывающий процесс может получить приблизительную оценку класса отказа, не обращая внимания на исходный код.

blockquote> blockquote>

Это список, который отображается в системе Debian:

#define EX_USAGE        64      /* command line usage error */
#define EX_DATAERR      65      /* data format error */
#define EX_NOINPUT      66      /* cannot open input */    
#define EX_NOUSER       67      /* addressee unknown */    
#define EX_NOHOST       68      /* host name unknown */
#define EX_UNAVAILABLE  69      /* service unavailable */
#define EX_SOFTWARE     70      /* internal software error */
#define EX_OSERR        71      /* system error (e.g., can't fork) */
#define EX_OSFILE       72      /* critical OS file missing */
#define EX_CANTCREAT    73      /* can't create (user) output file */
#define EX_IOERR        74      /* input/output error */
#define EX_TEMPFAIL     75      /* temp failure; user is invited to retry */
#define EX_PROTOCOL     76      /* remote error in protocol */
#define EX_NOPERM       77      /* permission denied */
#define EX_CONFIG       78      /* configuration error */

Внутри файла /usr/include/sysexits.h можно найти более подробные описания эти коды ошибок.

0
задан Muhammed Eminoglu 16 January 2019 в 16:35
поделиться

1 ответ

Я использую сторожевой таймер в каком-то скрипте. Эта функция может автоматически сбросить ваш Arduino, если вы не сбросили сторожевой таймер во время перерыва.

вы выполняете wdt_enable () в setup () и wd_reset () в начале цикла

time before watchdog firing    argument of wdt_enable()
-------------------------------------------------------
15mS                           WDTO_15MS
30mS                           WDTO_30MS
60mS                           WDTO_60MS
120mS                          WDTO_120MS
250mS                          WDTO_250MS
500mS                          WDTO_500MS
1S                             WDTO_1S            
2S                             WDTO_2S
4S                             WDTO_4S
8S                             WDTO_8S

пример использования:

#include <avr/wdt.h>

void setup()
{
  wdt_enable(WDTO_4S);       // enable the watchdog
                             // will fire after 4s without reset
}

void loop(){
 wdt_reset();              // resets the watchdog timer count
     :
     :
                     // if program hangs more than 4s, launch the reset of arduino
}
0
ответ дан Frenchy 16 January 2019 в 16:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: