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:
0:54aa44094993
Child:
1:461ba80810ce

File content as of revision 0:54aa44094993:

#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) {
        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);
    }
}