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

The KIM Uno - Εξομοιωτής μικροεπεξεργαστή Dev Kit 5 €: 13 βήματα (με εικόνες)
The KIM Uno - Εξομοιωτής μικροεπεξεργαστή Dev Kit 5 €: 13 βήματα (με εικόνες)

Βίντεο: The KIM Uno - Εξομοιωτής μικροεπεξεργαστή Dev Kit 5 €: 13 βήματα (με εικόνες)

Βίντεο: The KIM Uno - Εξομοιωτής μικροεπεξεργαστή Dev Kit 5 €: 13 βήματα (με εικόνες)
Βίντεο: CS50 2014 - Week 1 2024, Ιούνιος
Anonim
Image
Image
Το KIM Uno - εξομοιωτής μικροεπεξεργαστή 5 € Dev Kit
Το KIM Uno - εξομοιωτής μικροεπεξεργαστή 5 € Dev Kit
Το KIM Uno - εξομοιωτής μικροεπεξεργαστή 5 € Dev Kit
Το KIM Uno - εξομοιωτής μικροεπεξεργαστή 5 € Dev Kit

Το KIM Uno είναι ένα φορητό, καθορισμένο από λογισμικό κιτ dev για (ρετρό) μικροεπεξεργαστές. Επιτρέψτε μου όμως να σας παρουσιάσω την ιδέα του γυρίζοντας πίσω στο χρόνο:

Στα τέλη του 2018 μου ήρθε στο μυαλό ότι ήθελα να φτιάξω ένα μικρό φορητό κιτ μικροεπεξεργαστή dev, όπως το περίφημο KIM-1 από την MOS Technology, Inc. και σχεδιασμένο από τον Chuck Peddle, ο οποίος συμμετείχε επίσης στη δημιουργία της CPU 6502.

Αλλά η κατασκευή ενός κιτ προγραμματισμού "γυμνού κόκκαλου" με διακριτά λογικά στοιχεία δεν ήταν επιλογή καθώς χρειαζόταν μεγάλο τροφοδοτικό (αφού αυτές οι αρχαίες συσκευές τείνουν να παίρνουν σοβαρό ρεύμα) και επίσης η ανάπτυξη θα ήταν πολύ χρονοβόρα. Και το θέλω τώρα!

Ως εκ τούτου, σχεδίασα το KIM Uno ως φορητή συσκευή, η οποία χωράει στο ένα χέρι και τροφοδοτείται από δύο μπαταρίες CR2032. Χρησιμοποιεί τον μικροελεγκτή ATMega328p ("Arduino") που λειτουργεί στα 8 MHz για να μιμηθεί (ή να προσομοιώσει) μια επιθυμητή CPU. Αυτή η αρχιτεκτονική διασφαλίζει επίσης ότι οι εξομοιωμένοι επεξεργαστές είναι εναλλάξιμοι με οτιδήποτε χωράει στη μνήμη flash του μικροελεγκτή. Είναι λοιπόν μια συσκευή πολλαπλών χρήσεων.

Κατά σύμπτωση, αργότερα παρακολούθησα μια πραγματικά καλή ομιλία - που ονομάζεται The Ultimate Apollo Guidance Computer Talk (34C3) - στο YouTube όπου αναφέρονται "One Instruction Set Computers" ή OISC. Δεν ήξερα για αυτούς και το βρήκα ως τον τέλειο υποψήφιο για να το εφαρμόσω.

Το KIM Uno μιμείται μια CPU με μία μόνο εντολή: subleq - αφαιρεί και διακλαδίζεται αν είναι μικρότερη ή ίση με το μηδέν.

Εάν ακολουθήσετε μαζί μου μέσω αυτού του Instructable, μπορείτε να δημιουργήσετε το δικό σας KIM Uno σε χρόνο μηδέν. Και το καλύτερο μέρος - εκτός από το γεγονός ότι μπορείτε να το τροποποιήσετε σύμφωνα με το γούστο σας - είναι ότι κοστίζει μόνο 4, 75 € για να το κάνετε (από το τέλος του 2018).

Μια υπόδειξη: υπάρχει ένα αποθετήριο Git που περιέχει όλα τα αρχεία που παρέχονται από τα διαφορετικά βήματα αυτού του εκπαιδευτικού. Σε περίπτωση που θέλετε να τροποποιήσετε κάποιους πόρους και να τους μοιραστείτε μαζί μας, μπορείτε να κάνετε ένα PR. Αλλά μπορείτε επίσης να κάνετε λήψη όλων των αρχείων ταυτόχρονα εκεί. Απλά στο https://github.com/maxstrauch/kim-uno. Ευχαριστώ!

Υπάρχει ένα άλλο αρκετά ενδιαφέρον έργο, που ονομάζεται το ίδιο (KIM Uno), το οποίο κάνει ένα πραγματικό αντίγραφο του 6502 KIM Uno. Δείτε το εδώ. Ο δημιουργός πουλά ακόμη και το κιτ. Αν λοιπόν ενδιαφέρεστε για το 6502 και σας αρέσει αυτό το έργο, θα πρέπει να ρίξετε μια ματιά εκεί!

