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

AVR/Arduino που αναβοσβήνει με Raspberry Pi: 3 βήματα (με εικόνες)
AVR/Arduino που αναβοσβήνει με Raspberry Pi: 3 βήματα (με εικόνες)

Βίντεο: AVR/Arduino που αναβοσβήνει με Raspberry Pi: 3 βήματα (με εικόνες)

Βίντεο: AVR/Arduino που αναβοσβήνει με Raspberry Pi: 3 βήματα (με εικόνες)
Βίντεο: Arduino Basics | LED με κουμπί 2024, Νοέμβριος
Anonim
AVR/Arduino που αναβοσβήνει με Raspberry Pi
AVR/Arduino που αναβοσβήνει με Raspberry Pi

Ένας προγραμματιστής εντός συστήματος (ISP) είναι μια συσκευή που μπορείτε να χρησιμοποιήσετε για τον προγραμματισμό πολλών μικροελεγκτών, για παράδειγμα το ATMega328p που είναι ο εγκέφαλος ενός Arduino Uno. Μπορείτε να αγοράσετε κάτι σαν USBtinyISP, ή ακόμη και να χρησιμοποιήσετε ένα Arduino. Αυτό το διδακτικό θα σας δείξει πώς να χρησιμοποιήσετε ένα Raspberry Pi ως ISP.

Το πρόγραμμα avrdude, το οποίο χρησιμοποιεί το Arduino IDE κάτω από την κουκούλα για να αναβοσβήνει τσιπ, μπορεί να χρησιμοποιηθεί με πολλούς προγραμματιστές. Μία από τις επιλογές του είναι η χρήση των ακίδων SPI στη θύρα επέκτασης του Pi. Θα σας εξηγήσω πώς να κάνετε τις κατάλληλες συνδέσεις, να συνθέσετε ένα απλό κύκλωμα στον πίνακα, ώστε να μην χρειάζεται να επαναλαμβάνετε την καλωδίωση κάθε φορά που θέλετε να αναβοσβήνει ένα τσιπ και πώς να εγκαταστήσετε και να χρησιμοποιήσετε το avrdude. Θα σας δείξω επίσης πώς μπορείτε να μεταγλωττίσετε προγράμματα χρησιμοποιώντας το Arduino IDE σε ένα τσιπ AVR όπως ένα ATmega ή ATtiny χρησιμοποιώντας αυτήν τη μέθοδο.

Πράγματα που χρειάζονται:

  • Raspberry Pi με εγκατεστημένο το πιο πρόσφατο Raspbian
  • Αρσενική υποδοχή κεφαλίδας 40 ακίδων (ή 26 ακίδων εάν έχετε παλαιότερο Pi)
  • Καλώδιο IDE για σύνδεση στο Pi σας
  • Κρυσταλλικός συντονιστής 16 MHz
  • 22 πυκνωτές pF (2)
  • LED (1) για να υποδείξει την κατάσταση του προγραμματιστή
  • Υποδοχές IC 8, 14 και/ή 28 ακίδων, ανάλογα με το σχήμα των τσιπ που θέλετε να αναβοσβήνουν
  • Λίγο διάτρητος πίνακας, σύρματα, συγκόλληση

Βήμα 1: Δημιουργία συνημμένου τσαγκάρη

Κτίριο Προσαρτήματος τσαγκάρης
Κτίριο Προσαρτήματος τσαγκάρης
Δημιουργία συνημμένου τσαγκάρη
Δημιουργία συνημμένου τσαγκάρη
Κτίριο Προσαρτήματος τσαγκάρης
Κτίριο Προσαρτήματος τσαγκάρης

