Anfang-Mikrocontroller-Teil 6: Schreiben das erste Programm zur Jahrhundertwende auf einer LED


Ich weiß, dass Sie bereit sind, das erste Programm zu schreiben. Sie haben bisher viel durchgemacht! Während wir beim Thema sind, fassen wir die Ereignisse zusammen. Sie ging hinaus und kaufte den AVR Atmel Mikrocontroller Ihrer Wahl. Ich entschied mich für theATMega32 für meine Anwendungen. Sie wurden in das Konzept von Mikrocontrollern eingeführt wie sie funktionieren; und auch an den Programmierer, das Gerät, das hilft, das Programm in den Microcontroller übertragen wurden eingeführt. Sie bauten eine komfortable Schnittstelle, die verwendet wird, um die richtigen Pins des Mikrocontrollers die SPI-Pins herstellen. Sie überprüft, ob die Programmierer (USBTinyISP) Treiber für die 32-Bit- und 64-Bit-Versionen von Windows (XP, 7 und Vista) korrekt installiert wurden. Sie installiert auch die Programmierung Umgebung installiert die "Programming Environment" WinAVR genannt, so dass Sie können haben ein Umfeld, in dem Ihr Programm zu schreiben, und dann in den Mikrocontroller übertragen. Und um sicherzustellen, dass alles ordnungsgemäß funktioniert, verwendet Sie Avrdude getestet den Programmierer während an den Computer und den Mikrocontroller angeschlossen. Daran erinnern Sie, dass dieses Programm das Programm Transfer-Dienstprogramm, um unsere kompilierten Programm in den Speicher auf den Mikrocontroller zu bewegen ist. Schließlich baute Sie die erste Schaltung, damit wir etwas konnten, ein Programm zu schreiben. Puh... das war eine Menge! Aber da man durch all diese Hürden gesprungen, die harte Arbeit ist vorbei und es ist glatt Segeln von hier auf. Hoffentlich konnten Sie durch die vorherigen Schritte ohne Probleme--so, jetzt wollen wir mit unserem ersten Programm bekommen auf.

Aus Gründen der Vereinfachung, kategorisieren wir die Funktion des Mikrocontrollers in drei Kategorien: Steuerung, Sensorik und Kommunikation. Wir lassen die Details von, wie man jede dieser Funktionen zu entwickeln, und Tauchen Sie ein in diese Details, wie wir die verschiedenen Programme schreiben. Beachten Sie, dass es viele Möglichkeiten gibt, diese Funktionen zu programmieren. Für das erste Programm machen wir den Mikrocontroller "etwas zu steuern". Und bekanntlich aus der früheren Post werden wir mit einer LED für diesen Zweck. Im Grunde werden wir die LED eingeschaltet. Ja ich weiß... langweilig, richtig? Nun muss ich irgendwo anfangen! Wie nehme ich Sie durch die Erfahrung der Programmierung, werde ich mehr Komplexität ein wenig zu einem Zeitpunkt hinzufügen damit Sie leicht Ihren Kopf um diese wichtige Konzepte wickeln können.

Zu diesem Zeitpunkt sind Sie wahrscheinlich Fragen wie wir ein Programm zur Steuerung einer LED machen...? Nun, es ist wirklich einfach: sagen wir einfach Pin0 auf PORTB auf 5 Volt Ausgang. Denken Sie daran, dass dies die Pin, die Plusleitung (Anode) verbunden ist. Der erste Schlüssel in diesem Szenario ist "Ausgabe", und das nächste ist "5 Volt." Es gibt einen Weg, die, den wir einen bestimmten Stift festgelegt werden, zu einer Leistung von der MCU erzählen können. Sobald eine Pin eingerichtet wurde, um Ausgang zu bieten, werden Sie dann in der Lage zu kontrollieren, die pin und machen es entweder hoch (5 Volt) oder niedrig (Null Spannung). Und da gibt es nur zwei Zustände für diesen Pin in den Ausgabemodus (5v oder 0v) und nur zwei Zustände für den Modus selbst (Eingang oder Ausgang, müssen Sie nur den Wert auf logisch 1 oder eine 0 festlegen). Beachten Sie, dass dies für jeden Pin erfolgen muss, die wir in unserer Schaltung verwenden möchten. Aber wir erst nach Einstecken in eine 1 oder 0, reden wir über Eingabe und Ausgabe. Wenn eine Pin im Eingabemodus befindet, ist es für eine Spannung hören. Wenn der Stift in Ausgabemodus ist, kann die It kann bei 5v berechnet, oder nicht auf 0v geladen werden. Das ist es!

Es gibt viele Möglichkeiten, dies zu tun. Dies ist nicht um euch zu verwirren, sondern Dinge einfacher. Wird werden führen Sie in eine der vielen Möglichkeiten, um diese Aufgabe zu erfüllen, und ich werde später einige andere Methoden erklären, während andere Programme zu schreiben. Beachten Sie jedoch, dass während diese erste Methode für die Einführung des Konzepts ist, es wahrscheinlich nicht so gut in der Praxis ist. Daher sehen Sie andere Methoden in zukünftigen Programmen, die kontextuelle Stifte (die Pins auf beiden Seiten des Stiftes von Interesse) unberührt, verlassen werden, da sie sehr gut zuvor im Programm eingerichtet haben können. Aber da wir ein einfaches Programm schreiben, wir werden nicht sorgen um diese Komplexität zu diesem Zeitpunkt.

Um den Ausgabemodus zur Eingabe einer Pin auszuwählen, verwenden Sie die Daten Richtung registrieren (DDR). Oh Mann! Was ist ein Register?!? Lassen Sie sich nicht das Sie sich sorgen. Ein Register ist einfach eine Speicheradresse, die den Mikrocontroller reagieren macht in gewisser Weise. Wir verwenden ein Register, um einen Zustand für den Mikrocontroller oder machen den Mikrocontroller, etwas zu tun. Es ist wie Reflexe oder kitzelt. Wenn eine Person einer anderen Person kitzelt, ruft er lachen. Wir können etwas tun, indem Sie einen bestimmten Wert in einem Register MCU machen. Das ist alles, was, die Sie im Moment wissen müssen.

Also wenn Sie das DDR-Register verwenden, können Sie legen Sie die Pin Daten ausgeben oder Dateneingabe zu akzeptieren. Aber wir gesagt, Eingang oder Ausgang, jetzt Sie Daten auch sagen sind. Der Begriff "Daten" verwendet fügt hier einfach nur eine weitere Dimension zu dieser Idee in Form von "Zeit". Wenn Sie einer Pin 5 Volt, dann Null Volt und 5 Volt wieder machen... senden Sie eigentlich 1 s und 0 s. Mit dem Pin, dies ist nichts anderes als ein hoch (5 Volt) Zustand, und dann eine Low (0 v) Zustand: The MCU sieht diese Min/Max-Logik. Und Sie können auch Daten auf die gleiche Weise empfangen.

Es gibt mehrere Möglichkeiten, pin0 für Port B auf Ausgang gesetzt. Eine Möglichkeit, dies zu tun ist, zu schreiben:

DDRB = 0b00000001;

Lassen Sie mich erklären. "DDRB" bezieht sich auf die Daten Richtung registrieren für Port B; "0 b" ist dem Compiler sagen, dass der binäre Ausdruck einer Reihe folgt; und die "1" am Ende der Stiftposition 0 (den ersten Stift in Port B) bezeichnet. Daran erinnern Sie, dass es 8 Pins für Port B gibt; Pins 0, obwohl 7. Es gibt auch 8 Ziffern in unserem Code. So jede Ziffer repräsentiert eine Pin auf dem Port können, und wir die einzelnen Ziffern bezieht sich speziell auf eine der Stifte in Port B. So bezieht sich die "1" am Ende unserer Code-Erklärung zu den ersten Stift in Port B, der in diesem Fall Pin 0 ist. (Rückruf, dass C und C++ nullbasierte Sprachen, so bezieht sich der erste Index einer Datenstruktur ist das zero'th-Element, der zweite Index bezieht sich auf das erste Element, etc..) Wir brauchen nicht zu bekommen an dieser Stelle komplexer, da dies viel mehr behandelt wird detailliert in Zukunft Tutorials. Aber wenn Sie wissen, mehr über das Binärsystem, hier überprüfen möchten.

Wir müssen nun 5v Pin zuweisen. Dies funktioniert genauso wie die DDR-Codeanweisung verwendeten wir oben. Wir verwenden eine binäre Zahl 5v auf, dass der Stift (Pin 0) setzen mit dieser Anweisung:

PORTB = 0b00000001;

Der einzige Unterschied zwischen dieser und der vorherigen Anweisung ist, dass wir nun das PORT-Register verwenden. Dieses Register kennt die Pins von diesem bestimmten Port und gibt uns Zugang zu den tatsächlichen Datenwert (logisch 0 oder 1) geben für diese Pins.

Jetzt müssen wir ein wenig über die allgemeine Struktur unseres Programms sprechen. Alle Programme brauchen einen bestimmten Platz um die Ausführung zu starten. Es ist wie, jemandem eine Reihe von Anweisungen wie man einen Kuchen machen, ohne zu sagen, dass sie die Schritt um zu beginnen. Die Funktion "main" ist der Ort, wo alle C/C++-Programme Ausführung beginnen. So schaffen wir eine main-Funktion.

Int main(void)
{
}

In Reihenfolge für das Programm zu verstehen, der DDR und der Hafen Registerinformationen und wie diese funktionieren innerhalb der Mikrocontroller, eine Include-Anweisung hinzugefügt werden muss enthält, alle Informationen über die AVR-Mikrocontroller. Diese include-Anweisung werden wahrscheinlich in allen Ihren Programmen.

#include < avr/io.h >
Int main(void)
{
}

Wenn die Kompilierung beginnt, sieht der Pre-Prozessor als Bestandteil der Compiler im "Avr" Verzeichnis für die Datei "io.h". Die "h" Erweiterung hier zeigt, dass dies eine Header-Datei, und (wie der Name schon sagt) wird der Code in dieser Datei am Anfang (Kopf) der von die Ihnen erstellten Quelldatei eingefügt werden. Jetzt können wir die DDR und PORT-Anweisungen in unserem Code einfügen, da die Einbeziehung der io.h-Header-Datei den Compiler darüber informiert hat.

#include < avr/io.h >
Int main(void)
{

DDRB = 0b00000001; //Data Richtung registrieren Einstellung pin0 ausgegeben und die restlichen Pins als Eingang PORTB = 0b00000001; //Set pin0 auf 5 Volt

}

Jetzt soll die Richtung der pin0 mit eine Wertemenge an 5v Ausgang. Aber wir sind noch nicht abgeschlossen. Wir müssen den Mikrocontroller läuft auf unbestimmte Zeit, also wir eine Routine brauchen, dies zu tun. Dies nennt man eine endlose (oder unendliche) Schleife. Die Endlosschleife stellt sicher, dass der Mikrocontroller nicht aufhört seine Operationen. Ich werde dies genauer erklären, wenn wir Sachen innerhalb dieser Schleife zu tun haben. Es gibt mehrere Arten von Schleifen wir zu diesem Zweck können, aber ich verwende für diese Demonstration der While Schleife. Es bedeutet das gleiche in englischer Sprache, wie im Code: zum Beispiel "while" Ich meine Hand haben, sollten Sie klatschte zu halten.

#include < avr/io.h >
Int main(void)
{

DDRB = 0b00000001; Daten Richtung registrieren Einstellung pin0 Ausgabe und die restlichen Pins als Eingang
PORTB = 0b00000001; Festlegen pin0 auf 5 Volt
while(1)
{

//Code wäre hier, wenn es erforderlich, um immer und immer wieder ausführen... endlos

}

}

Beachten Sie, dass wir eine "1" als Argument für die While-Schleife, weil etwas anderes als '0' ein logisches wahr ist. Daher die While Schleifenbedingung wird nie alles andere als logisch wahr, und das Programm wird weiterhin auf unbestimmte Zeit ausführen (d.h.; "Ich halte meine Hand heben).

Hier also die Früchte unserer Arbeit. Es war eine lange Fahrt so weit, aber ich verspreche, alles von hier aus werden erfreulich und weit weniger Zeit in Anspruch nehmen. In dem nächsten Video und Anleitung machen wir die LED blinkt. Wir werden untersuchen, wie eine Verzögerung zu erstellen, damit die LED nicht so schnell blinkt, dass es aussieht wie es nicht blinkt.

In Verbindung stehende Artikel

Anfang Mikrocontroller Teil 7: Überarbeitung der ersten Programm, um die LED blinkt

Anfang Mikrocontroller Teil 7: Überarbeitung der ersten Programm, um die LED blinkt

Du hast geschrieben, das erste Programm, das eine LED eingeschaltet. Ja, das war spektakulär! Na ja, nicht wirklich, aber lassen Sie uns ein bisschen Verrücktheit, die LED einführen. Wir gebe es eine "Bi-polar" Persönlichkeit, indem man es blink
Anfang Mikrocontroller Teil 2: Erstellen einer SPI-Schnittstelle vom Programmierer an den Mikrocontroller

Anfang Mikrocontroller Teil 2: Erstellen einer SPI-Schnittstelle vom Programmierer an den Mikrocontroller

Hallo, hoffen wir, ihr hattet Teil 1 der Anfang Mikrocontroller. Werden wir in Teil2 entlang bewegen und sprechen über Schnittstellen und wie man Ihre Mikrocontroller mit einem Computer zu kommunizieren beginnen.Also, sollten Sie an dieser Stelle mit
Anfang Mikrocontroller Teil 9: Taste und Software Debouncing Methoden

Anfang Mikrocontroller Teil 9: Taste und Software Debouncing Methoden

In diesem Teil des Tutorials diskutieren wir Taste und Software debouncing.Wir wollen studieren Taste debouncing erste und ausführlich, so wir ein gutes Verständnis haben von was es mit sich bringt. Schaltfläche "debouncing ist wichtig und sollte nic
Anfang Mikrocontroller Teil 5: Prüfung des Programmierers und Bau der ersten Schaltung

Anfang Mikrocontroller Teil 5: Prüfung des Programmierers und Bau der ersten Schaltung

So weit sollten Sie alle haben, die Software installiert und konstruiert die Schnittstelle, die eine bequeme Anbindung an den Mikrocontroller (MCU) vom Programmierer bieten wird. Für den nächsten Schritt benötigen Sie ein Steckbrett (die Zahlen sind
Erste Schritte mit Edison - blinkt eine LED von der Konsole

Erste Schritte mit Edison - blinkt eine LED von der Konsole

Dies ist Teil 3 eine Reihe von erste Schritte mit der Intel Edison, in den letzten beiden Tutorials, die ich Ihnen gezeigt, wie der Arduino IDE, Programm Intel Edison installieren und Aktualisieren der Linux auf die Edison.In diesem Tutorial werde ic
Das loswerden von Auto-Dim auf ein Radiowecker

Das loswerden von Auto-Dim auf ein Radiowecker

eines meiner bezichtigte wurde die Auto-Dim auf mein Radiowecker: wissen Sie, was bewirkt, dass das Display zu dimmen, wenn es dunkel ist, so dass es nicht den Schläfer wach halten. Problem ist, mein Augenlicht ganz schlimm ist, wenn ich in der Dunke
Anfang Mikrocontroller Teil 3: Übertragen eines Programms in den Microcontroller (Treiber)

Anfang Mikrocontroller Teil 3: Übertragen eines Programms in den Microcontroller (Treiber)

Willkommen in Teil 3. Dies ist eine kleine Anleitung, die sich mit dem Laden einfach Treiber, um sicherzustellen, dass Ihre Programmierer ordnungsgemäß mit dem Computer kommunizieren kann.Bitte beachten Sie, dass manchmal TinyISP und USBAVR-Geräte je
Anfang-Mikrocontroller-Teil 4: Installation der Programmierumgebung (WinAVR)

Anfang-Mikrocontroller-Teil 4: Installation der Programmierumgebung (WinAVR)

Herzlich Willkommen Sie auf den nächsten Schritt in unserer Serie. Wir werden nun einige grundlegende Programmierung Elemente vorstellen. Dieses Tutorial ist einfach über die Installation Ihrer Programmierumgebung. Die Programmierumgebung verwenden w
Das User Interface Control Board auf eine LG Waschmaschine zu ersetzen.

Das User Interface Control Board auf eine LG Waschmaschine zu ersetzen.

So nach und nach in den letzten zwei Jahren oder so, wir erlebt haben einen Rückgang in der Fähigkeit, verwenden Sie den Regler auf unserer LG Waschmaschine - Modell WM2032HW. Der Zyklus, die Auswahl Knopf war ein Typ, der elektronisch ausgewählt und
KeyChainino - das erste Spiel Schlüsselbund programmierbar mit Arduino

KeyChainino - das erste Spiel Schlüsselbund programmierbar mit Arduino

KeyChainino ist ein Vintage Spiel Schlüsselbund programmierbar mit Arduino , wo jeder sein eigenes Spiel nur mit der Arduino IDE hochladen kann.Liebst du wirklich Arcade-Spiel, ist KeyChainino für Sie!Es muss keine LCDs, aber nur 30 LEDs von Atmel AT
Ab Mikrocontroller Teil 1

Ab Mikrocontroller Teil 1

Dies ist die erste in einer langen Reihe von Tutorials zielte darauf ab, ein Anfänger-Leitfaden und Tutorial rund um den Atmel AVR Atmega32 Mikrocontroller. Ich zeige Ihnen anhand von Beispielen und Projekten, wie Programmieren und bieten Funktionen
Beginn Mikrocontroller Teil 11: Timer, Zähler und die Microcontroller-Uhr

Beginn Mikrocontroller Teil 11: Timer, Zähler und die Microcontroller-Uhr

Timer und Zähler sind so wesentlich, dass Sie zahlreiche Beispiele, an denen sie in dieser Serie sehen. Wie der Name schon sagt, dienen der Timer für Zeit und zählen. Zählen und Timing können Sie einige sehr nette Dinge wie controlling LED Brights, W
Schmidt: Stratigies für das Schreiben einer Impromtu auf ein Buch, das Sie nicht gelesen

Schmidt: Stratigies für das Schreiben einer Impromtu auf ein Buch, das Sie nicht gelesen

In diesem instructable werde ich geben Anweisungen, wie in einem Englisch-Kurs erfolgreich zu sein, dass abgetretenen gelesen werden, während sie nicht zu lesen.Es gibt keine wirklichen Anforderungen speichern was auch immer Sie mit schreiben und ein
Das erste ehrliche DIY Palette-Projekt im Internet

Das erste ehrliche DIY Palette-Projekt im Internet

Herzlich Willkommen Sie auf der ersten ehrlich Palette-Projekt im Internet.Hier ist, wie Sie sicherstellen können Ihre DIY-Palette-Projekt am Ende aussehen wie ein Affe mit einer Säge und Nagel Pistole machte es nicht.Ich weiß es besser als zwischen