ITG-ABI 12/13 |
12.04.2013 |
Korrekturhinweise / Lösungsvorschlag |
---|
Bei der Zustandsübergangstabelle sollten alle Ausgangskombinationen erfasst werden. Die im Lösungsvorschlag ermittelte Zeilenanzahl passt nach meiner Logik nicht, hier zwei mögliche Lösungen.
Zeile | Start | A | B | Zustand | Zustand' | Bemerkung |
---|---|---|---|---|---|---|
1 | 0 | x | x | x | Ausgleich | umfasst 32 Zeilen |
2 | 1 | x | x | EIN | EIN | umfasst 4 Zeilen |
3 | 1 | 0 | 0 | AUSGLEICH | x | don't Care |
4 | 1 | 0 | 1 | AUSGLEICH | A1 | |
5 | 1 | 1 | 0 | AUSGLEICH | B1 | |
6 | 1 | 1 | 1 | AUSGLEICH | AUSGLEICH | |
7 | 1 | 0 | 0 | A1 | x | |
8 | 1 | 0 | 1 | A1 | A2 | |
9 | 1 | 1 | 0 | A1 | AUSGLEICH | |
10 | 1 | 1 | 1 | A1 | A1 | |
11 | 1 | 0 | 0 | A2 | x | |
12 | 1 | 0 | 1 | A2 | A3 | |
13 | 1 | 1 | 0 | A2 | A1 | |
14 | 1 | 1 | 1 | A2 | A2 | |
15 | 1 | x | x | A3 | A3 | umfasst 4 Zeilen |
16 | 1 | 0 | 0 | B1 | x | |
17 | 1 | 0 | 1 | B1 | AUSGLEICH | |
18 | 1 | 1 | 0 | B1 | B2 | |
19 | 1 | 1 | 1 | B1 | B1 | |
20 | 1 | 0 | 0 | B2 | x | |
21 | 1 | 0 | 1 | B2 | B1 | |
22 | 1 | 1 | 0 | B2 | B3 | |
23 | 1 | 1 | 1 | B2 | B2 | |
24 | 1 | x | x | B3 | B3 | umfasst 4 Zeilen |
Zeile | Start | A | B | Zustand | Zustand' | Bemerkung |
---|---|---|---|---|---|---|
1 | 0 | x | x | x | Ausgleich | umfasst 32 Zeilen |
2 | 1 | x | x | EIN | EIN | umfasst 4 Zeilen |
3 | 1 | 0 | x | AUSGLEICH | A1 | umfasst 2 Zeilen |
4 | 1 | 1 | 0 | AUSGLEICH | B1 | |
5 | 1 | 1 | 1 | AUSGLEICH | AUSGLEICH | |
6 | 1 | 0 | x | A1 | A2 | umfasst 2 Zeilen |
7 | 1 | 1 | 0 | A1 | AUSGLEICH | |
8 | 1 | 1 | 1 | A1 | A1 | |
9 | 1 | 0 | x | A2 | A3 | umfasst 2 Zeilen |
10 | 1 | 1 | 0 | A2 | A1 | |
11 | 1 | 1 | 1 | A2 | A2 | |
12 | 1 | x | x | A3 | A3 | umfasst 4 Zeilen |
13 | 1 | 0 | 1 | B1 | AUSGLEICH | |
14 | 1 | x | 0 | B1 | B2 | umfasst 2 Zeilen |
15 | 1 | 1 | 1 | B1 | B1 | |
16 | 1 | 0 | 1 | B2 | B1 | |
17 | 1 | x | 0 | B2 | B3 | umfasst 2 Zeilen |
18 | 1 | 1 | 1 | B2 | B2 | |
19 | 1 | x | x | B3 | B3 | umfasst 4 Zeilen |
Verwendeter µC: ATMEL AVR 8 Bit RISC.
Zykluszeit bei 1 Mhz vergleichbar mit 8051 bei 12 Mhz: 1µSec. Für 3 Sec müssen ca. 3.000.000 Takte verbraten werden. Die nop-Befehle in der äussern Schleife dienen zu Korrektur und könnten auch weggelassen werden.
.def zeit = R16 ;R16 als Variable zeit .def innen = R17 ;R16 als Variable innen .def aussen = R18 ;R16 als Variable aussen ... wait3s: ldi zeit, 30 ;30*100ms wait100ms:
ldi aussen,100 ;100*1ms
loop_aussen:
ldi innen,249 ;249*4µs
loop_innen:
dec innen ;1Takt
nop ;1Takt
brne loop_innen ;2Takte bei Sprung
nop ;1Takt Korrektur
dec aussen ;1Takt
brne loop_aussen
dec zeit brne wait100ms ret ;Ruecksprung aus UP
void init(){ MCUCR = (1<<ISC11)|(1<<ISC01); // 0b00001010 fallende Flanke GIMSK = (1<<INT1)|(1<<INT0); // 0b11000000 ext. Interrupts aktivieren sei(); // globale Interruptfreigeabe }