Tutorial. Microcontroller. Grundlagen µc. Kapitel 1



Ähnliche Dokumente
Stepperfocuser 2.0 mit Bootloader

Installation OMNIKEY 3121 USB

Anleitung über den Umgang mit Schildern

Dokumentation IBIS Monitor

Hier ist die Anleitung zum Flashen des MTK GPS auf der APM 2.0. Prinzipiell funktioniert es auch auf der APM 2.5 und APM 1.

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Installationsanleitung für das KKL bzw. AGV4000 Interface

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

Verschlüsseln von Dateien mit Hilfe einer TCOS-Smartcard per Truecrypt. T-Systems International GmbH. Version 1.0 Stand

Arbeiten mit UMLed und Delphi

DIGITALVARIO. Anleitung Bootloader. Ausgabe 0.1 deutsch für Direkt-Digital-Vario. Firmware ab Hardware 01 Seriennummer ab 0003

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook ( ) Zentrum für Datenverarbeitung der Universität Tübingen

Informatik 1 Tutorial

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

CU-R-CONTROL. Beschreibung zur Schaltung ATMega16-32+ISP MC-Controller Steuerung auf Basis ATMEL Mega16/32. Autor: Christian Ulrich

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine

Wie halte ich Ordnung auf meiner Festplatte?

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Benutzung der LS-Miniscanner

Jederzeit Ordnung halten

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

RS-Flip Flop, D-Flip Flop, J-K-Flip Flop, Zählschaltungen

Internet online Update (Mozilla Firefox)

Umwandelung einer Physikalischen Größe in eine Elektrische

Der SD-Kartenslot befindet sich an der rechten Gehäuseseite unterhalb der rechteckigen hellgrauen Gummiabdeckung.

Bilder zum Upload verkleinern

Informatik I Tutorial

Microcontroller Kurs Microcontroller Kurs/Johannes Fuchs 1

Outlook-Daten komplett sichern

Informationen zur Verwendung von Visual Studio und cmake

Hex Datei mit Atmel Studio 6 erstellen

Tutorial about how to use USBView.exe and Connection Optimization for VNWA.

Datensicherung. Beschreibung der Datensicherung

tensiolink USB Konverter INFIELD 7

Nutzung von GiS BasePac 8 im Netzwerk

Wie Sie mit Mastern arbeiten

easyident Türöffner easyident Türöffner Art. Nr. FS-0007 FS Fertigungsservice

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

CodeSaver. Vorwort. Seite 1 von 6

Professionelle Seminare im Bereich MS-Office

Das Omnikey 8751 e-health BCS...1 Auslesen über die LAN-Schnittstelle...1 Auslesen über die serielle Schnittstelle...4

Datenbanken Kapitel 2

Installationsleitfaden kabelsafe backup professional unter MS Windows

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Tipps und Tricks zu den Updates

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Simulation LIF5000. Abbildung 1

Auto-Provisionierung tiptel 31x0 mit Yeastar MyPBX

Windows Server 2012 RC2 konfigurieren

Tutorial -

Elektrische Logigsystem mit Rückführung

PC-Umzug: So ziehen Sie Ihre Daten von Windows XP nach Windows 8 um

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Freie Karten/Maps für Garmin Qutdoor Navi, wie geht das?

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

Gruppenrichtlinien und Softwareverteilung

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Datei Erweiterungen Anzeigen!

Import und Export von Übergängern

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

Woche 1: Was ist NLP? Die Geschichte des NLP.

Einführung in die Welt der Microcontroller

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Erstellen eigener HTML Seiten auf ewon

BILDER TEILEN MIT DROPBOX

Nach der Installation des FolderShare-Satellits wird Ihr persönliches FolderShare -Konto erstellt.

Anleitung zum GUI Version 2.x

Konvertieren von Settingsdateien

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Einfügen von Bildern innerhalb eines Beitrages

1. Einleitung Was ist die App Listini Was benötigen Sie dazu Wie gehen Sie vor

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Leichte-Sprache-Bilder

Sie können diesen Service verwenden, um fast beliebig große Dateien auch über 2 GB zu versenden.

Installation LehrerConsole (für Version 6.2)

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

LED WIFI Controller - Bedienungsanleitung

Bedienungsanleitung. FAST SMS Set mit MacOS betreiben MAC

Befehlssatz zum High Speed Interface-88-USB (HSI-88-USB) (ab Firmware 0.71) (Version 1.2)

Das Leitbild vom Verein WIR

Synchronisierung. Kommunikationstechnik, SS 08, Prof. Dr. Stefan Brunthaler 73

Internet online Update (Internet Explorer)

Einführung in TexMaker

Programmierung von ATMEL AVR Mikroprozessoren am Beispiel des ATtiny13. Teil IV: Programmieren an Beispielen

Qt-Projekte mit Visual Studio 2005

ANWENDUNGSHINWEISE ZU SYMBOLSTIX

Anleitung zur Installation des Printservers

Inhaltsverzeichnis

Vorbereitung einer Grafik zum Druck einer Glotze aus, Stadion an! -Zaunfahne Torsten Bunde, Stand 5. Juli 2014

Windows Explorer Das unbekannte Tool. Compi-Treff vom 19. September 2014 Thomas Sigg

Geld Verdienen im Internet leicht gemacht

Installation von Druckern auf dem ZOVAS-Notebook. 1. Der Drucker ist direkt mit dem Notebook verbunden

Änderungsbeschreibung HWS32 SEPA Überweisungen

Programmierung Tiny45 für DCC Lokdecoder

Installationsanleitung Scanner des MEDI Baden-Württemberg e.v.

EXPANDIT. ExpandIT Client Control Kurzanleitung. utilities. be prepared speed up go mobile. Stand

Transkript:

Microcontroller Kapitel 1 Grundlagen µc

µc Inhaltsverzeichnis 1 - Vorwort Seite 2 2 - Prinzipieller Programmablauf Seite 4 3 - ISR Interrupt Service Routine Seite 5 4 - Compiler Seite 7 5 - ATMega8 Seite 8 6 - Hardware Seite 10 7 - Compiler Software Seite 11 8 - Erstes Beispiel Seite 13 9 - Zipfile Inhalt Seite 14 - Seite 2 -

µc 1 - Vorwort Mikrocontroller. Viele schrecken selbst heute noch davor zurück. Zu kompliziert, man braucht ein Programmiergerät, hab keine Lust mich durch hunderte Seiten Datenblatt zu kämpfen, man muss eine Platine entwickeln aber auch zu teuer sind oft die Argumente. Doch das selbe dachte sich auch die Industrie und es gibt mittlerweile schon eine Reihe von stand-alone µc die man mit nur wenigen Bauteilen in Betrieb nehmen kann. Vorteile von µc liegen klar auf der Hand: - komplexe Logik mit wenig Bauteilen bessere Übersichtlichkeit - Funktionsvielfalt - Kommunikationsmöglichkeiten - Schnittstellen - Um Änderungen durchzuführen muss man nicht gleich zum Lötkolben greifen - Ausfallsicherheit gegenüber PC Was ist das Ziel dieses s? In diesem sollen die Grundlagen eines µc, Inbetriebnahme und seine Programmierung behandelt werden. Als µc soll der ATmega8 verwendet werden, da er leicht zu beschalten ist, es Freeware Compiler gibt, man kein Programmiergerät braucht da er sich über die Parallele Schnittstelle Programmieren lässt und auch nicht allzu teuer ist. - Seite 3 -

µc 2 - Prinzipieller Programmablauf Hier sehen wir den prinzipiellen Aufbau eines µc. Natürlich ist ein richtiger µc viel komplexer aufgebaut, aber am prinzipiellen Programmablauf ändert sich nicht viel. CU Control Unit Befehlswerk PC Program Counter ALU Arithmetic Logic Unit Rechenwerk Auf der linken Seite ist das prinzipielle Block Diagramm einer CPU abgebildet. Sie besteht aus der Control Unit, Program Counter und der Arithmetic Logic Unit. Das Befehlswerk steuert die Ausführung der Anweisung. Das Rechenwerk führt die arithmetischen Befehle aus (z.b. addieren, subtrahieren, ). Die CPU benötigt die Eingangssignale Clock und Reset. Wird das Reset Signal aktiv, so wird die CPU in ihren Ausgangszustand zurückgesetzt. Wird das Signal deaktiviert, so beginnt die CPU definiert zu arbeiten. Das Signal Clock wird auch Takt genannt. Dies ist ein Rechtecksignal, welches die Arbeitsgeschwindigkeit der CPU angibt. Rechts im Bild befindet sich der Programmspeicher. Er ist mit der CPU über den Adress- und Datenbus verbunden. Der Inhalt des Program Counter zeigt jeweils auf den nächst auszulesenden Befehl. Der Program Counter wird beim Reset der CPU auf Null zurückgesetzt. Programmablauf: 1) Der Inhalt des Program Counter wird auf den Adressbus gelegt. 2) Der Befehl wird von der aktuellen Adresse aus dem Programmspeicher gelesen. - Seite 4 -

µc 3) Der Befehl wird vom Befehlswerk ausgewertet und wenn benötigt, vom Rechenwerk ausgeführt. 4) Der Program Counter wird um Eins erhöht und zeigt somit auf den nächsten Befehl. 5) Die Schritte 1 4 werden in einer Schleife ausgeführt. im Sprungbefehl angegeben ist. In dem obigen Beispiel ist der 4. Befehl ein jump Befehl und seit auf die Adresse 5. Somit wird der 5. Befehl ausgelassen und der 6. Befehl wird geladen. Natürlich muss man solche Feinheiten beim µc programmieren in C nicht beachten, das erledigt der Compiler. Eine Besonderheit stellen hier jump Befehle dar. Ist der ausgeführte Befehl ein jump Befehl, dann wird der Program Counter nicht um Eins erhöht, sondern wird mit der Zieladresse des Jump Befehls geladen. Somit zeigt er auf die Adresse die 3 - ISR Interrupt Service Routine Interrupts werden normalerweise benutzt wenn eine Peripherie Aufmerksamkeit von der CPU haben will. Zum Beispiel um der CPU mitzuteilen das ein Zeichen nicht richtig übertragen wurde oder um mitzuteilen das die CPU zu schnell für die Peripherie ist. Für diesen Fall wird eine eigene Interrupt Leitung verwendet. Aber Interrupts können auch von der Software aufgerufen werden. Software Interrupts werden genutzt um z.b. eine periodische Statusabfrage durchzuführen. Nur mit ihnen ist es überhaupt möglich pseudo gleichzeitig zu arbeiten. Sprich mehrere Aufgaben pseudo gleichzeitig erledigen. Ein µc kann nämlich auch nicht, so wie der PC (Multicore CPUs mal ausgenommen), - Seite 5 - mehrere Prozesse gleichzeitig ausführen. (Man spricht von einem Prozess, wenn ein Programm die CPU gerade verwendet). Ein kleines Beispiel: Wenn wir nun z.b. einen Temperaturwert alle 100ms einlesen wollen, müsste man da der µc Programme ja nur hintereinander abarbeiten kann, in unseren Sourcecode immer nach einer gewissen Anzahl von Befehlen die Abfrage hinschreiben. Da dies aber unmöglich ist und auch die Leserlichkeit vom Code nicht sonderlich fördert, verwendet man für solche Aufgaben ein Interrupt. Wie funktioniert ein Interrupt auf einem µc?

µc ISR Interrupt Service Routine Bevor jetzt die Control Unit (Befehlswerk) einen neuen Befehl aus dem Programmspeicher lädt, wird geprüft ob das Interrupt Flag gesetzt ist. Wenn jetzt dieses Flag (als Flag bezeichnet man ein Bit) gesetzt ist, wird wie beim jump Befehl der Program Counter nicht um Eins erhöht, sondern es wird der Inhalt des Program Counters gespeichert und mit einer anderen Adresse geladen. Diesmal ist es die Adresse der Interrupt Service Routine (ISR ist wie ein Unterprogramm). Wenn dieses Unterprogramm (ISR) abgearbeitet ist, wird der Program Counter wieder mit der zuvor abgespeicherten Adresse geladen und um Eins erhöht. Somit arbeitet die CPU wieder das Programm von zuvor weiter ab. Der Grundlegende Unterschied zwischen der ISR und einem Unterprogramm ist nur das die ISR nie von einem anderen Programm aufgerufen wird. Da es keine weiteren Unterschiede gibt, ist auch die ISR eine Art Unterprogramm. Wie kann man nun ein Software Interrupt aufrufen? Bei einem µc wird ein Interrupt meist über einen Timer aufgerufen. Dazu wird der Timer mit einer Zahl geladen. Der Timer zählt dann diese Zahl solange herunter bis sie Null erreicht. Wenn er Null erreicht, dann wird das Interrupt Flag gesetzt und die ISR wird ausgeführt. Danach fängt der Timer wieder von vorne an Zählen. Während dem Zählen können alle anderen Befehle ausgeführt werden. Somit lässt sich leicht eine periodische Funktion einprogrammieren, die z.b. immer nach einer bestimmten Zeit eine Abfrage startet. Weiters zu beachten bei der Benutzung von Timer ist die Priorität. Wenn mehr als ein Timer verwendet werden, müssen sie eine unterschiedliche Priorität haben. Weil der Timer bzw. die ISR mit der höheren Priorität darf zuerst seine Befehle auf der CPU ausführen. - Seite 6 -

