This program is a initial connection test of mBed and Texas Instruments EZ430 Chronos Watch. The Chronos RF Access Point radio dongle is connected to mBed usb port , and it's configured as a usb host. The program uses the USBHostSerial library.

Dependencies:   USBHost mbed

Chronos Test

  • This program is a successful connection test between mBed and the watch EZ430 Chronos Development Tool from texas Instruments.
  • The RF Access Point usb dongle, that comes with the watch, emulates a usb serial port when connected to a PC. I connected it to the mBed usb port , configured as host ( two 10 K ohms resistors from D+,D- to gnd , I know the recommended value is 15k ) and based the development on the USBHostSerial HelloWorld example program.

/media/uploads/jeroavf/img_20140730_101232.jpg

  • The mBed leds are activated based on the button received from the watch : led2 goes on when the "*" button is pressed , led3 when the "#" button is pressed and led4 when the "up"button is pressed .
  • In order to function , you have to select the "ppt control" mode on the chronos watch and after that , start the transmission pressing the "down" button on the watch.

main.cpp

Committer:
jeroavf
Date:
2014-07-30
Revision:
1:461ba80810ce
Parent:
0:54aa44094993

File content as of revision 1:461ba80810ce:

#include "mbed.h"
#include "USBHostSerial.h"

DigitalOut led(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);

Serial pc(USBTX, USBRX);
int chronos_answer[10] ;

void serial_task(void const*)
{
    USBHostSerial serial;


    while(!serial.connect())
        Thread::wait(500);

    serial.baud(115200) ;

    pc.printf("chronos init ...\n") ;

    serial.putc(0xff) ;
    serial.putc(0x07) ;
    serial.putc(0x03) ;
    pc.printf("chronos init completed ...\n") ;


    while(1) {

        // send read request to chronos
        serial.putc(0xFF);
        serial.putc(0x08);
        serial.putc(0x07);
        serial.putc(0x00);
        serial.putc(0x00);
        serial.putc(0x00);
        serial.putc(0x00);
        Thread::wait(15);


        // put received characters on an array
        int i = 0 ;
        while (serial.available()) {
            int c_in = serial.getc() ;
            chronos_answer[i++] = c_in ;
        }
        int button = chronos_answer[3] ;
        if(button != 255) {
            printf("Button received : %d\n", button ) ;
            switch(button) {
                case 18 :       // * button
                    led2 = 1 ;
                    led3 = 0 ;
                    led4 = 0 ;
                    break ;
                case 50 :       // up button
                    led2 = 0 ;
                    led3 = 1 ;
                    led4 = 0 ;
                    break ;
                case 34 :       // # button
                    led2 = 0 ;
                    led3 = 0 ;
                    led4 = 1 ;
                    break ;

            }
        }


        Thread::wait(50);

    }
}

int main()
{
    Thread serialTask(serial_task, NULL, osPriorityNormal, 256 * 4);
    while(1) {
        led=!led;
        Thread::wait(500);
    }
}