Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Installation von Bascom und Setup
- Schritt 2: Schauen wir uns den Chip genauer an
- Schritt 3: Der erste Stromkreis
- Schritt 4: Schreiben Sie das erste Programm
- Schritt 5: Fügen Sie eine Schaltfläche hinzu, um Eingaben zu verwenden
Video: Erste Schritte mit Bascom AVR - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:15
Dies ist der Beginn einer Serie, in der Sie lernen, Ihren AVR-Mikrocontroller mit Bascom AVR zu programmieren.
Warum ich das tue.
Die meisten Programmbeispiele in dieser Serie können Sie mit Arduino erstellen.
Manche einfacher und manche schwieriger, aber am Ende laufen beide auf demselben Controller.
Aber die Art der Programmierung ist in jeder Entwicklungsumgebung anders. Arduino benötigt für alles außer den Grundfunktionen eine Bibliothek. Bascom arbeitet auch mit Bibliotheken, aber ich muss selten eine einbinden. Bei Arduino werden alle hardwarespezifischen Einstellungen über die Bibliotheken vorgenommen. Sie haben sehr wenig Einfluss auf die tatsächliche Leistung des Mikrocontrollers. Angefangen bei den Timern, die der Controller hat. mit arduino brauchst du wieder eine Bibliothek. Wenn Sie den Timer haben, bis er funktioniert, kann es sein, dass eine andere Bibliothek mit Ihren Einstellungen kollidiert. Bei bascom haben Sie freien Zugriff auf die komplette Hardware inklusive des von arduino belegten Bootsektors. Beispielsweise fragen Sie einige Bibliotheken bei bascom, welchen Timer Sie verwenden möchten. Auf der anderen Seite, da Arduino es sehr einfach macht, eine Bibliothek selbst zu erstellen, ist es natürlich eine Plattform, auf der neue Hardware und Sensoren normalerweise direkt eine Bibliothek haben. was bei bascom oft mit viel recherche verbunden ist und die funktionen, die normalerweise eine bibliothek übernehmen würde, muss dann mühsam in den programmcode eingearbeitet werden. aber gute nachrichten auch die bascom-Community ist sehr groß, deshalb gibt es für jede idee eine lösung.
Es hängt also teils vom Projekt ab, was für eine Entwicklungsumgebung verwendet wird und teils vom Know-how des Programmierers.
aber warum mache ich diese serie. Einerseits spart es viel Geld. Ich muss nicht für jedes Projekt ein Arduino-Board kaufen. Zum Beispiel: Ein noname Arduino uno kostet ca. 12 € der Controller der drauf ist kostet gerade mal 2,5 € mit dem minimalen Schaltungsaufwand für eine stabile Funktion kostet er ca. 4 €. Andererseits steht Ihnen die komplette Auswahl an unterstützten AVR-Chips zur Verfügung. atmegas 8 bis 256 und attiny 8 bis 2313 und viele xmega-Typen, mit denen ich keine Erfahrung habe. Wenn Sie nur ein Servo und einen Ultraschallsensor verwenden möchten, der beispielsweise eine Hand erkennen kann, und dann einen Deckel eines Mülleimers öffnen, können Sie den kleinstmöglichen Chip verwenden. Es gibt also viele Gründe, eine zweite Sprache zu lernen.
Also lasst uns anfangen
Lieferungen
Dies ist eine Liste der minimal erforderlichen Teile für einen stabilen Betrieb des Chips und die Programmierung.
Steckbrett zum Testen
Atmega 8-16PU (besser kaufen Sie 2 oder 3, wenn Sie sie versehentlich töten)
7805 5V Spannungsregler
10Kohm Widerstand
100nF Filmkondensator
10µF Elektrolytkondensator
100µF Elektrolytkondensator
einige Drähte für Steckbrett
Windows-PC 7/8/8.1/10
ISP-Programmer (ich werde hier den USBasp verwenden, den Sie für wenig Geld bei Amazon kaufen können)
Bascom AVR (Sie können hier eine DEMO herunterladen. Alle Funktionen sind freigeschaltet, aber Sie können Code nur bis zu einer Größe von 4Kb schreiben, die für viel Code ausreicht).
Optionale Teile:
LED´s mit Widerständen
Druckschalter
projektspezifische Teile
Schritt 1: Installation von Bascom und Setup
Laden Sie die Datei herunter und installieren Sie Bascom AVR. Installieren Sie alle Teile davon, einschließlich des letzten Kontrollkästchens nach der Installation.
Danach starten Sie Ihren PC neu, sonst startet bascom nicht.
Nach dem Neustart starten Sie bascom.
Gehen Sie zu Optionen -> Programmer und wählen Sie USBasp aus der Liste, speichern Sie die Einstellungen und schließen Sie Bascom.
Verwenden Sie dieses Programm, um usbasp zu installieren. Starten Sie danach Ihren PC neu. Verbinden Sie nun den USBasp mit Ihrem PC und starten Sie den Gerätemanager. Bei den libusb-Geräten sollte USBasp erscheinen.
Stat Bascom erneut und erstellen Sie eine neue Datei. Speichern Sie es auf Ihrem PC und drücken Sie die F7-Taste auf Ihrer Tastatur.
Der Compiler startet und kompiliert das leere Programm. Jetzt können Sie die Funktionalität des Programmiergeräts testen.
Drücken Sie die F4-Taste auf Ihrer Tastatur, um das Programmierfenster zu starten. Gehen Sie nun zu Chip -> Identifizieren, um eine Interaktion zu starten. Die LED`s vom USBasp sollten nun kurz blinken. Sie sollten eine Meldung erhalten, wie die Chip-ID FFFFFF konnte das Gerät nicht lesen. Das ist ein gutes Zeichen, dass der Programmierer funktioniert, aber keinen Chip gefunden hat.
Jetzt können wir mit dem Bau der ersten Schaltung beginnen.
Schritt 2: Schauen wir uns den Chip genauer an
Wenn Sie sich die Pinbelegung des Chips ansehen, scheint der Chip keine Ähnlichkeit mit dem Arduino-Board zu haben. Klar, wir verwenden einen Atmega8 und auf dem Arduino uno ist ein Atmega328. Aber die Pinbelegung ist fast die gleiche, aber der Chip des Arduino Uno Boards hat mehr Funktionen. Hier die Namen der Pins. VCC und GND sind die Pins für die Stromversorgung.
AREF und AVCC sind Pins für die Referenzspannung und Stromversorgung für den Analog-Digital-Wandler.
PB 0-7 PC 0-6 PD 0-7 sind Mehrzweck-Eingangs-Ausgangs-Pins mit Mehrfachbelegung.
Reset-Pin ist das, was der Name sagt. Um den Chip neu zu starten. Die Zeile über dem Reset-Namen bedeutet Negation. Das heißt, um den Chip zurückzusetzen, müssen Sie ihn auf 0V ziehen.
Für die folgenden Pins kommen in Kürze separate Anleitungen.
RXD TXD sind Hardware-Pins für die serielle UART-Kommunikation.
INT0 INT1 sind Hardware-Interrupt-Pins
XCK /T0 UART Taktquelle / Timer/Counter0 Taktquelle
XTAL /TOSC-Pins sind für einen externen Quarz bis 16MHz (verschiedene Modelle bis 20MHz) /Kristall-Pins für einen internen RTC
T1 ist ähnlich zu T0
AIN-Pins sind für den analogen Komparator
ICP1 ist ähnlich zu T0/T1
OC1A ist der Hardware-Ausgangspin für PWM-Timer1-Kanal A
SS / OC2 Chipauswahlpin für SPI / wie OC1B aber Kanal B
MOSI MISO SCK/OC2 sind die Hardware-SPI-Pins und die Pins für die Programmierung des /PWM-Ausgangstimers2
ADC0 bis ADC5 sind die analogen Eingänge
SDA SCL sind die Pins für Hardware I2C
Der normale Chip kann von 4, 5V bis 5, 5V arbeiten, der Atmega 8L kann mit viel niedrigerer Spannung arbeiten.
Sie sehen, selbst dieser Chip kann mehr, als ein Arduino Uno nicht kann. Aber der Arduino kann es auch, man muss ihn nur programmieren.
Schritt 3: Der erste Stromkreis
Jetzt ist es an der Zeit, Ihre erste Schaltung zu bauen.
Was ist normalerweise die erste Schaltung? Rechts! Lassen Sie uns eine LED blinken.
Die LED ist mit PB0 verbunden. Der Widerstand neben dem Chip hat 10k Ohm.
Der Widerstand neben der LED hat 470 Ohm.
Nun können Sie den USBasp wie im Bild gezeigt mit dem Atmega verbinden.
Aber bevor Sie den Strom einschalten, lassen Sie uns das Programm schreiben.
Schritt 4: Schreiben Sie das erste Programm
Erstellen Sie eine neue Datei in Bascom und geben Sie den folgenden Text ein.
$regfile "m8def.dat"
$crystal = 1000000 config portb.0 = Ausgabe do portb.0 = 1 warten 1 portb.0 = 0 warten 1 Schleife
Danach kompilieren Sie es, indem Sie F7 auf Ihrer Tastatur drücken.
Jetzt können wir den Chip durch Drücken von F4 programmieren. Das Programmierfenster erscheint. Jetzt ist es an der Zeit, den Strom vom Steckbrett aus einzuschalten. Sie sollten etwas zwischen 6 und 12 Volt anlegen.
Gehen Sie nun zu Chip -> Autoprogramm. Wenn sich das Programmierfenster automatisch schließt, war die Programmierung erfolgreich.
Die LED sollte im Sekundentakt blinken.
Schauen Sie sich das Programm nun genauer an, um die Syntax zu verstehen.
$regfile "m8def.dat"
$kristall = 1000000
mit $regfile teilen wir dem Compiler den Typ des verwendeten Chips mit, der Name des Arduino-Chips wäre "m328pdef.dat"
mit $crystal teilen wir ihm die CPU-Geschwindigkeit von etwa 1MHz mit.
config portb.0 = Ausgang
das bedeutet, dass PB0 als Ausgang fungieren sollte.
Die Abkürzung PB0 bedeutet übrigens Port B Bit 0. Der Chip ist in mehrere Ports aufgeteilt. Jeder Port erhält zur eindeutigen Identifizierung einen Buchstaben. und jedem Portpin ein Bit von 0 bis 7. Ich kann zum Beispiel ein komplettes Byte in das Port-Ausgangsregister schreiben, das über die einzelnen Port-Pins ausgegeben wird.
tun
Schleife
Dies ist, was in Arduino die void-Schleife-Anweisung bedeutet. Alle zwischen diesen beiden Befehlen werden für immer wiederholt. (mit einigen Ausnahmen aber dazu später mehr)
Portb.0 = 1
warte 1 portb.0 = 0 warte 1
Hier erzeugen wir das Blinken der LED.
Portb.0 = 1 weist den Chip an, den Ausgang PB0 auf 5V. zu schalten
der Befehl wait 1 lässt den Chip eine Sekunde warten. Wenn Sie die LED schneller schalten möchten, müssen Sie jetzt den wait-Befehl durch waitms ersetzen. Sie können jetzt eine Zeit in Millisekunden eingeben, z. waitms 500. (waitus bedeutet warten in Nanosekunden)
Portb.0 = 0 weist den Chip an, den Ausgang PB0 auf 0V zu schalten.
Schritt 5: Fügen Sie eine Schaltfläche hinzu, um Eingaben zu verwenden
Jetzt fügen wir eine Taste hinzu, um die LED aufleuchten zu lassen, wenn die Taste gedrückt wird.
Fügen Sie die Schaltfläche wie im Bild gezeigt ein.
Geben Sie nun das folgende Programm ein.
$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
Wenn Sie dieses Programm auf den Chip hochladen, leuchtet die LED nur auf, wenn die Taste gedrückt wird. Aber warum?
das Programm startet identisch wie das letzte bis
config portd.7 = Eingabe. Das heißt, der mit dem Taster verbundene Pin PD7 fungiert als Eingang.
Portd.7 = 1 schaltet den Pin nicht auf High, aktiviert aber den internen Pull-Up-Widerstand des Atmega.
Die if-Anweisung sieht etwas seltsam aus, wenn Sie an Arduino gewöhnt sind.
Wenn Sie die if-Anweisung verwenden, müssen Sie die "then"-Anweisung verwenden. In diesem Beispiel wird die if-Anweisung für Einzelbefehlsoperationen verwendet. Wenn Sie mehr Befehle verwenden möchten, müssen Sie es so schreiben.
wenn pind.7=0 dann
portb.0=1 etwas Code etwas Code etwas Code sonst portb.0 = 0 end if
für diese Verwendung der if-Anweisung müssen Sie die "end if"-Anweisung am Ende verwenden.
was noch wichtig ist. Vielleicht hast du es schon gesehen. die Eingänge werden nicht mit portx.x abgefragt, sondern mit pinx.x. Das kannst du dir leicht merken. Ausgänge haben das "o" (Port) im Wort und Eingänge haben das "i" (Pin).
Jetzt sind Sie an der Reihe, ein wenig herumzuspielen.
Mein nächstes anweisbares wird bald kommen (Standardanweisungen wie while, select case, for und variables.)
Wenn Sie mein instructable mögen und mehr wollen, sagen Sie mir in den Kommentaren.
Empfohlen:
Erste Schritte mit Amara: 7 Schritte
Erste Schritte mit Amara: Amara ist ein kostenloser Untertitel-Editor, mit dem Sie ganz einfach Untertitel zu Videos hinzufügen können – vom Unterricht bis zum persönlichen Gebrauch. Diese Anweisungen helfen Ihnen, ein Amara-Konto einzurichten, damit Sie schnell und einfach Untertitel hinzufügen können
Erste Schritte mit der Heimautomatisierung: Home Assistant installieren: 3 Schritte
Erste Schritte mit der Hausautomation: Home Assistant installieren: Wir starten jetzt die Hausautomationsserie, in der wir ein Smart Home erstellen, das es uns ermöglicht, Dinge wie Licht, Lautsprecher, Sensoren usw. über einen zentralen Hub zusammen mit einem Sprachassistent. In diesem Beitrag erfahren Sie, wie Sie in
Erste Schritte mit dem SkiiiD-Editor: 11 Schritte
Erste Schritte mit dem SkiiiD-Editor: skiiiD-Editor, Entwicklungsboard-Firmware IDEskiiiD-Editor basiert auf skiiiD (Firmware Development Engine). Jetzt ist es mit Arduino UNO, MEGA und NANO mit 70+ Komponenten kompatibel.BetriebssystemmacOS / WindowsInstallierenBesuchen Sie die Website https:
Erste Schritte mit Python: 7 Schritte (mit Bildern)
Erste Schritte mit Python: Programmieren ist großartig! Es ist kreativ, macht Spaß und gibt Ihrem Gehirn ein mentales Training. Viele von uns wollen etwas über Programmieren lernen, aber überzeugen sich selbst davon, dass wir es nicht können. Vielleicht hat es zu viel Mathematik, vielleicht der Jargon, der erschreckend herumgeworfen wird
Raspbian in Raspberry Pi 3 B ohne HDMI installieren - Erste Schritte mit Raspberry Pi 3B - Einrichten Ihres Raspberry Pi 3: 6 Schritte
Raspbian in Raspberry Pi 3 B ohne HDMI installieren | Erste Schritte mit Raspberry Pi 3B | Einrichten Ihres Raspberry Pi 3: Wie einige von Ihnen wissen, sind Raspberry Pi-Computer ziemlich großartig und Sie können den gesamten Computer nur auf einer einzigen winzigen Platine bekommen. Das Raspberry Pi 3 Model B verfügt über einen Quad-Core 64-Bit ARM Cortex A53 mit 1,2 GHz getaktet. Damit ist der Pi 3 ungefähr 50