<< Chapter < Page | Chapter >> Page > |
Line 8 sets
AR3
to point to the
location
hold
so that
READSER
will
store serial data there. On
Line 9 ,
READSER 1
reads one serial byte into
hold
;
the byte is placed in the low-order bits of the word, and thehigh-order bits are zeroed. If a byte was read,
AR1
will be set to 1.
AR1
is checked
in
Line 12 ;
Line 13 branches back to
the top if no byte was read. Otherwise,
AR3
is
reset to
hold
(since
READSER
moved
it), then on
Line 16 ,
WRITSER
sends
the word received. Finally,
Line 18 branches back
to the start to receive another character.
MATLAB allows you to create a visual interface with standard graphical user-interface ( GUI ) controls such as sliders, checkboxes, and radio buttons to call MATLAB scripts. The following scripts can be used tocreate a sample interface:
The following code ( ser_set.m ) initializes the serial port COM2, then creates a minimaluser interface consisting of three sliders.
1 % ser_set: Initialize serial port and create three sliders
2
3 % Set serial port mode
4 !mode com2:38400,n,8,1
5
6 % open a blank figure for the slider
7 Fig = figure(1);
8
9 % open sliders
10
11 % first slider
12 sld1 = uicontrol(Fig,'units','normal','pos',[.2,.7,.5,.05],...
13 'style','slider','value',4,'max',254,'min',0,'callback','wrt_slid');
14
15 % second slider
16 sld2 = uicontrol(Fig,'units','normal','pos',[.2,.5,.5,.05],...
17 'style','slider','value',4,'max',254,'min',0,'callback','wrt_slid');
18
19 % third slider
20 sld3 = uicontrol(Fig,'units','normal','pos',[.2,.3,.5,.05],...
21 'style','slider','value',4,'max',254,'min',0,'callback','wrt_slid');
Line 4 of this code uses the Windows
mode
command to set up serial port COM2 (which
is connected to the DSP) to match the serial port settingson the DSP evaluation board: 38,400 bps, no parity, eight
data bits, and one stop bit.
Line 7 then
creates a new MATLAB figure for the controls; this preventsthe controls from being overlaid on any graph you may have
already created.
Lines 12 through the end create the three
sliders for the user interface. Several parameters are usedto specify the behavior of each slider. The first parameter,
Fig
, tells the slider to create itself in the
window we created in
Line 7 . The rest of the
parameters are property/value pairs:
normal
tells MATLAB to use positioning
relative to the window boundaries.slider
creates a slider control.Every time a slider is moved, the file wrt_slid.m is called:
1 % wrt_slid: write values of sliders out to com port
2
3 % open com port for data transfer
4 fid = fopen('com2:','w');
5
6 % send data from each slider
7 v = round(get(sld1,'value'));
8 fwrite(fid,v,'uint8');
9
10 v = round(get(sld2,'value'));
11 fwrite(fid,v,'uint8');
12
13 v = round(get(sld3,'value'));
14 fwrite(fid,v,'uint8');
15
16 % send reset pulse
17 fwrite(fid,255,'uint8');
18
19 % close com port connection
20 fclose(fid);
Line 4 of
wrt_slid.m opens COM2 for writing. (It has already been initialized
by
ser_set.m .)
Then
Line 7 reads the value of the first
slider using MATLAB's
get
function to
retrieve the
value
property. The value is
then rounded off to create an integer, and the integer issent as an 8-bit quantity to the DSP in
Line
8 . (The number that is sent at this step will
appear when the serial port is read with
READSER
in your code.) Then the other two
sliders are sent in the same way.
Line 17 sends
0xFF
(255) to the
DSP, which can be used to indicate that the threepreviously-transmitted values represent a complete set of
data points. Your code can check for the value 255 todetect and correct synchronization errors.
Line 20 closes the serial port. Note that MATLAB buffers the data being transmitted, and data isoften not sent until the serial port is closed. Make sure you close the port after writing a data block to theserial port.
Notification Switch
Would you like to follow the 'Ece 320 - spring 2003' conversation and receive update notifications?