Serial Peripheral Interface (SPI), που ονομάζεται επίσης τετρασύρματη σειρά, είναι ένας τρόπος επικοινωνίας μεταξύ μιας κύριας συσκευής και μίας ή περισσοτέρων συσκευών. Θα το χρησιμοποιήσουμε για να αναβοσβήνει τα τσιπ, με το Pi ως κύριο και το τσιπ ως υποτελή. Θα πραγματοποιήσετε τις ακόλουθες συνδέσεις μεταξύ του Pi και του τσιπ σας (δείτε τα pinouts παραπάνω για διάφορα AVR και θύρες επέκτασης Pi για να γνωρίζετε ποιες είναι οι ακίδες):

  • Συνδέστε τις ακίδες MOSI (master-out-slave-in) μαζί
  • Συνδέστε τις ακίδες SCLK (κοινόχρηστο ρολόι) μαζί
  • Συνδέστε τις ακίδες MISO (master-in-slave-out) μαζί με μια αντίσταση 220 Ohm, για να προστατέψετε το Pi από τυχόν απροσδόκητα υψηλές τάσεις από το τσιπ
  • Συνδέστε το GPIO 25 στο Pi απευθείας στον ακροδέκτη RESET στο τσιπ. Το Pi χαμηλώνει αυτόν τον πείρο χαμηλά κατά τον προγραμματισμό, οπότε χρησιμοποιούμε μια αντίσταση 10K για να την κρατάμε υψηλή όταν δεν προγραμματίζουμε, και ένα LED με αντίσταση προστασίας 1K που τρέχει σε θετική τάση για να μας δώσει ωραία οπτική ανατροφοδότηση κατά τον προγραμματισμό.

Συνδέουμε ακίδες γείωσης και τροφοδοσίας (3.3V) μεταξύ του Pi και των τσιπ που θέλουμε να προγραμματίσουμε. Σε περίπτωση που δεν το γνωρίζετε ήδη, οι ακίδες του Raspberry Pi δεν είναι ανθεκτικές στα 5V - θα καταστραφούν εάν εμφανιστούν πάνω από 3,3V. Εάν τα τσιπ που προγραμματίζονται χρειάζονται ισχύ 5V για κάποιο λόγο, θα μπορούσαμε να χρησιμοποιήσουμε ένα τσιπ αλλαγής στάθμης για να προστατέψουμε τις ακίδες του Pi, αλλά δεν αντιμετώπισα κανένα πρόβλημα με τη χρήση 3.3V - γι 'αυτό συνιστώ να παίζετε με ασφάλεια και να εξοικονομείτε στοιχεία.

Τέλος, συνδέουμε έναν ταλαντωτή κρυστάλλων 16MHz στις ακίδες XTAL στο τσιπ, τον οποίο επίσης συνδέουμε στη γείωση μέσω δύο πυκνωτών 22pF. Τα τσιπ AVR μπορούν να ρυθμιστούν να λειτουργούν σε διαφορετικές συχνότητες και μπορούν επίσης να ρυθμιστούν ώστε να χρησιμοποιούν εσωτερική ή εξωτερική πηγή για τον προσδιορισμό αυτής της συχνότητας. Εάν το τσιπ σας έχει ρυθμιστεί να χρησιμοποιεί έναν εξωτερικό κρύσταλλο ως πηγή συχνότητας, δεν θα μπορείτε να επαναπρογραμματίσετε χωρίς αυτό. Διαφορετικά δεν έχει σημασία αν είναι εκεί.

Μπορείτε να χρησιμοποιήσετε το σχηματικό κύκλωμα στην τελευταία εικόνα ως οδηγό για τη συναρμολόγηση του προσαρτήματος του τσαγκάρη σας σε σανίδα. Μπορείτε να έχετε όσες ή λιγότερες διαφορετικές μορφές υποδοχών IC, όπως θέλετε, απλώς συνδέστε τις κατάλληλες ακίδες παράλληλα με το Pi και το κρύσταλλο. N. B. αν χρησιμοποιείτε την εικόνα του πρωτοτύπου μου ως οδηγό, σημειώστε ότι πρόσθεσα μερικές επιπλέον καρφίτσες και υποδοχές κεφαλίδας, ώστε να έχω πρόσβαση σε ακίδες στο Pi για άσχετους λόγους.

Βήμα 2: Εγκατάσταση και χρήση του Avrdude

Εγκατάσταση και χρήση του Avrdude
Εγκατάσταση και χρήση του Avrdude
Εγκατάσταση και χρήση του Avrdude
Εγκατάσταση και χρήση του Avrdude
Εγκατάσταση και χρήση του Avrdude
Εγκατάσταση και χρήση του Avrdude
Εγκατάσταση και χρήση του Avrdude
Εγκατάσταση και χρήση του Avrdude

Για να εγκαταστήσετε το avrdude στο Pi σας, απλά πληκτρολογήστε

sudo apt-get install avrdude

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

sudo raspi-config

