jetzt modernisiert -->.
Software mit Test und
Hardware-Prototypenbau mit Steckbrettern, weil dynamisch
und praktisch.
Soweit es der Kurs zulässt, und es gewünscht wird, zeige ich auch die
Anwendung vom Elektronik Layout Programm "Eagle"
Vermittlung von praktischen Techniken, auch im Selbstbau, Zusammenbau,
Löten.
Erfahrung bekommt man nur durch "selbst tun".
( Bauteile und Funktion werden erklärt ) .
Installation und Einrichten einer Entwicklungsumgebung ( IDE ). Darin
enthalten: Programmier-(Flash)-Software, Programm-Editor, Compiler (
WINAVR ), Makefiles für Compiler. Funktionsumfang-Helpfiles,
Terminalprogramm zur Kommunikation mit dem µC.
Erstellen eigener, erster grundlegender Programme in der IDE. Damit
vollständiger Entwicklungs-Tournaround: Editieren, Kompilieren
mit 'makefile', Flashen (=Laden auf µC), Run. Simples "Monitoring" des:
--> "was tut der µC ?"
Kennenlernen des µ-Controllers, Anschluss Pins, den Ports, der
vielfachen Belegungsmöglichkeiten der Port-Pins (je nach Modi ).
Erkunden des Innenlebens der µControllers,
also den internen
Komponenten (Fähigkeiten ) .
Ansprechen der inneren µC Komponenten mit den internen Steuerregistern
( SFR= Special Function Register ).
Programmiertechniken zum korrekten Ansprechen der Steuer-Register ( SFR= Special Function Register
)
Umsetzung der Erkenntnisse in methodische Programmiertechniken zur
Manipulation einzelner Bits ( setzen, löschen etc.. )
Erarbeiten der Techniken zum Aktivieren des ADC (Analog-Digital
Converter) oder Timers in einen gewünschten Modus. Dazu muss man sich
mit dem inneren Geschehen im µC vertraut machen umso die einzelnen
notwendigen Schritte zu verstehen, Im selben Zug werden die Steuerbits
der zugehörigen Steuer Register gesetzt/gelöscht.
dazu: Umsetzung des µ-Controller Handbuches ( PDF ), mit der darin
enthaltenen Registerbeschreibung, in eigenen "lesbaren" C-Code.
Kommunikation des µC mit einem Terminalprogramm. Steuerung des µC via
Text-Befehle = "Mnemonik Befehle".
z.B. Auf ein "Ping" antwortet der µC mit "Pong", oder
"Frq,300"--> bedeutet "Frequenz On mit 300 Pulsen/Sec".
Signalerzeugung mit mathematischen Methoden unter Beachtung in
der Programmierung typischer Grenzen. z.B. Sinus Wertetabelle mit
grenze-genauen Wertebereich.
Ansteuerung externer ICs durch eigene Umsetzung des im Handbuch
geforderten Signalflusses. Damit kann man die Möglichkeiten des
µC unbegrenzt erweitern. z.B. mit hochauflösenden externen ADCs, DACs
oder In-Out Porterweiterung.
Einbindung von fremden Software-Modulen, z.B. eine IR-Code ( Infrarot )
Empfänger Software. Damit kann z.B. eine TV Fernbedienung empfangen
werden. Oder mit einer LCD-Softwaresammlung ein LCD Display genutzt
werden.
Sensorik: Normierung und Anpassung von optischen oder anderen
Sensorsignalen auf die Eigenschaften der µC Eingänge.
Schrittmotor Ansteuerung, durch Interrupts präziser und organisierter,
Signalerzeugung durch den µC.
Servo Ansteuerung mittels PWM ( und warum es da
Grenzen in der Auflösung gibt ).
Erarbeitung fortgeschrittener
Software-Konzepte. z.B. kalibrierter
Analog-Digital Converter, oder Software generierte und Interrupt
getriggert Multi PWMs.
Signal Synthetisieren: z.B. mit
Digital-Analog-Converter oder Interrupts ( z.B. eine TV taugliche
Videosignal Synthese = BAS-Signal )
Die µ-Controller Programmierung wird in ANSI-C (nicht C++) und
nicht in Assembler (nur ausnahmsweise mit zeitkritische Routinen)
erledigt.
ANSI-C ist relativ einfach,
besitzt eine gewaltige Funktionsbibliothek
( math.h etc. ) und ist letztlich gut "lesbar".
Die Compiler Ergebnisse des GNU-C Compilers können sich mit dem Zu-Fuß
Assembler messen und sind stabil wie Eisen.
Es wird jedoch Stückweise Programmcode fertig geliefert, einschließlich
der Methode und Klippen wie diese auf dem ersten Blick 'merkwürdigen'
Makefiles.
Es folgt im Laufe die Erkenntnis, dass Software traditionelle Hardware
ersetzen und überflüssig machen kann.
So kann z.B. ein 100% exakter Sinus auf mathematischen Weg mit
Digital-Analog-Converter produziert werden, z.B. mit 0.01Hz was
ohne µC in dieser Qualität gar nicht denkbar ist.
Das Themenspektrum geht von Bohren, Löten, Bestücken, Testen über zur
Programmierung, Erlernen der Bedeutung der Hardware-Komponenten, des
Innenlebens des µ-Controllers, der µ-Controller Steuer-Register,
Programmiertechniken, wie Flag-Bit Steuerung des Programmflusses.
So wird langsam der Mut "es selbst anders zu machen" geweckt Und so
schwer ist es nicht.!
Was leider
nicht gelernt wird, einfach mangels Zeit:
10 Tage = 2 Wochen ist zu kurz um umfasend dieses Thema zu behandeln.
Bsp. Protokolle. Kommunikations-,Funkprotokolle,
Kodierungsverfahren wie z.B. Zeitzeichensender etc.
Aus
Erfahrung muss ich die
Voraussetzungen genauer definieren:
DIESE
VORAUSSETZUNGEN SIND PFLICHT
!
Wer in folgender Liste Lücken bei sich
entdeckt d em empfehle ich den Kurs zu einem späteren Zeitpunkt zu
besuchen.
Gefordert sind ( und das
ist
ernst gemeint ...)
ERSTENS:
'Grundlegende' Elektronik-Grundkenntnisse:
Ohm' sches Gesetz.
Schaltzeichen Grundkenntnisse,
allg. Verständnis der Bauteile: Widerstand, Kondensator, Dioden.
~"einfaches" Verständnis des Transistors.
( aber "Fragen" ist immer erlaubt. Deshalb ist es ja ein Kurs. )
Wichtig: Ein paar Kenntnisse in der digitalen Logik:
( Wahrheitstabelle: And/Or/Not/Exor). Dies erörtere ich nochmals bei
Bedarf
ZWEITENS:
Programmiersprache ANSI -C,
nach Kerninghan & Richie
Es müssen Kenntnisse bekannt sein über:
* Grund-Datentypen und Bereichsgrenzen von: integer, char,
unsigned char, unsigned word. pointer (*,&)
* Steuerstrukturen ( while(1){};, for (...), if(..) etc..
* Operatoren +, -, *, /
usw..
* aber auch die Kurzformen : &=,
|=, ^=, += , -= etc..
* Logik Grundlagen wie UND-gleich, OR-gleich, XOR-gleich, PLUS-gleich
usw..
Folgendes erläutere ich selbstverständlich im Kurs
nochmals ausführlich:
* Binär UND ( &) zu logisch UND (&&)
,
* Binär ODER ( | ) zu logisch ODER (||) ,
* Bit-Shift (<<, >>), z.B. ( 1<< 3
) .....weil wir es brauchen werden!
* Syntax, Aufbau ( halt das typische etwas kryptische C,
mit main .c und Headerfiels main.h )
Ich erkläre aber im Kurs alles
erforderliche nochmals
Wir
arbeiten auf der Plattform Windows10. Nicht Linux.
Wer das tun möchte, kann dies natürlich.
Früher
mit dem kostenlosen Compiler
WINAVR
C-Compiler
Ich plane den Ardunio Sketch als
Compiler zu gebrauchen.
Den Weg dazu zeige ich auf.
(im
Praktikumsraum sind PCs mit Windows10 vorhanden, 2 Personen/Tisch.
evtl. eigenes Notebook möglich)
Ich
behandele nicht die Linux-Welt.
Obwohl das möglich ist. Das kann jeder selbst entscheiden, ob das einem
lieber ist.
Linux GNU-C Compiler für AVR Controller gibt es
selbstverständlich. Dann aber selbst die Foren dazu recherchieren.
Ich empfehle einfache Programmier Umgebungen und "Programmers Notepad
".
Nicht das AVRStudio (weil
AVRStudio ist für den
Anfang völlig überfrachtet und der Projektwechsel sehr umständlich).
Das Mikrocontroller ATmega(xxx) Manual als PDF des ATMega383 µControllers ist
die wichtigste Dokumentation, ebenso die Schaltpläne der Hardware
und der Software-module.
Um diese Controller Beschreibung
dreht sich letztlich alles: Arduino UNO-R3
Mikrocontroller
Ein kostenloser Compiler: "DEV-C++".. https://homepages.uni-regensburg.de/~erc24492/DEV-C++/DEV-C++.html
kostenloser, unlimitierter
C/C++ Compiler ( GNU C ) und Entwicklungsumgebung
Gründe
für die Auswahl des ATMega xxx
Programm einfach und billig "flashbar", Umfangreiche innere
Ausstattung. Stabil und gut zu verstehen.
Kompatibel zu vielen Typen wie ATMega8 / 16 / 88 oder 328,
ATTiny2313 und viele Andere.
Daten des ATMEGA 328p
extrem preisgünstiger Controller ~3..4€€
-kostenloser unlimitierter Compiler.
-hervorragende Dokumentationen zu Hardware und Compiler sind online
verfügbar.
-Programme einfach via ISP flashbar.
-enorme Hardwareausstattung des Controllers
-3 Timer/Counter,
-serielle Schnittstelle, meist mit USB->RS232 Pegelwandler
-mehrere MUX ADCs, 8 oder 10 Bit
-In/Outs frei konfigurierbar
-I2C Bus usw.
-schnelle 16Mhz
-großer 32K Programm-Flash-Speicher + 512Byte EEPROM
-großzügige RAM-Ausstattung,, 2kB RAM
-leicht in eigene Hardware-Entwürfe integrierbar.
( Handbare Dimensionen )
-riesige Unterstützung von Freeware und von Konzepten im Internet
Eigene Projektideen sind erwünscht! wenn realisierbar. Jedoch schlage
ich auch gerne welche vor.
Bsp. PID-Temperatur Regelung, IR-Morse
Sende->Empfangs streck. Eine automatisierten Blumen Giesanlage mit
Schrittmotor,
Signalsynthese, z.B: Bildübertragung in SSTV Format. ( Ja! Das geht )
Kleine Filme
LED-Leiste an Arduino: https://youtu.be/xzEvoNsBBII
Star Trek -
Blinker: https://youtu.be/bCqgU04aVAY
Knight Rider Blinker mit ATMega RROGMEM: https://youtu.be/3ELvAC1iKjg
8 Bit PWM mit ~61Hz : https://youtu.be/CQGpZJtY4rA
8 Bit PWM Oszillographen Bild: https://youtu.be/CAvdiVNBoME
Sonstiges:
10 Bit und höher bzw. Hochauflösend, Software PWMs
Digitaler
Servo mit
Sinusmodulierter PWM: https://youtu.be/wDE_EwiImvc
Servo Antrieb als Laserspiegelschwenker: https://www.youtube.com/watch?v=Ad7s4GSefew
Schrittmotor Antrieb: https://www.youtube.com/watch?v=s_6w92g4vhc
Arduino
- 8Bit PWM an LED: https://youtu.be/4bqq1U355Z0
Charlie
Plexing: https://www.youtube.com/watch?v=fM7R5IJtgz0
PCF8574, TWI oder I2C Bus. SDA oben, SCL unten (mit AVR
µC) https://youtu.be/EsfhAZGRDGM
LCD-Display Steuerung:
I2C LCD + 8x8 Matrix mit MAX7219
https://youtu.be/KoqKPxGFp78
LED MAX7219 Matrix 8x8 https://youtu.be/ujFhfiDGThU
TTL 74595 CLK Data mit Shift 1: https://youtu.be/nBX_Ky-e4os
MAXREFDES99#: MAX7219 DISPLAY DRIVER SHIELD: https://youtu.be/5n3Nx3rOnx8
Braille
: Text zu Blindenschrift Coder für Blindenschrift Drucker:
https://www.youtube.com/watch?v=amIJ61Tzl9w
LED Array als Fraktal Kunst: https://www.youtube.com/watch?v=q_FECRtilEk
Kursprojekt: Uhrzeitschreiber mit Servos: https://www.youtube.com/watch?v=ODoEta9Fo0I
ATmega16
Mikrocontroller erzeugt BAS
Videosignal für das Spiel Tetris: https://youtu.be/u968ryO1Kpc
Verantwortlich für den Inhalt
dieser Seite ist Christof Ermer.
Regensburg.
Telefon 0941-943-2140
Christof.Ermer@ur.de