Βήμα 1: Προμήθεια PCB

Προμήθεια PCB
Προμήθεια PCB
Προμήθεια PCB
Προμήθεια PCB

Όπως μπορείτε να δείτε, χρησιμοποίησα την ευκαιρία να σχεδιάσω ένα PCB και να το αφήσω να κατασκευαστεί επαγγελματικά. Δεδομένου ότι η κατασκευή του εξωτερικά και η αποστολή σε εσάς θα πάρει πολύ χρόνο (ανάλογα με το πού βρίσκεστε στον κόσμο;-)), η παραγγελία του είναι το πρώτο βήμα. Στη συνέχεια, μπορούμε να συνεχίσουμε με τα άλλα βήματα, ενώ το PCB κατασκευάζεται και αποστέλλεται σε εσάς.

Παρήγγειλα τα PCB μου στην Κίνα στο PCBWay για μόλις 5 $. Δεν λαμβάνω κανένα όφελος για την παρουσίαση του PCBWay ως κατασκευαστή για τα PCB, απλώς λειτούργησε καλά για μένα και μπορεί επίσης να λειτουργήσει καλά για εσάς. Αλλά μπορείτε να τα παραγγείλετε σε οποιοδήποτε άλλο μέρος όπως JLCPCB, OSH Park ή οποιαδήποτε τοπική εταιρεία PCB.

Αλλά αν είστε πρόθυμοι να τα παραγγείλετε στο PCBWay, μπορείτε να κατεβάσετε το συνημμένο αρχείο ZIP "kim-uno-rev1_2018-12-12_gerbers.zip" και να το ανεβάσετε απευθείας στο PCBWay χωρίς καμία αλλαγή. Αυτό είναι το αρχικό αρχείο που χρησιμοποίησα για να παραγγείλω τα PCB που μπορείτε να δείτε στις εικόνες.

Εάν τα παραγγέλνετε από άλλον κατασκευαστή, ίσως χρειαστεί να τα εξαγάγετε ξανά από τις αρχικές πηγές KiCad, επειδή τα δημιούργησα με τις προδιαγραφές του PCBWay που μπορείτε να βρείτε εδώ. Για τις αρχικές πηγές KiCad, κάντε λήψη του "kim-uno-kicad-sources.zip" και εξαγάγετε το.

Υπάρχει όμως και ένας δεύτερος τρόπος: αν δεν θέλετε να παραγγείλετε το PCB, μπορείτε να φτιάξετε τη δική σας έκδοση χρησιμοποιώντας διάτρητο ή ακόμα και ένα breadboard.

Τέλος πάντων: δεδομένου ότι τα PCB είναι τώρα στο δρόμο, μπορούμε να εστιάσουμε στα άλλα μέρη! Έλα, ακολούθησέ με.

Βήμα 2: Προμήθεια στοιχείων

Προμήθεια εξαρτημάτων
Προμήθεια εξαρτημάτων
Προμήθεια εξαρτημάτων
Προμήθεια εξαρτημάτων
Προμήθεια εξαρτημάτων
Προμήθεια εξαρτημάτων

Τώρα πρέπει να αποκτήσετε τα εξαρτήματα. Για αυτό θα βρείτε μια εικόνα επισκόπησης όλων των συστατικών και των ποσοτήτων που χρειάζεστε, προσαρτημένη σε αυτό το βήμα καθώς και ένα BOM (λογαριασμός υλικών).

Το BOM περιέχει συνδέσμους προς το eBay. Αν και αυτές οι προσφορές μπορεί να κλείσουν όταν το διαβάσετε, μπορείτε να το χρησιμοποιήσετε ως αφετηρία. Τα χρησιμοποιημένα εξαρτήματα είναι αρκετά τυπικά.

Παρακάτω θα σας εξηγήσω όλα τα απαραίτητα συστατικά:

  • Αντιστάσεις 7x 1 kΩ για τις οθόνες επτά τμημάτων. Μπορείτε να μειώσετε την τιμή (π.χ. στα 470 Ω) για να λάμψουν πιο έντονα, αλλά μην την μειώσετε πολύ, διαφορετικά τα LED θα σβήσουν ή η μπαταρία θα αδειάσει πολύ γρήγορα. Διαπίστωσα ότι αυτή η τιμή λειτουργεί για μένα
  • 1x 10 kΩ ως αντίσταση έλξης για τη γραμμή RESET του μικροελεγκτή
  • 1x πυκνωτής 100nF για εξομάλυνση τυχόν αιχμών τάσης (κάτι που δεν πρέπει να συμβεί αφού χρησιμοποιούμε μπαταρίες, σωστά, αλλά για καλό μέτρο …)
  • 1x ATMega328P στο πακέτο DIP-28 (συνήθως ονομάζεται ATMega328P-PU)
  • 1x το κύριο PCB - δείτε το προηγούμενο βήμα. είτε παραγγελία είτε κατασκευή μόνος σας
  • 2x θήκες μπαταρίας CR2032
  • 1x διακόπτης SPDT (μονός πόλος, διπλή ρίψη) που έχει βασικά τρεις επαφές και σε κάθε μία από τις δύο καταστάσεις του (είτε ενεργοποιημένη είτε απενεργοποιημένη) συνδέει δύο επαφές
  • 20x απτικά κουμπιά για το πληκτρολόγιο. Για να χρησιμοποιήσω το πίσω μέρος του PCB χρησιμοποίησα απτά κουμπιά SMD (τα τυπικά 6x6x6 mm) - είναι πολύ εύκολο να κολληθούν όπως θα δείτε
  • ΠΡΟΑΙΡΕΤΙΚΟ: Κεφαλίδα 1x 1x6 pin για τη σύνδεση του προγραμματιστή, αλλά αυτό είναι προαιρετικό όπως θα δείτε αργότερα
  • 1x επτά τμήματα με 4 ψηφία και 1x επτά τμήματα με 2 ψηφία - η πλακέτα θα λάβει μόνο στοιχεία 0,36 ιντσών (9, 14 mm) με κοινή καλωδίωση ανόδου. Και οι δύο απαιτήσεις είναι σημαντικές για να αποκτήσετε μια μονάδα εργασίας. Αλλά και αυτός ο τύπος οθόνης επτά τμημάτων είναι πολύ συνηθισμένοι

