Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| microcontrollertechnik:5._menuefuehrung [2023/04/04 14:00] – mexleadmin | 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 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: '' | ||