myavr Programmierung in C

Ähnliche Dokumente
Tag 2 Eingabe und Interrupts

Microcontroller Kurs Programmieren Microcontroller Kurs/Johannes Fuchs 1

Starten Sie die Arduino IDE und geben Sie den folgenden Programmcode ein:

Aufgaben zur Attiny-Platine

C.1 Serielle Schnittstelle, erstes Testprogramm (a)

Interrupts. Funktionsprinzip. Funktionsprinzip. Beispiel in C

Studiengang Maschinenbau, Schwerpunkt Mechatronik (früher: Automatisierungstechnik) Seite 1 von 8

C++ mit dem Arduino (Uno und Mega2560)

Parallel-IO. Ports am ATmega128

Bei jedem Arduino-Projekt muss man ein Grundgerüst "bauen". Das sieht dann so aus:

8.1 Grundsätzlicher Aufbau der Beispiele

Einführung in die Programmierung von Mikrocontrollern mit C/C++

Lotto. eine Projektarbeit in DVT. von Sven Schwab

Arduino für FunkAmateure

Mikrocontroller. eine Einführung. Florian Schmitt / 34

Dateien, die nicht in das Projekt eingebunden sind, werden ohne Syntax highlight dargestellt. MiCoWi und µvision Seite 1 Uwe Wittenfeld

einfache PIC-Übungsprogramme

Inhalt. Aufgabe 4: LED-Modul Hinweise Testen des Moduls Sommersemester 2015

Programmieren in C Teil 3: Mikrocontrollerprogrammierung

Makros sind Textersetzungen, welche vom Präprozessor aufgelöst werden. Dies Passiert bevor der Compiler die Datein verarbeitet.

U Abend 3: Musterlösungen, Taster entprellen, Unterprozeduren, Interrupts, Timer

Speicheraufbau des AT89C5131

CCS Compiler Tutorial mit Beispielen

Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt

Interrupt-Programmierung

8.3 Taster am µcontroller

Stopp-Uhr. Erstellen Sie ein Programm (in Zweier- bzw. Dreier-Gruppen), welches folgende Bedingungen erfüllt:

AVR-Mikrocontroller in BASCOM programmieren, Teil 2

Wer möchte, kann sein Programm auch auf echter Hardware testen

AVR UART. ELV Modul: ch=&marke=

Zähler- und Zeitgeber-Baugruppen

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

Richtung durch Taster während des Ablaufs umschaltbar

b) Was bewirken folgende Programmanweisungen? uint8_t x = 42; x ^= x;

Serie 8: Microcontroller 17./

b) Gegeben sei folgende Enumeration: enum SPRACHE {Deutsch, Englisch, Russisch};

i2c-bus.de I2C-001 KURZBESCHREIBUNG I 2 C Modul mit PCF Bit I/O Port-Expander Dokument NR.: I2C-001-D-01

Dokumentation Metronom

Prinzipieller Grundaufbau eines einfachen C-Programmes

i2c-bus.de I2C-002 KURZBESCHREIBUNG I 2 C Modul mit PCA Bit I/O Port-Expander Dokument NR.: I2C-002-D-01

Wintersemester 08/09. Anwendungen der Prozessdatenverarbeitung Inverses Pendel

1 Vom Problem zum Programm

Projekt: Ampelsteuerung für die Kinderverkehrserziehung der Stadtpolizei Dornbirn

Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch

Arduino - Einfacher Teiler

Die Programmiersprache C99: Zusammenfassung

Einführung in Mikrokontroller Benutzung mit dem Arduino Board. Ramon Hofer ICVR

easyident Türöffner mit integriertem USB Interface

AVR-Mikrocontroller in BASCOM programmieren, Teil 3

Kurzeinführung in C. Johannes J. Schneider

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

JAVA-Datentypen und deren Wertebereich

Kurze Einführung in die Programmiersprache C++ und in Root

Lösungen zum Kurs "Mikrocontroller Hard- und Software

Produktinformationen. Basis Set Atmel Atmega8 & ISP Programmer. Lieferumfang :

Projekt Nr. 15: Einen elektronischen Würfel erstellen

Schleifenanweisungen

Kurzeinführung in C++

Haftkünstler auf dem Prüfstand. Online Ergänzung HOLGER FLORIAN BOHN OLGA SPECK THOMAS SPECK

Mikrocontroller: Einführung

Labor Industrielle Netzwerke. Versuch 2: Tastaturentprellung

Was unterscheidet Microcontroller von einem PC ( Laptop ) oder einem Handy

Einführung in das Programmieren in der Sekundarstufe 1. mit einem Arduino und der Physical-Computing-Plattform

Felder und Schleifen. Themen heute. Felder Schleifen Heartbleed. Programmieren für Ingenieure Sommer Andreas Zeller, Universität des Saarlandes

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Propädeutikum. Dipl.-Inf. Frank Güttler

