Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch
Die wichtigsten Unterlagen/Tools Für das Praktikum Unterlagen/Kenntnisse/Tools wichtig: Datenblatt des AT80USB1287 µc Schaltplan des im Praktikum verwendeten Evaluation-Boards Entwicklungsumgebung AVR Studio Flip Programmiertool Grundkenntnisse in der Programmiersprache C
Praktikums Inhalte Die Inhalte des Praktikums dienen zur Vertiefung des in der Vorlesung durchgenommenen Stoffes. Es sollen die Grundeinheiten des µc kennengelernt werden: Ports Timer Interrupts Schnittstellen... Ziel des Praktikums: lauffähiges Programm zur Messung und Anzeige der Temperatur
AVR Studio Das wichtigste Softwaretool für das Praktikum ist das AVR Studio. Es übernimmt gleich mehrere Aufgaben: Entwicklungsumgebung zum Erstellen, Verwalten und Kompilieren des Programmcodes Kommunikation zum Laden des Programms in den Prozessor Übersicht über alle Mikrocontrollerkomponenten, Register- und Speicherinhalte Zur Simulation des Programms steht ein Simulator zur Verfügung
Anlegen eines neuen Projekts Nach dem Start des AVR Studios wird der Benutzer aufgefordert Projekttyp, Projektname und Speicherort anzugeben. Im Praktikum wird im Feld Project type die Einstellung AVR GCC verwendet. Beim Projektnamen die entsprechende Gruppenbezeichnung eingeben
Die Entwicklungsumgebung Im Hauptfenster des AVR Studio gibt es eine Kontrollleiste am oberen Rand und fünf Unterfenster darunter. Projektnamen Dateien Texteditor zum Editieren des Quellcodes Funktions einheiten des µc Build Prozess, Fehler beim compilieren, etc. Einzelheiten der ausgew. Funktionseinheit
Kompilieren eines Projektes Im Menu Punkt Build den Menupunkt Build oder Rebuild auswählen
Debugging Um den Debugger zu starten im Menu Debug Start Debugging auswählen oder in der obersten Menuleiste den Pfeil drücken.
Debugging Mit den einzelnen Debug Möglichkeiten kann das Programm z.b. durchgesteppt werden
Hauptprogramm (main): Das Hauptprogramm: main() stellt den Kern jedes C-Programms dar. Das Hauptprogramm beginnt mit der Initialisierung und setzt dann mit dem abzuarbeitenden Programm fort. Beispiel: int main(void) { /* Initialisierung der Register */ DDRE = 0x08; /* DatenDirectionRegister Port E auf 1 setzen (Output) */ PORTE = 0x04; /* Setzen von Bit 3 in Register PORTE */ // Rest des Hauptprogramms while(1); // als Beispiel eine Endlosschleife }
(1)Funktionen (Functions) Tätigkeiten, die an mehreren Stellen im Programm abgearbeitet werden sollten, sind als so genannte Funktionen Functions zusammengefasst. Die Definition für eine Funktion muss sich vor dem Aufruf befinden. Befindet sich die Funktion in einem anderen Modul, muss sie als Prototyp (1. Zeile der Funktionsdefinition) deklariert werden. Struktur einer Function: Rückgabetyp Function-Name ( Übergabevariablen mit Typendeklaration) { Definition lokaler Function-Variablen Realisierung der Function-Tätigkeit eventuelle Wertrückgabe } Function-Name: beliebig
(2)Funktionen (Functions) Übergabevariablen: Liste von Werten, die an die Function übergeben werden sollen. Die Übergabewerte werden an lokale Variablen übergeben, die in der Function definiert werden müssen. Die Function arbeitet nur mit lokalen Kopien der Übergabevariablen, d.h. nach Beendigung der Function sind diese Variablen im aufrufenden Programm unverändert. Will man eine Veränderung, so kann man an die Function einen Pointer auf die Variable übergeben oder einfach mit globalen Variablen arbeiten. Wertrückgaben: Jede Funktion kann durch den 'return(variable)'-befehl einen Wert zurückgeben. Beispiele von Functions und ihrem Aufruf: input=getkey(); /* function getkey() liefert einen Wert */ value=setled(led); /* An die function setled(led) wird ein Wert */ /* übergeben, und ein entsprechender Wert */ /* wird von der function zurückgeliefert */
Operatoren C kennt mehr Operatoren als Schlüsselwörter
Zuweisungen und Arithmetische Operatoren (Teil 1):
Zuweisungen und Arithmetische Operatoren (Teil 2):
Vergleichende und Logische Operatoren: Vergleichende Operatoren werden in if- Bedingungen, while-schleifen oder in for-schleifen zur Entscheidung für den weiteren Programmablauf bzw. zur Programmverzweigung genutzt. Mit den Operatoren logisch UND / ODER können mehrere Vergleichsausdrücke zu einen Ausdruck verknüpft werden:
Bitweise Operatoren (Teil 1): Diese Operatoren sind nur für die Datentypen char, int, short, long (signed oder unsigned) erlaubt. Mit ihnen ist eine direkte Manipulation einzelner Bits möglich. Je nach µc und Compiler werden diese Befehle auf entsprechende effiziente Maschinen-befehle abgebildet. Anwendungen finden diese hardwarenahe Bitsteuerung oft beim Zugriff auf spezielle µc- Peripherie Register
Bitweise Operatoren (Teil 2): >> 01010101 <<
Beispiele: /*setzen eines einzelnen Bits*/ PORTE = 0x04; /*löschen eines einzelnen Bits/ PORTE &= ~0x04; /* Die Direktive #define ersetzt jedes weitere Vorkommen von Bezeichnern im Quelltext durch die als Ersatzliste angegebene Zeichenfolge */ #define LED0 0x01;... PORTE = LED0; // LED0 wird ersetzt durch 0x01
Links: Einführungskurs C: http://www.peacesoftware.de/ckurs.html Sehr guter Einführungskurs in C mit kleinen Testaufgaben AVR-GCC-Tutorial: http://www.mikrocontroller.net/articles/avr-gcc-tutorial