Ο καθορισμός των θεμάτων σειριακής λανθάνουσας κατάστασης του Arduino

[Paul] έγραψε να μας πει για κάποια ενδιαφέροντα θέματα λανθάνουσας arduino, βοήθησε να καρφώσει και να διορθώσει το Arduino.

Φαίνεται ότι η [Michu] είχε κάποια προβλήματα με τον έλεγχο του έργου του Rainbowduino που παρουσιάσαμε νωρίτερα φέτος και δεν μπορούσε να καταλάβει γιατί βίωσε τέτοιες τεράστιες καθυστερήσεις κατά την αποστολή και λήψη δεδομένων.

Η αναζήτηση σε απευθείας σύνδεση για απαντήσεις εμφανίστηκε πολύ λίγα και επειδή η [Michu] χρησιμοποιεί επεξεργασία, το ζευγάρι ανέπτυξε ένα σύνολο δοκιμών για να δει τι είδους καθυστέρηση εισήχθη από την Java. Pitting A Arduino Uno και Arduino από το 2009 εναντίον ενός Teensy 2.0, οι δοκιμές μετρήθηκαν η λανθάνουσα κατάσταση των εγγενών δεδομένων έναντι των μεταφορών που διευκολύνθηκε από την Java μέσω της βιβλιοθήκης RXTX που χρησιμοποιεί για σειριακές επικοινωνίες.

Τα αποτελέσματα ήταν αρκετά εντυπωσιακά. Ενώ και οι δύο αρδουίνοι καθυστέρησαν πίσω από το εφεύρετο από ένα μακρύ πυροβολισμό, οι αξίες καθυστέρησης τους κάτω από την Java ήταν πάντα 20ms στο ελάχιστο – κάτι δεν προστίθεται. [Michu] πυροβόλησε στον κωδικό RXTX και βρήκε ένα μυστήριο 20ms καθυστέρηση που είχε προγραμματιστεί στη σειριακή βιβλιοθήκη. Δεν έχει νόημα σε αυτόν, οπότε άλλαξε την καθυστέρηση σε 2ms και είδε μια δραστική αύξηση της απόδοσης κατά τη μεταφορά λιγότερο από 128 bytes δεδομένων.

Η λύση του ζευγαριού δεν φαίνεται να επηρεάζει τη λανθάνουσα κατάσταση όταν μεταφέρονται μεγαλύτερες ποσότητες δεδομένων (> 1kb), αλλά κάνει έναν κόσμο διαφοράς όταν χειρίζεται μικρότερα κομμάτια δεδομένων.

Για λόγους αποκάλυψης, θα έπρεπε να σημειωθεί ότι η εταιρεία [Paul’s] παράγει το Theensy MCU.

Posted in Uncategorized

Leave a Reply

Your email address will not be published. Required fields are marked *