2. Main Objective
Create a vehicle that will track a high
frequency RF/IR transmitter
The practical application is a golf caddy
that will follow a golfer when requested.
Matthew Sharp
14. Base Motors
Two 12V ServoDisk Motors
Power – 12V Car Battery
Optocoupler
Solid-State Relays
4 Amp Fuses
Fabien Nervais
15. Rotating Mount Configuration
5V DC Servo Motor
Grooved Rubber Belt
Power
12V to 5V linear
voltage regulator
Solid-State Relay
Fabien Nervais
16. Rotation Control
Wire Routing Resolved:
Approximately 350º Rotation
Serial Cable Connection
2 Limit Switches Controlling the Rotational
Behavior
Fabien Nervais
27. EPROM Test Program
; Capstone test code
; for MC68HC11
CodeBase EQU $8000 ; address of start of code
ORG $FFFE ; start of address
pointer
DW CodeBase ; set up pointer address to start of
code
ORG CodeBase ; start of code
Start:
nop
nop
nop
jmp Start
Ryan Hitchler
29. Parts Listing
Part Quantity Price
.1 uF Cap 28 Donated
1 uF Cap 2 Donated
Through Hold Pins 26 Donated
Power Bus 2 Donated
Raltron 8MHz Clk Oscillator 1 Donated
Heat Sink 1 Donated
LM7805 5V Regulator 1 Donated
78M33 3.3V Regulator 1 Donated
Banana Plug (Female) 3 Donated
LED (Yellow) 1 Donated
Diode 1 Donated
Various Resistors 3 Donated
SPST Switch 1 Donated
Push Button Switch 1 Donated
XCS10 FPGA 1 Donated
18V256 EEPROM 1 Donated
10 Pin 4.7KOhm SIP 3 Donated
6 Pin JTAG Header 1 Donated
20 Pin Logic Analyzer Header 2 Donated
27C256 EPROM 1 Donated
62256 SRAM 1 Donated
28 Pin ZIF 1 Donated
MC68HC11 E0 1 Donated
74373 Transparent Latch 1 Donated
MAX233 2 Donated
DB9 Connector 2 Donated
Perf Board 1 $19.00
Stand Off 10 $10.00
Total Cost $29.00
Ryan Hitchler
30. Power On RF
Signal
?
Set up
Interrupts
Set up
Serial
Poll RF
Receiver
No
Turn
Antenna
Poll IR
Receiver
IR
Signal
?
No
Yes
Yes
Stop
Antenna
Read Ant.
Compass
Turn Base
-> Ant
Base
=
Ant.?
Read Base
Compass
No
Stop
Turning
YesTurn Ant.
-> Base
Read Ant.
Compass
Ant. =
Base
?
No
Stop
Antenna
Move
Base
Yes
IR
Signal
?
Poll IR
Receiver
No
Yes
Poll RF
Receiver
RF
Signal
?
Yes
No
John Maitin
Software Algorithm Redux
31. Code
; Capstone algorithm code
; for MC68HC11
; begin code section
ORG CodeBase ; start of code
Start:
lds #Stack ; load stack pointer
bsr enable_int ; enable interrupts
pollrf:
ldaa PORTA ; get GPIO information
anda #RFMASK ; mask out RF information
cmpa #RFMASK ; compare to RF information
bne pollrf ; if no RF signal, continue polling
startantenna:
ldaa PORTA ; get GPIO information
oraa #MAONFMASK0 ; mask in antenna motor control info
anda #MAONFMASKF ; mask out unwanted info
staa PORTA ; write out GPIO stuff
pollir:
ldaa PORTA ; get GPIO information
anda #RFMASK ; mask out RF information
cmpa #RFMASK ; compare to RF information
bne stopantenna ; jump to stopantenna if no RF signal
found
ldaa PORTA ; get GPIO information again
anda #IRMASK ; mask out IR information
cmpa #IRMASK ; compare to IR mask
bne pollir ; if no IR signal, continue polling
stopantenna:
ldaa PORTA ; get GPIO information
oraa #MAOFFMASK0 ; mask in antenna motor control info
anda #MAOFFMASKF ; mask out unwanted info
antennacompass:
oraa #CMPAMASK ; select antenna compass
staa PORTA ; write out GPIO information
bsr read_compass ; read from the antenna compass into d
std compass ; store antenna compass reading into compass
baseturn:
ldaa PORTA ; get GPIO information
anda #CMPBMASK ; select base antenna
staa PORTA ; write out GPIO information
bsr read_compass ; read from the base compass into d
subd compass ; subtract compass value
beq movebase ; if equal, then move base
cpd $0167 ; compare d to halfway value for compass
bge turnright ; turn right if difference greater than halfway
turnleft:
ldaa PORTA ; get GPIO information
oraa #MLONRMASK0 ; write in left motor information
anda #MLONRMASKF ; write out unwanted information
staa PORTA ; write GPIO information
ldaa PORTA ; get GPIO information
oraa #MRONFMASK0 ; write in right motor information
anda #MRONFMASKF ; write out unwanted information
staa PORTA ; write GPIO information
bra pollcomp1 ; jump to pollcomp1
John Maitin
32. Code (Pt. 2)
turnright:
ldaaPORTA ; get GPIO information
oraa #MLONFMASK0 ; write in left motor information
anda #MLONFMASKF ; write out unwanted information
staaPORTA ; write GPIO information
ldaaPORTA ; get GPIO information
oraa #MRONRMASK0 ; write in right motor information
anda #MRONRMASKF ; write out unwanted information
staaPORTA ; write GPIO information
pollcomp1:
movebase:
stop
; enable interrupt control
enable_int:
sei ; disable interrupts
ldaa#$30 ; 9600 baud, assuming 8 MHz clock
staaBAUD ;
ldaa#$00 ; 8 data bits
staaSCCR1 ;
ldaa#$2c ; Receive interrupt, poll transmit, enable TX,RX
staaSCCR2 ;
ldaaSCSR ; clear RDRF, error flags
ldaaSCDR ; clear receive buffer
clra ; clear a
tap ; transfer a to cc register (enable XIRQ and IRQ)
cli ; enable interrupts
rts
; SCI interrupt handler
rec:
psha
ldaa SCSR
anda #$40
cmpa #$40
bne quit
ldaa SCDR
staa compass
quit:
pula
rti
; change antenna direction (XIRQ interrupt handler)
changeant:
psha
pshb
ldaa PORTA
ldab antdir
comb
bmi goreverse
goforward:
oraa #MAONFMASK0
anda #MAONFMASKF
bra finishchange
goreverse:
oraa #MAONRMASK0
anda #MAONRMASKF
finishchange:
staa PORTA
pulb
pula
rti
John Maitin
33. Simple Memory Map, Simple
Decode
Memory map is divided in half, so only 1
pin needed to decode
If memory mapped I/O is used, we can
adapt logic with and gates from needed
address pins
Josh Bingaman
36. Sensor Communication
All GPIO
No Decode logic
1 pin for IR Reception
1 pin for RF Reception
Limit Switches on Antenna motor to
XIRQ
1 spare GPIO input for Proximity
Sensor Josh Bingaman