Timm M. Steinbeck und Arne Wiebalck Lehrstuhl für Technische Informatik Universität Heidelberg. Prozess-Monitoring auf CPU-Takt Ebene

5.6 PWM (Pulse Width Modulation) 23

KY-001 Temperatur Sensor Modul

ARDUINO Übung. Inhalt:

BKTM - Programmieren leicht gemacht.

Objektorientierte Programmierung

Stefan Hoffmann. Leichter Start mit BASCOM und myavr

RN-Control ARDUINO Bibliothek ATMEL 32 Version 0.2

Programmierung mit NQC: Kommunikation zwischen zwei RCX

DST EINFÜHRUNG IN MRT (V2)

Deklarationen in C. Prof. Dr. Margarita Esponda

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler

M15 - Physical Computing mit dem Raspberry Pi I

Mikrocontrollertechnik

Einführung in AVR-Assembler

Fernseh-Simulator Microcontroller ATMEL 89C Bit Betriebsspannungsbereich von 9-35 Volt 8 leistungsfähigen Ausgänge 16 Programmspeicherplätze

Addieren und Subtrahieren mit Mikrocontroller Atmega AT90162USB

E.1 Einleitung. Teil E Pulsweitenmodulation (PWM) 1

5. Elementare Befehle und Struktogramme

MODUL 6 TIMER UND COUNTER

Einstieg in die Informatik mit Java

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Interrupts. Inhalt. Interrupts. Synchronisation

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Gliederung Hardware fuer die Zeitmessung Zeitmanagement auf Uniprozessorsystemen. Timing Measurements. Timo Schneider. 4.

Id PIO1002: Anschaltbeispiele einer Eingangsleitung an die PIO II

Einführung in die C-Programmierung

Erste Schritte der Programmierung in C

5-Tonfolgen Dekodierung mittels AVR

Objekt-basiert oder objekt-orientiert? Moderne Low Level Treiberprogrammierung mit C/C++ Programmier-Paradigmen Programmiersprachen C und C++

Projektarbeit: Roulette Spiel

Zahlendarstellung Logikfunktionen Register Eingänge Infrarot senden TSOP-Effekte Weiterführendes U Abend 3:

Mikrocontroller: Einführung

myavr Klassendiagramm der UML mit SiSy-AVR Schnelleinstieg für myavr Board MK3

Transkript:

myavr Programmierung in C Stefan Goebel Februar 2017 Stefan Goebel myavr Programmierung in C Februar 2017 1 / 12

Grundgerüst... braucht man immer! #include <avr/io.h>// Register- und Konstantendefinitionen #define F CPU 3686400 // Taktfrequenz des Prozessors #include <util/delay.h>// Zeitverzögerung int main( void ) // Hauptprogramm {... Programmbefehle; return 0; } Stefan Goebel myavr Programmierung in C Februar 2017 2 / 12

LED einschalten... aber wie? // im DatenRichtungsRegister des Ports die Ausgänge markieren DDRD = 0b00100000; //Port D Pin 5 ist Ausgang Stefan Goebel myavr Programmierung in C Februar 2017 3 / 12

LED einschalten... aber wie? // im DatenRichtungsRegister des Ports die Ausgänge markieren DDRD = 0b00100000; //Port D Pin 5 ist Ausgang // einschalten PORTD = 0b00100000; Stefan Goebel myavr Programmierung in C Februar 2017 3 / 12

LED einschalten... aber wie? // im DatenRichtungsRegister des Ports die Ausgänge markieren DDRD = 0b00100000; //Port D Pin 5 ist Ausgang // einschalten PORTD = 0b00100000; // und wieder aus PORTD = 0b00000000; Stefan Goebel myavr Programmierung in C Februar 2017 3 / 12

LED einschalten... aber wie? // im DatenRichtungsRegister des Ports die Ausgänge markieren DDRD = 0b00100000; //Port D Pin 5 ist Ausgang // einschalten PORTD = 0b00100000; // und wieder aus PORTD = 0b00000000; Nachteil: alle anderen Ausgänge werden immer ausgeschaltet Stefan Goebel myavr Programmierung in C Februar 2017 3 / 12

Bitmaske zum Einschalten nutzen... weil es cleverer ist mit der ODER 1 -Verknüpfung D7 D6 D5 D4 D3 D2 D1 D0 DatenByte 0 0 1 0 0 0 0 0 Maske D7 D6 1 D4 D3 D2 D1 D0 Ergebnis 1 https://de.wikipedia.org/wiki/oder-gatter Stefan Goebel myavr Programmierung in C Februar 2017 4 / 12

