Jörg Sturm
/
Vorlage
Encoder
main.cpp@0:46dbd1b71de5, 2020-02-20 (annotated)
- Committer:
- JoergSturm
- Date:
- Thu Feb 20 17:40:36 2020 +0000
- Revision:
- 0:46dbd1b71de5
Vorlage offline
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JoergSturm | 0:46dbd1b71de5 | 1 | #include "mbed.h" |
JoergSturm | 0:46dbd1b71de5 | 2 | |
JoergSturm | 0:46dbd1b71de5 | 3 | DigitalOut myled(LED1); |
JoergSturm | 0:46dbd1b71de5 | 4 | DigitalOut Center(PA_9); |
JoergSturm | 0:46dbd1b71de5 | 5 | DigitalIn Port0(PA_8); |
JoergSturm | 0:46dbd1b71de5 | 6 | DigitalIn Port1(PA_10); |
JoergSturm | 0:46dbd1b71de5 | 7 | |
JoergSturm | 0:46dbd1b71de5 | 8 | PortOut C(PortC,0xFF); |
JoergSturm | 0:46dbd1b71de5 | 9 | InterruptIn irqA(PA_1); |
JoergSturm | 0:46dbd1b71de5 | 10 | InterruptIn irq0(PA_8); |
JoergSturm | 0:46dbd1b71de5 | 11 | InterruptIn irq1(PA_10); |
JoergSturm | 0:46dbd1b71de5 | 12 | |
JoergSturm | 0:46dbd1b71de5 | 13 | int z=0,Zustand=0,Zustandalt=0; |
JoergSturm | 0:46dbd1b71de5 | 14 | |
JoergSturm | 0:46dbd1b71de5 | 15 | void isr(void) |
JoergSturm | 0:46dbd1b71de5 | 16 | { |
JoergSturm | 0:46dbd1b71de5 | 17 | myled=!myled; |
JoergSturm | 0:46dbd1b71de5 | 18 | |
JoergSturm | 0:46dbd1b71de5 | 19 | } |
JoergSturm | 0:46dbd1b71de5 | 20 | |
JoergSturm | 0:46dbd1b71de5 | 21 | void isrEnc(void) |
JoergSturm | 0:46dbd1b71de5 | 22 | { |
JoergSturm | 0:46dbd1b71de5 | 23 | Zustandalt=Zustand; |
JoergSturm | 0:46dbd1b71de5 | 24 | if (Port0==0 && Port1==0) Zustand=0; |
JoergSturm | 0:46dbd1b71de5 | 25 | if (Port0==1 && Port1==0) Zustand=1; |
JoergSturm | 0:46dbd1b71de5 | 26 | if (Port0==1 && Port1==1) Zustand=2; |
JoergSturm | 0:46dbd1b71de5 | 27 | if (Port0==0 && Port1==1) Zustand=3; |
JoergSturm | 0:46dbd1b71de5 | 28 | if (Zustandalt==3 && Zustand==0) z++; |
JoergSturm | 0:46dbd1b71de5 | 29 | if (Zustandalt==0 && Zustand == 3) z--; |
JoergSturm | 0:46dbd1b71de5 | 30 | C=(z<<2)+Zustand; |
JoergSturm | 0:46dbd1b71de5 | 31 | } |
JoergSturm | 0:46dbd1b71de5 | 32 | |
JoergSturm | 0:46dbd1b71de5 | 33 | int main() { |
JoergSturm | 0:46dbd1b71de5 | 34 | Center=1; |
JoergSturm | 0:46dbd1b71de5 | 35 | // Port0.mode(PullDown); |
JoergSturm | 0:46dbd1b71de5 | 36 | // Port1.mode(PullDown); |
JoergSturm | 0:46dbd1b71de5 | 37 | irqA.rise(&isr); |
JoergSturm | 0:46dbd1b71de5 | 38 | irqA.mode(PullDown); |
JoergSturm | 0:46dbd1b71de5 | 39 | irq0.rise(&isrEnc); |
JoergSturm | 0:46dbd1b71de5 | 40 | irq0.fall(&isrEnc); |
JoergSturm | 0:46dbd1b71de5 | 41 | irq0.mode(PullDown); |
JoergSturm | 0:46dbd1b71de5 | 42 | irq1.rise(&isrEnc); |
JoergSturm | 0:46dbd1b71de5 | 43 | irq1.fall(&isrEnc); |
JoergSturm | 0:46dbd1b71de5 | 44 | irq1.mode(PullDown); |
JoergSturm | 0:46dbd1b71de5 | 45 | |
JoergSturm | 0:46dbd1b71de5 | 46 | RCC->AHBENR|=0b100; |
JoergSturm | 0:46dbd1b71de5 | 47 | GPIOC->MODER=0x5555; |
JoergSturm | 0:46dbd1b71de5 | 48 | //GPIOC->ODR=0x55; |
JoergSturm | 0:46dbd1b71de5 | 49 | C=0; |
JoergSturm | 0:46dbd1b71de5 | 50 | while(1) { |
JoergSturm | 0:46dbd1b71de5 | 51 | |
JoergSturm | 0:46dbd1b71de5 | 52 | /* |
JoergSturm | 0:46dbd1b71de5 | 53 | myled = 1; // LED is ON |
JoergSturm | 0:46dbd1b71de5 | 54 | wait(0.2); // 200 ms |
JoergSturm | 0:46dbd1b71de5 | 55 | myled = 0; // LED is OFF |
JoergSturm | 0:46dbd1b71de5 | 56 | wait(1.0); // 1 sec |
JoergSturm | 0:46dbd1b71de5 | 57 | C=0; |
JoergSturm | 0:46dbd1b71de5 | 58 | */ |
JoergSturm | 0:46dbd1b71de5 | 59 | } |
JoergSturm | 0:46dbd1b71de5 | 60 | } |