Schritt für Schritt Anleitung zur Mikrocontroller-Programmierung
Dies ist eine Schritt-für-Schritt-Anleitung für diejenigen, die mit der Mikrocontroller-Programmierung beginnen möchten. Der Artikel beginnt mit der Einführung einiger grundlegender Begriffe, die im Handbuch verwendet werden, einer Liste von Tools, Programmiersprachen und am Ende einem Beispiel für einen herunterladbaren Code mit einer Schritt-für-Schritt-Anleitung, mit der Sie die Mikrocontroller-Programmierung üben können.
Aber bevor Sie in die Mikrocontroller-Programmierung eintauchen. Definieren wir die ersten beiden Grundbegriffe: Hardware und Software.
Hardware besteht aus den physischen Komponenten des Systems wie Chips, Tastatur, Maus, Monitor, Speicher und E / A-Geräten. Hardware ist im Vergleich zu Software schwieriger zu entwickeln, muss für sehr spezifische Anwendungen entwickelt werden und ist eine sehr effiziente und perfekte Lösung in Hochgeschwindigkeitssystemen.
Software sind die nicht-physischen Komponenten oder Anwendungen, die auf der Hardware ausgeführt werden, z. B. Betriebssysteme, Computerspiele und Netzwerkanwendungen. Software ist in hohem Maße konfigurierbar, einfach und schneller zu entwickeln und im Vergleich zur Hardware auch sehr günstig.
Was ist ein Mikrocontroller
Um zu verstehen, was ein Mikrocontroller ist, müssen wir zuerst verstehen, was ein Mikroprozessor oder eine CPU ist (Zentraleinheit). Eine CPU ist das Herz eines jeden Computersystems, es ist wie das menschliche Gehirn, wenn es eine Aufgabe ausführt. Wir können es grundsätzlich in zwei wesentliche Teile unterteilen:
Steuereinheit: Diese Einheit wird verwendet, um die Daten aus dem Speicher abzurufen.
Ausführungseinheit: Diese Einheit wird zum Ausführen oder Ausführen der Daten verwendet.
Prozessortypen
Es gibt viele Kategorien von Prozessoren, z. B. Allzweckprozessoren, anwendungsspezifische Systemprozessoren und Multiprozessorsysteme. Allzweckprozessor hat viele Arten:
▪ Mikroprozessor
▪ Mikrocontroller
▪ Eingebetteter Prozessor
▪ Digitaler Signalprozessor
Mikroprozessor ist ein Halbleiterbauelement oder ein Computer auf einem Chip, aber kein voll funktionsfähiger Computer. Seine zentrale Prozessoreinheit enthält
▪ ALU
▪ Programmzähler
▪ Register
▪ Andere Schaltungen (Taktzeit, Interrupt)
Ein Mikrocontroller ist ein IC, der einen Mikroprozessor und einige Peripheriegeräte enthält, um ein vollständiger funktionaler Computer zu sein, Peripheriegeräte, z. B. ADC, RAM, ROM, DAC.
Geschichte des Mikrocontrollers
Ursprünglich war die Intel Corporation der erste Hersteller von Mikrocontrollern. Der erste Mikrocontroller wurde 1971 in den USA produziert. Es war ein 4-Bit-Mikrocontroller mit dem Namen i4004. Zuletzt produzierte Intel in dieser Zeit anspruchsvollere Modelle mit einem 8-Bit-Mikrocontroller und danach wurde ein 12-Bit-Mikrocontroller von Toshiba entwickelt.
Anwendungen von Mikrocontrollern
Mikrocontroller haben viele Anwendungen in vielen Branchen, z. B. Automobil, Medizin, Industrieautomation, Luft- und Raumfahrt, Robotik.
In der Automobilindustrie zum Beispiel verfügen moderne Autos heutzutage über mehr als 100 Mikroprozessoren für Systeme wie Klimaanlage, ABS, EBD und auch ADAS oder fortschrittliche Fahrassistenzsysteme wie adaptive Curies Controller und Lane Assist.
Im medizinischen Bereich gibt es medizinische Geräte, die Mikrocontroller wie ein MRT, ein Glukosetestset und ein tragbares EKG enthalten. Das folgende Bild ist ein Glukosetestgerät.
In der Luft- und Raumfahrt wurden die meisten Flugzeuge mit neuen Avioniksystemen unter Verwendung von Mikrocontrollern entwickelt. Darüber hinaus gibt es Flugsteuerungssysteme, Flugverkehrskontrollsysteme, Navigations- und Wettersysteme, die alle auf Mikrocontrollern basieren.
Beliebte Mikrocontroller
Es gibt viele Arten und Plattformen von Mikrocontrollern, aber die Auswahl eines Mikrocontrollers hängt von vielen Faktoren ab:
▪ Anwendung
▪ Budget
▪ Leistung
▪ Anzahl der GPIO—Pins
▪ Speichergröße
▪ Temperatur der Betriebsumgebung
▪ Stromverbrauch
AVR-Mikrocontroller
Das folgende Bild enthält ein Blockschaltbild von AVE12DA, einer der beliebtesten Mikrocontroller-Familien – dem AVR-Mikrocontroller:
AVR-Mikrocontroller werden von der Atmel Corporation (heute: Microchip), Atmel hat 6 familien von AVR mikrocontroller, 4 familien als allgemeine-zweck mikrocontroller und 2 als spezifische zweck mikrocontroller. Allzweck-Mikrocontroller sind:
▪ 8 Bit – Mega AVR
▪ 8 Bit – AT Tiny
▪ 8 & 16 bit-AVR Xmega
▪ 32 bit-AVR
Spezifische zweck mikrocontroller sind:
▪ Automotive AVR
▪ Batterie Management
Automotive AVR, von seinem namen, es wurde entwickelt für automotive anwendungen. Es kann unter sehr hohen Temperaturen bis zu 150 Celsius arbeiten und enthält Schutzsysteme für Kurzschlussprobleme.
Batterie management mikrocontroller ist entwickelt für batterie management systeme zu sichern laden und entladen operationen.
Beispiele von AVR Plattformen
▪ Arduino UNO
▪ Adafruit Blau obst Micro
▪ Raspduino
▪ Digispark Pro
ARM Mikroprozessor/Mikrocontroller
ARM mikroprozessor ist die beliebteste prozessor in die welt, vor allem in den Consumer-Anwendungen. Sie haben vielleicht ein ARM-Prozessor-basiertes Gerät, aber Sie wissen es nicht! ARM ist meist eine Schlüsselkomponente eines erfolgreichen 32-Bit-Embedded-Systems. Der erste ARM wurde 1985 entwickelt.
RISC Technologie
ARM ist verwendet RISC technologie, RISC steht für reduced instruction set computer, es ist eine design philosophie zu liefern einfache anweisungen innerhalb eines einzigen zyklus. Es hängt mehr von der Software ab. Auf der anderen Seite setzt die CISC-Technologie mehr auf die Hardware.
Die RISC-Technologie konzentriert sich auf die Reduzierung des Befehlssatzes des Prozessors. Auf der anderen Seite hat der CISC-Prozessor eine nicht feste Nummer des Befehlssatzes.
ARM-Funktionen
Arm bietet viele Funktionen für jeden Embedded-System-Designer, z. B. geringer Stromverbrauch aufgrund seiner kompakten Größe, auch hohe Codedichte ist ein weiteres Merkmal Da wir Embedded-Systeme entwickeln, werden wir in den meisten Fällen nur begrenzte Ressourcen haben.
Interne Struktur des ARM-basierten Mikrocontrollers
Diese Abbildung zeigt die interne Struktur der meisten ARM-basierten Geräte:
Die Kästchen repräsentieren Funktionen, die Linien Busse. Lassen Sie uns mehr über jede Komponente im Detail sprechen:
▪ Der ARM-Prozessor ist die Kernkomponente, die für die Verarbeitungsvorgänge verantwortlich ist
▪ Controller werden verwendet, um die Systemfunktionen als Speicher- und Interrupt-Controller zu koordinieren
▪ Peripheriegeräte werden verwendet, um die Systemein- und -ausgänge bereitzustellen
▪ Ein Bus dient zum Datenaustausch zwischen den verschiedenen Komponenten im System
Beispiele für ARM-Plattformen
Es gibt viele Geräte und Embedded-Plattformen, die ARM-Mikroprozessor z.
▪ Arduino Due
▪ Raspberry Pi
▪ STM32F103C8T6
▪ NXP LPC1768
Andere Mikrocontroller und Plattformen
Wie bereits erwähnt, hängt die Auswahl eines Mikrocontrollers oder einer Plattform von vielen Faktoren ab (Budget, Anzahl von Stiften usw.…). Es gibt auch andere Mikrocontroller und Plattformen, z.
▪ PIC-Mikrocontroller
▪ 8051
▪ ESP32
▪ Motorola Mikrocontroller
Mikrocontroller Software und Hardware Werkzeuge
Seit der schaffung der mikrocontroller, es haben viele arten von software und hardware entwicklung werkzeuge. Natürlich können einige der Tools für verschiedene Mikrocontrollertypen verwendet werden, andere sind jedoch sehr spezifisch für jeden Mikrocontroller. Bevor Sie mit der Mikrocontroller-Programmierung beginnen, sollten Sie sich mit den Mikrocontroller-Programmierwerkzeugen und nicht zuletzt mit dem Entwicklungsprozess vertraut machen.
Bei Verwendung eingebetteter Entwicklungstools benötigen wir möglicherweise folgende Tools:
Assembler
Es ist ein Softwaretool, das Ihren Quellcode in Assembly beispielsweise in Maschinencode konvertiert (GNU Assembler).
Compiler
Es ist ein Softwareprogramm, das Ihren Quellcode in einer höheren Programmiersprache in Assemblersprache oder Maschinencode umwandelt. Zusammenstellung kann sein:
▪ Native: Dies bedeutet, dass Sie den Compiler und den generierten Code auf demselben Computer ausführen
▪ Cross: Dies bedeutet, dass Sie den Compiler auf einem Computer ausführen und der generierte Code auf einem anderen Computer ausgeführt wird (Prozessorarchitektur).
Linker und Locator
Ein Linker ist ein Programm, das die Kompilierungen und Assemblierungsvorgänge sammelt und verknüpft und eine einzelne Exe erzeugt.
Ein Locator ist ein Programmwerkzeug, mit dem die Speicherzuordnung der Linkerausgabe geändert werden kann.
Simulator
Es ist ein Programm, das reale Szenario imitiert, erzeugt es eine Annäherung der Echtzeitsysteme. Ein Simulator wird verwendet:
▪ wenn die reale Hardware nicht verfügbar ist
▪ in gefährlichen Testumgebungen und Szenarien
Debugger
Es ist ein Softwareprogramm und Hardwaregerät, das an meinen PC an mein eingebettetes Ziel angeschlossen werden kann. Ein Debugger wird verwendet:
▪ zu set breakpoints
▪ zu verfolgen ausführung
▪ zu dump speicher
Hardware debugger kann
▪ in-circuit-debugger
▪ debug-agent software auf board
Flash loader
Es ist ein Programm und Hardware-Gerät, das verwendet werden kann, um:
▪ Programm ROM/Flash
▪ Uhr variablen
▪ Löschen ROM/Flash
Profiler
Profiler ist ein werkzeug, um monitor leistung der software code
Integrierte Entwicklung Umwelt
Es ist eine software programm, dass hat die meisten die werkzeuge alle in eins. Es kann
▪ Texteditoren
▪ Compiler
▪ Debugger
▪ Profiler
▪ Simulatoren
▪ Linker
Mikrocontroller-Softwaresprachen
Wir können sie klassifizieren in zwei Arten:
High-Level
▪ C / C ++
▪ Java
▪ Ada
Die Verwendung dieses Typs bietet eine Abstraktion von der Hardwareebene
Low-Level
Maschinencode
Es ist 0 und 1s und schwer von Menschen geschrieben werden, aber leicht für Computer zu verstehen
Assembly
Es ist ein mnemonischer Code und Pseudoanweisungen zur Verbesserung der Lesbarkeit
Beispiele:
Eine Anweisung besteht aus Mnemonic (Opcode) + Operanden
Opcode ist eine Operation, die von einem Maschinenprozessor ausgeführt wird
Operanden ist das endgültige Ziel; Der Opcode muss eine Operation ausführen.
Assemblersprache ist besser lesbar und verständlich als Maschinencode, aber Sie müssen sie auf einem bestimmten Prozessor verwenden und über Kenntnisse ihrer Architektur verfügen.
C/C ++ Programmierung Sprachen
High-level-sprachen haben die folgenden eigenschaften
▪ Einfach zu schreiben
▪ Flexible
▪ Prozessor unabhängige
▪ Hohe produktivität
Mikrocontroller Programmierung Beispiel Mit AVR ATMEGA16
ATmega 16 hat die folgenden eigenschaften:
▪ 16 Kb In-system Selbst programmierbare flash speicher
▪ 512 Bytes EEPROM
▪ 1 Kbyte Interne SRAM
▪ Programmierung Schloss für sicherheit
Peripherie Eigenschaften
▪ Echtzeit Zähler mit Separaten Oszillator
▪ Programmierbare Serielle USART
▪ Vier PWM Kanäle
▪ 8-kanal, 10-bit ADC
▪ Auf-chip Oszillator
▪ Power-auf Rest und Brown-out Erkennung
▪ Interne RC Oszillator und Unterbrechen Quellen
▪ Spannungen (von 2,7 v bis 5.5v)
LED-Blinkprogramm Beispiel mit ATmeg16 und Proteus
LED-Blinkprogramm in eingebetteten Systemen wie dem „hello World“ -Programm in der Anwendungsentwicklung. Im folgenden Beispiel lernen Sie den Proteus-Simulator kennen und verwenden ihn, um Ihr erstes Programm auszuführen. Um die Quelldateien herunterzuladen, gehen Sie bitte in diesen Ordner.
Schreiben Sie Ihr Programm mit Atmel studio
Nachdem Sie Ihre IDE heruntergeladen haben,
Öffnen Sie es und wählen Sie neues Projekt und wählen Sie den Speicherort der Hex-Datei wie im folgenden Bild
Der nächste Schritt ist die Auswahl der Mikrocontroller-Familie
Danach erhalten Sie das folgende Fenster mit Startercode
Und jetzt schreiben Sie bitte die folgenden code
Der nächste schritt ist gebäude ihre programm durch drücken von F7
Nach, dass sie finden die hex datei auf die gewählte position
Der nächste Schritt ist die Verwendung des Proteus-Simulators
Erstellen Sie nun einen Schaltplan aus der ausgewählten a-Vorlage
Und wählen Sie Kein PCB-Layout erstellen
Schließlich sind wir fertig, aber wir müssen die Hex-Datei wie im folgenden Bild hinzufügen
Jetzt bearbeiten CKSEL Sicherungen
Speichern und klicken Sie auf play
Und Sie können sehen, dass die LED für 500ms (linke Seite) und für 500ms (rechte Seite) aus ist)
Programmerklärung Zeile für Zeile
Um die Quelldateien herunterzuladen, gehen Sie bitte in diesen Ordner.
#define f_CPU 100000UL // um eine Konstante zu erstellen und die Prozessorgeschwindigkeit zu wählen
#include <avr/io.h> // Abrufen einiger Dateien für Ein- und Ausgänge
#include <avr/delay.h> // Rufen Sie diese Datei auf, um Verzögerungsfunktionen zu verwenden
int main(void){ // die Startfunktion und das Hauptprogramm
DDRA = 0b0000001; // um den Pin a als Ausgang zu konfigurieren / /
While(1){ // um für immer zu schleifen
PORTA = 0b00000001 ; // zu machen die PA0 = 1 und ausgang 5 v (LED ist auf)
_delay_ms (500); // verzögerung für eine halbe sekunde
PA = 0b0000000; // zu machen die PA0 = 0 und ausgang 0 v (LED ist off)
_delay_ms (500); //verzögerung für eine halbe sekunde
}
rückkehr 0;
} // ende des Programms
Fazit
Heutzutage werden eingebettete Systeme in lebenswichtigen Produkten verwendet und können verwendet werden, um viele Menschen zu sichern und zu retten, wie im medizinischen Bereich und in anderen Anwendungen. Sie sollten weiter lernen, nachdem Sie einen Überblick und eine Einführung in die Mikrocontroller-Programmierung erhalten haben. Ihr nächster Schritt sollte das Erlernen von Embedded-Software-Design und echtzeitgesteuerten Systemen sein.
https://www.faa.gov/regulations_policies/handbooks_manuals/aviation/phak/
AVR-Mikrocontroller und eingebettete Systeme: Pearson New International Edition: Verwenden von Assembly und C, Muhammad Ali Mazidi, DeVry University
ARM System Developer’s Guide Entwerfen und Optimieren von Systemsoftware Ein Band in der Morgan Kaufmann-Reihe in Computer Architecture and Design Book • 2004