Bitmaske zum Einschalten nutzen... weil es cleverer ist mit der ODER 1 -Verknüpfung D7 D6 D5 D4 D3 D2 D1 D0 DatenByte 0 0 1 0 0 0 0 0 Maske D7 D6 1 D4 D3 D2 D1 D0 Ergebnis Programmiervarianten: PORTD = PORTD 0b00100000; PORTD = 0b00100000; PORTD = ( 1 << 5 ); 1 https://de.wikipedia.org/wiki/oder-gatter Stefan Goebel myavr Programmierung in C Februar 2017 4 / 12

Bitmaske zum Ausschalten nutzen... weil es cleverer ist mit der UND 2 -Verknüpfung D7 D6 D5 D4 D3 D2 D1 D0 DatenByte 1 1 0 1 1 1 1 1 Maske D7 D6 0 D4 D3 D2 D1 D0 Ergebnis 2 https://de.wikipedia.org/wiki/und-gatter Stefan Goebel myavr Programmierung in C Februar 2017 5 / 12

Bitmaske zum Ausschalten nutzen... weil es cleverer ist mit der UND 2 -Verknüpfung D7 D6 D5 D4 D3 D2 D1 D0 DatenByte 1 1 0 1 1 1 1 1 Maske D7 D6 0 D4 D3 D2 D1 D0 Ergebnis Programmiervarianten: PORTD = PORTD & 0b11011111; PORTD = PORTD & (0b00100000); PORTD &= (0b00100000); PORTD &= ( 1 << 5 ); 2 https://de.wikipedia.org/wiki/und-gatter Stefan Goebel myavr Programmierung in C Februar 2017 5 / 12

Verzögerung... damit es etwas länger dauert Konstante mit der Taktfrequenz des Prozessors muss deklariert sein. Header-Datei muss eingebunden sein. // eine Sekunde warten delay ms( 1000 ); Stefan Goebel myavr Programmierung in C Februar 2017 6 / 12

Schleifen... und nochmal... while( Schleifenbedingung ) {... Befehle, die wiederholt werden; } Stefan Goebel myavr Programmierung in C Februar 2017 7 / 12

Verzweigung... ent oder weder if( Bedingung ) {... wird ausgeführt, wenn Bedingung erfüllt ist } else {... wird ausgeführt, wenn Bedingung nicht erfüllt ist } Stefan Goebel myavr Programmierung in C Februar 2017 8 / 12

Verzweigung... ent oder weder if( Bedingung ) {... wird ausgeführt, wenn Bedingung erfüllt ist } else {... wird ausgeführt, wenn Bedingung nicht erfüllt ist } if( Bedingung1 && Bedingung2 ) // UND if( Bedingung1 Bedingung2 ) // ODER Stefan Goebel myavr Programmierung in C Februar 2017 8 / 12

Taster abfragen... Druck machen // internen Pull-Up-Widerstand an Port D Pin 2 einschalten PORTD = 0b00000100; Datenbyte mit der Maske vergleichen. D7 D6 D5 D4 D3 D2 D1 D0 DatenByte 0 0 0 0 0 1 0 0 Maske Stefan Goebel myavr Programmierung in C Februar 2017 9 / 12

if(!( PIND & ( 1 << 2 ) ) ) // invertieren, da Taster gegen Masse { PORTD = ( 1 << 5 ); } else { PORTD &= ( 1 << 5 ); } Stefan Goebel myavr Programmierung in C Februar 2017 9 / 12 Taster abfragen... Druck machen // internen Pull-Up-Widerstand an Port D Pin 2 einschalten PORTD = 0b00000100; Datenbyte mit der Maske vergleichen. D7 D6 D5 D4 D3 D2 D1 D0 DatenByte 0 0 0 0 0 1 0 0 Maske

Entprellen... keine Hektik! Mehrere Impulse beim Betätigen eines Tasters Gegenmaßnahmen: aufwändige Schalter zusätzliche Elektronik Softwaretechnische Maßnahmen Stefan Goebel myavr Programmierung in C Februar 2017 10 / 12

Softwaretechnisches Entprellen... keine Hektik! verschiedene Verfahren Flankenerkennung Warteschleifen-Verfahren ungünstig bei zeitkritischen Anwendungen Zählergesteuerte Schleifen nur kurze Wartezeiten Timer-Verfahren universell und zuverlässig Nachbildung elektronischer Filter Stefan Goebel myavr Programmierung in C Februar 2017 11 / 12

Interruptsteuerung... Moment mal! Unterbrechung des Hauptprogramms und Verzweigung in ISR bei bestimmten Ereignissen z.b. Reset, Extern, Timer oder UART Include Datei einbinden Für jede aktivierte IR-Quelle eine Funktion (ISR) programmieren Interrupt über Aktivierungs-Bit einschalten Interrupts müssen global aktiviert sein Innerhalb einer Interrupt-Routine keine umfangreichen Berechnungen Variable, die von main() und ISR benutzt werden, volatile deklarieren Stefan Goebel myavr Programmierung in C Februar 2017 12 / 12