Επισυνάπτεται σε αυτό το βήμα μπορείτε να βρείτε το αρχείο "component-datasheets.zip" το οποίο περιέχει πιο ακριβείς πληροφορίες σχετικά με τις διαστάσεις και τους τύπους των χρησιμοποιούμενων στοιχείων. Αλλά τα περισσότερα από τα εξαρτήματα είναι πολύ τυπικά και μπορούν να προμηθευτούν εύκολα για λίγα χρήματα.

Τώρα πρέπει να περιμένετε μέχρι να έχετε όλα τα εξαρτήματα έτοιμα για να συνεχίσετε την συγκόλληση. Κατά τη διάρκεια αυτής της περιόδου, μπορείτε ήδη να μεταβείτε στο τέλος και να διαβάσετε λίγο για τη χρήση του KIM Uno, αν θέλετε.

Βήμα 3: Επισκόπηση εργαλείου συγκόλλησης

Επισκόπηση εργαλείου συγκόλλησης
Επισκόπηση εργαλείου συγκόλλησης
Επισκόπηση εργαλείου συγκόλλησης
Επισκόπηση εργαλείου συγκόλλησης

Για συγκόλληση και κατασκευή του KIM Uno χρειάζεστε τα εργαλεία που φαίνονται στις εικόνες:

  • Κόφτης σύρματος (για να κόψετε το άκρο των καλωδίων εξαρτήματος)
  • Επίπεδη πένσα
  • Ζευγάρι τσιμπιδάκια
  • (αξιοπρεπές) Συγκολλητικό που δεν είναι πολύ παχύ - χρησιμοποιώ κόλληση 0,56 mm
  • Ένα συγκολλητικό σίδερο - δεν χρειάζεστε ένα κολλητήρι υψηλής ποιότητας (επειδή επίσης δεν κάνουμε επιστήμη πυραύλων εδώ) - χρησιμοποιώ το Ersa FineTip 260 εδώ και πολύ καιρό και είναι πολύ καλό
  • Ένα στυλό ροής: η προσθήκη ροής στα εξαρτήματα και τα τακάκια καθιστά πολύ πιο εύκολη τη συγκόλλησή τους αφού η συγκόλληση στη συνέχεια "ρέει" από μόνη της στη σωστή θέση*
  • Προαιρετικά: ένα σφουγγάρι (από μέταλλο) για το κολλητήρι σας

Για να προγραμματίσετε αργότερα το KIM Uno θα χρειαστείτε επίσης:

  • έναν υπολογιστή με την αλυσίδα εργαλείων AVR-GCC και avrdude για να ανεβάσετε το υλικολογισμικό
  • ένας ISP (προγραμματιστής) - όπως μπορείτε να δείτε στην εικόνα χρησιμοποιώ το Arduino Uno μου ως ISP με ειδικό σκίτσο - οπότε δεν χρειάζεται να αγοράσετε κάποιο φανταχτερό υλικό

* χρειάζεται κάποια καθοδήγηση από ανθρώπους;-)

Είσαι έτοιμος? Στο επόμενο βήμα θα ξεκινήσουμε τη συναρμολόγηση του KIM Uno.

Βήμα 4: Συγκόλληση #1: Προσθήκη αντιστάσεων και πυκνωτών

Συγκόλληση #1: Προσθήκη αντιστάσεων και πυκνωτών
Συγκόλληση #1: Προσθήκη αντιστάσεων και πυκνωτών
Συγκόλληση #1: Προσθήκη αντιστάσεων και πυκνωτών
Συγκόλληση #1: Προσθήκη αντιστάσεων και πυκνωτών
Συγκόλληση #1: Προσθήκη αντιστάσεων και πυκνωτών
Συγκόλληση #1: Προσθήκη αντιστάσεων και πυκνωτών
Συγκόλληση #1: Προσθήκη αντιστάσεων και πυκνωτών
Συγκόλληση #1: Προσθήκη αντιστάσεων και πυκνωτών

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

Επίσης, που δεν φαίνεται στις εικόνες, προσθέστε τον μικρό πυκνωτή 100 nF με τον ίδιο τρόπο.

Μια συμβουλή: κρατήστε αυτά τα πόδια από σύρμα σε ένα μικρό δοχείο, μερικές φορές είναι χρήσιμα.

Βήμα 5: Συγκόλληση #2: Συναρμολόγηση του πληκτρολογίου

Συγκόλληση #2: Συναρμολόγηση του πληκτρολογίου
Συγκόλληση #2: Συναρμολόγηση του πληκτρολογίου
Συγκόλληση #2: Συναρμολόγηση του πληκτρολογίου
Συγκόλληση #2: Συναρμολόγηση του πληκτρολογίου
Συγκόλληση #2: Συναρμολόγηση του πληκτρολογίου
Συγκόλληση #2: Συναρμολόγηση του πληκτρολογίου

Το επόμενο βήμα είναι η συγκόλληση των 20 απτικών διακόπτες SMD. Δεδομένου ότι αυτή η εργασία είναι λίγο περίεργη, το κάνουμε τώρα, όταν το PCB ακουμπάει στον πάγκο εργασίας.

Θα δουλέψουμε από πάνω προς τα κάτω (ή από αριστερά προς τα δεξιά εάν το PCB είναι προσανατολισμένο όπως φαίνεται στις φωτογραφίες) και ξεκινάμε με την πρώτη σειρά: επιλέξτε ένα από τα τέσσερα τακάκια για κάθε διακόπτη και βρέξτε το με το στυλό ροής.

Στη συνέχεια, χρησιμοποιήστε ένα τσιμπιδάκι για να πιάσετε έναν διακόπτη και να τον τοποθετήσετε προσεκτικά στα τέσσερα μαξιλάρια. Στη συνέχεια, κολλήστε μόνο το πόδι του διακόπτη που βρίσκεται στο μαξιλάρι που επιλέξατε και προετοιμάσατε με ροή. Για αυτό θα πρέπει να "πιάσετε" λίγη συγκόλληση με το σίδερο σας πριν ξεκινήσετε. Χρησιμοποιώντας αυτήν τη μέθοδο, ολοκληρώστε ολόκληρη τη σειρά διακοπτών, συγκολλώντας μόνο ένα πόδι.

Η εικόνα με τα βέλη δείχνει μια μεγέθυνση πώς έγινε ακριβώς η συγκόλληση.

Αφού συγκολλήσετε ολόκληρη τη σειρά (μόνο έναν πείρο), μπορείτε να κάνετε μικρές ρυθμίσεις, θερμαίνοντας τον πείρο και επανατοποθετώντας τον διακόπτη. Βεβαιωθείτε ότι οι διακόπτες είναι ευθυγραμμισμένοι όσο το δυνατόν καλύτερα.

Εάν είστε ευχαριστημένοι με την ευθυγράμμιση, μπορείτε να βρέξετε όλες τις άλλες καρφίτσες με το στυλό ροής και στη συνέχεια να τις κολλήσετε αγγίζοντάς το με το κολλητήρι και προσθέτοντας λίγο κόλλημα αγγίζοντάς το επίσης. Θα δείτε ότι η συγκόλληση απορροφάται απευθείας στο μαξιλάρι.

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

Βήμα 6: Συγκόλληση #3: Επικεφαλίδα επτά τμημάτων, διακόπτης και καρφίτσα

Συγκόλληση #3: Επίδειξη, διακόπτης και κεφαλίδα επτά τμημάτων
Συγκόλληση #3: Επίδειξη, διακόπτης και κεφαλίδα επτά τμημάτων
Συγκόλληση #3: Επίδειξη, διακόπτης και κεφαλίδα επτά τμημάτων
Συγκόλληση #3: Επίδειξη, διακόπτης και κεφαλίδα επτά τμημάτων
Συγκόλληση #3: Επίδειξη, διακόπτης και κεφαλίδα επτά τμημάτων
Συγκόλληση #3: Επίδειξη, διακόπτης και κεφαλίδα επτά τμημάτων

Τώρα μπορείτε να προσθέσετε τον διακόπτη και την κεφαλίδα καρφιτσών (προαιρετικά) κρατώντας τον με το δάχτυλό σας και συγκολλώντας έναν πείρο για να τον κρατήσετε στο PCB, έτσι ώστε να κολλήσετε τους άλλους πείρους και τελικά να αγγίξετε τον αρχικό πείρο συγκράτησης.

Να είστε προσεκτικοί ώστε να μην καείτε με το καυτό κολλητήρι. Εάν δεν αισθάνεστε άνετα με αυτό, μπορείτε να χρησιμοποιήσετε λίγη ταινία (π.χ. ταινία ζωγράφου) για να συγκρατήσετε το εξάρτημα. Με αυτόν τον τρόπο έχετε και τα δύο χέρια ελεύθερα για κίνηση.

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

Αλλά προσέξτε και τοποθετήστε την οθόνη των επτά τμημάτων στη σωστή κατεύθυνση (με τις δεκαδικές κουκίδες στραμμένες προς το πληκτρολόγιο). Αλλιώς έχεις πρόβλημα…

Βήμα 7: Συγκόλληση #4: Συγκόλληση του μικροελεγκτή

Συγκόλληση #4: Συγκόλληση του μικροελεγκτή
Συγκόλληση #4: Συγκόλληση του μικροελεγκτή

Τώρα που έχετε πολλή εξάσκηση, μπορείτε να προχωρήσετε και να βάλετε τον μικροελεγκτή με την εγκοπή στην κορυφή (ή την πρώτη καρφίτσα) στραμμένη προς το διακόπτη. Χρησιμοποιώντας επίπεδες πένσες μπορείτε να λυγίσετε προσεκτικά τα πόδια του μικροελεγκτή, ώστε να ταιριάζουν με τις οπές στο PCB.

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

Βήμα 8: Συγκόλληση #5: Προσθέστε τις θήκες μπαταρίας (τελευταίο βήμα)

Συγκόλληση #5: Προσθέστε τις θήκες μπαταρίας (τελευταίο βήμα)
Συγκόλληση #5: Προσθέστε τις θήκες μπαταρίας (τελευταίο βήμα)
Συγκόλληση #5: Προσθέστε τις θήκες μπαταρίας (τελευταίο βήμα)
Συγκόλληση #5: Προσθέστε τις θήκες μπαταρίας (τελευταίο βήμα)
Συγκόλληση #5: Προσθέστε τις θήκες μπαταρίας (τελευταίο βήμα)
Συγκόλληση #5: Προσθέστε τις θήκες μπαταρίας (τελευταίο βήμα)

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

Βήμα 9: Αναβοσβήνει ο εξομοιωτής

Αναβοσβήνει ο εξομοιωτής
Αναβοσβήνει ο εξομοιωτής
Αναβοσβήνει ο εξομοιωτής
Αναβοσβήνει ο εξομοιωτής
Αναβοσβήνει ο εξομοιωτής
Αναβοσβήνει ο εξομοιωτής

Στο συνημμένο αρχείο zip "kim-uno-firmware.zip" μπορείτε να βρείτε τον πηγαίο κώδικα για τον εξομοιωτή μαζί με ένα ήδη μεταγλωττισμένο "main.hex" το οποίο μπορείτε να ανεβάσετε απευθείας στον μικροελεγκτή.

Για να μπορέσετε πραγματικά να το χρησιμοποιήσετε, πρέπει να ρυθμίσετε τα bit ασφάλειας του μικροελεγκτή, έτσι ώστε να χρησιμοποιεί το εσωτερικό ρολόι 8 MHz χωρίς να το διαιρείτε στο μισό. Μπορείτε να ολοκληρώσετε τη δουλειά με την ακόλουθη εντολή:

avrdude -c stk500v1 -b 9600 -v -v -P /dev/cu.usbmodem1421 -p m328p -U lfuse: w: 0xe2: m -U hfuse: w: 0xd9: m -U efuse: w: 0xff: m

Εάν δεν γνωρίζετε το avrdude: είναι ένα πρόγραμμα για τη μεταφόρτωση προγραμμάτων σε έναν μικροελεγκτή. Μπορείτε να μάθετε περισσότερα για αυτό εδώ. Βασικά το εγκαθιστάτε και στη συνέχεια είναι έτοιμο για χρήση. Για τη ρύθμισή σας ίσως χρειαστεί να αλλάξετε το όρισμα "-P" σε άλλη σειριακή θύρα. Ελέγξτε στον υπολογιστή σας ποια σειριακή θύρα χρησιμοποιείται (π.χ. στο εσωτερικό του Arduino IDE).

Μετά από αυτό, μπορείτε να αναβοσβήνετε το υλικολογισμικό στον μικροελεγκτή με αυτήν την εντολή:

avrdude -c stk500v1 -b 9600 -v -v -P /dev/cu.usbmodem1421 -p m328p -U flash: w: main.hex

Και πάλι: το ίδιο ισχύει για το "-P" όπως παραπάνω.

Δεδομένου ότι δεν κατέχω έναν "επαγγελματία" ISP (Προγραμματιστής εντός συστήματος) χρησιμοποιώ πάντα το Arduino UNO (βλέπε εικόνα) και το σκίτσο που επισυνάπτω ("arduino-isp.ino", από τον Randall Bohn). Ξέρω ότι υπάρχει μια νεότερη έκδοση, αλλά με αυτήν την έκδοση είχα μηδενικό πρόβλημα τα τελευταία πέντε χρόνια, οπότε το κρατάω. Λειτουργεί απλά. Χρησιμοποιώντας το σχόλιο στην κεφαλίδα του σκίτσου λαμβάνετε το pinout στο Arduino UNO και χρησιμοποιώντας το σχηματικό σχήμα του KIM Uno (δείτε συνημμένο) μπορείτε να πάρετε το pinout της κεφαλίδας του ISP 1x6 στο KIM Uno. Ο τετραγωνικός πείρος, κοντά στην οθόνη των επτά τμημάτων είναι ο πείρος 1 (GND). Οι ακόλουθες ακίδες είναι (με τη σωστή σειρά): RESET, MOSI, MISO, SCK, VCC. Μπορείτε να συνδέσετε το VCC είτε σε 3V3 είτε σε 5V.

Εάν δεν προσθέσατε την κεφαλίδα 1x6 ακίδων, μπορείτε να χρησιμοποιήσετε σύρματα από το breadboard και να τα βάλετε στις οπές σύνδεσης και να τα γωνίσετε με το δάχτυλό σας - όπως φαίνεται στην εικόνα. Αυτό κάνει αρκετή επαφή για να αναβοσβήνει το υλικολογισμικό και να ρυθμιστούν οι ασφάλειες. Αλλά αν σας αρέσει μια πιο μόνιμη ρύθμιση, θα πρέπει σίγουρα να προσθέσετε τις κεφαλίδες 1x6 pin.

Έχω δύο συσκευές: μια έκδοση παραγωγής χωρίς τις κεφαλίδες pin και μια έκδοση ανάπτυξης με κεφαλίδες pin τις οποίες αφήνω συνδεδεμένες και τις χρησιμοποιώ ξανά και ξανά κατά τη διάρκεια της ανάπτυξης. Αυτό είναι πολύ πιο άνετο.

Βήμα 10: Ολοκληρώθηκε

Πεπερασμένος
Πεπερασμένος
Πεπερασμένος
Πεπερασμένος

Τώρα έχετε τελειώσει και μπορείτε να αρχίσετε να γράφετε τα δικά σας προγράμματα subleq σε χαρτί, να τα συναρμολογείτε και στη συνέχεια να τα εισάγετε στη μνήμη.

Το KIM Uno έρχεται με έναν προγραμματισμένο υπολογισμό Fibonacci που ξεκινά από τη θέση μνήμης 0x0a. Έχει οριστεί από προεπιλογή σε n = 6, οπότε θα πρέπει να προκύψει μια τιμή 8. Πατήστε "Go" για να ξεκινήσει ο υπολογισμός.

Βήμα 11: Ανάλυση σχεδιασμού PCB

Ανάλυση Σχεδιασμού PCB
Ανάλυση Σχεδιασμού PCB
Ανάλυση Σχεδιασμού PCB
Ανάλυση Σχεδιασμού PCB

Μετά την ολοκλήρωση αυτού του έργου βρήκα μερικά σημεία που είναι αξιοσημείωτα και πρέπει να εξεταστούν σε μια νέα αναθεώρηση του πίνακα:

  • η μεταξωτή οθόνη του ATMega328p δεν έχει τη συνήθη εγκοπή όπου βρίσκεται η πρώτη καρφίτσα. Το αποτύπωμα DIP-28 δεν έχει καν τετράγωνο μαξιλάρι όπου βρίσκεται ο πρώτος πείρος. Αυτό θα πρέπει σίγουρα να βελτιωθεί με μια πιο λεπτομερή μεταξοτυπία για να αποφευχθεί η σύγχυση
  • η κεφαλίδα του ISP δεν έχει ετικέτες σύνδεσης στη μεταξωτή οθόνη. Αυτό καθιστά δύσκολη την αναγνώριση του τρόπου σύνδεσής του με τον ISP
  • η κεφαλίδα ISP θα μπορούσε να αλλάξει σε κεφαλίδα 2x6 pin με τυπική διάταξη pin για να αποφευχθεί οποιαδήποτε σύγχυση

Εκτός από αυτά τα σημεία, είμαι πολύ χαρούμενος για το πώς βγήκε και λειτούργησε στην πρώτη προσπάθεια.

Βήμα 12: Πώς να προγραμματίσετε το SUBLEQ;

Image
Image
Πώς να προγραμματίσετε το SUBLEQ
Πώς να προγραμματίσετε το SUBLEQ
Πώς να προγραμματίσετε το SUBLEQ
Πώς να προγραμματίσετε το SUBLEQ

Όπως αναφέρθηκε στην αρχή, το τρέχον υλικολογισμικό του KIM Uno μιμείται έναν Υπολογιστή One Instruction Set (OISC) και παρέχει την εντολή subleq για την εκτέλεση υπολογισμών.

Η εντολή subleq σημαίνει αφαίρεση και διακλάδωση εάν είναι μικρότερη ή ίση με το μηδέν. Στον ψευδοκώδικα αυτό μοιάζει με το ακόλουθο:

subleq A B C mem [B] = mem [B] - mem [A]; εάν (mem [B] <= 0) πήγα C;

Δεδομένου ότι το KIM Uno μιμείται ένα μηχάνημα 8-bit, όλα τα ορίσματα A, B και C είναι τιμές 8 bit και ως εκ τούτου μπορεί να αντιμετωπίσει μια συνολική κύρια μνήμη 256 byte. Προφανώς αυτό μπορεί να επεκταθεί, κάνοντας τιμές πολλαπλών byte A, B και C. Αλλά προς το παρόν ας το κρατήσουμε απλό.

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

  • 0x00 = ο καταχωρητής Z (μηδέν) και πρέπει να διατηρείται μηδέν.
  • 0x01 - 0x06 = έξι byte που αντιπροσωπεύουν την τιμή κάθε τμήματος της οθόνης (από δεξιά προς τα αριστερά). Τιμή 0xf - δείτε τον πηγαίο κώδικα (main.c) για περισσότερες λεπτομέρειες.
  • 0x07, 0x08, 0x09 = τρία byte όπου κάθε byte αντιπροσωπεύει δύο οθόνες επτά τμημάτων (από δεξιά προς τα αριστερά). Αυτές οι θέσεις μνήμης επιτρέπουν την απλή εμφάνιση ενός αποτελέσματος χωρίς να το χωρίσετε σε δύο τσιμπήματα για να το τοποθετήσετε στις μονοψήφιες θέσεις μνήμης 0x01 - 0x06.
  • 0x0a+ = Ένα πρόγραμμα ξεκινά στο 0x0a. Προς το παρόν, το πλήκτρο "Μετάβαση" εκτελείται από 0x0a σταθερό.

Με αυτές τις πληροφορίες μπορείτε τώρα να γράψετε ένα πρόγραμμα στο assembler και να εισαγάγετε τις οδηγίες στη μνήμη και στη συνέχεια να το εκτελέσετε. Δεδομένου ότι υπάρχει μόνο μία εντολή, εισάγονται μόνο τα ορίσματα (Α, Β και Γ). Έτσι, μετά από τρεις θέσεις μνήμης ξεκινούν τα επόμενα επιχειρήματα εντολών και ούτω καθεξής.

Επισυνάπτεται σε αυτό το βήμα μπορείτε να βρείτε το αρχείο "retracement.σ" και επίσης μια εικόνα του χειρόγραφου προγράμματος που αποτελεί παράδειγμα υλοποίησης του Φιμπονάτσι. Αλλά περιμένετε: χρησιμοποιούνται τρεις οδηγίες - συγκεκριμένα ADD, MOV και HLT - οι οποίες δεν είναι υποτιμήσεις. "Ποια είναι η διαπραγμάτευση; Δεν είπατε ότι υπάρχει μόνο μία οδηγία, το subleq;" ρωτας? Είναι πολύ εύκολο: με το subleq μπορεί κανείς να μιμηθεί αυτές τις οδηγίες πολύ εύκολα:

MOV a, b - τα δεδομένα αντιγραφής στη θέση a έως b μπορούν να αποτελούνται από:

  1. subleq b, b, 2 (επόμενη οδηγία)
  2. subleq a, Z, 3 (επόμενη οδηγία)
  3. subleq Z, b, 4 (επόμενη οδηγία)
  4. subleq Z, Z, π.χ. 5 (επόμενη οδηγία)

Χρησιμοποιώντας τη δυνατότητα αφαίρεσης του subleq, το οποίο κάνει mem - mem [a] και αντικαθιστά το mem με το αποτέλεσμα, η τιμή αντιγράφεται χρησιμοποιώντας τον μητρώο μηδέν. Και το "subleq Z, Z,…" απλώς επαναφέρει τον μηδενικό μητρώο στο 0, ανεξάρτητα από την τιμή του Z.

ADD a, b - προσθέτει τις τιμές a + b και αποθηκεύει το άθροισμα στο b μπορεί να αποτελείται από:

  1. subleq a, Z, 2 (επόμενη οδηγία)
  2. subleq Z, b, 3 (επόμενη οδηγία)
  3. subleq Z, Z, π.χ. 4 (επόμενη οδηγία)

Αυτή η οδηγία απλώς υπολογίζει το mem - (- mem [a]) που είναι mem + mem [a] χρησιμοποιώντας επίσης τη δυνατότητα αφαίρεσης.

HLT - σταματά την CPU και τερματίζει την εκτέλεση:

Εξ ορισμού, ο εξομοιωτής γνωρίζει ότι η CPU θέλει να τερματιστεί εάν μεταβεί στο 0xff (ή -1 αν είναι τραγουδισμένο). Ένα απλό λοιπόν

subleq Ζ, Ζ, -1

κάνει τη δουλειά και υποδεικνύει στον εξομοιωτή ότι πρέπει να τερματίσει την εξομοίωση.

Χρησιμοποιώντας αυτές τις τρεις απλές οδηγίες, ο αλγόριθμος Fibonacci μπορεί να εφαρμοστεί και λειτουργεί καλά. Αυτό οφείλεται στο γεγονός ότι το OISC μπορεί να υπολογίσει τα πάντα που μπορεί να υπολογίσει ένας "πραγματικός" υπολογιστής μόνο με την υποεπιφάνεια εντολών. Φυσικά, υπάρχουν πολλές αντισταθμίσεις - όπως το μήκος και η ταχύτητα του κώδικα. Ωστόσο, είναι ένας πολύ καλός τρόπος για να μάθετε και να πειραματιστείτε με χαμηλού επιπέδου προγραμματισμό λογισμικού και υπολογιστές.

