2016 Rotary Encoder program
Dependencies: QEI i2cslave mbed
Fork of 2016_slave_rorikon_2 by
not used
main.cpp@0:f6b9d01fdda6, 2016-08-16 (annotated)
- Committer:
- sgrsn
- Date:
- Tue Aug 16 05:24:27 2016 +0000
- Revision:
- 0:f6b9d01fdda6
2016 Rotary Encoder program
;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sgrsn | 0:f6b9d01fdda6 | 1 | #include "mbed.h" |
sgrsn | 0:f6b9d01fdda6 | 2 | #include "QEI.h" |
sgrsn | 0:f6b9d01fdda6 | 3 | #include "i2cslave.h" |
sgrsn | 0:f6b9d01fdda6 | 4 | #include "define.h" |
sgrsn | 0:f6b9d01fdda6 | 5 | |
sgrsn | 0:f6b9d01fdda6 | 6 | union UNION |
sgrsn | 0:f6b9d01fdda6 | 7 | { |
sgrsn | 0:f6b9d01fdda6 | 8 | int i; |
sgrsn | 0:f6b9d01fdda6 | 9 | char c[6]; |
sgrsn | 0:f6b9d01fdda6 | 10 | }; |
sgrsn | 0:f6b9d01fdda6 | 11 | |
sgrsn | 0:f6b9d01fdda6 | 12 | UNION obj; |
sgrsn | 0:f6b9d01fdda6 | 13 | |
sgrsn | 0:f6b9d01fdda6 | 14 | DigitalOut led(dp28); |
sgrsn | 0:f6b9d01fdda6 | 15 | void Func() |
sgrsn | 0:f6b9d01fdda6 | 16 | { |
sgrsn | 0:f6b9d01fdda6 | 17 | obj.c[5]++; |
sgrsn | 0:f6b9d01fdda6 | 18 | //printf(" %d", obj.c[5]); |
sgrsn | 0:f6b9d01fdda6 | 19 | if(obj.c[5] > 2) |
sgrsn | 0:f6b9d01fdda6 | 20 | { |
sgrsn | 0:f6b9d01fdda6 | 21 | //obj.c[4] = 1; |
sgrsn | 0:f6b9d01fdda6 | 22 | NVIC_SystemReset(); |
sgrsn | 0:f6b9d01fdda6 | 23 | } |
sgrsn | 0:f6b9d01fdda6 | 24 | } |
sgrsn | 0:f6b9d01fdda6 | 25 | |
sgrsn | 0:f6b9d01fdda6 | 26 | |
sgrsn | 0:f6b9d01fdda6 | 27 | QEI rorikon(dp1, dp2, NC, 50, QEI::X4_ENCODING); |
sgrsn | 0:f6b9d01fdda6 | 28 | BusOut leds(dp26, dp24); |
sgrsn | 0:f6b9d01fdda6 | 29 | Serial slave(dp16, dp15); |
sgrsn | 0:f6b9d01fdda6 | 30 | |
sgrsn | 0:f6b9d01fdda6 | 31 | int main() |
sgrsn | 0:f6b9d01fdda6 | 32 | { |
sgrsn | 0:f6b9d01fdda6 | 33 | Ticker t; |
sgrsn | 0:f6b9d01fdda6 | 34 | t.attach(Func, 0.1); |
sgrsn | 0:f6b9d01fdda6 | 35 | i2cslave i2c(dp5, dp27, obj.c); |
sgrsn | 0:f6b9d01fdda6 | 36 | i2c.frequency(1000000); |
sgrsn | 0:f6b9d01fdda6 | 37 | /*change address every micon***********/ |
sgrsn | 0:f6b9d01fdda6 | 38 | i2c.address(RE1_addr); |
sgrsn | 0:f6b9d01fdda6 | 39 | /**************************************/ |
sgrsn | 0:f6b9d01fdda6 | 40 | double data = 0; |
sgrsn | 0:f6b9d01fdda6 | 41 | |
sgrsn | 0:f6b9d01fdda6 | 42 | NVIC_SetPriority(TIMER_16_0_IRQn, 5); |
sgrsn | 0:f6b9d01fdda6 | 43 | NVIC_SetPriority(TIMER_16_1_IRQn, 5); |
sgrsn | 0:f6b9d01fdda6 | 44 | NVIC_SetPriority(TIMER_32_0_IRQn, 5); |
sgrsn | 0:f6b9d01fdda6 | 45 | NVIC_SetPriority(TIMER_32_1_IRQn, 5); |
sgrsn | 0:f6b9d01fdda6 | 46 | NVIC_SetPriority(EINT3_IRQn, 20); |
sgrsn | 0:f6b9d01fdda6 | 47 | NVIC_SetPriority(EINT2_IRQn, 20); |
sgrsn | 0:f6b9d01fdda6 | 48 | NVIC_SetPriority(EINT1_IRQn, 20); |
sgrsn | 0:f6b9d01fdda6 | 49 | NVIC_SetPriority(EINT0_IRQn, 20); |
sgrsn | 0:f6b9d01fdda6 | 50 | NVIC_SetPriority(I2C_IRQn, 10); |
sgrsn | 0:f6b9d01fdda6 | 51 | |
sgrsn | 0:f6b9d01fdda6 | 52 | obj.c[4] = 1; |
sgrsn | 0:f6b9d01fdda6 | 53 | led = 0; |
sgrsn | 0:f6b9d01fdda6 | 54 | |
sgrsn | 0:f6b9d01fdda6 | 55 | while(1) |
sgrsn | 0:f6b9d01fdda6 | 56 | { |
sgrsn | 0:f6b9d01fdda6 | 57 | data = rorikon.getSumangle(); |
sgrsn | 0:f6b9d01fdda6 | 58 | if(data < 0.000) |
sgrsn | 0:f6b9d01fdda6 | 59 | { |
sgrsn | 0:f6b9d01fdda6 | 60 | obj.i = (int)(data*10)*(-1); |
sgrsn | 0:f6b9d01fdda6 | 61 | obj.c[4] = 0; |
sgrsn | 0:f6b9d01fdda6 | 62 | leds = 3; |
sgrsn | 0:f6b9d01fdda6 | 63 | } |
sgrsn | 0:f6b9d01fdda6 | 64 | else |
sgrsn | 0:f6b9d01fdda6 | 65 | { |
sgrsn | 0:f6b9d01fdda6 | 66 | obj.i = (int)(data*10); |
sgrsn | 0:f6b9d01fdda6 | 67 | obj.c[4] = 2; |
sgrsn | 0:f6b9d01fdda6 | 68 | leds = 0; |
sgrsn | 0:f6b9d01fdda6 | 69 | } |
sgrsn | 0:f6b9d01fdda6 | 70 | } |
sgrsn | 0:f6b9d01fdda6 | 71 | } |