CAN bus

Wikipedia: Il Controller Area Network, noto anche come CAN-bus, è uno standard seriale per bus di campo (principalmente in ambiente automotive), di tipo multicast, introdotto negli anni ottanta dalla Robert Bosch GmbH, per collegare diverse unità di controllo elettronico (ECU). Il CAN è stato espressamente progettato per funzionare senza problemi anche in ambienti fortemente disturbati dalla presenza di onde elettromagnetiche...

Perchè CAN ?

Perchè usa solo un doppino per il segnale, perchè ha una velocità di comunicazione più che sufficiente per applicazioni domotiche, perchè i transceiver sono disponibili e a basso prezzo, perchè è ultra collaudato.

Banalmente, provate a cercare di acquistare un IC transceiver EIB/KNX (se ci riuscite)  e un transceiver CAN.

J1939

SAE  J1939 è uno dei più noti protocolli di comunicazione che fanno riferimento al bus CAN - su wikipedia potete trovarne descrizione e storia. CAN e j1939 fanno nativamente riferimento al mondo dell'elettronica "automotive" e sono ancora spesso usati nel mondo dell'elettronica industriale.

Lo stack (insieme di routines) che utilizzo è quello che Microchip ha pubblicato con la nota applicativa  AN930  (http://ww1.microchip.com/downloads/en/AppNotes/00930a.pdf ) ; è stato da me opportunamente parametrizzato per il mio ambiente e leggermente modificato per:

- rimuovere qualche problemino riguardo la pulizia di un registro 

- inserire la "callback" per poter settare ulteriori filtri di ricezione

Le routine così modificate sono un po' meno indipendenti ma più adatte ai miei scopi.

Il protocollo J1939 non è stato utilizzato in tutte le sue possibilità - per esempio, per questioni di semplicità progettuale e realizzativa non ho usato la possibilità di attribuzione dinamica degli indirizzi fisici perchè avrebbe reso molto più complesso il software - se mai ci penserò per la release 2.

Sorgenti "C"

J1939.C  sorgenti C per pic18

J1939.H  header C per pic18

J1939.DEF impostazioni standard per l'uso domotico

HOME.DEF definizioni indirizzi fisici dei dispositivi e dei formati dei messaggi  (pduformat = tipo messaggio)

In particolare il file HOME.DEF va personalizzato con i propri indirizzi fisici dei dispositivi associati al nome logico che verrà utilizzato nel software dei vari dispositivi.

#define     [indirizzo logico]   [indirizzo fisico]

La stessa tecnica si usa per definire tutti i vari tipi di messaggio che viaggiano su rete associandoli ciascuno al proprio nome logico.

#define    [nome logico messaggio]   [codice messaggio]