Πίνακας περιεχομένων:

Επαναχρησιμοποίηση καρφιτσών διασύνδεσης ATtiny84/85 SPI: 6 βήματα
Επαναχρησιμοποίηση καρφιτσών διασύνδεσης ATtiny84/85 SPI: 6 βήματα

Βίντεο: Επαναχρησιμοποίηση καρφιτσών διασύνδεσης ATtiny84/85 SPI: 6 βήματα

Βίντεο: Επαναχρησιμοποίηση καρφιτσών διασύνδεσης ATtiny84/85 SPI: 6 βήματα
Βίντεο: Diy Μαγιάτικο στεφάνι 2024, Ιούλιος
Anonim
Επαναχρησιμοποίηση καρφιτσών διασύνδεσης ATtiny84/85 SPI
Επαναχρησιμοποίηση καρφιτσών διασύνδεσης ATtiny84/85 SPI

Αυτό το εκπαιδευτικό πρόγραμμα αποτελεί συνέχεια του οδηγού "ATtiny84/85 In-circuit Debugging with Serial Output" και επεκτείνει αυτήν τη διαμόρφωση υλικού και λογισμικού για την αντιμετώπιση του ζητήματος της επαναχρησιμοποίησης των ακίδων λήψης προγραμματισμού από το πρόγραμμα εφαρμογής. Συνολικά, μεταξύ αυτού και του διδακτέου μέρους 1, συζητούνται/επιδεικνύονται τα ακόλουθα θέματα:

Θέμα ATtiny84 ATtiny85
Σειριακή επικοινωνία χρησιμοποιώντας την κλάση SoftwareSerial Χ Χ
Κοινή χρήση καρφιτσών συσκευής μεταξύ εφαρμογής και λήψης Χ Χ
Διακοπή αλλαγής καρφιτσών Χ
Εξωτερική διακοπή Χ
Sπνος σε λειτουργία POWER_DOWN. ξυπνήστε στη διακοπή Χ
Εργασία για το σφάλμα διανύσματος διακοπής "πολλαπλά καθορισμένα" που σχετίζεται με το SoftwareSerial Χ
Τροποποίηση, λήψη, εντοπισμός σφαλμάτων,… κύκλος ανάπτυξης εντός του κυκλώματος για τις συσκευές ATtiny Χ Χ

Η προσθήκη ενός στοιχείου εισόδου/εξόδου υλικού σε μία από τις ακίδες που είναι αφιερωμένες στη διεπαφή προγραμματισμού SPI είναι μερικές φορές εντάξει, μερικές φορές όχι. Για παράδειγμα, η προσθήκη ενός LED στο MISO προκαλεί το τρεμόπαιγμα του LED κατά τη λήψη και στη συνέχεια είναι διαθέσιμο για την εφαρμογή. Ωστόσο, η προσθήκη ενός πιεζοηχητικού βομβητή στο MISO θα οδηγήσει σε έναν φρικτό ήχο που θα ακολουθήσει και αποτυχία λήψης.

Αυτό το οδηγό εξηγεί πώς να χρησιμοποιήσετε έναν πολυπλέκτη 4x2: 1 για να "ανακτήσετε" τη χρήση των ακίδων που έχουν εκχωρηθεί στα σήματα διασύνδεσης SPI MISO, MOSI και SCK προστατεύοντάς τα κατά τη λήψη. Η επαναχρησιμοποίηση του πείρου RESET απαιτεί αλλαγή ασφάλειας και δεν καλύπτεται από αυτήν την προσέγγιση. Η διπλή αντιστοίχιση των ακίδων επιτυγχάνεται με τη χρήση του πολυπλέκτη για εναλλαγή μεταξύ των εισόδων εφαρμογής και προγραμματισμού ανάλογα με το αν η λήψη βρίσκεται σε εξέλιξη. Ο κωδικός και τα σχήματα περιλαμβάνονται τόσο για το ATtiny84 όσο και για το ATtiny85. Η διαμόρφωση ATiny84 αντιμετωπίζεται πρώτα αφού έχει δύο θύρες εισόδου/εξόδου και μπορεί να χρησιμοποιηθεί για την απεικόνιση ορισμένων πρόσθετων προβλημάτων/λύσεων. Μετά τη συζήτηση tiny84, τα ίδια σενάρια συζητούνται για το ATtiny85.

Βήμα 1: Απαιτούμενο υλικό

Εικόνα
Εικόνα

Το μεγαλύτερο μέρος του απαιτούμενου υλικού απαριθμήθηκε στο μέρος 1 που διδάσκεται, οπότε μόνο το νέο υλικό παρατίθεται παρακάτω.

Ονομα Πιθανή Πηγή Πώς χρησιμοποιείται
Πολυπλέκτης 4x2: 1 Γάτα Περιέχει τέσσερις διακόπτες 2 εισόδων · 1 εξόδου που είναι ο μηχανισμός με τον οποίο μοιράζονται τα σήματα διασύνδεσης SPI και τις εισόδους/εξόδους εφαρμογής.
Διακόπτης SPST Οποιοσδήποτε τύπος διακόπτη (στιγμιαίο ή κλειδωμένο) θα λειτουργήσει. Ο διακόπτης χρησιμοποιείται για να απεικονίσει την κοινή χρήση καρφιτσών για μια είσοδο εφαρμογής.
Αντίσταση 10Κ Τραβήξτε αντίσταση για το διακόπτη SPST για να αποφύγετε μια πλωτή είσοδο
Εικόνα
Εικόνα
Εικόνα
Εικόνα

Ο πολυπλέκτης είναι το κλειδί για την απομόνωση της χρήσης λήψης pin από τη χρήση εφαρμογών. Η συνολική λειτουργικότητα του πολυπλέκτη 4x2: 1 είναι αρκετά απλή και αποτελείται από 2 σήματα ελέγχου και 4 πανομοιότυπα λειτουργούντες διακόπτες. Η συμπεριφορά κάθε ακίδας πολυπλέκτη συζητείται παρακάτω:

Καρφίτσα Ονομα Λειτουργία
15 σολ Όπως υποδεικνύεται στον πίνακα αλήθειας, ο πολυπλέκτης λειτουργεί μόνο όταν ο πείρος ενεργοποίησης G είναι χαμηλός. Δεδομένου ότι δεν θέλουμε ποτέ να απενεργοποιήσουμε εντελώς τον πολυπλέκτη, ο ακροδέκτης 15 θα συνδεθεί απευθείας στη γείωση.
2-4; 5-7; 9-11;12-14 A (είσοδος), B (είσοδος), Y (έξοδος) Υπάρχουν τέσσερις 2 εισόδους. Διακόπτες 1 εξόδου με κάθε ομάδα 3 ακίδων να αριθμούνται διαδοχικά με τη σειρά Α (είσοδος), Β (είσοδος), Υ (έξοδος) π.χ. για το διακόπτη 1? καρφίτσα 2 = 1Α; καρφίτσα 3 = 1Β. καρφίτσα 4 = 1Y.
1 Επιλέγω Όταν η επιλογή είναι χαμηλή, η είσοδος διακόπτη A είναι συνδεδεμένη με τον αντίστοιχο ακροδέκτη εξόδου διακόπτη, Y. Όταν η επιλογή είναι υψηλή, η είσοδος διακόπτη B συνδέεται στην έξοδο. Οι διακόπτες ελέγχονται ταυτόχρονα από το σήμα Select και λειτουργούν πανομοιότυπα.
8 GND γείωση IC πολυπλέκτη
16 VCC τροφοδοσία IC πολυπλέκτη

Βήμα 2: Επισκόπηση των περιπτώσεων δοκιμής

Εικόνα
Εικόνα
Εικόνα
Εικόνα

Τα δύο σενάρια για επαναχρησιμοποίηση καρφιτσών βασίζονται στο αν η καρφίτσα είναι είσοδος ή έξοδος εφαρμογής. Η διαδικασία χειρισμού οποιασδήποτε εισόδου είναι πάντα η ίδια. επίσης η διαδικασία για τις εξόδους εφαρμογής είναι πανομοιότυπη ανεξάρτητα από το στοιχείο υλικού. Ακόμα κι έτσι, η εξήγηση είναι ευκολότερη και ελπίζω σαφέστερη, εάν δοθούν συγκεκριμένα παραδείγματα. Οι μινιμαλιστικές διατάξεις για τις δύο περιπτώσεις φαίνονται παραπάνω. Για τις λεπτομερείς ρυθμίσεις αργότερα, οι συνδέσεις θα γίνουν μια φωλιά σκίουρων, οπότε θα ήταν χρήσιμο να ανατρέξετε σε αυτά τα καθαρότερα διαγράμματα.

