Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
microcontrollertechnik:5_menuefuehrung [2023/09/19 23:12]
mexleadmin ↷ Seitename wurde von microcontrollertechnik:5._menuefuehrung auf microcontrollertechnik:5_menuefuehrung geändert
microcontrollertechnik:5_menuefuehrung [2024/03/29 20:24] (aktuell)
mexleadmin
Zeile 25: Zeile 25:
  
 <-- <--
---> 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>
 /*============================================================================= /*=============================================================================
Zeile 97: Zeile 97:
 #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
Zeile 273: Zeile 273:
  sw4_alt = sw4_neu;    sw4_alt = sw4_neu;  
 } }
-   +
-  +
      
 // Initialisierung Display-Anzeige ============================================ // Initialisierung Display-Anzeige ============================================
Zeile 303: Zeile 302:
      
 }    // Ende der Funktion }    // Ende der Funktion
-   + 
-  +
      
 /* Teilprogramm 1: Blinkende LED ============================================== /* Teilprogramm 1: Blinkende LED ==============================================
Zeile 360: Zeile 358:
      
 }    // Ende der Funktion }    // Ende der Funktion
-   
-   
      
      
Zeile 689: Zeile 685:
   - 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. 
  
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: ''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).