Scheda Arduino Zero
Scrivi programmi non bloccanti a stati.
Privilegia luso di switch e case.
Il file principale .ino deve avere la seguente struttura di base:
#include "gevino_opto_pnp_io.h"
void setup() {
  SerialUSB.begin();
  Serial.begin();
  Serial1.begin();
  gevino_io_setup();
}
void loop() {   
}

Non inizializzare gli IO, lo fa gia gevino_io_setup();
Per leggere gli ingressi o comandare le uscite usa le macro presenti nel file gevino_opto_pnp_io.h
esemio:
if(In1) setOut1;
else resOut1;

La porta di debug è SerialUSB, la seriale usata per il monitor seriale.
La porta Serial1 è usata per la RS485 Half Duplex e si comanda il Rs485_TxEn in questo modo:
loop()
{
    if() {
        set_Rs485_TxEn;
        Serial1.write();
    }
    if (SERCOM0->USART.INTFLAG.bit.TXC){   // Rimuovere l'abilitazione Tx quando è stato inviato l'ultimo carattere.
        res_Rs485_TxEn;
        SERCOM0->USART.INTFLAG.bit.TXC = 1;    
    }
}

La porta Serial è connessa al modulo bluetooth SPP-C o modulo WiFi ESP8266 con comando AT, a seconda del modulo montato sulla scheda.
Per scrivere e leggere la flash come EEPROM usa la libreria FlashStorage: https://github.com/cmaglie/FlashStorage
Per usare modbus su RS485 digi di chiedere a GEVA un agiornamento di questo file

Il modem Ethernet, quando montato è il W5500, si usa la libreria standard Ethernet: https://github.com/arduino-libraries/Ethernet
Si inizializza con  Ethernet.init(ETH_CS);

Per la SD usi la libreria SdFad di greiman https://github.com/greiman/SdFat