Το RESET είναι η τέλεια επιλογή για το σήμα επιλογής πολυπλέκτη αφού είναι χαμηλό κατά τη λήψη, αλλά επιστρέφει υψηλό όταν ολοκληρωθεί η λήψη. Σημειώστε ότι οποιοσδήποτε από τους διακόπτες πολυπλέκτη θα μπορούσε να χρησιμοποιηθεί για κάθε περίπτωση, καθώς όλοι οι διακόπτες συμπεριφέρονται πανομοιότυπα. Επίσης, κανένα από τα παραδείγματα δεν είναι "ρεαλιστικό". επιλέχθηκαν ως ο πιο απλός τρόπος για να απεικονίσουν τις τεχνικές απομόνωσης

  1. Θήκη εξόδου: Η έξοδος LED από τον ακροδέκτη ATtiny84 4 (SCK) απομονώνεται χρησιμοποιώντας τον διακόπτη πολυπλέκτη 2

    • συνδέστε τον πείρο πολυπλέκτη 2Α στη γείωση
    • συνδέστε τον πείρο πολυπλέκτη 2Β στον πείρο ATtiny85 4
    • συνδέστε την έξοδο 2Y στην άνοδο LED

      • Αναμενόμενα αποτελέσματα:

        • Η λυχνία LED είναι σβηστή κατά τη διάρκεια της λήψης, αφού συνδεθεί με τη γείωση 2Α
        • Η λυχνία LED προσαρτάται στην ακίδα εξόδου εφαρμογής 4 μετά τη λήψη μέσω 2Β και αρχίζει να αναβοσβήνει
  2. Θήκη εισόδου: Η είσοδος του διακόπτη SPST στον ακροδέκτη ATtiny84 6 (MOSI) απομονώνεται χρησιμοποιώντας τον διακόπτη πολυπλέκτη 3

    • Το καλώδιο MOSI από την κεφαλίδα του προγραμματιστή AVR μετακινείται σε 3Α
    • η είσοδος διακόπτη 3Β είναι συνδεδεμένη στην έξοδο SPST
    • η έξοδος 3Y είναι συνδεδεμένη με το pin 6 ATINy84

      • Το 3A, MOSI, είναι συνδεδεμένο στο pin 6 κατά τη λήψη
      • 3B, έξοδος SPST, συνδέεται με το pin 6 μετά τη λήψη

Η περίπτωση 1 είναι επιτυχής εάν η λυχνία LED δεν αναβοσβήνει κατά τη λήψη του προγράμματος και στη συνέχεια αναβοσβήνει κάθε δύο δευτερόλεπτα μετά τη λήψη, όπως αναμένεται υπό τον έλεγχο του προγράμματος. Χωρίς απομόνωση, η λυχνία LED θα τρεμοπαίζει κατά τη λήψη, καθώς συνδέεται απευθείας με το σήμα SCK, το οποίο αλλάζει την κατάσταση λήψης/μετάδοσης δεδομένων ρολογιού.

Η περίπτωση 2 είναι επιτυχής εάν το σήμα MOSI προωθηθεί στο ATtiny84 κατά τη διάρκεια της λήψης, δηλαδή η λήψη δεν αποτύχει και η λυχνία LED ανταποκρίνεται στην ενεργοποίηση/απενεργοποίηση SPST μετά τη λήψη. Η περίπτωση 2 αποτρέπει μια απίθανη αποτυχία λήψης. Χωρίς απομόνωση, ο διακόπτης SPST θα προκαλέσει βλάβη εάν 1) χρησιμοποιηθεί κλειδωμένος διακόπτης και 2) ο διακόπτης παραμείνει στη θέση ενεργοποίησης κατά τη λήψη. Όταν απομονώνεται από τον πολυπλέκτη, ο διακόπτης δεν μπορεί να προκαλέσει αποτυχία λήψης σε καμία περίπτωση. Λίγο τεντωμένο αλλά παρήγορο για εμάς τους παλιούς.

Μια συνέπεια της χρήσης του πολυπλέκτη είναι ότι το στοιχείο υλικού δεν μπορεί πλέον να συνδεθεί απευθείας στον ακροδέκτη εισόδου/εξόδου του μικροελεγκτή. Αυτό είναι κάπως ενοχλητικό, αλλά επιτρέπει στο στοιχείο να παραμείνει στο breadboard κατά τη διάρκεια της δοκιμής μαζί με το άλλο υλικό εφαρμογής και μπορεί να μετακινηθεί πίσω στη νόμιμη θέση του όταν ολοκληρωθεί η δοκιμή.

