0
Θέλω να συνδέσω 5 chips PCF8574T σε έναν δίαυλο I2C. Ένα για οθόνη LCD 2x16 και 4 για εισόδους/εξόδους γενικού σκοπού.
Το πρόβλημά μου είναι ότι έχω 1 διαθέσιμη γραμμή interrupt για τον μικροελεγκτή (ATMEGA32L).
Οπότε σκέφτηκα κάποιο τρόπο ώστε να μπορώ να ξέρω ποιό chip δημιούργησε το interrupt όταν αυτό έρθει.
bo9P2.png
Σκέφτηκα αυτό το κύκλωμα. που θα μπεί επί τέσσερις φορές για κάθε ολοκληρωμένο PCF.
Αριστερά το "PCF INT OpenDrain" θα συνδεθεί το INT pin του PCF (Η έξοδος του πιν είναι Open drain, σύμφωνα με το datasheet).
Στο "PINx mcu" θα συνδεθεί ένα τυχαίο pin από κάποια θύρα του μικροελεγκτή, την οποία θα κοιτάμε όταν έρθει το interrupt.
και το "mcu interrupt pin" θα συνδεθεί στο ποδαράκι interrupt του μικροελεγκτή όπως το INT0, INT1 κτλ που στην ουσία θα κάνει το interrupt.
Τα σήματα "mcu interrupt pin" θα συνδεθούν μεταξύ τους εφόσον και τα 4 θα ελέγχουν την γραμμή εξωτερικού interrupt του atmega32l
Όταν λοιπόν έρθει το interrupt θα από οποιοδήποτε chip, ανάλογα με την τιμή που θα δημιουργηθεί σε κάποια θύρα (που θα επιλέξουμε εμείς να συνδέσουμε τα "PINx mcu") θα διαβαστεί και το αντίστοιχο ολοκληρωμένο.
Αυτό το κάνω για να μην διαβάζω συνεχώς ένα ένα τα ολοκληρωμένα και καταναλώνεται χρόνος μέχρι να βρεθεί το ολοκληρωμένο που προκάλεσε το interrupt.
Η ερώτηση είναι, αν το κύκλωμα είναι σωστό για κάτι τέτοιο.