Encoder

Dependencies:   mbed

Committer:
JoergSturm
Date:
Thu Feb 20 17:40:36 2020 +0000
Revision:
0:46dbd1b71de5
Vorlage offline

Who changed what in which revision?

UserRevisionLine numberNew 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 }