Hey Andrew,
Once I figure out how to force an address for the toggle array in Swordfish BASIC I suspect my method might look something like this BASIC example, which I hope makes more sense than my previous pseudo C example.
Kind regards, Mike
Code:
Dim Tgl(1024) As Byte ' ??? force to $400..$7FF ???
Dim Pulse(3) As Word
Dim LastElement As FSR0H.booleans(3)
'
Pulse(0) = 3 ' RB0 pulse, 0..1023 usecs
Pulse(1) = 11 ' RB1 pulse, 0..1023 usecs
Pulse(2) = 12 ' RB2 pulse, 0..1023 usecs
'
' clear the 1024 element toggle array
'
FSR0 = AddressOf(Tgl) ' indirect for Tgl(0)
Repeat ' clear toggle array
POSTINC0 = 0 ' clear 0x400..0x7FF
Until LastElement '
'
' insert 3 output toggle bits into our 1024 interval toggle array
'
Tgl(Pulse(0)) = Tgl(Pulse(0)) Or 1 ' insert RB0 toggle bit
Tgl(Pulse(1)) = Tgl(Pulse(1)) Or 2 ' insert RB1 toggle bit
Tgl(Pulse(2)) = Tgl(Pulse(2)) Or 4 ' insert RB2 toggle bit
Tgl(0) = Tgl(0) Xor $FF ' prep Tgl(0) element
'
' implement a button press or some other trigger before falling into
' the output routine (1024 1-usec intervals with 20-MHz clock)
'
FSR0 = AddressOf(Tgl) ' Tgl(0..1023), 0x400..0x7FF
Repeat ' toggle outputs from toggle array
LATB = LATB Xor POSTINC0 ' at 1-usec (5 cycle) intervals
Until LastElement ' until end-of-array (0x800)
Bookmarks