Jack Hansdampf / Mbed OS Drehimpulsgeber

Dependencies:   LCD_i2c_GSOE

Committer:
jack1930
Date:
Tue Apr 28 15:52:47 2020 +0000
Revision:
0:f5694e6b4092
Child:
1:eff878d1c631
V1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jack1930 0:f5694e6b4092 1 /* mbed Microcontroller Library
jack1930 0:f5694e6b4092 2 * Copyright (c) 2019 ARM Limited
jack1930 0:f5694e6b4092 3 * SPDX-License-Identifier: Apache-2.0
jack1930 0:f5694e6b4092 4 */
jack1930 0:f5694e6b4092 5
jack1930 0:f5694e6b4092 6 #include "mbed.h"
jack1930 0:f5694e6b4092 7 #include "platform/mbed_thread.h"
jack1930 0:f5694e6b4092 8 #include "LCD.h"
jack1930 0:f5694e6b4092 9
jack1930 0:f5694e6b4092 10 #define dg drehgeber>>9
jack1930 0:f5694e6b4092 11
jack1930 0:f5694e6b4092 12 InterruptIn dt(PA_9);
jack1930 0:f5694e6b4092 13 InterruptIn clk(PA_10);
jack1930 0:f5694e6b4092 14 PortIn drehgeber(PortA,0b11000000000);
jack1930 0:f5694e6b4092 15 PortOut diag(PortC,0b11111111);
jack1930 0:f5694e6b4092 16 int x=1,z=0,alt,neu,lsb[4]={3,0,2,1};
jack1930 0:f5694e6b4092 17
jack1930 0:f5694e6b4092 18
jack1930 0:f5694e6b4092 19 void drehgeberISR(void)
jack1930 0:f5694e6b4092 20 {
jack1930 0:f5694e6b4092 21 neu=lsb[dg];
jack1930 0:f5694e6b4092 22 diag=x;
jack1930 0:f5694e6b4092 23 if (alt==3 && neu==0) z=z+1;
jack1930 0:f5694e6b4092 24 if (alt==0 && neu==3) z=z-1;
jack1930 0:f5694e6b4092 25 x=(z<<2)+neu;
jack1930 0:f5694e6b4092 26 alt=neu;
jack1930 0:f5694e6b4092 27 }
jack1930 0:f5694e6b4092 28
jack1930 0:f5694e6b4092 29 void resetPos(void)
jack1930 0:f5694e6b4092 30 {
jack1930 0:f5694e6b4092 31 x=1;
jack1930 0:f5694e6b4092 32 z=0;
jack1930 0:f5694e6b4092 33 //__disable_irq();
jack1930 0:f5694e6b4092 34 diag=0;
jack1930 0:f5694e6b4092 35 }
jack1930 0:f5694e6b4092 36
jack1930 0:f5694e6b4092 37 int main()
jack1930 0:f5694e6b4092 38 {
jack1930 0:f5694e6b4092 39
jack1930 0:f5694e6b4092 40 InterruptIn sw(PA_8);
jack1930 0:f5694e6b4092 41 sw.fall(&resetPos);
jack1930 0:f5694e6b4092 42 sw.mode(PullUp);
jack1930 0:f5694e6b4092 43 dt.rise(&drehgeberISR);
jack1930 0:f5694e6b4092 44 dt.fall(&drehgeberISR);
jack1930 0:f5694e6b4092 45 clk.rise(&drehgeberISR);
jack1930 0:f5694e6b4092 46 clk.fall(&drehgeberISR);
jack1930 0:f5694e6b4092 47 //__disable_irq();
jack1930 0:f5694e6b4092 48 lcd mylcd;
jack1930 0:f5694e6b4092 49 mylcd.clear();
jack1930 0:f5694e6b4092 50 mylcd.cursorpos(0);
jack1930 0:f5694e6b4092 51 while (true) {
jack1930 0:f5694e6b4092 52
jack1930 0:f5694e6b4092 53
jack1930 0:f5694e6b4092 54 mylcd.cursorpos(0);
jack1930 0:f5694e6b4092 55 mylcd.printf("Position %d ",x);
jack1930 0:f5694e6b4092 56
jack1930 0:f5694e6b4092 57
jack1930 0:f5694e6b4092 58 }
jack1930 0:f5694e6b4092 59 }