και μεταβείτε στις Επιλογές διεπαφής για να ενεργοποιήσετε το SPI.

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

Όταν αναβοσβήνει ένα πρόγραμμα, πρέπει επίσης να βεβαιωθείτε ότι έχετε ρυθμίσει σωστά τις ασφάλειες στο τσιπ. Αυτά είναι πραγματικά μόνο bits στο τσιπ που έχετε ορίσει για να του πείτε σε ποια ταχύτητα ρολογιού θα λειτουργεί, αν θα διαγραφεί το EEPROM κατά την εγγραφή του τσιπ κ.λπ. είναι πολύ πιο εύκολο να χρησιμοποιήσετε την αριθμομηχανή ασφαλειών που παρέχεται στη διεύθυνση engbedded.com/fusecalc. Επιλέξτε το όνομα τμήματος AVR που χρησιμοποιείτε και επιλέξτε τις επιλογές που θέλετε στην περιοχή "Επιλογή χαρακτηριστικών". Συνήθως βεβαιώνω ότι οι ρυθμίσεις του ρολογιού είναι σωστές και αφήνω τα άλλα πράγματα στην προεπιλογή. Σχεδόν πάντα θα θέλετε να αφήσετε το "Serial programming enabled" CHECKED (Ενεργοποιημένος ο σειριακός προγραμματισμός) και το "Reset Disabled (Απενεργοποίηση επαναφοράς)" - αλλιώς δεν θα μπορείτε να επαναπρογραμματίσετε το τσιπ. Όταν έχετε τις σωστές ρυθμίσεις, μπορείτε να μετακινηθείτε προς τα κάτω στην περιοχή "Τρέχουσες ρυθμίσεις" και να αντιγράψετε τα ορίσματα AVRDUDE όπως φαίνεται στην εικόνα.

Για να ρυθμίσετε τις ασφάλειες, εισαγάγετε την εντολή

sudo avrdude -c linuxspi -P /dev/spidev0.0 -σ

όπου το όνομα μέρους αντιστοιχεί στο τσιπ που χρησιμοποιείτε. Μπορείτε να βρείτε τη λίστα με τα ονόματα των μερών εισάγοντας sudo ardude -c linuxspi -p? Type. Για να αναβοσβήνει το πρόγραμμά σας, βεβαιωθείτε ότι βρίσκεται στον τρέχοντα κατάλογό σας και πληκτρολογήστε

sudo avrdude -c linuxspi -P /dev/spidev0.0 -p -U flash: w:: i

Μετά τις δύο εντολές, το LED θα ανάψει ενώ το τσιπ τροποποιείται.

Βήμα 3: Λήψη προγραμμάτων Arduino σε AVR

Λήψη προγραμμάτων Arduino σε AVR
Λήψη προγραμμάτων Arduino σε AVR
Λήψη προγραμμάτων Arduino σε AVR
Λήψη προγραμμάτων Arduino σε AVR
Λήψη προγραμμάτων Arduino σε AVR
Λήψη προγραμμάτων Arduino σε AVR

Ο κύριος στόχος αυτού του οδηγού είναι να αναβοσβήνει ήδη μεταγλωττισμένα προγράμματα σε τσιπ, όχι πώς να τα γράψετε ή να τα μεταγλωττίσετε. Ωστόσο, ήθελα να εξηγήσω πώς μπορείτε να μεταγλωττίσετε δυαδικά χρησιμοποιώντας το Arduino IDE και να τα μεταφέρετε σε γυμνά τσιπ AVR χρησιμοποιώντας αυτήν τη μέθοδο, αφού το Arduino είναι σχετικά εύκολο να το μάθετε και υπάρχουν τόσα πολλά σεμινάρια και παραδείγματα.

Πρώτον, θα πρέπει να προσθέσετε πληροφορίες σχετικά με τα τσιπ AVR που θα αναβοσβήνουν, έτσι ώστε το IDE να γνωρίζει πώς να τα μεταγλωττίζει. Ο Τζέιμς Σλήμαν συνέθεσε πολύ βοηθητικά μερικά αρχεία εγκατάστασης, τα οποία είναι διαθέσιμα στο github. Για να τα χρησιμοποιήσετε, ανοίξτε το μενού "Προτιμήσεις" στο Arduino IDE και κάντε κλικ στο πλαίσιο δίπλα στο πεδίο "Διευθύνσεις διευθύνσεων πρόσθετων πινάκων". Αντιγράψτε και επικολλήστε τις ακόλουθες διευθύνσεις URL στο παράθυρο διαλόγου που εμφανίζεται:

Στη συνέχεια, μεταβείτε στο μενού "Εργαλεία" και βρείτε την επιλογή "Διαχειριστής πινάκων …" στο υπομενού "Πίνακας". Κάντε κύλιση προς τα κάτω στο κάτω μέρος της λίστας στο παράθυρο διαλόγου Boards Manager και εγκαταστήστε τους πίνακες DIY ATmega και DIY ATtiny.

Για να μεταγλωττίσετε τα προγράμματά σας, βεβαιωθείτε πρώτα ότι έχετε επιλέξει το σωστό τσιπ στο μενού "Επεξεργαστής", καθώς και τη σωστή ταχύτητα επεξεργαστή. Επιλέξτε την επιλογή "Χρήση εκκίνησης: Όχι", καθώς θα ανεβάζουμε απευθείας με το Pi και έτσι μπορούμε να χρησιμοποιήσουμε τον επιπλέον χώρο που κανονικά θα καταλάμβανε ο εκκινητής Arduino. Τώρα, κάντε κλικ στο κουμπί "Επαλήθευση" (το σημάδι ελέγχου). Αυτό θα μεταγλωττίσει το πρόγραμμά σας χωρίς να προσπαθήσετε να το ανεβάσετε (αφού κάνετε αυτό το βήμα μόνοι σας).

Αν υποθέσουμε ότι όλα πάνε καλά, τώρα πρέπει να πάρετε το μεταγλωττισμένο πρόγραμμα στο Pi σας. Το IDE τα κρύβει σε μια προσωρινή τοποθεσία, αφού έχει σχεδιαστεί για να ανεβάζει τα ίδια τα προγράμματα. Στα Windows, βρίσκεται στο AppData/Local/Temp στον κατάλογο χρηστών σας, σε ένα φάκελο που ξεκινά με 'arduino_build'. Αναζητήστε το.hex αρχείο - αυτό είναι το πρόγραμμά σας! Στείλτε το στο Pi σας μέσω FTP ή με USB stick και είστε επαγγελματίες.

Για να γίνει αυτό απαιτείται να έχετε έναν υπολογιστή Windows ή Mac για να μεταγλωττίσετε τα προγράμματά σας, τα οποία στη συνέχεια στέλνετε στο Pi. Θα ήταν πραγματικά λείο να είναι σε θέση να το κάνει αυτό στο ίδιο το Pi, αλλά δυστυχώς η επίσημη έκδοση του Arduino IDE που διατίθεται στο αποθετήριο Raspbian είναι μάλλον παλιά και δεν διαθέτει το Board Manager. Χωρίς αυτό, η προσθήκη των κατάλληλων ρυθμίσεων για μεταγλώττιση για γυμνά AVR είναι λίγο πιο περίπλοκη. Υπάρχουν σεμινάρια για τη σύνταξη μιας πιο πρόσφατης έκδοσης του Arduino στο Pi σας - αν αυτό θέλετε να κάνετε, πηγαίνετε να τα βρείτε! Αισθάνομαι επίσης ότι θα πρέπει να είναι δυνατό να επιτραπεί στο IDE να χρησιμοποιήσει τον προγραμματιστή linuxspi για να αναβοσβήνει ένα τσιπ μέσα από το ίδιο το IDE (δηλαδή χρησιμοποιώντας το κουμπί "λήψη"), αλλά αυτό είναι πέρα από το επίπεδο υπομονής και δεξιοτήτων μου - αν γνωρίζετε τρόπος, δημοσιεύστε το στα σχόλια! Τέλος, μπορείτε απλά να γράψετε προγράμματα απευθείας σε AVR-C και να τα μεταγλωττίσετε στο Pi με avr-gcc, δίνοντάς σας μια πλήρη πλατφόρμα ανάπτυξης AVR στο Raspberry Pi. Έχω κάνει ένα μικρό κομμάτι από αυτό, και αν θέλετε να ακολουθήσετε αυτήν τη διαδρομή, σας χαιρετώ. Λάμψε!

Συνιστάται: