by AS playground.boxtec.ch/doku.php/tutorial Multitasking 3

Ähnliche Dokumente
by AS playground.boxtec.ch/doku.php/tutorial I 2 C Bus und analoge Eingabe = Teil 1 Hardware = Analog 1

by AS playground.boxtec.ch/doku.php/tutorial I 2 C Bus und analoge Eingabe = Teil 1 Hardware = Analog 2

Graphik 3 Bilder. by AS. Graphik Display ( 128x64 ) mit dem KS0108, 2 Ports und 2 x I 2 C Verbindung

System 72 by AS Einheitliche Halterungen für alle Module playground.boxtec.ch/doku.php/tutorials

Anzeige 1 - Teil 1. by AS. Anzeige 1 mit dem HT16K33, 2 x LED Matrix Anzeigen (8x8), 2 x I 2 C Bus = Teil 1 Hardware =

by AS playground.boxtec.ch/doku.php/tutorial I 2 C Bus Isolator Isolator

Anzeige 1 - Teil 2. by AS. Anzeige 1 mit dem HT16K33, 2 x LED Matrix Anzeigen (8x8), 2 x I 2 C Bus = Teil 2 Software =

Funk 1 - Teil 1. by AS. Funk 1 Funkübertragung im I 2 C Bus mit dem 8 Kanal Sende- und Empfangsmodul von ELV (FS20) = Teil 1 Hardware =

Graphik 1 - Hardware. by AS. Graphik Display ( 128x64 ) mit dem KS0108, 2 Ports und 2 x I 2 C Verbindung

by AS playground.boxtec.ch/doku.php/tutorial I2C - Extender

Universal Netzteil für den I 2 C Bus. by AS. Universal Netzteil für den I 2 C Bus mit 3,3V, 5V, 12V und 1,3 bis 37V

Board 2 - Teil 1. by AS. Prozessor Board 2 mit dem ATi 2313, 1 x Port, ISP und 2 x I 2 C Bus = Teil 1 Hardware =

by AS Prozessor Board 2 Attiny 2313, 1 x Ports, ISP und 2 x I 2 C Bus Board 2

by AS playground.boxtec.ch/doku.php/tutorial Drehgeber mit RGB LED Drehgeber / Encoder

by AS playground.boxtec.ch/doku.php/tutorial I 2 C Bus und Out 2 (16 Bit) I2C-Bus - Out 2

Anzeige 2 - Teil 1. by AS. Anzeige 2 mit dem HT16K33, 3 x LED Matrix Anzeigen (8x8), 2 x I 2 C Bus = Teil 1 Hardware =

by AS playground.boxtec.ch/doku.php/tutorial I 2 C Bus und IR - Melder I2C - IR 1

tutorials.bt.ch.to AVR Studio 6 / Teil 1 by AS Eine kleine Einführung in das AVR Studio 6 ( Installation und erste Schritte )


SAM D21 J17A. by AS. ARM Controller - SAM D21 J17A ( 32 Bit Controller ) Software 1 Atmel Studio einrichten

by AS playground.boxtec.ch/doku.php/tutorial I 2 C Bus und E-Paper Teil 1 - Hardware I 2 C Bus und E-Paper

by AS playground.boxtec.ch/doku.php/tutorial Attiny 261 mit Servo und verschiedenen Anschlüssen = Teil 1 Hardware = Servo 3

by AS I 2 C Bus Modul, PCF 8574 Display 4x16, 4 Bit Modus I 2 C Bus- Display 1

Board 1 - Teil 2. by AS. Prozessor Board 1 mit dem AT 1284 P, 3 x Ports, ISP und 2 x I 2 C Bus = Teil 2 Der erste Start =

Codeschloss 1 - Teil 1. by AS. Codeschloss 1 Matrixtastatur 3x4, ISP, Relais- Ausgang, I 2 C Bus oder NT Anschluss = Teil 1 Hardware =

by AS playground.boxtec.ch/doku.php/tutorial I 2 C Bus und Schalter 1 Schalter 1

Sound Blizzard. Das Netzteil

by AS playground.boxtec.ch/doku.php/tutorial I 2 C Bus und Temperatur 2 I2C-Bus Temp 2

WIFFI-pump Bauanleitung rev1 stall.biz

Bauanleitung OLED-Shield 128x64 für WeMos mini

Eigenschaften: MoMo I - Motorregler Betriebsanleitung - v

Bauanleitung DualBeam Antenne stall.biz

SAM D21 J17A. by AS. ARM Controller - SAM D21 J17A ( 32 Bit Controller ) Software 2 Das erste Programm

CU-R-CONTROL². Autor: Christian Ulrich. Datum: Version: Seite 1 von 16. AddOn IO-Taster Dokumentation zur Schaltung

MICRO LED-KONSTANT- STROMQUELLE 10mA

Bedienungsanleitung. UniMod-FX. Kingbus Universalmodul für Front mit Xenoneffekt. Symbolbild UniMod-D

Datenblatt. für Volumenmessteil ZZZ-System. Versionen: systementwicklung. Reed-kontaktgeber: 1 Imp./L. oder 2 Imp./L

LED - Leiste (rot und grün)

LED VORSCHALTPLATINE 230 VAC

Bauanleitung Impulsgeber mit S0-Schnittstelle

Bauanleitung Impulsgeber mit S0-Schnittstelle

Solaranlagen-Set 40 W

Bedienungsanleitung 1.0

1. Allgemeine Hinweise. 1.1 Gewährleistung und Haftung. 2 Sicherheit 2.1 Bestimmungsgemäße Verwendung

CPT Mk# F Morse-Code-Zeichengenerator

Bauanleitung der LED-Qube 5

Schaltnetzteil-Baustein SP 1500/01

Board 1 - Teil 1. by AS. Prozessor Board 1 mit dem AT 1284 P, 3 x Ports, ISP und 2 x I 2 C Bus = Teil 1 Hardware =

Bedienungsanleitung. Rundumkennleuchte. Generation 2.0. Maßstab 1:16 1:12 1:8

Temperaturgesteuerte Lüfterregelung

Projektarbeit in DVT auf dem Entwicklerboard

PULSECOUNTER Bauanleitung ver 02

1.0 Wichtige Sicherheitshinweise

LED Cube & Seat White PE

i / ..: .._I.,.,.>;..,!..e,.,.., ,.,/ \ _~..I.?,

Bauanleitung Unterputz Wohnraumsensor für Temperatur, Luftfeuchte und Lichtsensor für 1-Wire Bus

PCI-Netzwerkkarte 10MBit "Micronet SP2082A"

Bedienungsanleitung. Energiekosten Messgerät

GREETBoard Stepper L6208. Version 1.0

Zubehördecoder Licht 32 (L32)

myavr Programmierung in C

Step-Down Wandler. Artikelname. Pollin Electronic GmbH Tel. (08403) Stand , web, #1all, hka

I2C-002 DATASHEET I2C-002 V1.00: I2C PORTEXPANDER MIT PCA8574. Dokument NR.: I2C-002_Datasheet

Regelbares Netzteil 1,25-30Volt

WebFiber 4000 Lichtleiter-Netzteil. Installations- und Gebrauchsanleitung

Bedienungsanleitung. Mikrofon SM-99

Zeitrelaismodul ZRM 1 Art. Nr

I2C-006 DATASHEET I2C-006 V1.00: 1K EEPROM MODUL MIT TWI (I 2 C) SCHNITTSTELLE. Dokument NR.: I2C-006_Datasheet

Bedienungsanleitung. Kingpad. Variante: Standard

8.3 Taster am µcontroller

Eigenschaften: LD 14 Lauflichtdecoder Betriebsanleitung - v

Bluegate Pro (M-GT-V24) Gebrauchsanweisung Hardware für Gewerbliche Zwecke

Lotto. eine Projektarbeit in DVT. von Sven Schwab

Bauanleitung Impulsgeber 2.0 mit S0-Schnittstelle

Digitale - Einbau - Zeitschaltuhr

Version-D Bedienungsanleitung

Bisher hatten immer nur als Ausgänge geschaltet und hierfür folgende Befehle benutzt:

Outdoor LED Par 9 x 3W

SB-002 DATASHEET SB-002 V1.00: 8051 MIKROCONTROLLERBOARD MIT AT89C5131A-M OHNE NETZTEIL. Dokument NR.: SB-002_Datasheet

ODROID-VU7 Multitouch TFT-Display Best.Nr

Bedienungsanleitung CONTROL - STAR CS 100 / 230 VAC

Einführung Arduino - Aufbau

Manual Start Unit SU3. Version-D Bedienungsanleitung - 1 -

Version-D Bedienungsanleitung VGA Offline Modus

Grundlagen der Objektorientierung :

Color Wheel with Motor for T-36

Bedienungsanleitung. Progression II

Transkript:

www.boxtec.ch by AS playground.boxtec.ch/doku.php/tutorial +

Copyright Sofern nicht anders angegeben, stehen die Inhalte dieser Dokumentation unter einer Creative Commons - Namensnennung- NichtKommerziell-Weitergabe unter gleichen Bedingungen 3.0 DE Lizenz Sicherheitshinweise Lesen Sie diese Gebrauchsanleitung, bevor Sie diesen Bausatz in Betrieb nehmen und bewahren Sie diese an einem für alle Benutzer jederzeit zugänglichen Platz auf. Bei Schäden, die durch Nichtbeachtung dieser Bedienungsanleitung verursacht werden, erlischt die Gewährleistung/Garantie. Für Folgeschäden übernehmen wir keine Haftung! Bei allen Geräten, die zu ihrem Betrieb eine elektrische Spannung benötigen, müssen die gültigen VDE-Vorschriften beachtet werden. Besonders relevant sind für diesen Bausatz die VDE-Richtlinien VDE 0100, VDE 0550/0551, VDE 0700, VDE 0711 und VDE 0860. Bitte beachten Sie auch nachfolgende Sicherheitshinweise: Nehmen Sie diesen Bausatz nur dann in Betrieb, wenn er zuvor berührungssicher in ein Gehäuse eingebaut wurde. Erst danach darf dieser an eine Spannungsversorgung angeschlossen werden. Lassen Sie Geräte, die mit einer Versorgungsspannung größer als 24 V- betrieben werden, nur durch eine fachkundige Person anschließen. In Schulen, Ausbildungseinrichtungen, Hobby- und Selbsthilfewerkstätten ist das Betreiben dieser Baugruppe durch geschultes Personal verantwortlich zu überwachen. In einer Umgebung in der brennbare Gase, Dämpfe oder Stäube vorhanden sind oder vorhanden sein können, darf diese Baugruppe nicht betrieben werden. Im Falle eine Reparatur dieser Baugruppe, dürfen nur Original-Ersatzteile verwendet werden! Die Verwendung abweichender Ersatzteile kann zu ernsthaften Sach- und Personenschäden führen. Eine Reparatur des Gerätes darf nur von fachkundigen Personen durchgeführt werden. Spannungsführende Teile an dieser Baugruppe dürfen nur dann berührt werden (gilt auch für Werkzeuge, Messinstrumente o.ä.), wenn sichergestellt ist, dass die Baugruppe von der Versorgungsspannung getrennt wurde und elektrische Ladungen, die in den in der Baugruppe befindlichen Bauteilen gespeichert sind, vorher entladen wurden. Sind Messungen bei geöffnetem Gehäuse unumgänglich, muss ein Trenntrafo zur Spannungsversorgung verwendet werden Spannungsführende Kabel oder Leitungen, mit denen die Baugruppe verbunden ist, müssen immer auf Isolationsfehler oder Bruchstellen kontrolliert werden. Bei einem Fehlers muss das Gerät unverzüglich ausser Betrieb genommen werden, bis die defekte Leitung ausgewechselt worden ist. Es ist auf die genaue Einhaltung der genannten Kenndaten der Baugruppe und der in der Baugruppe verwendeten Bauteile zu achten. Gehen diese aus der beiliegenden Beschreibung nicht hervor, so ist eine fachkundige Person hinzuzuziehen Bestimmungsgemäße Verwendung Auf keinen Fall darf 230 V~ Netzspannung angeschlossen werden. Es besteht dann Lebensgefahr! Dieser Bausatz ist nur zum Einsatz unter Lern- und Laborbedingungen konzipiert worden. Er ist nicht geeignet, reale Steuerungsaufgaben jeglicher Art zu übernehmen. Ein anderer Einsatz als angegeben ist nicht zulässig! Der Bausatz ist nur für den Gebrauch in trockenen und sauberen Räumen bestimmt. Wird dieser Bausatz nicht bestimmungsgemäß eingesetzt kann er beschädigt werden, was mit Gefahren, wie z.b. Kurzschluss, Brand, elektrischer Schlag etc. verbunden ist. Der Bausatz darf nicht geändert bzw. umgebaut werden! Für alle Personen- und Sachschäden, die aus nicht bestimmungsgemäßer Verwendung entstehen, ist nicht der Hersteller, sondern der Betreiber verantwortlich. Bitte beachten Sie, dass Bedien- und /oder Anschlussfehler außerhalb unseres Einflussbereiches liegen. Verständlicherweise können wir für Schäden, die daraus entstehen, keinerlei Haftung übernehmen. Der Autor dieses Tutorials übernimmt keine Haftung für Schäden. Die Nutzung der Hard- und Software erfolgt auf eigenes Risiko. BT 2

(einfacher Ansatz) 8. Hardware 9. Software Blinker 10. Software Blinker und Taster 11. Erhöhte Belastung 8. Hardware Wir nutzen auch für die nächsten Programme weiter unsere Hardware. Die besteht immer noch aus dem NT2, dem Board 1 und unserem BPM In / Out 1. BPM In / Out 1 Taster und LEDs Bei unseren nächsten Programmen nutzen wir aber zusätzlich zu den LEDs auch die Taster. Sehen wir uns nochmal die Belegung unseres Ports A an: PA 0 PA 1 PA 2 PA 3 PA 4 PA 5 PA 6 PA 7 frei wird nicht verwendet Taster T1 Taster T2 Taster T3 LED L1 LED L2 LED L3 LED L4 Bisher haben wir PA4 bis PA7 für die LED verwendet. Jetzt nutzen wir auch die Pins PA1, PA2 und PA3 für unsere Taster. In dem nachfolgenden Programm habe ich nur einen Blinker für die LED 3 und 4 gelassen. In dieser Art werde ich ihn jetzt immer verwenden, um eine Kontrolle des Programmes zu haben. So lange es blinkt, läuft das Programm Es hat noch einen anderen Vorteil. Auf Grund der kurzen Blinkzeit kann ich fast jede Änderung der Durchlaufzeiten erkennen. Wenn z.b. ein Taster den Durchlauf stoppt, dann stoppt auch das Blinklicht. BT 3

9. Software Blinker /* ATB_Multi_8.c Created: 20.08.2014 17:50:20 Author: AS */ #define F_CPU 16000000UL // Angabe der Quarzfrequenz, wichtig für die Zeit #include <util/delay.h> // Einbindung Datei Pause #include <avr/io.h> // Einbindung Datei Ausgänge int16_t led1=0; void led_blinken1() led1++; if(led1==300) PORTA &= ~(1<<PA6); PORTA = (1<<PA7); if(led1==600) PORTA = (1<<PA6); PORTA &= ~(1<<PA7); led1=0; int main(void) DDRA=0b11000000; // Port A auf Ausgang schalten while(1) // Programmschleife led_blinken1(); // Aufruf Unterprogramm 1 _delay_ms(1); Dieses Programm lässt die beiden LED ständig mit einer Zeit von 300 ms blinken. Dabei erfolgt bei jedem Durchlauf der Aufruf des Unterprogrammes led_blinken1. Innerhalb des Unterpro-grammes erfolgt dabei das wechsitige schalten der beiden Led und das setzen und auslesen der Zähler. Im nächsten Programm wollen wir den Zustand eines Tasters auslesen. Dabei darf die Durchlaufzeit auf keinen Fall verzögert oder unterbrochen werden. Die einzelnen Teile unseres Programmes werden in Unterprogrammen ausgeführt. Das hat den Vorteil, dass ich kleinere Häppchen machen kann und jeden Teil extra programmieren und beschriften kann. Das wirkt sich besonders bei einer Fehlersuch aus, was ich persönlich nur bestätigen kann. Zusätzlich gebe ich Daten aus einem Unterprogramm zurück und nutze diese im nächsten. BT 4

10. Software Blinker und Taster /* ATB_Multi_9.c Created: 20.08.2014 20:50:21 Author: AS */ #define F_CPU 16000000UL #include <util/delay.h> #include <avr/io.h> // Angabe der Quarzfrequenz, wichtig für die Zeit // Einbindung Datei Pause // Einbindung Datei Ausgänge int16_t led1=0; int taster; int taste_lesen() // Unterprogramm Taster lesen if(pina & 1<<PA3) // Taster gedrückt? return 1; // wenn ja, Rückgabe 1 return 0; // wenn nein, Rückgabe 0 void led_taster(int taster) // Unterprogramm led_taster if(taster==1) // ist taster =1 (wahr) // dann PORTA &= ~(1<<PA4); PORTA = (1<<PA5); Else // wenn nicht // dann PORTA = (1<<PA4); PORTA &= ~(1<<PA5); void led_blinken1() // Unterprogramm led_blinken 1 led1++; if(led1==300) PORTA &= ~(1<<PA6); PORTA = (1<<PA7); if(led1==600) PORTA = (1<<PA6); PORTA &= ~(1<<PA7); led1=0; BT 5

int main(void) DDRA=0b11110000; while(1) taster = taste_lesen(); // Port A Pins auf Ausgang schalten // Programmschleife led_taster (taster); led_blinken1(); // Aufruf Unterprogramm 1 _delay_ms(1); // Pause 1 ms // Unterprogramm Taster lesen + Variable (1/0) in // taster speichern // Unterprogramm led_taster + Übergabe Variable Taster Sehen wir uns das Unterprogramm taste_lesen() einmal genauer an: ( 1 ) int taste_lesen() // Unterprogramm Taster lesen ( 2 ) // Klammer Anfang ( 3 ) if(pina & 1<<PA3) // Taster gedrückt? ( 4 ) return 1; // wenn ja, Rückgabe 1 ( 5 ) return 0; // wenn nein, Rückgabe 0 ( 6 ) // Klammer Ende In der Zeile 1 wird das Unterprogramm gestartet. In der Zeile 3 wird der Zustand des Tasters (am Pin PA3) abgefragt. Ist der Taster PA3 gedrückt, erfolgt die Rückgabe von 1 in der Zeile 4. Ist der Taster PA3 nicht gedrückt, erfolgt die Rückgabe von 0 in der Zeile 5. Das ist die Taster abfrage, ohne Zeitverzögerung und Entprellung. Als nächstes kommt der Aufruf der Unterprogramme und die Übergabe der Variablen: ( 1 ) while(1) // Beginn der Programmschleife ( 2 ) // Klammer Anfang ( 3 ) taster = taste_lesen(); // Unterprogramm Taster lesen + // Variable (1/0) in taster speichern ( 4 ) led_taster (taster); // Unterprogramm led_taster + // Übergabe Variable Taster ( 5 ) led_blinken1(); // Aufruf Unterprogramm 1 ( 6 ) _delay_ms(1); // Pause 1 ms ( 7 ) // Klammer Ende In der Zeile 1 wird die Programmschleife gestartet. In der Zeile 3 wird das Unterprogramm taste_lesen aufgerufen. In diesem Unterprogramm wird der Zustand des Tasters abgefragt und mit 0 (offen/unwahr) oder 1 (geschlossen/wahr) zurückgegeben und in der Variablen taster gespeichert. In der Zeile 4 wird das Unterprogramm led_taster aufgerufen und die Variable taster übergeben. In der Zeile 5 wird bei jedem Durchlauf led_blinken1 aufgerufen. In der Zeile 7 wird bei jedem Durchlauf 1 ms verzögert BT 6

Als letztes komm dann noch die Anzeige des Taster: ( 1 ) void led_taster(int taster) // Unterprogramm led_taster ( 2 ) // Klammer Anfang ( 3 ) if(taster==1) // ist taster = 1 (wahr), dann ( 4 ) // Klammer Anfang ( 5 ) PORTA &= ~(1<<PA4); PORTA = (1<<PA5); ( 6 ) // Klammer Ende ( 7 ) // wenn nicht ( 8 ) // dann ( 9 ) PORTA = (1<<PA4); PORTA &= ~(1<<PA5); ( 10 ) // Klammer Ende ( 11 ) // Klammer Ende In der Zeile 1 wird das Unterprogramm gestartet. In der Zeile 3 wird die Variable taster abgefragt. Ist Variable taster 1 (wahr), dann ist die Bedingung if(taster==1) wahr und die Zeile 5 wird mit dem schalten der PINs PA4 und PA5 (ein/aus) ausgeführt. Die Zeile 7 wird ausgeführt, wenn die Bedingung 0 (nicht wahr) ist und die Zeile 9 ausgeführt. Es werden wieder die PINs PA4 und PA5 (aus/ein) geschaltet. 11. Erhöhte Belastung Im nächsten Programm wollen wir die Belastung noch einmal erhöhen. Dazu habe ich einen zweiten Taster programmiert /* ATB_Multi_10.c Created: 21.08.2014 18:11:24 Author: AS */ #define F_CPU 16000000UL #include <util/delay.h> #include <avr/io.h> // Angabe der Quarzfrequenz, wichtig für die Zeit // Einbindung Datei Pause // Einbindung Datei Ausgänge int16_t led1=0; int16_t led2=0; int taster1; int taster2; int taste_lesen1() if(pina & 1<<PA3) return 1; return 0; int taste_lesen2() if(pina & 1<<PA1) return 1; return 0; BT 7

void led_taster1(int taster1) if(taster1==1) PORTA &= ~(1<<PA4); PORTA = (1<<PA5); PORTA = (1<<PA4); PORTA &= ~(1<<PA5); void led_taster2(int taster2) if(taster2==1) PORTC &= ~(1<<PC5); PORTC = (1<<PC6); PORTC = (1<<PC5); PORTC &= ~(1<<PC6); void led_blinken1() led1++; if(led1==300) PORTA &= ~(1<<PA6); PORTA = (1<<PA7); if(led1==600) PORTA = (1<<PA6); PORTA &= ~(1<<PA7); led1=0; A4 A5 A4 A5 BT 8

int main(void) DDRA=0b11110000; // Port A auf Ausgang schalten DDRC=0b01100000; // Port C auf Ausgang schalten while(1) // Programmschleife taster1 = taste_lesen1(); // Aufruf Unterprogramm 1 led_taster1 (taster1); // Aufruf Unterprogramm 2 taster2 = taste_lesen2(); // Aufruf Unterprogramm 3 led_taster2 (taster2); // Aufruf Unterprogramm 4 led_blinken1(); // Aufruf Unterprogramm 5 _delay_ms(1); // Pause 1 ms Zu diesem Programm brauche ich nicht viel zu erklären, da es sich im Grund nur um Erweiterung des Vorläufers handelt. Habe dazu nur die Variablen angepasst und ein paar zusätzliche Kommentare eingefügt. Wer Lust hat kann ja mal versuchen den Prozessor zu überlasten oder aus dem Tritt zu bringen. Wünsche viel Spass dabei Einige Teile des Textes wurden zur besseren Übersicht farblich gestaltet. Die Nutzung erfolgt auf eigenes Risiko. Ich wünsche viel Spaß beim Bauen und programmieren Achim myroboter@web.de BT 9