Theory of Operation
This section describes advanced details of the LRF Module operation.
Program Structure
As of LRF Module firmware version 2.0, the source tree consists of 5 custom objects and 7 objects either
included with the Parallax Propeller development environment or written by others and posted to the
Parallax Object Exchange (http://obex.parallax.com). Objects with a _Lite prefix have been modified from
their original to remove unused code and/or to meet needs specific to the LRF Module.
LRF_OVM7690.spin
│
├──LRF_con.spin
│
├──OVM7690_obj.spin
│
│
│
├──LRF_con.spin
│
│
│
├──OVM7690_fg.spin
│
│
│
│
│
│
│
├──OVM7690_fg_roi.spin
│
│
│
│
│
│
│
├──pasm_i2c_driver_Lite.spin
│
│
│
└──Synth.spin
│
├──JDCogSerial_Lite.spin
│
├──F32_Lite.spin
│
├──FloatString_Lite.spin
│
│
│
└──FloatMath_Lite.spin
│
└──Basic_I2C_Driver_Lite.spin
LRF_OVM7690.spin is the top object file. This object handles the user interface, command processing,
and laser range finding mathematics.
LRF_con.spin provides the global constants used throughout the program, including camera resolution,
blob detection, range finding, and calibration settings.
OVM7690_obj.spin provides the low-level communication interface for the OmniVision OVM7690 CMOS
CameraCube module.
OVM7690_fg.spin and OVM7690_fg_roi.spin are the frame grabber objects for 160x128 and 320x16
grayscale images, respectively. They retrieve data from the OVM7690 and store it in the hub RAM
frame buffer. OVM7690_fg_roi.spin also provides a subset of blob detection functionality. The
objects are written in Propeller Assembly (PASM) due to their complex timing requirements.
pasm_i2c_driver_Lite.spin provides the I2C protocol interface for communication with the OVM7690.
Written by Dave Hein.
Copyright © Parallax Inc.
│
└──LRF_con.spin
│
└──LRF_con.spin
Parallax Laser Range Finder (#28044)
v2.0 10/31/2015 Page 16 of 23