พัทธนันทน์ ศรีสุขนันทน์ / Mbed 2 deprecated TAIST_modbus

Dependencies:   mbed

Fork of TAIST_modbus by Supachai Vorapojpisut

Committer:
KRiTiRK
Date:
Wed Mar 21 09:09:40 2018 +0000
Revision:
7:cba97341e790
Parent:
6:b6d3e73ad56f
to kokokokokkokokkokokokookokoookoookokokokookori

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"
paicaloid 2:6d1f053a6033 3 #include "RawSerial.h"
vsupacha 0:f306cb0263a6 4
KRiTiRK 7:cba97341e790 5 //DigitalOut myled(LED1);
KRiTiRK 7:cba97341e790 6 RawSerial pc(PC_6,PC_7);
paicaloid 2:6d1f053a6033 7 InterruptIn button(USER_BUTTON);
KRiTiRK 7:cba97341e790 8 DigitalOut sel(PA_5);
paicaloid 2:6d1f053a6033 9 Ticker timebase;
KRiTiRK 1:c5e6595a03db 10
paicaloid 2:6d1f053a6033 11 uint32_t Tick = 0;
paicaloid 2:6d1f053a6033 12 uint32_t pressedTick = 0;
paicaloid 2:6d1f053a6033 13 uint32_t releasedTick = 0;
KRiTiRK 1:c5e6595a03db 14
paicaloid 2:6d1f053a6033 15 uint16_t widthCount;
paicaloid 2:6d1f053a6033 16 uint16_t skipCount;
vsupacha 0:f306cb0263a6 17
vsupacha 0:f306cb0263a6 18 void serial_callback()
vsupacha 0:f306cb0263a6 19 {
vsupacha 0:f306cb0263a6 20 uint8_t frame[6];
paicaloid 2:6d1f053a6033 21 uint16_t offset, count;
paicaloid 2:6d1f053a6033 22 uint8_t reg_map;
KRiTiRK 7:cba97341e790 23 char tmpPrint[20];
vsupacha 0:f306cb0263a6 24
paicaloid 2:6d1f053a6033 25 char ch = pc.getc();
vsupacha 0:f306cb0263a6 26 if (modbus_parser(ch, frame)) {
paicaloid 5:8998772b4971 27 // printf("TRUE\n") ;
KRiTiRK 7:cba97341e790 28 sel = 1;
paicaloid 2:6d1f053a6033 29 offset = (frame[2] << 8) | (frame[3]);
paicaloid 2:6d1f053a6033 30 count = (frame[4] << 8) | (frame[5]);
paicaloid 2:6d1f053a6033 31
KRiTiRK 6:b6d3e73ad56f 32 modbus_update(0x0000, widthCount);
KRiTiRK 6:b6d3e73ad56f 33 modbus_update(0x0001, skipCount);
paicaloid 2:6d1f053a6033 34
paicaloid 2:6d1f053a6033 35 reg_map = modbus_check(offset, count);
KRiTiRK 7:cba97341e790 36 modbus_response(reg_map, tmpPrint);
KRiTiRK 7:cba97341e790 37
KRiTiRK 7:cba97341e790 38 pc.printf(tmpPrint);
KRiTiRK 7:cba97341e790 39 printf(tmpPrint);
paicaloid 2:6d1f053a6033 40
paicaloid 2:6d1f053a6033 41 modbus_update(0x0000, 0);
paicaloid 2:6d1f053a6033 42 modbus_update(0x0001, 0);
paicaloid 2:6d1f053a6033 43
paicaloid 2:6d1f053a6033 44 skipCount = 0 ;
paicaloid 2:6d1f053a6033 45 widthCount = 0 ;
KRiTiRK 7:cba97341e790 46 sel = 0;
paicaloid 2:6d1f053a6033 47
vsupacha 0:f306cb0263a6 48 }
vsupacha 0:f306cb0263a6 49 }
vsupacha 0:f306cb0263a6 50
paicaloid 2:6d1f053a6033 51 void pressed_callback()
paicaloid 2:6d1f053a6033 52 {
paicaloid 2:6d1f053a6033 53 // uint16_t skipCount;
paicaloid 2:6d1f053a6033 54
paicaloid 2:6d1f053a6033 55 if ((Tick > pressedTick) && (Tick > releasedTick)) {
paicaloid 2:6d1f053a6033 56 skipCount = Tick - releasedTick;
paicaloid 2:6d1f053a6033 57 // modbus_update(0x0000, skipCount);
paicaloid 2:6d1f053a6033 58 pressedTick = Tick;
paicaloid 2:6d1f053a6033 59 // printf("Pressed: %d - %d - %d\r\n", pressedTick, releasedTick, skipCount);
KRiTiRK 1:c5e6595a03db 60 }
paicaloid 2:6d1f053a6033 61 }
paicaloid 2:6d1f053a6033 62
paicaloid 2:6d1f053a6033 63 void released_callback()
paicaloid 2:6d1f053a6033 64 {
paicaloid 2:6d1f053a6033 65 // uint16_t widthCount;
paicaloid 2:6d1f053a6033 66
paicaloid 2:6d1f053a6033 67 if ((Tick > pressedTick) && (Tick > releasedTick)) {
paicaloid 2:6d1f053a6033 68 widthCount = Tick - pressedTick;
paicaloid 2:6d1f053a6033 69 // modbus_update(0x0001, widthCount);
paicaloid 2:6d1f053a6033 70 releasedTick = Tick;
paicaloid 2:6d1f053a6033 71 // printf("Released: %d - %d - %d\r\n", pressedTick, releasedTick, widthCount);
KRiTiRK 1:c5e6595a03db 72 }
paicaloid 2:6d1f053a6033 73 }
paicaloid 2:6d1f053a6033 74
paicaloid 2:6d1f053a6033 75 void ticker_callback()
paicaloid 2:6d1f053a6033 76 {
paicaloid 2:6d1f053a6033 77 Tick++;
KRiTiRK 1:c5e6595a03db 78 }
KRiTiRK 1:c5e6595a03db 79
vsupacha 0:f306cb0263a6 80 int main() {
vsupacha 0:f306cb0263a6 81 // setup code
paicaloid 2:6d1f053a6033 82 pc.attach(&serial_callback);
paicaloid 2:6d1f053a6033 83
vsupacha 0:f306cb0263a6 84 // 1. button code
paicaloid 2:6d1f053a6033 85 button.rise(&pressed_callback);
paicaloid 2:6d1f053a6033 86 button.fall(&released_callback);
paicaloid 2:6d1f053a6033 87
vsupacha 0:f306cb0263a6 88 // 2. timer code
paicaloid 2:6d1f053a6033 89 timebase.attach(&ticker_callback, 0.1);
paicaloid 5:8998772b4971 90 // printf("Starting\n");
paicaloid 5:8998772b4971 91 // printf("Test: %02X\r\n", modbus_check(0x0000, 0x0001));
paicaloid 5:8998772b4971 92 // printf("Test: %02X\r\n", modbus_check(0x0001, 0x0001));
paicaloid 5:8998772b4971 93 // printf("Test: %02X\r\n", modbus_check(0x0000, 0x0002));
paicaloid 5:8998772b4971 94 // printf("Test: %02X\r\n", modbus_check(0x0000, 0x0003));
paicaloid 5:8998772b4971 95 // printf("Test: %02X\r\n", modbus_check(0x0001, 0x0002));
paicaloid 5:8998772b4971 96 // printf("Test: %02X\r\n", modbus_check(0x0002, 0x0002));
vsupacha 0:f306cb0263a6 97 while(1) {
paicaloid 2:6d1f053a6033 98 // blinking LED
KRiTiRK 7:cba97341e790 99 //myled = !myled;
paicaloid 2:6d1f053a6033 100 wait(2.5);
paicaloid 2:6d1f053a6033 101 // printf("Detection: %d - %d\r\n", pressedTick, releasedTick);
paicaloid 2:6d1f053a6033 102 // modbus_response(0x01);
paicaloid 2:6d1f053a6033 103 // modbus_response(0x02);
paicaloid 2:6d1f053a6033 104 // modbus_response(0x03);
vsupacha 0:f306cb0263a6 105 }
vsupacha 0:f306cb0263a6 106 }