Dies ist eine alte Version des Dokuments!
Skript
Bildschirmlupe an!
SW2 Hello Display World
- Wdh. Hello Blinking World:
- DDRx, PORTx, _Delay_ms() --> R steht fast immer für Register
- --> einmal kompilieren und in Simulide aufbauen
- Welche „Vorgaben für die SW.Entwicklung“ wurden verletzt? --> Keine magic numbers, sondern #defines !
siehe Weiterführende Fragen und Infos
- Heute „Hello World“ in echt! Timer + Displayausgabe
- „Kapitel 2 Sound und Timer bitte nachträglich anschauen“
- Frage an Studis „Wer weiß nicht was PWM ist?“
In MC Studio
- neues Projekt „02_timer“
- jetzt neu: mit Display!
- --> Bibliothek aus wiki herunterladen!
- Project --> Add --> existing Item (NICHT drag & drop)
- bei mir --> F2 Namen ändern auf „lcd_lib_de.h“
- Split Screen
- Was tun, um Lib in main einzufügen?
- #include!
- #inc + <Tab>
- --> Unterschied <lib.h> vs „lib.h“
- Durchsicht der lcd_lib_de.h
- F_CPU
- --> CPU Frequenz, wichting für genaues Timing der delays
- hier 18,432 MHz --> Minimexle Frequenz
- Warum 18,432?
- ILIAS --> Elektronik Labor --> MiniMEXLE Schaltbild
- „Schreck!“ sowiel Krams auf dem Schaltplan!
- Wo ist der Quarz? Quarz schwingt mechanisch im E-Feld --> Schaut im Bild aus wie ein Kondensator
- defines --> keine Magic numbers
- Funktionsprotoypen --> bitte immer am anfan angeben --> gut für eine Übersicht
- als erstes immer Initialisierung (anlegen der Variablen, verschiedene Konfigurationen etc.)
- lcd_i + <tab>
- schon mal kompilieren (immer mal kompilieren zum test, ob noch alles klappt)
- noch nicht lauffähig, da nichts angezeigt !
- einen String ausgeben!
- welche Unterfunktion wohl geeignet?
- Hinweis auf Inkonsistenz bei Namensgebung
- Eingabe lcd_displayMessage(„Hallo!“, 0,0 ) --> Hinweis auf Zählanfang 0 nicht 1!
- Flashen auf Minimexle
- Add Target --> SDK500 --> ersten COM Port auswählen (und - falls es nicht passt - den nächsten)
- Tools --> Device Programming
- Apply --> Device Signature sichtbar?
- --> Memories --> Program
- Ausgabe von „Hallo! Zähler: “
- kann „ä“ nicht schreiben , sondern schreibt „µ“, warum?
- --> Datasheet lesen!
- Am besten in der Schaltung den Namen suchen
- Googeln nach DEM16216 Datasheet --> Datenblatt etwas kurz? Blockdiagramm (immer schön Bilder in eigene Dokus machen!) --> ST7066U!
- Googeln nach ST7066U Datasheet
- Kurzes darüberscrollen über das Datasheet
- --> Character code Table! --> ist da „ä“ drin? In einer schon… In der anderen is „µ“ beim gleichen Bitmuster
- Also: was tun? entweder „á“ nutzen, oder ldc_putc(11100001); --> was wurde vergessen? --> % !
- Vergleich in Simulide:
- Aufbau der Schaltung: mega88 + Hd44780 (ist kompatibel zu ST7066U)
- Wie verbinden? Siehe lib (wenn gut beschrieben) oder MEXLE Schaltung
- In lib: Port-Bits. PIN_EN, PIN_RS --> wo in Simulide?
- Für was steht EN? --> Enable. RS --> Register Select
- PORT_DATA: von PORTC nur die ersten 4 bits (0…3)
- 18,432 MHz eingeben!
- hex file Flashen
- --> animation einschalten (High/Low wird angezeigt)
- es wird noch nichts ausgegeben?? --> im Code schauen oder im Schaltplan!
- PC0 auf D4, PC1 auf D5, PC2 auf D6, PC3 auf D7
- jetzt klappts , aber ä an falscher Position
- lcd_gotoxy einfügen
- In Simulide autoload einschalten!
Jetzt: aufsteigende Zahlen ausgeben Was tun?
- Laufvariable anlegen und nutzen: uint8_t i=0; und i++ in der Schleife
- wie gibt man Zahlen aus? sprintf? (kann in String einen Zahlenwert ausgeben)
- sprintf(output_str, „%03u“, i); 03 --> drei Stellen, u --> unsigned - output_str deklarieren - kompilieren --> #include <stdio.h> vergessen - Simulation herunterdrehen aktuell zählt er nicht so schnell wie die CPU kann, sondern so schnell wie er es ausgeben kann. Die CPU kann aber schneller! - Blick ins Datenblatt des atmega88 - Blockbild - T/C im Inhaltsverzeichnis --> 16 bit Timer/Counter -