New group

Dependencies:   mbed

Fork of TAIST_modbus by Supachai Vorapojpisut

Committer:
fzaq
Date:
Wed Mar 14 14:28:46 2018 +0000
Revision:
17:98631c9faf5f
Parent:
16:02568a44616b
Child:
18:47f0da1f232b
Debound;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vsupacha 0:f306cb0263a6 1 #include "mbed.h"
vsupacha 0:f306cb0263a6 2 #include "modbus.h"
vsupacha 0:f306cb0263a6 3
vsupacha 0:f306cb0263a6 4 DigitalOut myled(LED1);
SaiiPruttapon 1:f84cb7cea5ea 5 InterruptIn button(USER_BUTTON);
vsupacha 0:f306cb0263a6 6 RawSerial pc(USBTX, USBRX);
nengzix 9:4ddee8c61bad 7
SaiiPruttapon 8:5c3395345dc1 8 Ticker ticker;
vsupacha 0:f306cb0263a6 9
nengzix 7:774c2b305d2d 10 int cunt_pressed = 0;
nengzix 7:774c2b305d2d 11 int cunt_released = 0;
fzaq 6:5bb5238f2f6e 12 int x,y;
SaiiPruttapon 1:f84cb7cea5ea 13
vsupacha 0:f306cb0263a6 14 void serial_callback()
vsupacha 0:f306cb0263a6 15 {
nengzix 11:316c0fb5423b 16 //Test with :000300000000FD for register 0
nengzix 11:316c0fb5423b 17 //Test with :000301000000FC for register 1
vsupacha 0:f306cb0263a6 18 uint8_t frame[6];
vsupacha 0:f306cb0263a6 19 char ch = pc.getc();
nengzix 9:4ddee8c61bad 20 if(modbus_parser(ch, frame)){
nengzix 16:02568a44616b 21 modbus_gen(frame);
nengzix 9:4ddee8c61bad 22 }
vsupacha 0:f306cb0263a6 23 }
SaiiPruttapon 4:f6bce90e2872 24
fzaq 17:98631c9faf5f 25 void released_cunt()
fzaq 17:98631c9faf5f 26 {
fzaq 17:98631c9faf5f 27 cunt_released = cunt_released+1;
fzaq 17:98631c9faf5f 28 }
fzaq 17:98631c9faf5f 29
fzaq 17:98631c9faf5f 30 void pressed_cunt()
fzaq 17:98631c9faf5f 31 {
fzaq 17:98631c9faf5f 32 cunt_pressed = cunt_pressed+1;
fzaq 17:98631c9faf5f 33 }
fzaq 17:98631c9faf5f 34
SaiiPruttapon 1:f84cb7cea5ea 35 void pressed()
SaiiPruttapon 1:f84cb7cea5ea 36 {
fzaq 6:5bb5238f2f6e 37 if(cunt_released != 0)
SaiiPruttapon 5:843e67c675c1 38 {
SaiiPruttapon 5:843e67c675c1 39 y = cunt_released;
fzaq 6:5bb5238f2f6e 40 modbus_update(0, y);
nengzix 9:4ddee8c61bad 41 printf("released = %.1f sec\n",modbus_read(0)*0.1);
SaiiPruttapon 5:843e67c675c1 42 cunt_released = 0;
SaiiPruttapon 5:843e67c675c1 43 }
SaiiPruttapon 8:5c3395345dc1 44 if(button==0){
fzaq 17:98631c9faf5f 45 ticker.attach(callback(&pressed_cunt),0.1);
SaiiPruttapon 4:f6bce90e2872 46 }
SaiiPruttapon 1:f84cb7cea5ea 47 }
SaiiPruttapon 1:f84cb7cea5ea 48
SaiiPruttapon 1:f84cb7cea5ea 49 void released()
SaiiPruttapon 1:f84cb7cea5ea 50 {
fzaq 6:5bb5238f2f6e 51 if(cunt_pressed != 0)
SaiiPruttapon 5:843e67c675c1 52 {
SaiiPruttapon 5:843e67c675c1 53 x = cunt_pressed;
fzaq 6:5bb5238f2f6e 54 modbus_update(1, x);
nengzix 9:4ddee8c61bad 55 printf("pressed = %.1f sec\n",modbus_read(1)*0.1);
SaiiPruttapon 5:843e67c675c1 56 cunt_pressed = 0;
SaiiPruttapon 5:843e67c675c1 57 }
SaiiPruttapon 8:5c3395345dc1 58 if(button==1){
fzaq 17:98631c9faf5f 59 ticker.attach(callback(&released_cunt),0.1);
SaiiPruttapon 5:843e67c675c1 60 }
SaiiPruttapon 1:f84cb7cea5ea 61 }
SaiiPruttapon 1:f84cb7cea5ea 62
vsupacha 0:f306cb0263a6 63 int main() {
vsupacha 0:f306cb0263a6 64 // setup code
vsupacha 0:f306cb0263a6 65 pc.attach(serial_callback);
SaiiPruttapon 1:f84cb7cea5ea 66
vsupacha 0:f306cb0263a6 67 // 1. button code
fzaq 6:5bb5238f2f6e 68 button.mode(PullNone);
SaiiPruttapon 1:f84cb7cea5ea 69 button.fall(&pressed);
SaiiPruttapon 1:f84cb7cea5ea 70 button.rise(&released);
SaiiPruttapon 1:f84cb7cea5ea 71
vsupacha 0:f306cb0263a6 72 // 2. timer code
SaiiPruttapon 8:5c3395345dc1 73 Ticker ticker;
SaiiPruttapon 8:5c3395345dc1 74
SaiiPruttapon 8:5c3395345dc1 75
vsupacha 0:f306cb0263a6 76 while(1) {
vsupacha 0:f306cb0263a6 77 // loop code
vsupacha 0:f306cb0263a6 78 myled = 1; // LED is ON
vsupacha 0:f306cb0263a6 79 wait(0.2); // 200 ms
vsupacha 0:f306cb0263a6 80 myled = 0; // LED is OFF
vsupacha 0:f306cb0263a6 81 wait(1.0); // 1 sec
vsupacha 0:f306cb0263a6 82 }
vsupacha 0:f306cb0263a6 83 }