Microcontrollers
Η ανάγκη για ταχύτητα στον προγραμματισμό Arduino
Εξερευνήστε τις δυνατότητες για ταχύτερο προγραμματισμό στο Arduino, ανακαλύπτοντας τη δύναμη των hardware peripherals.
Η πρόκληση της ταχύτητας στον κόσμο του Arduino
Η κοινότητα των προγραμματιστών Arduino είναι εξοικειωμένη με την αργή απόδοση της εντολής DigitalWrite. Αυτή η λειτουργία είναι γνωστή για την αργή της εκτέλεση, κάτι που έχει επισημανθεί ήδη από το 2010 σε άρθρα όπως εκείνο του Hackaday. Η εντολή αυτή είναι περίπου πενήντα φορές πιο αργή από την άμεση εναλλαγή των pins μέσω των εγγενών καταχωρητών. Παρόλα αυτά, αυτή η πληροφορία φαίνεται να επανέρχεται στη συζήτηση ανά γενιές. Γιατί λοιπόν εξακολουθεί να ανακαλύπτεται εκ νέου;
Όταν η ταχύτητα δεν είναι προτεραιότητα
Σε πολλές περιπτώσεις, η ταχύτητα δεν είναι η κύρια ανησυχία. Όταν απλώς αναβοσβήνουμε LEDs σε ανθρώπινη κλίμακα χρόνου, οι γενικές λειτουργίες του Arduino επαρκούν. Έχω γράψει πολλά χρήσιμα firmware που βασίζονται σε αυτήν την περιγραφή. Όταν οι απαιτήσεις χρονισμού δεν είναι αυστηρές, η αργή εκτέλεση μπορεί να είναι αρκετά γρήγορη.
Η ανάγκη για πιο γρήγορες λύσεις
Ωστόσο, θα έρθει η στιγμή που θα χρειαστείτε μια πιο γρήγορη προσέγγιση. Ένα μεγάλο matrix LED ή μια εφαρμογή ελέγχου κινητήρα μπορεί να απαιτεί ταχύτερη εναλλαγή των pins. Ή ίσως μια εφαρμογή που απαιτεί υψηλότερο ρυθμό μετάδοσης δεδομένων, όπως ήχος ή βίντεο. Μια λύση είναι ο έξυπνος προγραμματισμός, ίσως με χρήση assembly language, αλλά η καλύτερη προσέγγιση είναι η αξιοποίηση των hardware peripherals που παρέχουν οι κατασκευαστές των chip.
Η δύναμη των hardware peripherals
Στο παράδειγμα του βίντεο που αναφέρεται, ο προγραμματιστής θέλει να οδηγήσει μια μεγάλη αλυσίδα shift register για την ενεργοποίηση ενός matrix LED. Αυτή είναι ακριβώς η χρήση του SPI. Η συνειδητοποίηση αυτής της δυνατότητας επιτρέπει την ολοκλήρωση του project με άνεση χρόνου και με λίγες μόνο γραμμές κώδικα. Αυτή είναι η σωστή προσέγγιση.
Η διπλή όψη της αφαίρεσης στο Arduino
Η αφαίρεση που προσφέρει το Arduino είναι σαν δίκοπο μαχαίρι. Από τη μια, καθιστά τον κώδικα πιο φορητό και προσβάσιμο στους αρχάριους, που δεν είναι έτοιμοι να μάθουν για SPI, I2C, I2S και DMA. Από την άλλη, κρύβει τις δυνατότητες των hardware peripherals, τις οποίες οι μηχανικοί σχεδιασμού chip έχουν δημιουργήσει με κόπο για να εξυπηρετήσουν ακριβώς τις ανάγκες μας.
Η αξία της ανακάλυψης κάτω από την επιφάνεια
Αυτό δεν είναι μια επίθεση κατά του Arduino. Όλοι πρέπει να ξεκινήσουν από κάπου, και οι αφαιρέσεις είναι εξαιρετικές για να βρέξεις τα πόδια σου. Επειδή όλα είναι ανοικτού κώδικα, τίποτα δεν σε εμποδίζει να εμβαθύνεις στα datasheets. Απλώς πρέπει να γνωρίζεις ότι χρειάζεται να το κάνεις. Για αυτό δημιουργούμε βίντεο σαν αυτό κάθε πέντε χρόνια, για να δείξουμε στους νέους προγραμματιστές ότι υπάρχει πολύτιμη γνώση κάτω από τις αφαιρέσεις.