Gestire un I/O expander connesso al bus di estensione

Attenzione !I messaggi sul forum potrebbero essere modificati dal nostro staff. La data e l'ora dei messaggi potrebbe non essere quella di invio ma quella di moderazione da parte dello staff. Grazie per l'attenzione.

Home Forum Controllori SlimLine e Netsyst (LogicLab) Gestire un I/O expander connesso al bus di estensione

Questo argomento contiene 1 risposta, ha 1 partecipante, ed è stato aggiornato da  Sergio Bertana 4 anni, 10 mesi fa.

Stai vedendo 2 articoli - dal 1 a 2 (di 2 totali)
  • Autore
    Articoli
  • #35475

    Sergio Bertana
    Amministratore del forum

    Tramite il bus di estensione I2C dei moduli CPU SlimLine è possibile gestire qualsiasi componente dotato di interfaccia I2C. La funzione SysI2CWrRd permette di leggere e scrivere dati verso i dispositivi connessi al bus (Topic), non è possibile gestire indirizzi I2C compresi tra 16#20 e 16#2F che corrisponde al range di allocazione dei nostri moduli di espansione.

    Il modo più semplice per spiegare come interfacciare componenti I2C sul bus è quello di connettere un semplice I/O expander (Esempio PCA9670 o PCF8574). Nel manuale hardware del nostro modulo CPU OEM si può trovare uno schema di collegamento con un PCA9670, si è scelto questo tipo di I/O expander perché ha l’ingresso di reset che può essere connesso al segnale RDYO-N del nostro bus di espansione (Il segnale è FALSE quando il sistema è in run). In questo modo si è in accordo con la normativa IEC che prevede il reset di tutte le uscite se il sistema è in stop.

    #37954

    Sergio Bertana
    Amministratore del forum

    Ecco un semplice programma per gestire un PCF8574 (Datasheet) connesso al bus di estensione cosi come si può vedere dalla foto. Gli 8 segnali di I/O dell’I/O expander, 4 (Da P0 a P3) sono stati utilizzati come uscite logiche per gestire 4 LED e 4 (Da P4 a P7) sono stati utilizzati come ingressi logici per acquisire dei tasti.

    Il programma è un semplice FBD (Vedi screeenshot), la funzione SysI2CWrRd gestisce la scrittura e lettura di un byte di dati dall’/IO expander. Per poter utilizzare i pins come inputs occorre settarli a TRUE, ecco quindi che nella creazione del byte WData oltre al comando dei 4 LEDs sono stati settati a TRUE i bit da 4 a 7. In questo modo il byte letto RData contiene nei bits da 4 a 7 lo stato dei 4 tasti. Allego il programma sorgente.

Stai vedendo 2 articoli - dal 1 a 2 (di 2 totali)

Devi essere loggato per rispondere a questa discussione.