Subject:
|
Main ROM routine
|
Newsgroups:
|
lugnet.robotics
|
Date:
|
Wed, 11 Nov 1998 08:45:44 GMT
|
Original-From:
|
Kekoa Proudfoot <kekoa@Graphics.Stanford.EDU>
|
Viewed:
|
2698 times
|
| |
| |
I have finally found the time to decode the obvious ROM routine, the OCIA
handler, which is triggered by the timer every 1/1000 second.
See http://graphics.stanford.edu/~kekoa/rcx/#Rom, search for the second
occurance of:
36ba - OCIA handler
Also be sure to see the lists of data values higher up, as I have assigned
meanings to data addresses there, but not necessarily below.
I have yet to do the obvious next step, which is to process related
interrupt handlers.
Interesting notes:
To do preemptive multitasking the correct way - without wasting another
timer and without reprogramming any timers - override the OCIA interrupt
vector at fda2. Call the original handler in ROM to get the original
functionality, and then add your afterward too.
High-level sound processing is implemented in this routine. Tables in
[3f46, 3fc2) describe the sounds using three arrays per sound. The first
(e.g. 3f5c-3f66) contains pitch values, terminated with a 01. In this
first array, 00 indicates silence, increasing numbers are lower pitched.
The second contains durations, in 1/100 sec. The third contains control
bytes, which select a timer and divider value. See the H8 specs, page
281. The bits [3:0] of the control byte are [CKS2,CKS1,CKS0,ICKS0]. Set
bites [7:4] of the control byte to zero.
You can hack new sounds if you like, by carefully tweaking the
functionality of the OCIA handler.
All other timer-based things are done in this routine, including firmware
task wake-up, sensor sampling, and motor PWM.
To adjust the PWM, you need to override the motor part of the OCIA routine,
which is hardcoded to rotate a single byte per motor, using the LSB to
modulate two control bits stored elsewhere using a 1 ms waveform. Servo
control will therefore be slightly more difficult to do, as servos require
accurate pulses in the 1-2 ms range, if I remember correctly.
More later.
-Kekoa
|
|
1 Message in This Thread:
- Entire Thread on One Page:
- Nested:
All | Brief | Compact | Dots
Linear:
All | Brief | Compact
|
|
|
|