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

Ξεκινώντας με το Bascom AVR: 5 βήματα
Ξεκινώντας με το Bascom AVR: 5 βήματα

Βίντεο: Ξεκινώντας με το Bascom AVR: 5 βήματα

Βίντεο: Ξεκινώντας με το Bascom AVR: 5 βήματα
Βίντεο: 🎥🌎Видения Золотого Века🎥🌎Красивая подборка исторических фотографий 2024, Ιούλιος
Anonim
Ξεκινώντας με το Bascom AVR
Ξεκινώντας με το Bascom AVR

Αυτή είναι η αρχή μιας σειράς που θα σας διδάξει να προγραμματίζετε τον μικροελεγκτή AVR με το Bascom AVR.

Γιατί το κάνω αυτό.

Μπορείτε να φτιάξετε τα περισσότερα δείγματα προγράμματος αυτής της σειράς με το Arduino.

Κάποια πιο εύκολα και κάποια πιο δύσκολα, αλλά στο τέλος και τα δύο θα λειτουργούν στον ίδιο ελεγκτή.

Αλλά ο τρόπος προγραμματισμού είναι διαφορετικός σε κάθε περιβάλλον ανάπτυξης. Το Arduino χρειάζεται μια βιβλιοθήκη για τα πάντα εκτός από τις βασικές λειτουργίες. Η Bascom συνεργάζεται επίσης με βιβλιοθήκες, αλλά σπάνια πρέπει να συμπεριλάβω μία. Με το Arduino, όλες οι συγκεκριμένες ρυθμίσεις υλικού πραγματοποιούνται μέσω των βιβλιοθηκών. έχετε πολύ μικρή επιρροή στην πραγματική ισχύ του μικροελεγκτή. Ξεκινώντας από τα χρονόμετρα που διαθέτει ο ελεγκτής. με arduino χρειάζεστε ξανά μια βιβλιοθήκη. εάν έχετε το χρονόμετρο μέχρι να λειτουργήσει, μπορεί να είναι μια άλλη βιβλιοθήκη που συγκρούεται με τις ρυθμίσεις σας. Στη bascom έχετε δωρεάν πρόσβαση σε όλο το υλικό, συμπεριλαμβανομένου του τομέα εκκίνησης που καταλαμβάνεται από το arduino. για παράδειγμα, ορισμένες βιβλιοθήκες της bascom σας ρωτούν ποιο χρονόμετρο θέλετε να χρησιμοποιήσετε. Από την άλλη πλευρά, δεδομένου ότι το arduino διευκολύνει πολύ τη δημιουργία μιας βιβλιοθήκης, το κάνει φυσικά μια πλατφόρμα όπου το νέο υλικό και οι αισθητήρες έχουν συνήθως μια βιβλιοθήκη απευθείας. αυτό που συνδέεται συχνά με πολλή έρευνα στη bascom και τις λειτουργίες που θα αναλάμβανε μια βιβλιοθήκη θα πρέπει στη συνέχεια να ενσωματωθούν επιμελώς στον κώδικα του προγράμματος. αλλά καλά νέα η κοινότητα bascom είναι επίσης πολύ μεγάλη, γι 'αυτό υπάρχει λύση για κάθε ιδέα.

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

αλλά γιατί κάνω αυτή τη σειρά. αφενός εξοικονομεί πολλά χρήματα. Δεν χρειάζεται να αγοράσω έναν πίνακα arduino για κάθε έργο. Για παράδειγμα: Ένα noname Arduino uno κοστίζει περίπου 12 € το χειριστήριο που είναι σε αυτό κοστίζει μόλις 2,5 € με το ελάχιστο κύκλωμα που απαιτείται για μια σταθερή λειτουργία, κοστίζει περίπου 4 €. Από την άλλη πλευρά, έχετε την πλήρη επιλογή των chr avr που υποστηρίζονται διαθέσιμα. atmegas 8 έως 256 και attiny 8 έως 2313 και πολλούς τύπους xmega για τους οποίους δεν έχω εμπειρία. Εάν θέλετε απλώς να χρησιμοποιήσετε έναν σερβο και έναν υπερηχητικό αισθητήρα που μπορεί να αναγνωρίσει ένα χέρι, για παράδειγμα, και στη συνέχεια να ανοίξετε ένα καπάκι ενός κάδου απορριμμάτων, μπορείτε να χρησιμοποιήσετε το μικρότερο δυνατό τσιπ. Υπάρχουν λοιπόν πολλοί λόγοι για να μάθετε μια δεύτερη γλώσσα.

Ας ξεκινήσουμε λοιπόν

Προμήθειες

Αυτή είναι μια λίστα με τα ελάχιστα απαιτούμενα μέρη για σταθερή λειτουργία του τσιπ και προγραμματισμού.

