cwm2016

Dependencies:   mbed

Fork of SerialPassthrough by Austin Blackstone

Committer:
cstevens
Date:
Wed Jun 08 10:07:11 2016 +0000
Revision:
9:b1344ca3497d
Parent:
8:34cc66421054
FIXED THE PARTIAL READBACK PROBLEM BEING CAUSED BYT HTE SLEEP WAKEUP TIING ISSUE

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cstevens 7:d78ed22a787d 1 /* Simpler prog based on the serial passthrough code to enable a command line driven test of esp8266
cstevens 7:d78ed22a787d 2 * wifi modules.
cstevens 7:d78ed22a787d 3 * NB this uses the mbed sleep() command to form a low power system but on some MCUs this is a problem
cstevens 7:d78ed22a787d 4 * this works fine on an lpc1768 but not as yet on the KL25Z
cstevens 7:d78ed22a787d 5 */
mbedAustin 0:59bec1fd956e 6 #include "mbed.h"
mbedAustin 2:a8dcb07a1d00 7
cstevens 7:d78ed22a787d 8 RawSerial pc(USBTX, USBRX); // serial terminal for the pc connection
cstevens 8:34cc66421054 9 //RawSerial dev(PTE0,PTE1); // for KL25Z... asuming one can't use the PTA1 version which is the stdio
cstevens 7:d78ed22a787d 10 RawSerial dev(p28,p27); // serial uart for connecting to the esp8266 tx,rx NB mbed tx must connect ot esp rx and vice versa
cstevens 7:d78ed22a787d 11 DigitalOut led1(LED1); // twp leds
cstevens 7:d78ed22a787d 12 DigitalOut led4(LED4); // to allow visual check of bidirectional comms
cstevens 8:34cc66421054 13 DigitalOut rst(p26); // single digital pin to drive the esp8266 reset line
mbedAustin 2:a8dcb07a1d00 14
cstevens 7:d78ed22a787d 15 // subroutine to run anytime a serial interrupt arrives from the device
cstevens 7:d78ed22a787d 16 // this basically passes everything thatthe device produces on to the pc terminal screen
sam_grove 5:96cb82af9996 17 void dev_recv()
mbedAustin 2:a8dcb07a1d00 18 {
sam_grove 5:96cb82af9996 19 led1 = !led1;
sam_grove 5:96cb82af9996 20 while(dev.readable()) {
sam_grove 5:96cb82af9996 21 pc.putc(dev.getc());
cstevens 9:b1344ca3497d 22 //wait_us(1);
sam_grove 5:96cb82af9996 23 }
sam_grove 5:96cb82af9996 24 }
cstevens 7:d78ed22a787d 25 // subroutine to service the serial interrupt on the pc connection
cstevens 7:d78ed22a787d 26 // this is a bit more complex - it takes what the use sends on the pc and copies it on to the device
cstevens 7:d78ed22a787d 27 // the esp should echo these straight back to the the pc if all is well
cstevens 7:d78ed22a787d 28 // this also detects the end of command character which is ascii 13 (0x0d) adn adds a linefeed after it =asscii 10 (0x0a)
sam_grove 5:96cb82af9996 29 void pc_recv()
sam_grove 5:96cb82af9996 30 {
cstevens 6:dc4c165f6b53 31 char c;
sam_grove 5:96cb82af9996 32 led4 = !led4;
sam_grove 5:96cb82af9996 33 while(pc.readable()) {
cstevens 6:dc4c165f6b53 34 c=pc.getc();
cstevens 6:dc4c165f6b53 35 dev.putc(c);
cstevens 6:dc4c165f6b53 36 //pc.putc(c); // echo back
cstevens 7:d78ed22a787d 37 if(c==13) {dev.putc(10); // send the linefeed to complement the carriage return generated by return key on the pc
cstevens 6:dc4c165f6b53 38 pc.putc(10);
cstevens 6:dc4c165f6b53 39 }
mbedAustin 0:59bec1fd956e 40 }
mbedAustin 0:59bec1fd956e 41 }
mbedAustin 4:ba9100d52e48 42
mbedAustin 4:ba9100d52e48 43 int main()
mbedAustin 4:ba9100d52e48 44 {
cstevens 6:dc4c165f6b53 45 rst=0;
cstevens 6:dc4c165f6b53 46 wait(1);
cstevens 8:34cc66421054 47 rst=1; // send the esp8266 reset
cstevens 6:dc4c165f6b53 48 wait(1);
cstevens 8:34cc66421054 49 pc.printf("ok off we go....\n\r");
cstevens 8:34cc66421054 50
cstevens 8:34cc66421054 51 pc.baud(115200); // NB maybe this should go before this
cstevens 6:dc4c165f6b53 52 dev.baud(115200);
mbedAustin 4:ba9100d52e48 53
cstevens 8:34cc66421054 54 pc.attach(&pc_recv, Serial::RxIrq); // attach the two interrupt services
sam_grove 5:96cb82af9996 55 dev.attach(&dev_recv, Serial::RxIrq);
cstevens 6:dc4c165f6b53 56
cstevens 6:dc4c165f6b53 57
cstevens 9:b1344ca3497d 58 int i=0;
mbedAustin 4:ba9100d52e48 59 while(1) {
cstevens 9:b1344ca3497d 60
cstevens 9:b1344ca3497d 61 (i++)%10; // THIS USED TO BE A SLEEP COMMAND BUT IT WAS CAUSING SOME TROUBLE.
mbedAustin 4:ba9100d52e48 62 }
mbedAustin 4:ba9100d52e48 63 }