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/10/22 02:16] 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 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: '' |