Prof. J. Walter waju0001@web.de Tafel Wintersemester 06 Prof. J. Walter waju0001@web.de
02.10.06 Thomas Haehnel
Der erste Befehl Jmp Sprungziel = jump label
PDL Programm design language Zuerst kommentieren, WAS gemacht wird Erst dann kommt das WIE Erkenntnis: die Dokumentation und Kommentare sind das Wichtigste
Merkspruch Nur dokumentierte Software ist existent!
02.10.2006 ??? Leute kein Notebook ?? haben einen Rechner Pentium 5 mit 1,8 GHz, TFT, 1024x768 Alle Studenten eigenen Notebook mitbringen! RJ45 Anschluss mit 100MBit/s W-Lan mit 54MBit In der Vorlesung wird programmiert
Semester ?? MT3 ?? MT4 ?? FT
Assembler-Programm Name: EIN_AUS6 Was muß das Programm machen? T1 einschalten -> L1 T2 ausschalten ->L1
.NET Framework Lizenz im Sekretariat Ansprechpartner Prof. Artinger
1,0 Pegel erzeugen + 5V R = 5 kΏ Ausgang GND
Eingang Schalter + 5V R = 5 kΏ Eingang Port 1.1 Zum Controller GND
Lampe leuchtet (Ausgang) + 5V R = 5 kΏ Ausgang GND Microcontroller Externe Beschaltung
Her(t)zlich Willkommen 9. Oktober 2006 Her(t)zlich Willkommen
Maurice Bopp Installation Keil-Software µ-vision Benutzer: Administrator Hier immer 8051-Controller Installation Keil Evaluationssoftware C51
Götz Werner DM-Markt Man kann nicht gelernt werden, sie müssen selbst lernen Bitte installieren sie selbst 8051-Software Installation der Vorlage
Neues 8051-Programm Gleichzeitig 3 Lampen ein, 3 Lampen aus L1=>P3.2 L2=>P3.3 L3=>P3.4
EinAus3 Bitte Programm auf Rechner entwickeln und auf Stick speichern wie in Prüfung Programm: EinAus3
Bemerkung Alle Programme wurden unter IE6, IE7 getestet Für andere Tests hat der Dozent keine Zeit Dozent arbeitet immer mit Standardsoftware
Bemerkungen Umgang mit Beamer und PC wird vorausgesetzt Kann ich die Ports auf einmal umschalten? Nein, so nicht clr P3.2, P3.3, P3.4 Bitte gesamten Ordner EinAus3 speichern
Bemerkungen Ziel: Programmieren von 8051 Sie könne gleichzeitig den Port beschreiben Mov P4,#1110 0011b µ = 10^-6
Hausaufgabe Hausaufgabe: wie weit kommt das Licht in einer µ-Sekunde?
Rafael Swoboda Evaluation Leihe Entwicklungssystem in der Bibliothek Hinweis: Schreibmaschinenkurs Keil Software Mit aktueller Software lernen
Neuer Befehl Mov P4,#1110 0011b 4 Bits=1 Nippel, 2 Nippel=1 Byte Hexadezimalzahlen werden vorausgesetzt
Mov_P4 Programm: Mov_P4 T1 Bitkombination in P4 schreiben T2 Alle Bits setzen Erfahrungen: jeder sollte das Programm entwickeln können
Tipps Immer nur eine Instanz von Keil öffnen Für jedes Programm ein neues Projekt anlegen Unterscheidung zwischen Bit- und Byte-Befehlen
Tipps 2 Unterscheidung zwischen Bit- und Byte-Adressen
Msb, most significant byte
Organisatorisches Di Nachmittag Vorlesung in den ersten 6 Wochen Dann Labor Di und Mi Mit Assistent und HiWi Wesentliche Verbesserung: Studenten über Organisation informieren
Neueste Ausrüstung, bitte Sorgfalt
Michael Kraft Blog: Post im Internet http://mechatronik.wordpress.com
Test des Programmes Programm Mov_P4 Aufgabe: Mov_P4 mit Bit Befehlen Name: Mov_P4b Bit setzen Bit rücksetzen Programmstart bei 0x0000 im Speicher
Gelerntes Byte setzen Byte zurücksetzen Breakpoints setzen F5: Run Automatisch Debuggen Zauberstift
Unterlagen Alle Bilder im Internet Startseite Mikrocomputertechnik Producer Video- Powerpoint- html gemischt Multiple choice Kapitel 1
Daniel Flicke MindmanagerSmart Paßwort: nurfürdich
Vorstellung Projekt Bsp.-Projekt Autoverfolgung SS05 Web http://193.196.117.23/projekte/ws06-xxx
Christian Fritz Datum 16.10.06
Ziel: A/D Wandlung Analoger Wert: Wert: kontinuierlich und Zeit: kontinuierlich x-Achse kontinuierlich und y-Achse kontinuierlich
A/D
Programm: A_D_W A/D-Wandler auf Tastendruck T1 wird ein Wert gewandelt L1 an: Programm läuft L2 an: A/D Wandlung beendet
Befehle Wandlung auslösen: warten bis A/D fertig: mov DAPR, #0 jb BSY, $ WARTEN: jb BSY, WARTEN
Befehle 2 Wert in Akku (=Akkumulator) A Wert steht nach der Wandlung im Register ADDAT
Fehler „Target“ fehlt Abhilfe: Datei Explorer (siehe nächste Folie)
Bei Fehlermeldung des Compilers
kleine Hausaufgabe nach jeder Wandlung wird die nächste Kanalnummer gewählt neuer Befehl: inc Register (z.B. inc A)
kleine Hausaufgabe 2 es wird eine Schleife und ein Schleifenzähler benötigt (von 0 bis7)
Christian Fritz Datum: 17.10.06
Tipps Allgemeine Aussagen des Profs: Vorsicht bei unterschiedlichen Software-Versionen! Bitte Frage stellen: Zu was benötige ich das?
Tipps 2 Bitte Wohnzimmer und Toilette nicht verwechseln Im Vorlesungsraum: Kameraüberwachung
Herausforderung Zu was brauch ich den MIST A/D-Wandlung!?
Temperaturerfassung A/D- Wandlung 5V Register 0V – 3V ADDAT 99 0V A µ-Controller
MOV - Befehl mov Ziel,Quelle mov A,ADDAT stehen die Daten im Akku, erreiche ich jedes Ziel Daten können beliebig bearbeitet werden
Bsp. Kühlschrank mittlere Temperatur in einem Kühlschrank ermitteln Position der Sensoren: Gemüsefach und mittleres Fach S1 an AN0 S2 an AN1
Programm KUEHL1 Ziel: Anzeige der mittleren Temperatur in einem Kühlschrank KUEHL1 digitalisiert die Werte von 2 Sensoren und schreibt die Werte in Register R0 und R1
Wiederholung Umrechnung Spannungsbereich von 0V-3V wird linear auf eine Temperatur umgerechnet z.B.
Zuordnung Temperatur -> Zahl
Jamal Oulhadj
Tipp vom Dozenten: Bei bitadressierbaren Bits immer die einzelnen Bits programmieren Nicht Byteweise !!
Vitalis Meier 23.10.2006
ADCON AD control MX0, MX1, MX2 MX steht für Multiplexer
Ziel Indirekte Adressierung mov A,dadr; holt Inhalt der direkten Adresse (interner Datenspeicher) in den Akkumulator Speicherbereich von 0 bis 7F h = 128 Byte interner Speicher direkt adressierbar
Programm: ADDADR T1 schreibe den gewandelten Wert(AN0) von ADDAT in die Adresse 30 h T2 schreibe den gewandelten Wert(AN0) von ADDAT in die Adresse 31 h
Test von ADDADR AN0 = 4 V – Test des Programms
Programm ZDRW Programm: mit der Taste T1 werden 32 Werte gewandelt und in den internen Datenspeicher ab 30 h gespeichert (AN0)
ZDRW R2 ist unser Zählregister DJNZ R2,SCHLEIFE; decrement jump not zero Inhalt von R2 -1, wenn nicht 0 springe nach SCHLEIFE
Indirekte Adressierung in R0 kommt die Adresse ADDAT wird in Akkumulator kopiert mov@R0,A ; kopiert den Inhalt von A in die Adresse, welche in R0 steht
Frédéric Ablitzer 24.10.06
Organisatorisches Heute Nachmittag wird Herr Beck Eagle Effektivität Austausch von Programmen Austausch von Hardware / Schaltplane
Tipps zur Prüfung Programm lokal auf Rechner entwickeln Zwischendurch Kopie von Projektordner auf Stick speichern Weiterentwicklung lokal auf Rechner
List-Account An der Universität Karlsruhe einfach MT4-eMail-Verteiler: hs-mt@lists.uni-karlsruhe.de
Programme Download Unter www.hit-karlsruhe.de/8051
Fragen Befehl INC R0 = Inhalt von R0 + 1 MOV @Ri,dadr ;dadr ist direktadressierbarer Speicherbereich im 8051-Kontroller In dadr befinden sich alle Register, z.B. ADDAT, R0, … R7, ADCON
Externer Speicherbereich MOVX @DPTR,A MOV DPTR,#const16 Schreiben sie das Programm: ZDRWX Die 32 Werte sind im externen Datenspeicher zu speichern
Martin Schmid 30.10.06
DPTR DatenPointer 16Bit Adresse externer Datenspeicher Debug: X:0x2000 Zeigt den Inhalt des externen Datenspeichers ab Adresse 2000h
ZSRWX 256 Werte wandeln und in den externen Datenspeicher schreiben
ZTRWX 2560 Werte wandeln und in den externen Datenspeicher schreiben Tipp: innere und äußere Schleife Z.B.: 256 mal 10 = 2560 Werte
MITTEMP Ermittlung der mittleren Temperatur Befehl: add A,Rn Division durch 2 Befehl: rrc A C Carry= Übertrag
Sebastian Noworolski 31.10.06
Letzte Vorlesung 0 0101 0101 55h/2 = 42,5 0 0010 1010 2Ah = 42
Einsatz Verbesserung von Meßwerten Erniedrigung der Messunsicherheit Bsp. Erfassen von 8 Meßwerten, summieren und Division durch 8 Mittelwertbildung
Hausaufgabe des Dozenten Visualisierung/ Video Darstellung in HPVE Darstellung Blattfeder
rrc A 1 0011 0010 0 1001 1001
Timer 2 Erzeugen einer Zeitdauer 50 ms CRCH (Compare Reload Capture High byte) CRCL (Compare Reload Capture Low byte)
Folie 2: Timer 2 CCL1 (Compare Capture Low byte Einheit 1) CCH1 (Compare Capture High byte Einheit 1) Fosc Frequenz des Controllers (12 MHz )
Folie 3: Timer 2 T2_50MS: Timer 2 ist so zu programmieren: Taktfrequenz 1 MHz, Reloadregister 15536, alle 50 ms wird ein Interrupt ausgelöst Tipp: Lösung im Buch mit 1 ms, Seite 150 Programmierung Timer 2
T50_MIT.A51 Programm ermittelt alle 50ms die mittlere Temperatur von 2 Sensoren.
Interrupt Ein Interrupt ist mit reti abzuschliessen Ein call mit ret
AD_INT Schreiben Sie das Programm: MITTEMP als Interruptprogramm für den A/D-Wandler IADC. D.H. Sobald die Wandlung durchgeführt wurde, ist ein Interrupt vom A/D-Wandler auszulösen.
Heiko Schmidt 06.11.2006
Projektor einschalten Der Beamer wird über TCP/IP geschaltet Über Browser bedienbar Sprache lässt sich einfach umstellen URL = Adresse: 192.168.xxx.xxx 65536 Geräte (Adressen)
Bezug TCP/IP-MC Es gibt inzwischen MC mit TCP/IP Schnittstellen www.keil.com MC-Projekt? Stromversorgung über TCP/IP
Interrupt Interrupt-Vektor vom A/D-Wandler Buch Seite 115 43h
Interrupt vom Thema Übung „Aufstehen“ Mit 4 Leitungen können 16 Adressen erzeugt werden 65536 Adressen -> 16 Aufsteher werden benötigt 512 MB?
Adressen - Leitungen
AD_INTE A/D-Wandlung mit Interrupt einfach, d.h. T1ein Wert wird gewandelt mit Interruptverfahren Vorsicht IADC Flag muß zurückgesetzt werden
Thomas Haehnel 07.11.2006
Interrupt – Polling Interrupt Polling A/D Wandler kann in 2 Verfahren betrieben werden Interrupt Ereignisorientiert Während der Wandlungszeit andere Operation Polling Abfrage (jb BSY, $)
wunderbar Beim Controller lassen sich einzelne Bits programmieren Bei Prozessoren muß byteweise zugegriffen werden
ADINTEZ A/D Wandler mit Interrupt – zwei Sensoren Kanal 0 in R0
Vitalis Meier Dienstag 14 Uhr
Ziel Klarheit bei Projekten Organisation Inhalt
Organisation 2 Leute bearbeiten 1 Projekt 1 Projekt = 1 web
Inhalt Entscheidung Protokolle erstellen, auch bei kleinen Sitzungen Hardware Beispiel Uhr mit I2C-Baustein Software Beispiel Uhr mit Timer 2 Protokolle erstellen, auch bei kleinen Sitzungen Es gibt keinen Vereinsamten
Gerd Kaiser 13.11.2006 Ziel: Absolutes Verstehen des Interrupts Nützlicher Fehler Interrupt ganz einfach
Wichtig Interrupt mit reti abschließen Ein call mit ret abschließen Erklärung: Rücksprungadresse
Einfacher Interrupt EIN_INT Am externen Port 3.2 wird ein Interrupt ausgelöst. Es wird eine Lampe (Port 3.4) angemacht
Rücksprung-Adresse Die Rücksprung-Adresse wird im internen Datenspeicher ab der Adresse 08h abgelegt. Die Adresse wird durch den Stack-Pointer bestimmt.
2 Rücksprung-Adressen Programmunterbrechung tritt auf Interrupt Service Routine
Aufgabe Was geschah??? Fügen Sie 4 nop‘s in Die Abfrageschleife Je nach nop wird eine andere Rücksprungadresse gespeichert
ERP Einfaches Register-Programm Wo liegen die Register R1 und R2 ERP: T1 0A5H in R1 T2 05AH in R2 D:0x00 interner Speicher anschauen
AD50_256 T1: Alle 50 ms werden zwei A/D-Werte gewandelt, gemittelt und in den externen Speicher ab Adresse 2000h geschrieben. In Summe werden 256 gemittelte Werte geschrieben. Alles mit Interrupts ;-)
Heiko Schmidt 20.11.2006
Programm von Maxime Leclercq und Gerd Kaiser Funktion erfüllt Nur noch Kosmetik zu machen Bemerkung: Aufgabe hat Prüfungsniveau
Benennung ISR ISR = Interrupt Service Routine z.B. ISR_AD: Interrupt wurde vom A/D-Wandler ausgelöst Manche Interrupts setzen das Flag per Hardware zurück Manche per Software, z.B. TF2
Richtig testen Prog muss mit mehreren Werten nacheinander getestet werden Tipp: Stack-Pointer sollte am Ende des Programms auf 07h stehen
Aufgabe Testen Sie das Programm AD50_256_2 Aufgabe für Streber: programmieren Sie das Programm mit 100ms Abtastrate
PWM Pulsweiten-Modulation Modulation = Multiplikation Aufgabe: SIEINAUS Signal 25ms ein – 25ms aus, P1.1 Programmierung von CCEN =E/A-Einheit (nicht im Buch )
Vorgehensweise Test im Simulator Test auf Euro 535 Test mit Oszi an Port 1.1 Port 1.1 ist Pin
Compare T2 mov CCEN, #00001000b
Frédéric Ablitzer 21.11.2006
Kleine Aufgabe Wie weit kommen Sie, wenn Sie mit 100km/h fahren und eine Zeit von 65ms zu Verfügung haben? 1,8m
Kleiner Tipp Keine Umlaute, keine Accents in Dateinamen Internet nur ASCII
Einfachere Aufgabe Aufgabe Rechteckgenerator AUREGE: CC1 mit FE08 laden Das Reload Register mit FE00 laden Timer 2 im Reload Betrieb mit 1 µs zählen lassen
Slawa Knorr 26.11.06
Animation T2 Die Zahlenwerte wurden von der Animation T2 übernommen
Aufgabe-Pause AUREGE11 gleich AUREGE mit Puls_Pausenverhältnis 1:1 programmieren
Martin Schmid 28.11.2006
Kunst der µ-C-Prog Einstellung der Hardware durch Software Konfigurieren der Hardware Beispiel für Korrektur
10 Punkte für AUREGE FUNKTIONALITÄT WARTBARKEIT=DOKUMENTATION 3 PUNKTE FÜR PDL PRINZIPIELLER ABLAUF 5 PUNKTE – EINSTELLUNG DER REGISTER 2 PUNKTE FÜR RESTPROGRAMM
PDL Timer 2 initialisieren: T2-zählen T3-stop PWM an P1.1 P1.1 als Ausgabe CCEN Periodendauer CRC Einschaltzeitpunkt CC1 T2-zählen T3-stop
Portbelegungsplan Port/Pin Ein-/Ausgang Bemerkung P1.1/C13 Ausgang PWM Eingang T2 P1.3 T3
4.12.2006 Daniel & Daniel Nicolas (Eagle) & Konstantin stda0024@hs-karlsruhe.de Montag 14:00 Donnerstag 14:00
Pierre Deneffle 4.12.2006
Timer 2 Nach Initialisierung wird der Prozessor minimal belastet. Kleiner als 1 %.
Prozessorlast Beispiel PC Task Manager Beispiel mittlere Temperatur 5 Befehle für ISR_2 14 Befehle Interrupt-Routine ca. 20 Befehle pro Messung Insgesamt 20 Messungen pro Sekunde
Prozessorlast2 20 x 20= 400 Befehle pro Sekunde Abschätzung pro Sekunde 500 000 Befehle -> 0,08 % Prozessauslastung Ab 30% Prozessorauslastung wird es kritisch
Prozessorlast3 Wird der Prozessor über 30% belastet --> anderen Prozessor wählen. Prozessorauslastberechnung an durchgeführten Programmen üben
Übergabe MC-PC Serielle Schnittstelle SBUF Register der Serielle Schnittstelle Mov SBUF,A ;Sendebetrieb Mov A,SBUF ;Empfangsbetrieb
CPL CPL Complement
Serielle Schnittstelle Beide Seiten müssen mit der gleichen Bitrate arbeiten.
Simeon Meier 05.12.06
Serielle Schnittstelle TxD Transmit Data RxD Receive Data GND RS232C – V.24 – 12V Pegel RS422 differentielle serielle Schnittstelle
Serielle Schnittstellen USB 2.0 (480 Mbit/s) 8 Mbit/s bsp. Fernsehbild (HDTV)
Standardeinstellung 9600 bits/s 8 Datenbits Parität keine (Datensicherung) Im PSW (Programm Status Wort)
Parity (Paritaet) T1 Akkumulator wird mit A5H geladen T2 Akkumulator wird mit 5BH geladen Mov A, #const8
Empfehlung Ports Port 4 und 5 sind frei Port 6 A/D-Wandlung Port 3 alternative Funktion Port 0 und 2 16bit Adresse für externen Speicher Port 1 PWM-Timer2
Aufbau serielle Schnittstelle Users Manual Seite 59 Blockschaltbild der seriellen Schnittstelle
Timer0 & Timer1 Sehr leicht, wenn man Timer2 verstanden hat
Hanno Schneider 11.12. 2006
Blinklicht Timer 0 mit Interrupts verwenden TF0-Flag wird automatisch durch Hardware zurückgesetzt, sobald die Interrupt-Service-Routine ausgeführt wird TF2-Flag muss per Software zurückgesetzt werden.
Prozessorauslastung Wieviel Prozent der Prozessor-Zeit wird für Timer0 benötigt 0,1 Promille belastet Ändern sie die Blinkfrequenz: *2 /2
Temperaturmessung SMT-160 Timer2 läuft vor sich hin Kein Reloadbetrieb I3FR = 1 steigende Flanke I3FR = 0 fallende Flanke Anschluß an Port 1.0
PWM Timer2
Duty Cycle Taktverhältnis bei der Pulsweiten Modulation
Aus www.smartec.fr
Bogdan Schlesinger 12.12.2006
Lösung von Aufgaben Gibt es eine ähnliche Aufgabe? Timer2-Einheit-P1.0 Eingang/Ausgang? Lösung: Eingang Hausaufgabe: SMT16032Ser
18.12.2006