µc 4 - Compiler Was ist ein Compiler und wie arbeitet ein Compiler? Die Programmiersprachen können in Hochsprachen (C, Pascal), in eine maschinennahe Sprache (Assembler) und Maschinensprache (Binärcode) unterteilt werden. Wobei Hochsprachen am verständlichsten sind da diese so entwickelt wurden, dass die verwendeten Befehle Wörtern ähneln. Der Compiler (Übersetzer ) dient dazu ein Programm das in einer Hochsprache geschrieben wurde, in die maschinennahe Sprache zu übersetzen damit der µc es versteht und ausführen kann. Weiters ist er auch für die Speicheradressierung verantwortlich. Da die µc unterschiedliche maschinennahe Befehle unterstützen und auch anders konfiguriert werden müssen, gibt es versch. Compiler für den jeweiligen µc Typ. - Seite 7 -

µc 5 - ATMega8 Jetzt kommen wir aber zum ATmega8 um den es eigentlich in diesem geht. Fakten: - Taktfrequenz bis zu 16MHz - 8kB interner Flash Speicher - 1kB interner SRAM - 2 x 8bit Timer - 1 x 16bit Timer - 3 PWM Kanäle - 6 Kanal Analog- Digital Konverter - Serielles Interface - USART - Master/Slave SPI Interface - 23 programmierbare Ein- und Ausgänge - Versorgungsspannung 4,5-5,5V - 8bit Mikrocontroller - Seite 8 -

µc Pinbelegung & Pinbeschreibung VCC - Digitale Versorgungsspannung GND - Masse PB7 PB0 - Port B ist ein 8bit bidirektionales Eingangs und Ausgangsport PC5 PC0 - Port C ist ein 7bit bidirektionales Eingangs und Ausgangsport PC6/RESET - Wird verwendet um den µc zurückzusetzen PD7 PD0 - Port D ist ein 8bit bidirektionales Eingangs und Ausgangsport (es wird auch für viele Spezialfunktionen vom ATmega8 verwendet) AVcc - Spannungsversorgung für den Analog- Digital Konverter (ADC) AREF - analoge Referenzpin für den ADC Alternative Funktionen für Port D: Port D, Bit 0 Port D, Bit 1 Port D, Bit 2 Port D, Bit 3 Port D, Bit 4 Port D, Bit 5 Port D, Bit 6 Port D, Bit 7 - RXD Empfängt Daten von einer seriellen Schnittstelle - TXD Sendet Daten zu einer seriellen Schnittstelle - INT0 Hardware Interrupt Pin (Siehe Kap. ISR) - INT1 Hardware Interrupt Pin (Siehe Kap. ISR) - externen Takt für die serielle Schnittstelle od. Timer 0 Zähler - T1 Timer 1 Zähler - AIN0 Analoger Komparator Pos. Input - AIN1 Analoger Komparator Neg. Input Für eine genauere Beschreibung aller Pins und allen Funktionen bitte im Datenblatt nachschlagen. - Seite 9 -

µc 6 - Hardware Es ist auch möglich den Programmer vom µc zu trennen indem man die 4 Leitungen MISO, MOSI, SCLK und RST steckbar ausführt. Dann kann der Programmer auch für andere µc Typen eingesetzt werden. Programmiert wird der µc über ein SPI Interface. Das Serial Peripheral Interface ist eine synchrone, serielle Schnittstelle. Im Gegensatz zu einer asynchronen Schnittstelle wird hier der Takt mitgeliefert. Deswegen Benötigt man auch im Gegensatz zur RS232 Schnittstelle eine Leitung mehr, die Taktleitung. Partlist - ATMega8-74LS244-20poliger IC Sockel - 28poliger IC Sockel - 100µF Elko - Widerstände: 100k, 680, 10k, 470 Ohm - SUB D25 (männl.) Stecker - Standard LED Eine größere Version des Schaltplans befindet sich im Zip File mit allen benötigten Daten. - Seite 10 -

µc 7 - Compiler Software Jetzt können wir mit der Software beginnen. Als erstes brauchen wir einen Compiler. Ich habe mich für den Freeware Compiler WinAVR entschieden. Als erstes müssen wir ihn auf der Seite http://sourceforge.net/projects/winavr/ herunterladen (ca. 25MB) und danach installieren. Als erstes müssen wir unseren Compiler konfigurieren. Dazu verwenden wir das Tool MFile das mit installiert wird. In dem Menüpunkt Makefile können wir nun unsere Einstellungen vornehmen. Main file name: main MCU type: atmega8 Output format: ihex Optimization Level: s Debug Format: ELF/DWARF-2 C standard lebel: gnu99 Programmer: stk200 Port: lpt1 (oder den Lpt Port an dem er angeschlossen ist) Unter Punkt C/C++ source files kann man noch weitere Dateien hinzufügen, falls man mehr als eine *.c Datei verwendet. Es ist auch noch möglich Asembler Files hinzu zu fügen. - Seite 11 -

µc Die Makefile muss dann in den Projektordner gespeichert werden wo später dann auch die Source-Code Dateien abgelegt werden. Weiters ist zu beachten das der Dateiname nur Makefile sein darf, also ohne Extension. Jetzt kann das Programm mit dem Programmers Notepad geschrieben werden. Dieser Code wird mit dem Namen main. c im selben Ordner wie das Makefile abgespeichert. Jetzt kann das Programm mit [WinAVR] Make All das erste Mal kompilieren. Sollten keine Fehler auftreten kann man den ATMega direkt im Programmers Notepad programmiert werden. Wenn doch noch Fehler auftreten, kann man mit einem Mausklick auf den Fehler im Output Fenster direkt in die Zeile springen die selbigen Verursacht hat. Mit dem Tool: [WinAVR] Program wird die Software mit den Einstellungen der Makefile auf den µc programmiert. Sollte alles geklappt haben wird dies mit avrdude done. Thank you. im Output Fenster mitgeteilt. Wird ein Fehler angezeigt avrdude: failed to open parallel port lpt1, dann muss erst der giveio Treiber installieren, weil das Programm unter Windows NT, 200 und XP ohne diesen Treiber nicht auf die Schnittstelle zugreifen kann. Im Ordner WinAVR\bin gibt es hierzu 3 Batchdateien: install_giveio.bat, remove giveio. bat und status_giveio.bat. Um den Treiber zu installieren, install_giveio.bat ausführen. - Seite 12 -

µc 8 - Erstes Beispiel Jetzt folgt unser erstes Programm mit dem man überprüfen kann ob alles funktioniert und der µc die Daten empfängt. Es schaltet den ganzen Port B immer nur ein und aus. Auf einem Pin an diesem Port (z.b. Pin 14) kann z.b. eine LED dazugelötet werden, die dann blinken sollte. In der 1. Zeile wird die benötigte Bibliothek eingebunden. Zeile 3 ist der Kopf für unser Unterprogramm. In Zeile 12 wird der ganze Port B auf 1 gesetzt und in Zeile 15 wieder auf 0. Dazwischen wird immer das Unterprogramm delay aufgerufen das die Zeit die der µc für einen nop Befehl benötigt 3000*(Zahl in der Klammer) mal abwartet, bis es wieder das Programm weiter ausführt. Wichtig ist auch noch das jedes Programm mit einer Leerzeile endet. Wenn dies nicht der Fall ist gibt der Compiler einen Fehler aus. - Seite 13 -

µc 9 - Zipfile Inhalt Im Zip File befinden sich: - Makefile - main.c vom Beispielprogramm - Schematic vom Programmer - PDF Version des s http://mitglied.lycos.de/gorgon86/stuff/uc_tut.zip - Seite 14 -