Βήμα 3: ATtiny84 Περίπτωση 1 - Απομόνωση εξόδου εφαρμογής

Εικόνα
Εικόνα

Αυτό το βήμα περιγράφει τη ρύθμιση για κοινή χρήση μιας ακίδας εξόδου εφαρμογής με ένα σήμα λήψης. Το παράδειγμα που χρησιμοποιείται είναι το LED που είναι προσαρτημένο στον πείρο 4 (SCK). Η χρήση του υπάρχοντος LED ως παράδειγμα επιτρέπει την έμφαση στην προσθήκη του πολυπλέκτη στο περιβάλλον υλικού και λογισμικού του μέρους 1.

  • Σκεύη, εξαρτήματα

    • Προσθέστε τον πολυπλέκτη στον πίνακα ψωμιού στη σχετική θέση που φαίνεται στο παραπάνω διάγραμμα. Ο πολυπλέκτης είναι τοποθετημένος προς το κέντρο για να επιτρέψει χώρο για τον διακόπτη SPST που απαιτείται στην περίπτωση 2.
    • Επεκτείνετε το σήμα RESET στον πολυπλέκτη προσθέτοντας ένα καλώδιο μολύβδου (προτείνετε κίτρινο) από τον πείρο ATtiny84 11 στον πείρο πολυπλέκτη 1.
    • Η υπόλοιπη ρύθμιση υλικού είναι όπως δίνεται στο Βήμα 2

      • συνδέστε τον πείρο πολυπλέκτη 2Α απευθείας στη γείωση
      • συνδέστε τον πείρο 2Β με τον ακροδέκτη 4 ATINy84
      • συνδέστε την έξοδο 2Y στην άνοδο LED

        • Αναμενόμενα αποτελέσματα:

          • κατά τη λήψη 2Y είναι συνδεδεμένο στη γείωση (2Α), ώστε το LED να παραμένει σβηστό
          • Μετά τη λήψη, το 2Y συνδέεται με το ATtiny84 pin 4 - εφαρμογή ελέγχου LED
  • Λογισμικό

    • Ο κωδικός του μέρους 1 επαναχρησιμοποιείται. διατίθεται από το μέρος 1 διδακτικό και όχι διπλότυπο εδώ
    • Φορτώστε και μεταγλωττίστε το πρόγραμμα του μέρους 1 στο Arduino IDE
    • Συνδέστε τον προγραμματιστή Tiny AVR σε μια θύρα USB υπολογιστή
    • Συνδέστε το καλώδιο USB σε σειριακό Adafruit σε μια δεύτερη θύρα USB

      • Δημιουργείται μια θύρα COM και διατίθεται αυτόματα στη λίστα θυρών IDE
      • Εκκινήστε το παράθυρο COM
    • Κατεβάστε τον μεταγλωττισμένο κώδικα στο ATtiny84

Τα αποτελέσματα του προγράμματος εφαρμογής είναι τα ίδια με το μέρος 1, αφού η μόνη αλλαγή ήταν η μετακίνηση της λυχνίας LED σε "προστατευμένη" θέση: Η λυχνία LED αναβοσβήνει σε διαστήματα 2 δευτερολέπτων. η σειριακή έξοδος είναι η ίδια. Η μόνη διαφορά που πρέπει να συμβεί είναι ότι το LED δεν αναβοσβήνει πλέον κατά τη λήψη, καθώς, κατά τη διάρκεια αυτής της περιόδου, συνδέεται με τη γείωση μέσω του πείρου πολλαπλών επιλογών 2Α.

Εικόνα
Εικόνα

Βήμα 4: ATtiny84 Περίπτωση 2 - Απομόνωση Εισαγωγής Εφαρμογής

Εικόνα
Εικόνα

Αυτό το βήμα βασίζεται στη ρύθμιση για την προηγούμενη θήκη απομόνωσης εξόδου. Οι αλλαγές υλικού συνίστανται στην προσάρτηση ενός διακόπτη SPST στο ATtiny84 pin 6 (MOSI) μέσω του πολυπλέκτη. Επομένως, οι αλλαγές υλικού είναι ελάχιστες, αλλά υπάρχουν αρκετές αλλαγές λογισμικού που επιτρέπουν στον διακόπτη SPST να ελέγχει το LED χρησιμοποιώντας μια διακοπή αλλαγής καρφίτσας. Ο ενημερωμένος κώδικας περιλαμβάνεται στο κάτω μέρος αυτής της ενότητας. Ο κωδικός πρέπει να αντιγραφεί στο Arduino IDE. προτείνετε να το αποθηκεύσετε με το όνομα Multiplexer_Input. (Ζητώ συγγνώμη για τη μεγάλη έκταση αυτού του τμήματος, αλλά είναι η καρδιά του διδακτικού σκοπού και πιστεύω ότι διαβάζεται καλύτερα ως μονόπετρο και όχι ως τεχνητό διάλειμμα.)

Εκσυγχρονίζω Τοποθεσία Σκοπός
περιλαμβάνουν "χακαρισμένη" τάξη SoftwareSerial περιλαμβάνει τμήμα Το LED ελέγχεται τώρα από τον διακόπτη SPST μέσω διακοπής αλλαγής πείρου. Η κλάση SoftwareSerial πρέπει να τροποποιηθεί, διότι διαφορετικά εκχωρεί ΟΛΑ τα διανύσματα διακοπών αλλαγής καρφίτσας. Αυτό προκαλεί σφάλμα σύνδεσης "πολλαπλής ευκρίνειας" για το διάνυσμα (θύρα 0) που έχει εκχωρηθεί στον διακόπτη SPST. Η παραβιασμένη έκδοση SoftwareSerial πρέπει να τοποθετηθεί στον ίδιο κατάλογο με το πρόγραμμα, έτσι ώστε να επηρεάζει μόνο αυτήν την εφαρμογή.
Ορισμός ακίδων εισόδου SPST περιλαμβάνει/ενότητα ορισμού εκχώρηση εισόδου SPST σε ακίδα συσκευής. Η καρφίτσα είναι συγκεκριμένη για τη συσκευή, επομένως προστίθεται στις ενότητες #ifdef ATtiny8x.
Λειτουργία πείρου εισόδου SPST λειτουργία ρύθμισης Ο πείρος SPST έχει διαμορφωθεί ως ΕΙΣΟΔΟΣ
Διαμόρφωση διακοπής καρφιτσών SPST λειτουργία ρύθμισης Το διάνυσμα διακοπής εκχωρείται στον πείρο εισόδου SPST έτσι ώστε μια αλλαγή κατάστασης διακόπτη να προκαλεί διακοπή. Οι καταχωρητές διαμόρφωσης και ο τύπος διακοπής είναι συγκεκριμένοι για τη συσκευή. Για να γίνει ο κώδικας όσο το δυνατόν πιο απλός, οι διαφορές αντιμετωπίζονται μέσα σε ένα #if καθορισμένο τμήμα
Ρύθμιση πλήρους σειριακού μηνύματος λειτουργία ρύθμισης Το μήνυμα ρύθμισης πλήρους σειριακής εξόδου αλλάζει για να αντικατοπτρίζει την εφαρμογή εισόδου πολυπλέκτη
Προσθέστε τη λειτουργία ISR διακόπτη SPST κωδικό τμήμα Προστίθεται το ISR για τη διακοπή αλλαγής καρφίτσας SPST. Ο κώδικας είναι κοινός αλλά το διάνυσμα που χρησιμοποιείται είναι συγκεκριμένο για τη συσκευή και ορίζεται στις εξαρτήσεις που εξαρτώνται από τη συσκευή στο επάνω μέρος του προγράμματος. Για να επαληθεύσετε ότι το ISR είναι ενεργοποιημένο, αλλάζει η κατάσταση LED. Αν και ένα όχι-όχι σε μια πραγματική εφαρμογή, δημιουργείται ένα σειριακό μήνυμα εξόδου που αντικατοπτρίζει τη νέα κατάσταση LED.
Τροποποίηση επεξεργασίας βρόχου συνάρτηση βρόχου Το ISR ελέγχει τώρα την ενεργοποίηση και απενεργοποίηση της λυχνίας LED έτσι ώστε η λειτουργικότητα να αφαιρεθεί από τη ρουτίνα βρόχου. Μια κλήση στη ρουτίνα ύπνου προστίθεται για το ATtiny84 ως ένα είδος "επιπλέον". Για αυτήν την εφαρμογή, ο ύπνος ATtiny85 δεν λειτουργεί. ίσως οφείλεται στην παρεμβολή της κλάσης σειριακού λογισμικού, επειδή λειτουργεί με το SoftwareSerial που έχει αφαιρεθεί.
Προσθέστε ρουτίνα ύπνου κωδικό τμήμα Η λειτουργία ύπνου δεν είναι απαραίτητη για να αποδειχθεί η χρήση του πολυπλέκτη. Προστέθηκε μόνο επειδή συνήθως θα ήθελε να περιμένει μια είσοδο στη λειτουργία POWER_DOWN για εξοικονόμηση ενέργειας αντί να συνεχίσει να εκτελείται μέσω του βρόχου προγράμματος χωρίς να κάνει τίποτα μέχρι να συμβεί μια είσοδος.

Τροποποιήστε τον κωδικό κλάσης SoftwareSerial

Η κλάση SoftwareSerial πρέπει να αλλάξει έτσι ώστε να μην προσαρμόζει όλες τις θύρες διακοπής αλλαγής καρφίτσας. Ο κωδικός κλάσης SoftwareSerial βρίσκεται στη διεύθυνση

C: / Program Files (x86) Arduino / hardware / arduino / avr / βιβλιοθήκες / SoftwareSerial / src

Βρείτε στο PCINT0_vect στο SoftwareSerial.cpp για να βρείτε την τοποθεσία έναρξης για τις αλλαγές κώδικα. Προσθέστε τον ακόλουθο κώδικα αμέσως πριν από την υπάρχουσα εντολή #if defined (PCINT0_vect).

#if καθορισμένα (_ AVR_ATtiny84_)

#define MYPORT PCINT1_vect #elif defined (_ AVR_ATtiny85_) #define MYPORT PCINT0_vect #endif ISR (MYPORT) {SoftwareSerial:: handle_interrupt (); }

Τώρα σχολιάστε το υπάρχον μπλοκ κώδικα που κατανέμει τα διανύσματα διακοπής θύρας όπως υποδεικνύεται παρακάτω (απλά προσθέστε τα σύμβολα σχολίων μπλοκ έναρξης και λήξης / * και * /):

/*

#if defined (PCINT0_vect) ISR (PCINT0_vect) {SoftwareSerial:: handle_interrupt (); } #endif #if defined (PCINT1_vect) ISR (PCINT1_vect) {// SoftwareSerial:: handle_interrupt (); ISR (PCINT1_vect, ISR_ALIASOF (PCINT0_vect)); } #endif #if καθορισμένο (PCINT2_vect) ISR (PCINT2_vect, ISR_ALIASOF (PCINT0_vect)); #endif #if καθορισμένο (PCINT3_vect) ISR (PCINT3_vect, ISR_ALIASOF (PCINT0_vect)); #τέλος εαν */

Διαμορφώστε το υλικό

Ο διακόπτης SPST είναι προσαρτημένος στο ATtiny84 pin 6 (MOSI) όπως περιγράφεται στο βήμα 2. Η διαδικασία αναπαράγεται εδώ για ευκολία.

  • συνδέστε την είσοδο του διακόπτη 3A στο καλώδιο επικεφαλίδας MOSI του Tiny AVR Programmer
  • συνδέστε το 3B στον πείρο εξόδου ON του διακόπτη SPST
  • συνδέστε το 3Y στο ATtiny84 pin 6

    • ΑΠΟΤΕΛΕΣΜΑΤΑ:

      • 3A, MOSI, θα συνδεθεί με το ATtiny84 pin 6 κατά τη λήψη
      • 3B, έξοδος SPST, θα είναι προσαρμοσμένη στο pin 6 μετά τη λήψη

Εκτελέστε το πρόγραμμα

Πριν ξεκινήσετε, τοποθετήστε το διακόπτη SPST στη θέση απενεργοποίησης. Διαφορετικά, η λυχνία LED θα ανάψει όταν ο διακόπτης είναι απενεργοποιημένος και αντίστροφα. Ακολουθήστε τη διαδικασία για το βήμα 3 για να φορτώσετε, να μεταγλωττίσετε και να κατεβάσετε το πρόγραμμα εισαγωγής εφαρμογής χρησιμοποιώντας το Arduino IDE. Όπως και πριν, το LED δεν πρέπει να τρεμοπαίζει κατά τη λήψη, οπότε η μόνη ένδειξη ότι το πρόγραμμα είναι σε λειτουργία θα είναι το σειριακό μήνυμα στο τέλος της ρουτίνας ρύθμισης: SETUP Complete - Παράδειγμα εισαγωγής

Σε αυτό το σημείο το πρόγραμμα περιμένει μια είσοδο από το διακόπτη SPST. Η τοποθέτηση του διακόπτη στη θέση ON θα προκαλέσει την ενεργοποίηση της λυχνίας LED. αλλάζοντας πίσω στη θέση απενεργοποίησης σβήνει το LED. Τα μηνύματα εξόδου επαληθεύουν ότι το ISR κλήθηκε (ISR: Led HIGH, ISR: Led LOW). Σημειώστε ότι η σειρά των σειριακών μηνυμάτων είναι GO TO SLEEP, περιμένοντας πρώτα την αλλαγή κατάστασης διακόπτη. όταν λαμβάνετε μια είσοδο διακόπτη, καλείται το ISR, αλλάζει τη λυχνία LED και τεκμηριώνει την αλλαγή. τότε η επεξεργασία ξεκινά μετά την κλήση ύπνου, αφού η διακοπή ξυπνά τον επεξεργαστή.

Εικόνα
Εικόνα

ΠΡΟΓΡΑΜΜΑ ΓΙΑ ΑΥΤΟ ΤΟ ΟΔΗΓΙΟ:

//************************************************************************

// ΜΕΡΟΣ 2: Εφαρμογή/λήψη κοινής χρήσης καρφιτσών συσκευής //. Τροποποιεί τον κώδικα του Μέρους 1 για να υποστηρίξει την επαναχρησιμοποίηση εφαρμογών των ακίδων // που έχουν εκχωρηθεί στη διεπαφή προγραμματισμού SPI //. Κωδικός "Comon" για ATtiny85 και ATtiny84 // ************************************* ******************************* #include "SoftwareSerial.h" // Τροποποιημένο Arduino SoftwareSerial class #include // while ο κωδικός επεξεργασίας είναι κοινός, οι καρφίτσες που χρησιμοποιούνται είναι συγκεκριμένες για τη συσκευή #εάν οριστεί (_ AVR_ATtiny84_) || καθορισμένο (_ AVR_ATtiny84A_) #define ledPin 4 // Ενεργοποιημένο για ενεργοποίηση/απενεργοποίηση #καθορισμός rxPin 9 // Pin που χρησιμοποιείται για σειριακή λήψη #define txPin 10 // Pin που χρησιμοποιείται για σειριακή μετάδοση #define SpstPin 6 // Είσοδος από διακόπτη SPST (MOSI) #define ISR_VECT PCINT0_vect // SPST switch Διανύσματος διακοπής αλλαγής καρφιτσών #elif defined (_ AVR_ATtiny85_) #define ledPin 1 #define rxPin 4 #define txPin 3 #define SpstPin 2 // Είσοδος από διακόπτη SPST (INT0_ctTine) // Διακόπτης SPST διακόπτης Διακοπή αλλαγής καρφιτσών #else #error Μόνο τα ATiny84 και ATtiny85 υποστηρίζονται από αυτό το έργο #endif // Δημιουργία παρουσίας της σειριακής κλάσης λογισμικού που καθορίζει ποια συσκευή // οι ακίδες θα χρησιμοποιηθούν για τη λήψη και τη μετάδοση του SoftwareSerial mySerial (rxPin, txPin); // ---------------------------------------------------- ------------------------ // Αρχικοποίηση πόρων επεξεργασίας // ------------------- ------------------------------------------------------ --- void setup () {mySerial.begin (9600); // Έναρξη σειριακής καθυστέρησης επεξεργασίας (2000). // Δώστε χρόνο στη θύρα Serial Com για να ολοκληρωθεί η εκκίνηση. // αλλιώς, πιθανότατα η πρώτη έξοδος να λείπει ή να έχει καταστραφεί το pinMode (ledPin, OUTPUT). // Διαμόρφωση πείρου led για OUTPUT pinMode (SpstPin, INPUT); // Διαμορφώστε τον πείρο διακόπτη SPST ως INPUT #εάν οριστεί (_ AVR_ATtiny84_) || (_AVR_ATtiny84A_) // ρύθμιση διακοπής αλλαγής καρφίτσας για χειρισμό εισόδου διακόπτη στην ακίδα 6 (MOSI) GIMSK | = (1 <

Βήμα 5: Περίπτωση ATtiny85 - Απομονωμένη έξοδος εφαρμογής

Εικόνα
Εικόνα

Αντί να δημιουργήσετε μια διπλή ρύθμιση υλικού για το ATtiny85, είναι πιθανότατα ευκολότερο να ξεκινήσετε με την τελική διαμόρφωση για ATtiny84 από το Βήμα 4 και να αντικαταστήσετε το τσιπ tiny84 με το tiny85. Όλο το απαιτούμενο υλικό είναι ήδη διαθέσιμο. Εάν χρησιμοποιείτε αυτήν την προσέγγιση, εντοπίστε το tiny85 έτσι ώστε οι ακίδες 3 και 4 να ευθυγραμμιστούν με το σειριακό καλώδιο tx και να λάβουν καλώδια. Στη συνέχεια, είναι απλώς θέμα μετεγκατάστασης των καλωδίων καλωδίων διεπαφής SPI για να ταιριάζουν με τις απαιτούμενες θέσεις τους για το ATtiny85.

Εάν ξεκινάτε από το μηδέν, απλώς ακολουθήστε τα γενικά βήματα από το βήμα 3 και το παραπάνω διάγραμμα. Ο κώδικας είναι ο ίδιος που χρησιμοποιήθηκε για το ATtiny84 στο Βήμα 3 με τα ίδια αποτελέσματα να αναμένονται - δεν τρεμοπαίζει κατά τη λήψη. κατά την εκτέλεση της λυχνίας LED αναβοσβήνει σε διαστήματα 2 δευτερολέπτων και τα σειριακά μηνύματα εξόδου ακολουθούν την κατάσταση LED.

Εικόνα
Εικόνα

Βήμα 6: Περίπτωση ATtiny85 - Απομόνωση Εισαγωγής Εφαρμογής

Εικόνα
Εικόνα

Για τη ρύθμιση υλικού, ξεκινήστε με τη διαμόρφωση από το Βήμα 5 και προσθέστε τον διακόπτη SPST όπως υποδεικνύεται στο παραπάνω διάγραμμα ψύξης. Στην πραγματικότητα χρησιμοποίησα έναν στιγμιαίο διακόπτη για την έκδοση tiny85 και κάνει την επαλήθευση λίγο πιο εύκολη. Παρατηρήστε ότι η έξοδος του διακόπτη περιστρέφεται 180 μοίρες από τη διαμόρφωση ATtiny84. Αυτή η αλλαγή διευκολύνει τη δρομολόγηση των καλωδίων σύνδεσης, καθώς και τα 3 σήματα SPI βρίσκονται στην ίδια πλευρά για το ATtiny85.

Χρησιμοποιήστε το ίδιο πρόγραμμα όπως για το ATtiny84 Βήμα 4. Αναμένονται τα ίδια γενικά αποτελέσματα - το LED αλλάζει κατάσταση όταν ο διακόπτης SPST είναι ενεργοποιημένος/απενεργοποιημένος και τα σειριακά μηνύματα εξόδου τεκμηριώνουν τις αλλαγές. Τα μηνύματα GO TO SLEEP λείπουν αφού η λειτουργία ύπνου δεν καλείται για το ATtiny85. Παρόλο που χρησιμοποιείται το ίδιο πρόγραμμα, υπάρχουν σημαντικές διαφορές στην υλοποίηση για να ληφθεί υπόψη το γεγονός ότι το ATtiny85 έχει μόνο ένα μητρώο θυρών (Θύρα 0):

  1. Το SoftwareSerial διαθέτει τώρα τη διακοπή αλλαγής καρφίτσας θύρας 0 για σειριακή επικοινωνία (Υπενθυμίζουμε ότι μπορέσαμε να χρησιμοποιήσουμε τη θύρα 1 για το ATtiny84.)
  2. Η διακοπή διακόπτη SPST πρέπει να εφαρμοστεί με εξωτερική διακοπή 0 (INT0), δεδομένου ότι η μία και μοναδική διακοπή αλλαγής καρφίτσας εκχωρείται από το SoftwareSerial. Αυτό απεικονίζει το σημείο ότι οι διακοπές αλλαγής καρφίτσας και οι εξωτερικές διακοπές είναι λογικά ανεξάρτητες και μπορούν να χρησιμοποιηθούν στον ίδιο καταχωρητή θύρας.
  3. Τίποτα δεν κερδίζεται με τη χρήση τροποποιημένης έκδοσης SoftwareSerial - υπάρχει μόνο μία θύρα και η κλάση SoftwareSerial θα την αρπάξει. Ωστόσο, η τροποποιημένη κλάση εξακολουθούσε να χρησιμοποιείται μόνο για να αποφευχθεί μια αλλαγή που δεν σχετίζεται άμεσα με τον στόχο αυτού του βήματος.

Συνιστάται: