Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| microcontrollertechnik:6._wuerfel_und_zufall [2022/10/22 03:56] – tfischer | microcontrollertechnik:6_wuerfel_und_zufall [2026/03/08 13:43] (current) – mexleadmin | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== 6. Würfel und Zufall ====== | + | ====== 6 Würfel und Zufall ====== |
| ==== Ziele ==== | ==== Ziele ==== | ||
| Line 26: | Line 26: | ||
| <-- | <-- | ||
| - | --> III. Eingabe in Atmel Studio # | + | --> III. Eingabe in Microchip |
| <WRAP group>< | <WRAP group>< | ||
| Line 74: | Line 74: | ||
| // Festlegung der Quarzfrequenz | // Festlegung der Quarzfrequenz | ||
| #ifndef F_CPU // optional definieren | #ifndef F_CPU // optional definieren | ||
| - | #define F_CPU 18432000UL | + | #define F_CPU 18432000UL |
| # | # | ||
| Line 89: | Line 89: | ||
| // Konstanten | // Konstanten | ||
| - | #define PRESCALER_VAL | + | #define PRESCALER_VAL |
| - | #define CYCLE10MS_MAX | + | #define CYCLE10MS_MAX |
| #define INPUT_PIN_MASK 0b00001111 | #define INPUT_PIN_MASK 0b00001111 | ||
| Line 97: | Line 97: | ||
| // Variable | // Variable | ||
| unsigned char softwarePrescaler = PRESCALER_VAL; | unsigned char softwarePrescaler = PRESCALER_VAL; | ||
| - | unsigned char cycle10msCount | + | unsigned char cycle10msCount |
| unsigned char castVar = 1; // Variable für Wuerfel-Zaehler | unsigned char castVar = 1; // Variable für Wuerfel-Zaehler | ||
| Line 152: | Line 152: | ||
| | | ||
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| */ | */ | ||
| { | { | ||
| Line 178: | Line 178: | ||
| void castCounting(void) | void castCounting(void) | ||
| { | { | ||
| - | DDRC = DDRC & | + | DDRC = DDRC & |
| PORTC |= INPUT_PIN_MASK; | PORTC |= INPUT_PIN_MASK; | ||
| _delay_us(1); | _delay_us(1); | ||
| - | buttonState | + | buttonState |
| - | DDRC |= INPUT_PIN_MASK; | + | DDRC |= INPUT_PIN_MASK; |
| // Einlesen der Tastensignale | // Einlesen der Tastensignale | ||
| Line 244: | Line 244: | ||
| - Die Konstanten entsprechen denen der letzten Programme. \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ | - Die Konstanten entsprechen denen der letzten Programme. \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ | ||
| - Alle Variablen außer '' | - Alle Variablen außer '' | ||
| - | - Bei den Funktionsprototypen sind einige bekannte Unterprogramme vorhanden. Details werden weiter unten erklärt. \\ \\ \\ | + | - Bei den Funktionsprototypen sind einige bekannte Unterprogramme vorhanden. Details werden weiter unten erklärt. \\ \\ \\ \\ \\ |
| '' | '' | ||
| - | - Das Hauptprogramm ähnelt sehr stark dem [[4._up_down_counter|Up/Down Counter]]. | + | - Das Hauptprogramm ähnelt sehr stark dem [[4_up_down_counter|Up/Down Counter]]. |
| - Zunächst werden zwei Initialisierungsroutinen aufgerufen (siehe weiter unten) | - Zunächst werden zwei Initialisierungsroutinen aufgerufen (siehe weiter unten) | ||
| - Dann werden wieder die " | - Dann werden wieder die " | ||
| - Auch hier wird über die " | - Auch hier wird über die " | ||
| - Mit dem Befehl '' | - Mit dem Befehl '' | ||
| - | - In der Endlosschleife sind auf der ersten Ebene wieder nur If-Abfragen zu den Flags '' | + | - In der Endlosschleife sind auf der ersten Ebene wieder nur If-Abfragen zu den Flags '' |
| - | - Alle $10ms$ (bzw. wenn das entsprechende Flag gesetzt wird) wird das Flag zurückgesetzt und das Unterprogramm '' | + | - Alle $10~\rm ms$ (bzw. wenn das entsprechende Flag gesetzt wird) wird das Flag zurückgesetzt und das Unterprogramm '' |
| - | - Alle $100ms$ (bzw. wenn das entsprechende Flag gesetzt wird) wird das Flag zurückgesetzt und das Unterprogramm '' | + | - Alle $100~\rm ms$ (bzw. wenn das entsprechende Flag gesetzt wird) wird das Flag zurückgesetzt und das Unterprogramm '' |
| '' | '' | ||
| - Mit dem Befehl '' | - Mit dem Befehl '' | ||
| - | - Der Überlauf-Interrupt durch den Timer0 wird erst bei Überlauf des 8-Bit Wert ausgeführt. Auch hier ergibt sich durch den Prescaler und Modus ('' | + | - Der Überlauf-Interrupt durch den Timer0 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 die Bedienung der Schalter nur das Flag '' | - Neu hier ist, dass die Bedienung der Schalter nur das Flag '' | ||