Επισυνάπτεται σε αυτό το βήμα, μπορείτε επίσης να βρείτε το αρχείο zip "kim_uno_tools.zip". Περιέχει βασικό συγκροτητή και προσομοιωτή για το KIM Uno. Είναι γραμμένα στο NodeJS - βεβαιωθείτε ότι το έχετε εγκαταστήσει.

Συναρμολόγηση προγραμμάτων

Εάν ρίξετε μια ματιά στο "retracement/retracement.s", θα διαπιστώσετε ότι είναι ο πηγαίος κώδικας για τη συζήτηση για την υλοποίηση του retracement. Για να το συναρμολογήσετε και να δημιουργήσετε ένα πρόγραμμα από αυτό, το οποίο μπορεί να εκτελέσει το KIM Uno, εισάγετε την ακόλουθη εντολή (στη ρίζα του αρχείου "kim_uno_tools.zip" που εξάγεται):

node assemble.js fibonacci/retracement.s

και είτε θα εκτυπώσει ένα σφάλμα εάν κάνατε λάθος είτε θα χυθεί το πρόγραμμα που προκύπτει. Για να το αποθηκεύσετε, μπορείτε να αντιγράψετε την έξοδο και να την αποθηκεύσετε σε ένα αρχείο ή απλά να εκτελέσετε αυτήν την εντολή:

κόμβος assemble.js fibonacci/retracement.s> yourfile.h

Η έξοδος διαμορφώνεται με τρόπο ώστε να μπορεί να συμπεριληφθεί απευθείας στο υλικολογισμικό του KIM Uno ως αρχείο κεφαλίδας C, αλλά ο προσομοιωτής μπορεί επίσης να το χρησιμοποιήσει για προσομοίωση. Απλώς εισάγετε:

κόμβος sim.js yourfile.h

Και θα εμφανιστεί το αποτέλεσμα προσομοίωσης και η έξοδος που αναμένεται από το KIM Uno στην οθόνη.

Αυτή ήταν μια πολύ σύντομη εισαγωγή σε αυτά τα εργαλεία. Σας συνιστώ να παίξετε μαζί τους και να δείτε πώς λειτουργούν. Με αυτόν τον τρόπο αποκτάτε βαθιά γνώση και μαθαίνετε τις αρχές λειτουργίας πίσω από CPU, οδηγίες, συναρμολογητές και εξομοιωτές;-)

Βήμα 13: Outlook

Αποψη
Αποψη
Αποψη
Αποψη
Αποψη
Αποψη

Συγχαρητήρια

Αν το διαβάσετε αυτό, πιθανότατα περάσατε από ολόκληρο αυτό το διδακτικό και δημιουργήσατε το δικό σας KIM Uno. Αυτό είναι πραγματικά ωραίο.

Αλλά το ταξίδι δεν τελειώνει εδώ - υπάρχουν άπειρες επιλογές για το πώς θα μπορούσατε να τροποποιήσετε το KIM Uno και να το προσαρμόσετε στις ανάγκες και τις προτιμήσεις σας.

Για παράδειγμα, το KIM Uno θα μπορούσε να είναι εξοπλισμένο με έναν "πραγματικό" εξομοιωτή ρετρό CPU που θα μπορούσε να μιμηθεί το περίφημο MOS 6502 ή το Intel 8085, 8086 ή 8088. Στη συνέχεια θα πήγαινε στο αρχικό μου όραμα, πριν μάθω για τα OISC.

Υπάρχουν όμως και άλλες χρήσεις, αφού ο σχεδιασμός υλικού είναι αρκετά γενικός. Το KIM Uno θα μπορούσε να χρησιμοποιηθεί ως…

  • … Ένα τηλεχειριστήριο π.χ. για CNC ή άλλες συσκευές. Maybeσως ενσύρματο ή εξοπλισμένο με δίοδο IR ή οποιονδήποτε άλλο ασύρματο αποστολέα
  • … Μια (δεκαεξαδική) αριθμομηχανή τσέπης. Το υλικολογισμικό μπορεί να προσαρμοστεί πολύ εύκολα και ο σχεδιασμός της πλακέτας δεν χρειάζεται να αλλάξει πολύ. Maybeσως η μεταξοτυπία μπορεί να προσαρμοστεί με μαθηματικές πράξεις και το κενό μεταξύ των τμημάτων μπορεί να αφαιρεθεί. Εκτός από αυτό, είναι ήδη έτοιμο για αυτή τη μεταμόρφωση

Ελπίζω να διασκεδάσατε τόσο πολύ ακολουθώντας και ελπίζοντας να χτίσετε το KIM Uno όσο είχα σχεδιάσει και σχεδιάσει. Και αν το επεκτείνετε ή το τροποποιήσετε - ενημερώστε με. Στην υγειά σας!

Διαγωνισμός PCB
Διαγωνισμός PCB
Διαγωνισμός PCB
Διαγωνισμός PCB

Επόμενος στο Διαγωνισμό PCB

Συνιστάται: