Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
microcontrollertechnik:5_menuefuehrung [2022/09/20 11:36] tfischer |
microcontrollertechnik:5_menuefuehrung [2024/03/29 20:24] (aktuell) mexleadmin |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== 5. Menüführung ====== | + | ====== 5 Menüführung ====== |
==== Ziele ==== | ==== Ziele ==== | ||
Zeile 19: | Zeile 19: | ||
- Initialisieren des Programms | - Initialisieren des Programms | ||
- Öffnen Sie SimulIDE und öffnen Sie dort mittels {{microcontrollertechnik: | - Öffnen Sie SimulIDE und öffnen Sie dort mittels {{microcontrollertechnik: | ||
- | - Laden Sie '' | + | - Laden Sie '' |
- Zunächst wird eine Startanzeige mit dem Namen des Programms dargestellt. | - Zunächst wird eine Startanzeige mit dem Namen des Programms dargestellt. | ||
- Als nächstes ist im Display ein Menu zu sehen, in dem verschiedene Programme P1 ... P4 durch Tastendruck auswählbar ist. Dadurch sind die bisherigen Programme auswählbar. Im Unterprogramm ermöglicht der Schalter S1 das Zurückspringen ins Menu. | - Als nächstes ist im Display ein Menu zu sehen, in dem verschiedene Programme P1 ... P4 durch Tastendruck auswählbar ist. Dadurch sind die bisherigen Programme auswählbar. Im Unterprogramm ermöglicht der Schalter S1 das Zurückspringen ins Menu. | ||
Zeile 25: | Zeile 25: | ||
<-- | <-- | ||
- | --> III. Eingabe in Atmel Studio # | + | --> III. Eingabe in Microchip |
<WRAP group>< | <WRAP group>< | ||
/ | / | ||
Zeile 31: | Zeile 31: | ||
Experiment 5: | Experiment 5: | ||
============= | ============= | ||
- | d e | + | |
Dateiname: | Dateiname: | ||
| | ||
Zeile 97: | Zeile 97: | ||
#define CLR_BIT(BYTE, | #define CLR_BIT(BYTE, | ||
#define TGL_BIT(BYTE, | #define TGL_BIT(BYTE, | ||
- | | + | #define GET_BIT(BYTE, |
| | ||
// Konstanten | // Konstanten | ||
Zeile 273: | Zeile 273: | ||
sw4_alt = sw4_neu; | sw4_alt = sw4_neu; | ||
} | } | ||
- | + | ||
- | | + | |
| | ||
// Initialisierung Display-Anzeige ============================================ | // Initialisierung Display-Anzeige ============================================ | ||
Zeile 303: | Zeile 302: | ||
| | ||
} | } | ||
- | + | ||
- | + | ||
| | ||
/* Teilprogramm 1: Blinkende LED ============================================== | /* Teilprogramm 1: Blinkende LED ============================================== | ||
Zeile 360: | Zeile 358: | ||
| | ||
} | } | ||
- | | ||
- | | ||
| | ||
| | ||
Zeile 686: | Zeile 682: | ||
- Zunächst werden zwei Initialisierungsroutinen aufgerufen (siehe weiter unten) | - Zunächst werden zwei Initialisierungsroutinen aufgerufen (siehe weiter unten) | ||
- | - Dann werden die " | + | - Dann werden die " |
- Auch hier gibt es eine " | - Auch hier gibt es eine " | ||
- Mit dem Befehl '' | - Mit dem Befehl '' | ||
- | - in der Endlosschleife ist nur eine switch-case Anweisung zu finden. Diese stellt den Auswahlteil einer Zustandsmaschine dar: \\ {{drawio> | + | - in der Endlosschleife ist nur eine switch-case Anweisung zu finden. Diese stellt den Auswahlteil einer Zustandsmaschine dar: \\ {{drawio> |
- Beim '' | - Beim '' | ||
'' | '' | ||
- Mit dem Befehl '' | - Mit dem Befehl '' | ||
- | - Der Überlauf-Interrupt durch den Timer2 wird erst bei Überlauf des 8-Bit Wert ausgeführt. Auch hier ergibt sich durch den Prescaler und Modus ('' | + | - Der Überlauf-Interrupt durch den Timer2 wird erst bei Überlauf des 8-Bit Wert ausgeführt. Auch hier ergibt sich durch den Prescaler und Modus ('' |
- | - Die Ermittlung von '' | + | - Die Ermittlung von '' |
- Eine große Änderung ist, dass bereits im Interrupt alle 10ms die Unterfunktion '' | - Eine große Änderung ist, dass bereits im Interrupt alle 10ms die Unterfunktion '' | ||
'' | '' | ||
\\ \\ \\ | \\ \\ \\ | ||
- | - In dieser Funktion werden zunächst die Stellungen aller Taster eingelesen (vgl. '' | + | - In dieser Funktion werden zunächst die Stellungen aller Taster eingelesen (vgl. '' |
- Neu hier ist, dass über '' | - Neu hier ist, dass über '' | ||
Zeile 716: | Zeile 712: | ||
''/ | ''/ | ||
- | Hier ist das Programm der [[1._hello_blinking_world|Blinking LED]] etwas angepasst eingefügt. | + | Hier ist das Programm der [[1_hello_blinking_world|Blinking LED]] etwas angepasst eingefügt. |
\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ | \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ | ||
- Zunächst wird ein Unterprogramm zur Anzeige das Displays aufgerufen | - Zunächst wird ein Unterprogramm zur Anzeige das Displays aufgerufen | ||
Zeile 728: | Zeile 724: | ||
''/ | ''/ | ||
- | Hier ist das Programm [[2._sound_und_timer|Sound und Timer]] etwas angepasst eingefügt. | + | Hier ist das Programm [[2_sound_und_timer|Sound und Timer]] etwas angepasst eingefügt. |
\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ | \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ | ||
Zeile 734: | Zeile 730: | ||
- Hier wird Timer 0 genutzt, um das gepulste Signal an den Lautsprecher zu verändern. | - Hier wird Timer 0 genutzt, um das gepulste Signal an den Lautsprecher zu verändern. | ||
- Die while-Schleife wird wieder abgebrochen, | - Die while-Schleife wird wieder abgebrochen, | ||
- | - Neben dem Herunterzählen der Periodenlänge (über '' | + | - Neben dem Herunterzählen der Periodenlänge (über '' |
- Da die for-Schleife zum Herunterzählen der Periodenlänge sehr lange dauert (etwa 2 Sekunden) wird auch darin der Tastendruck der Taste 1 abgefragt werden. \\ \\ \\ \\ \\ | - Da die for-Schleife zum Herunterzählen der Periodenlänge sehr lange dauert (etwa 2 Sekunden) wird auch darin der Tastendruck der Taste 1 abgefragt werden. \\ \\ \\ \\ \\ | ||
- Falls die Taste 1 gedrückt wurde, wird sowohl __in der for__-Schleife, | - Falls die Taste 1 gedrückt wurde, wird sowohl __in der for__-Schleife, | ||
Zeile 742: | Zeile 738: | ||
''/ | ''/ | ||
- | Hier ist das Programm [[3._logische_funktionen|Logische Funktionen]] etwas angepasst eingefügt. | + | Hier ist das Programm [[3_logische_funktionen|Logische Funktionen]] etwas angepasst eingefügt. |
\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ | \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ | ||
Zeile 750: | Zeile 746: | ||
''/ | ''/ | ||
- | Hier ist das Programm [[4._up_down_counter|Up/Down Counter]] etwas angepasst eingefügt. | + | Hier ist das Programm [[4_up_down_counter|Up/Down Counter]] etwas angepasst eingefügt. |
\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ | \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ | ||
Zeile 773: | Zeile 769: | ||
--> Aufgaben# | --> Aufgaben# | ||
+ | |||
+ | Vielleicht haben Sie es schon bemerkt: gelegentlich scheint das Display für einen kurzen Augenblick einzelne falsche Zeichen anzuzeigen. | ||
+ | Der Grund dafür ist, dass das Auslesen der Taster und die Datenübertragung an das Display über die gleichen Pins stattfindet und nicht synchronisiert ist. | ||
+ | Um dies zu beheben ist eine Verbesserung des Programms notwendig. | ||
+ | |||
Speicherauslastung und Programmoptimierung: | Speicherauslastung und Programmoptimierung: | ||
- Merken Sie sich die Speicherauslastung des bisherigen Programms. Diese finden Sie z.B. über den Solution Explorer: '' | - Merken Sie sich die Speicherauslastung des bisherigen Programms. Diese finden Sie z.B. über den Solution Explorer: '' |