2016 Rotary Encoder program

Dependencies:   QEI i2cslave mbed

Fork of 2016_slave_rorikon_2 by hidaka sato

not used

Committer:
sgrsn
Date:
Tue Aug 16 05:24:27 2016 +0000
Revision:
0:f6b9d01fdda6
2016 Rotary Encoder program
;

Who changed what in which revision?

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