Breadboard για δοκιμή

Atmega 8-16PU (καλύτερα να αγοράσετε 2 ή 3 αν τα σκοτώσετε κατά λάθος)

7805 ρυθμιστής τάσης 5V

Αντίσταση 10Kohm

Πυκνωτής μεμβράνης 100nF

Ηλεκτρολυτικός πυκνωτής 10μF

Ηλεκτρολυτικός πυκνωτής 100μF

μερικά καλώδια για σανίδα ψωμιού

Windows PC 7/8/8.1/10

Προγραμματιστής ISP (θα χρησιμοποιήσω εδώ το USBasp που μπορείτε να το αγοράσετε στο amazon για λίγα χρήματα)

Bascom AVR (μπορείτε να κατεβάσετε εδώ ένα DEMO. Όλες οι λειτουργίες ξεκλειδώνονται, αλλά μπορείτε να γράψετε κώδικα μόνο μέχρι το μέγεθος 4Kb που είναι αρκετό για πολλούς κώδικες).

Προαιρετικά μέρη:

LED με αντιστάσεις

διακόπτες ώθησης

μέρη του έργου

Βήμα 1: Εγκατάσταση Bascom και Εγκατάσταση

Εγκατάσταση Bascom και Setup
Εγκατάσταση Bascom και Setup
Εγκατάσταση Bascom και Setup
Εγκατάσταση Bascom και Setup
Εγκατάσταση Bascom και Setup
Εγκατάσταση Bascom και Setup

Κατεβάστε το αρχείο και εγκαταστήστε το Bascom AVR. Εγκαταστήστε όλα τα μέρη του, συμπεριλαμβανομένου του τελευταίου πλαισίου ελέγχου μετά την εγκατάσταση.

Μετά από αυτό, επανεκκινήστε τον υπολογιστή σας, διαφορετικά το bascom δεν θα ξεκινήσει.

Μετά την επανεκκίνηση ξεκινήστε το bascom.

Μεταβείτε στις Επιλογές -> Προγραμματιστής και επιλέξτε USBasp από τη λίστα, αποθηκεύστε τις ρυθμίσεις και κλείστε το Bascom.

Χρησιμοποιήστε αυτό το πρόγραμμα για να εγκαταστήσετε το usbasp. Μετά από αυτό, κάντε επανεκκίνηση του υπολογιστή σας ξανά. Τώρα συνδέστε το USBasp με τον υπολογιστή σας και ξεκινήστε τη διαχείριση συσκευών. Το USBasp πρέπει να εμφανίζεται στις συσκευές libusb.

Stat Bascom ξανά και δημιουργήστε ένα νέο αρχείο. Αποθηκεύστε το στον υπολογιστή σας και πατήστε το κουμπί F7 στο πληκτρολόγιό σας.

Ο μεταγλωττιστής ξεκινά και μεταγλωττίζει το κενό πρόγραμμα. Τώρα μπορείτε να δοκιμάσετε τη λειτουργικότητα του προγραμματιστή.

Πατήστε το κουμπί F4 στο πληκτρολόγιό σας για να ξεκινήσει το παράθυρο προγραμματιστή. Τώρα μεταβείτε στο τσιπ -> ταυτοποίηση για να ξεκινήσετε μια αλληλεπίδραση. Οι λυχνίες LED από το USBasp θα πρέπει τώρα να αναβοσβήνουν σύντομα. Θα πρέπει να λάβετε ένα μήνυμα όπως το chip Id FFFFFF δεν μπορούσε να διαβάσει τη συσκευή. Αυτό είναι ένα καλό σημάδι ότι ο προγραμματιστής λειτουργεί αλλά δεν βρήκε τσιπ.

Τώρα μπορούμε να αρχίσουμε να κατασκευάζουμε το πρώτο κύκλωμα.

Βήμα 2: Ας ρίξουμε μια πιο προσεκτική ματιά στο τσιπ

Ας ρίξουμε μια πιο προσεκτική ματιά στο τσιπ
Ας ρίξουμε μια πιο προσεκτική ματιά στο τσιπ

Αν κοιτάξετε το pinout του τσιπ φαίνεται ότι το τσιπ δεν έχει καμία ομοιότητα με τον πίνακα arduino. Σίγουρα, χρησιμοποιούμε ένα Atmega8 και στο Arduino uno είναι ένα Atmega328. Αλλά το Pinout είναι σχεδόν το ίδιο, αλλά το τσιπ του πίνακα Arduino Uno έχει περισσότερες λειτουργίες. Εδώ τα ονόματα των καρφιτσών. Το VCC και το GND είναι οι ακίδες για την παροχή ρεύματος.

Τα AREF και AVCC είναι ακίδες για την τάση αναφοράς και την παροχή ρεύματος για τον μετατροπέα αναλογικού σε ψηφιακό.

Τα PB 0-7 PC 0-6 PD 0-7 είναι ακροδέκτες εξόδου γενικής χρήσης με πολλαπλή χωρητικότητα.

το reset pin είναι αυτό που λέει το όνομα. Για επανεκκίνηση του τσιπ. Η γραμμή πάνω από το όνομα επαναφοράς σημαίνει άρνηση. Αυτό σημαίνει ότι, για να επαναφέρετε το τσιπ, πρέπει να το κατεβάσετε στα 0V.

Για τις ακόλουθες καρφίτσες, έρχονται σύντομα ξεχωριστά εγχειρίδια.

Τα RXD TXD είναι ακίδες υλικού για σειριακή επικοινωνία UART.

Τα INT0 INT1 είναι καρφίτσες διακοπής υλικού

XCK /T0 UART Πηγή ρολογιού /Χρονόμετρο /Counter0 Πηγή ρολογιού

Οι ακίδες XTAL /TOSC προορίζονται για εξωτερικό κρύσταλλο έως 16MHz (διαφορετικά μοντέλα έως 20MHz) /ακίδες για κρύσταλλο για εσωτερικό RTC

Το Τ1 είναι παρόμοιο με το Τ0

Οι ακίδες AIN είναι για τον αναλογικό συγκριτή

Το ICP1 είναι παρόμοιο με το T0/T1

Το OC1A είναι η ακίδα εξόδου υλικού για το χρονόμετρο pwm1 κανάλι Α

SS / OC2 chip select pin for SPI / like OC1B but channel B

MOSI MISO SCK / OC2 είναι οι ακίδες SPI υλικού και οι ακίδες για προγραμματισμό / χρονοδιακόπτη εξόδου PWM2

ADC0 έως ADC5 είναι οι αναλογικές είσοδοι

Οι SDA SCL είναι οι ακίδες για υλικό I2C

Το κανονικό τσιπ μπορεί να λειτουργήσει από 4, 5V έως 5, 5V το Atmega 8L μπορεί να λειτουργήσει με πολύ χαμηλότερη τάση.

Βλέπετε ότι ακόμη και αυτό το τσιπ μπορεί να κάνει περισσότερα από όσα φαίνεται να μην μπορεί να κάνει ένα Arduino Uno. Αλλά το Arduino μπορεί επίσης να το κάνει, δεν έχετε παρά να το προγραμματίσετε.

Βήμα 3: Το πρώτο κύκλωμα

Το πρώτο κύκλωμα
Το πρώτο κύκλωμα
Το πρώτο κύκλωμα
Το πρώτο κύκλωμα

Τώρα ήρθε η ώρα να φτιάξετε το πρώτο σας κύκλωμα.

Τι είναι συνήθως το πρώτο κύκλωμα; Σωστά! Ας αναβοσβήνει ένα LED.

Το LED είναι συνδεδεμένο με PB0. Η αντίσταση δίπλα στο τσιπ έχει 10k Ohms.

Η αντίσταση δίπλα στο LED έχει 470 Ohms.

Τώρα μπορείτε να συνδέσετε το USBasp με το Atmega όπως φαίνεται στην εικόνα.

Αλλά πριν ενεργοποιήσετε την τροφοδοσία, αφήστε μας να γράψουμε το πρόγραμμα.

Βήμα 4: Γράψτε το πρώτο πρόγραμμα

Γράψτε το πρώτο πρόγραμμα
Γράψτε το πρώτο πρόγραμμα

Δημιουργήστε ένα νέο αρχείο στο Bascom και πληκτρολογήστε το ακόλουθο κείμενο.

$ regfile "m8def.dat"

$ crystal = 1000000 config portb.0 = έξοδος do portb.0 = 1 αναμονή 1 portb.0 = 0 αναμονή 1 βρόχος

μετά το μεταγλωττίστε πατώντας F7 στο πληκτρολόγιό σας.

Τώρα μπορούμε να προγραμματίσουμε το τσιπ πατώντας F4. Εμφανίζεται το παράθυρο προγραμματιστή. Τώρα ήρθε η ώρα να ενεργοποιήσετε τη δύναμη από το breadboard. Θα πρέπει να εφαρμόσετε κάτι μεταξύ 6 και 12 Volt.

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

Το LED πρέπει να αναβοσβήνει σε συχνότητα ενός δευτερολέπτου.

Τώρα ρίξτε μια πιο προσεκτική ματιά στο πρόγραμμα για να κατανοήσετε τη σύνταξη.

$ regfile "m8def.dat"

κρύσταλλο $ = 1000000

με $ regfile λέμε στον μεταγλωττιστή τον τύπο του χρησιμοποιούμενου τσιπ, το όνομα του τσιπ Arduino θα είναι "m328pdef.dat"

με $ κρύσταλλο του λέμε την ταχύτητα του cpu περίπου 1MHz.

config portb.0 = Έξοδος

Αυτό σημαίνει ότι το PB0 πρέπει να λειτουργεί ως έξοδος.

Παρεμπιπτόντως, η συντομογραφία PB0 σημαίνει θύρα B bit 0. Το τσιπ χωρίζεται σε πολλές θύρες. Σε κάθε θύρα δίνεται ένα γράμμα για σαφή αναγνώριση. και κάθε portpin λίγο από 0 έως 7. Για παράδειγμα, μπορώ να γράψω ένα πλήρες byte στον καταχωρητή εξόδου θύρας, το οποίο θα εξάγεται μέσω των μεμονωμένων ακίδων θύρας.

κάνω

βρόχος

Αυτό σημαίνει στο Arduino η δήλωση void loop. Όλες αυτές οι δύο εντολές θα επαναληφθούν για πάντα. (με ορισμένες εξαιρέσεις αλλά αργότερα περισσότερα για αυτό)

Portb.0 = 1

περιμένετε 1 portb.0 = 0 περιμένετε 1

Εδώ ερμηνεύουμε το αναβοσβήσιμο του led.

Το Portb.0 = 1 λέει στο τσιπ να αλλάξει την έξοδο PB0 σε 5V

η εντολή αναμονής 1 αφήστε το τσιπ να περιμένει για ένα δευτερόλεπτο. Εάν θέλετε να αλλάξετε το led πιο γρήγορα πρέπει να αντικαταστήσετε την εντολή αναμονής με αναμονή τώρα μπορείτε να εισάγετε λίγο χρόνο σε χιλιοστά του δευτερολέπτου π.χ. περιμένει 500. (waitus σημαίνει αναμονή σε νανοδευτερόλεπτα)

Το Portb.0 = 0 λέει στο τσιπ να αλλάξει την έξοδο PB0 σε 0V.

Βήμα 5: Προσθέστε ένα κουμπί για να χρησιμοποιήσετε εισόδους

Προσθέστε ένα κουμπί για τη χρήση εισόδων
Προσθέστε ένα κουμπί για τη χρήση εισόδων

Τώρα προσθέτουμε ένα κουμπί για να ανάψει το led εάν πατηθεί το κουμπί.

Τοποθετήστε το κουμπί όπως φαίνεται στην εικόνα.

πληκτρολογήστε τώρα το πρόγραμμα παρακολούθησης.

$ regfile "m8def.dat"

$ crystal = 1000000 config portb.0 = output config portd.7 = input Portd.7 = 1 do if pind.7 = 0 then portb.0 = 1 else portb.0 = 0 loop

Αν ανεβάσετε αυτό το πρόγραμμα στο τσιπ, το led ανάβει μόνο όταν πατήσετε το κουμπί. Μα γιατί?

το πρόγραμμα ξεκινάει πανομοιότυπα με το προηγούμενο μέχρι

config portd.7 = είσοδος. Αυτό σημαίνει ότι ο ακροδέκτης PD7 που συνδέθηκε με το κουμπί λειτουργεί ως είσοδος.

Το Portd.7 = 1 δεν μετατρέπει τον πείρο σε υψηλό, αλλά ενεργοποιεί την εσωτερική αντίσταση έλξης του Atmega.

Το if statemend φαίνεται λίγο περίεργο αν έχετε συνηθίσει στο arduino.

εάν χρησιμοποιείτε τη δήλωση if πρέπει να χρησιμοποιήσετε τη δήλωση "τότε". Σε αυτό το δείγμα η δήλωση if χρησιμοποιείται για μεμονωμένες λειτουργίες εντολών. Εάν θέλετε να χρησιμοποιήσετε περισσότερες εντολές, πρέπει να το γράψετε έτσι.

αν pind.7 = 0 τότε

portb.0 = 1 κάποιος κωδικός κάποιος κωδικός άλλος κωδικός portb.0 = 0 τέλος αν

για αυτήν τη χρήση της δήλωσης if πρέπει να χρησιμοποιήσετε τη δήλωση "τέλος αν" στο τέλος.

αυτό που είναι ακόμα σημαντικό. Σως το έχετε ήδη δει. οι είσοδοι δεν ερωτώνται με portx.x, αλλά με pinx.x. Μπορείτε εύκολα να το θυμηθείτε. Οι έξοδοι έχουν το "o" (θύρα) στη λέξη και οι είσοδοι έχουν το "i" (καρφίτσα).

Τώρα είναι η σειρά σας να παίξετε λίγο.

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

Αν σας αρέσει το διδακτικό μου και θέλετε περισσότερα πείτε μου στα σχόλια.

Συνιστάται: