| Both sides previous revision Previous revision Next revision | Previous revision |
| microcontrollertechnik:5_menuefuehrung [2023/10/29 23:08] – mexleadmin | microcontrollertechnik:5_menuefuehrung [2024/03/29 20:24] (current) – mexleadmin |
|---|
| |
| <-- | <-- |
| --> III. Eingabe in Atmel Studio # | --> III. Eingabe in Microchip Studio # |
| <WRAP group><WRAP column 40%><sxh c; first-line: 1> | <WRAP group><WRAP column 40%><sxh c; first-line: 1> |
| /*============================================================================= | /*============================================================================= |
| #define CLR_BIT(BYTE, BIT) ((BYTE) &= ~(1 << (BIT))) // Bit Zustand in Byte loeschen | #define CLR_BIT(BYTE, BIT) ((BYTE) &= ~(1 << (BIT))) // Bit Zustand in Byte loeschen |
| #define TGL_BIT(BYTE, BIT) ((BYTE) ^= (1 << (BIT))) // Bit Zustand in Byte wechseln (toggle) | #define TGL_BIT(BYTE, BIT) ((BYTE) ^= (1 << (BIT))) // Bit Zustand in Byte wechseln (toggle) |
| | #define GET_BIT(BYTE, BIT) ((BYTE) & (1 << (BIT))) // Bit Zustand in Byte einlesen |
| | |
| // Konstanten | // Konstanten |
| - Auch hier gibt es eine "__T__imer __I__nterrupt __M__a__SK__" ''TIMSK2''. Auch hier wird mit dem Bit ''TOIE2'' ("__T__imer __O__verflow __I__nterrupt __E__nable") der Interrupt bei Überlauf aktiviert. | - Auch hier gibt es eine "__T__imer __I__nterrupt __M__a__SK__" ''TIMSK2''. Auch hier wird mit dem Bit ''TOIE2'' ("__T__imer __O__verflow __I__nterrupt __E__nable") der Interrupt bei Überlauf aktiviert. |
| - Mit dem Befehl ''sei()'' wird die Bearbeitung von Interrupts aktiv | - Mit dem Befehl ''sei()'' wird die Bearbeitung von Interrupts aktiv |
| - in der Endlosschleife ist nur eine switch-case Anweisung zu finden. Diese stellt den Auswahlteil einer Zustandsmaschine dar: \\ {{drawio>Zustandsmaschine}} \\ Aus jedem Unterprogramm wird wieder zurück ins Hauptmenü gesprungen. | - in der Endlosschleife ist nur eine switch-case Anweisung zu finden. Diese stellt den Auswahlteil einer Zustandsmaschine dar: \\ {{drawio>Zustandsmaschine.svg}} \\ Aus jedem Unterprogramm wird wieder zurück ins Hauptmenü gesprungen. |
| - Beim ''case 1...4'' wird zunächst das jeweilige Programm aufgerufen. Nachdem Rückkehr aus diesem Programm wird zunächst der ''modus'' wieder auf 0 zurückgesetzt, sodass beim nächsten Durchlauf der Schleife der ''case 0'' ausgeführt wird. Jeder case wird mit ''break'' beendet. | - Beim ''case 1...4'' wird zunächst das jeweilige Programm aufgerufen. Nachdem Rückkehr aus diesem Programm wird zunächst der ''modus'' wieder auf 0 zurückgesetzt, sodass beim nächsten Durchlauf der Schleife der ''case 0'' ausgeführt wird. Jeder case wird mit ''break'' beendet. |
| |
| |
| --> 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: ''Output Files'' >> ''5_Program_Menu.elf'' >> rechte Maustaste (Kontextmenu) >> ''Properties'' >> ''Flash size'' und ''RAM size'' (in Bytes). | - Merken Sie sich die Speicherauslastung des bisherigen Programms. Diese finden Sie z.B. über den Solution Explorer: ''Output Files'' >> ''5_Program_Menu.elf'' >> rechte Maustaste (Kontextmenu) >> ''Properties'' >> ''Flash size'' und ''RAM size'' (in Bytes). |