Σκεφτείτε έξω από το IDE για να κάνετε μια γρήγορη καταμέτρηση Arduino

[Udo Klein] πήρε τη δυσκολία καταμέτρησης όσο το δυνατόν πιο γρήγορα χρησιμοποιώντας ένα πλακέτα Arduino. Η αναζήτηση περιλαμβάνει μια αναζήτηση για μικρές περικοπές που θα τον αφήσει να οδηγήσει έναν πάγκο 20 bit ως γρήγορα όσο το δυνατόν χρησιμοποιώντας το υλικό αποθεμάτων. Ωστόσο, τα αλιεύματα είναι ότι η ατμόσφαιρα Arduino έχει κάποια εναέρια τρέχει στο παρασκήνιο που θα επιβραδύνει τα πράγματα. Εξετάζει κάθε ένα από αυτά τα οδικά χτυπήματα, τότε δείχνει έναν τρόπο να φτάσει γύρω τους.

Ο κώδικας χρησιμοποιεί μια εντολή που συνήθως δεν βλέπουμε στον σύγχρονο C ενσωματωμένο προγραμματισμό. τη δήλωση goto. Χρησιμοποιεί αυτό για να παρακάμψει τους πρόσθετους κύκλους που χρησιμοποιούνται από την ενσωματωμένη λειτουργία Loop () Arduino. Η μόνη εντολή που τρέχει μέσα στο hacked βρόχο του είναι ένα βαθιά ένθετο σύνολο μακροεντολών. Είναι ανοιχτά τους καρφίτσες εξόδου χρησιμοποιώντας το Hardware Xor που είναι ενσωματωμένο στο Chip AVR. Αυτό απευθύνεται άμεσα στα μητρώα καθώς και έτσι απορρίπτει την επιβράδυνση που έχει προστεθεί από τη λειτουργία DigitalWrite ().

Το αποτέλεσμα είναι ένας μετρητής λογισμικού που αλλάζει τα φώτα εξόδου (δείτε το κλιπ μετά το διάλειμμα) σε περίπου 98,9% της ταχύτητας ρολογιού υλικού. Αρκετά εντυπωσιακή, ωστόσο [UDO] αριθμούς που μπορεί να το κάνει λίγο πιο γρήγορα ακόμα.