컨텐츠 바로가기


  • 현재 위치

    1. 게시판
    2. Reference

    Reference

    Reference입니다.

    게시판 상세
    제목 Using an ADC-16 with a Palm Pilot
    작성자 대표 관리자 (ip:)
    • 작성일 2013-09-06 14:30:49
    • 추천 추천하기
    • 조회수 918
    • 평점 0점

    Interfacing an ADC-16 With a Palm Pilot

     

     

    Introduction

     

    Palm pilots are becoming ever more popular and useful as everyday organisers, but can they be used for datalogging?

    Yes is the answer, a Palm Pilot has an RS-232 serial connector so in theory any Pico serial port device can be used in conjunction with a Palm Pilot. There are two main considerations: hardware and software.

     

     

     

    Hardware

    It states in the ADC-16 help file that the serial port requirements are:

    Pin Name Function
    3 TX Data from the PC to the ADC-16
    2 RX Data from the ADC-16 to the PC
    7 RTS Held at a positive voltage (>7 V) to power the ADC-16
    5 GND 0 V line
    4 DTR Held at a negative voltage (<-7 V) to power the ADC-16

    The Palm Pilot has a 10–pin RS–232 serial connector, which can be used to communicate with a wide range of external devices.

    Below is the pin–out description for the 10–pin serial edge connector:

    Pin Name Function
    1 DTR Data Terminal Ready signal
    2 VCC 3.3 Volts
    3 RD (in) Receive data
    4 RTS (out) Request to send
    5 TD (out) Transmit data
    6 CTS (in) Clear to send
    7 GP1 (in) Interrupt line
    8 GP2 (in) modem sync
    9 unused unused
    10 GND signal ground

    From this it can be clearly seen that the ADC-16 can not be powered by a Palm Pilot alone.

    To get round the power problems an adapter had to be built. The device fits in series with the serial cable.

    power adapter

    Power adapter

    It is recommended that you check this adapter thoroughly once constructed to ensure that no large voltages are fed directly into the Palm Pilot as it could cause damage. The only signals going into the Palm should be the datalines and the ground, not the power lines

     

     

     

    Software

    The ADC-16 has the following serial protocol:

    • Switch RTS on and DTR off to provide power
    • Wait for more than 1 second for the ADC-16 to settle
    • Send an single control byte to the ADC-16
    • Wait for the 3 byte response from the ADC-16

    The Palm Pilot operating system is unique and differs from Windows programming in many aspects.

    There are a number of development tools available for writing Palm Pilot applications, for this particular example VFDIDE was used. It is a C++ compiler with a Visual form designer built in and can be downloaded free of charge from www.vfdide.com

    The structure of the program is as follows:

    Once the program is broken down into blocks it is easier to code the individual parts.

     

     

     

    Start Application

    static void StartApplication(void) {
    Err Error;
    FormPtr Frm;

    Frm = FrmInitForm(frmadc16);
    FrmSetActiveForm(Frm);
    FrmDrawForm(Frm);

     

     

     

    Open Serial port

    The following code is used to open and setup the serial port:

    error = SerOpen(SerIORef, 0, 9600);
    if(error) {
    FrmCustomAlert (AlertGenericAlert, strErrSerPortOpen, "can’t open port","can’t open port" );
    SerClearErr(SerIORef);
    return;}

    SerIOConnected = true;
    sstSetup.baudRate = 9600;
    sstSetup.flags = serSettingsFlagBitsPerChar8|
    serSettingsFlagParityOnM;

     

     

     

    Send control byte to ADC16

    The control bytes are defined in the help file, and are declared at the start of the program.

    static unsigned char channels[] = {0X1F, 0X3F,0X5F,0X7F, 0X9F, 0XBF, 0XDF, 0XFF};

    For example 0X1F makes a request for a 16–bit single–ended reading from channel 1. These control bytes are used as so:

    msg = channels[0]; SerSend(SerIORef, &msg, StrLen(&msg), &error);

     

     

     

    Wait for response

    Resolution (bits) Conversion Time (ms)
    8 6.6
    9 8.9
    10 14
    11 23
    12 41
    13 78
    14 151
    15 298
    16 657

    Once a request for data has been send it is necessary to wait for a response. The duration of the delay between request and reply will depend on the resolution of the result:

    SerReceiveWait(SerIORef, 3, 1000);
    SerReceiveCheck(SerIORef, &nbytes);
    anbytes = SerReceive(SerIORef, data, nbytes, 100, &err);
    if (err != 0)
    ret = false; else
    ret = true;
    SerReceiveFlush(SerIORef, 1);
    return(ret);}

     

     

     

    Display the result

    The data is returned in three bytes, the first byte is the sign, the second is the most significant byte (MSB) and the third is the least significant bit (LSB). In this example the sign is ignored.

    value = (data[1]<<8)+data[2];
    volts = (2.5/65535)*value;

    The problem now is that ideally the volts is floating point, however the Palm operating system does not have conventional ways of converting floating point values into strings.

    FloatToString(volts, szvolts, 3);
    StrCopy(szResult, "Voltage = ");
    StrCat(szResult, szvolts);
    WinDrawChars(szResult, StrLen(szResult),20,60);

    The FloattoString function was taken from one of the many usergroups that offers assistance to palm programmers, it makes a rather neat solution to an otherwise tricky display problem.

     

     

     

    Close serial port

    It is essential that the port is closed after being used for a couple of important reasons:

    • The serial port uses a lot of power, keeping the time that it is open to minimum will keep battery usage down to a minimum
    • Other applications that require the serial port will not function as access to the serial port will be denied

     

     

     

    Results

    The above code uses the original serial manager so that the program will function on the older Palm products such as the US Robotics Palm Professional. The program will also function on later models such as the Palm 3, Palm Vx, Palm 3c and Palm M100. For better performance on the newer models there is an improved operating system that has a better serial manager that could be used

    Once the code has been compiled and downloaded to the Palm Pilot it is now possible to connect the ADC16 with aid from the power adapter.

    Download the full code

     

     

     

    References

    ADC16 online help file, by Pico Technology Ltd
    Palm Programming by Glen Bachmann, published by SAMS
    www.palm.com
    NewsGroups
    pilot.programmer
    pilot.programmer.gcc

    Written by Matthew Laver

    For information on any of the Pico Technology products in this document please contact us.

    첨부파일
    비밀번호 * 삭제하려면 비밀번호를 입력하세요.
    관리자게시 스팸신고 스팸해제
    목록 삭제 수정 답변
    댓글 수정

    비밀번호

    수정 취소

    / byte



  •