Dominic Harg
/
04_1_TINF_Interrupt_Uebung
Interrupt Uebungen
main.cpp@0:0256cd93b913, 2020-01-22 (annotated)
- Committer:
- haunsi
- Date:
- Wed Jan 22 16:04:29 2020 +0000
- Revision:
- 0:0256cd93b913
Interrupt Uebungen
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
haunsi | 0:0256cd93b913 | 1 | #include "mbed.h" |
haunsi | 0:0256cd93b913 | 2 | |
haunsi | 0:0256cd93b913 | 3 | // DigitalOut eine Variable für ein Bit |
haunsi | 0:0256cd93b913 | 4 | // BusOut eine Variable für eine ganze Bitgruppe |
haunsi | 0:0256cd93b913 | 5 | // Alle 12-Leds des M0-Boards zu einer Bitgruppe zusammenfassen |
haunsi | 0:0256cd93b913 | 6 | // LSB MSB |
haunsi | 0:0256cd93b913 | 7 | // 2^0 2^1 2^2 2^11 |
haunsi | 0:0256cd93b913 | 8 | BusOut lb(P1_13,P1_12,P1_7,P1_6,P1_4,P1_3,P1_1,P1_0,LED4,LED3,LED2,LED1); |
haunsi | 0:0256cd93b913 | 9 | // D20 D19 D18 D17 D16 D15 D14 D13 D4 D3 D2 D1 |
haunsi | 0:0256cd93b913 | 10 | |
haunsi | 0:0256cd93b913 | 11 | // SW 1 SW 2 SW 3 SW 4 |
haunsi | 0:0256cd93b913 | 12 | // Bit0 Bit1 Bit2 Bit3 |
haunsi | 0:0256cd93b913 | 13 | BusIn btn(P0_10, P0_15, P0_23, P0_16); |
haunsi | 0:0256cd93b913 | 14 | |
haunsi | 0:0256cd93b913 | 15 | void OneRunLightStep(); |
haunsi | 0:0256cd93b913 | 16 | void OneRunLightStep2(); //Einen Schritt des Runlight's ausführen |
haunsi | 0:0256cd93b913 | 17 | |
haunsi | 0:0256cd93b913 | 18 | int prevSw3 = 0; //Schalterzustand so wie er bei der letzten Abfrage war |
haunsi | 0:0256cd93b913 | 19 | |
haunsi | 0:0256cd93b913 | 20 | //CheckButton() liefert nur dann 1 wenn eine Flanke am Button erkannt wurde |
haunsi | 0:0256cd93b913 | 21 | int CheckButton() |
haunsi | 0:0256cd93b913 | 22 | { |
haunsi | 0:0256cd93b913 | 23 | int ret = 0; |
haunsi | 0:0256cd93b913 | 24 | if( prevSw3==0 && (btn&4)) |
haunsi | 0:0256cd93b913 | 25 | ret = 1; |
haunsi | 0:0256cd93b913 | 26 | |
haunsi | 0:0256cd93b913 | 27 | else |
haunsi | 0:0256cd93b913 | 28 | ret = 0; |
haunsi | 0:0256cd93b913 | 29 | prevSw3 = (btn & 4); //alten Zustand merken |
haunsi | 0:0256cd93b913 | 30 | return ret; |
haunsi | 0:0256cd93b913 | 31 | } |
haunsi | 0:0256cd93b913 | 32 | |
haunsi | 0:0256cd93b913 | 33 | int main() |
haunsi | 0:0256cd93b913 | 34 | { |
haunsi | 0:0256cd93b913 | 35 | lb = 1; |
haunsi | 0:0256cd93b913 | 36 | while(1) |
haunsi | 0:0256cd93b913 | 37 | { |
haunsi | 0:0256cd93b913 | 38 | |
haunsi | 0:0256cd93b913 | 39 | if (CheckButton()) |
haunsi | 0:0256cd93b913 | 40 | { |
haunsi | 0:0256cd93b913 | 41 | OneRunLightStep(); |
haunsi | 0:0256cd93b913 | 42 | } |
haunsi | 0:0256cd93b913 | 43 | } |
haunsi | 0:0256cd93b913 | 44 | } |
haunsi | 0:0256cd93b913 | 45 | |
haunsi | 0:0256cd93b913 | 46 | int gCnt = 0; |
haunsi | 0:0256cd93b913 | 47 | void OneRunLightStep() |
haunsi | 0:0256cd93b913 | 48 | { |
haunsi | 0:0256cd93b913 | 49 | lb = lb << 1; |
haunsi | 0:0256cd93b913 | 50 | gCnt++; |
haunsi | 0:0256cd93b913 | 51 | if(gCnt > 11) |
haunsi | 0:0256cd93b913 | 52 | { |
haunsi | 0:0256cd93b913 | 53 | lb = 1; |
haunsi | 0:0256cd93b913 | 54 | gCnt = 0; |
haunsi | 0:0256cd93b913 | 55 | } |
haunsi | 0:0256cd93b913 | 56 | } |
haunsi | 0:0256cd93b913 | 57 | void OneRunLightStep2() |
haunsi | 0:0256cd93b913 | 58 | { |
haunsi | 0:0256cd93b913 | 59 | if(lb == 0) |
haunsi | 0:0256cd93b913 | 60 | { |
haunsi | 0:0256cd93b913 | 61 | lb = 1; |
haunsi | 0:0256cd93b913 | 62 | } |
haunsi | 0:0256cd93b913 | 63 | else |
haunsi | 0:0256cd93b913 | 64 | { |
haunsi | 0:0256cd93b913 | 65 | lb = lb << 1; |
haunsi | 0:0256cd93b913 | 66 | } |
haunsi | 0:0256cd93b913 | 67 | } |
haunsi | 0:0256cd93b913 | 68 |