This Forum is Dedicated For all The Object Oriented PIC Lovers .......... The concept behind OOPic is straight forward. Use preprogrammed multitasking Objects from a library of highly optimized Objects to do all the work of interacting with the hardware. Then write small scripts in Basic, C, or Java syntax styles to control the Objects. During operation, the Objects run continuously and simultaneously in the background while the scripts run in the foreground telling the objects what to do.

Sunday, March 23, 2008

[oopic] Re: Events on C.1.1 & C.1.1+ Firmware - WORK AROUND!!

Working on this issue further, I have found that you can remove the
first two lines (setting the oEvent object class). That part is
fine. I have also found that using a hex editor, you can manually
insert the address into the oopic executable file (hex compiled file)
and eliminate the oRAM object entirely. After finding the address of
the subroutine, calculate the hex notation for the address, open the
source code in the V6 compiler, open the .oex file in a hex editor,
find the initial object declaration (won't be easy) and insert the
address here (low byte first), go back to the oopic program and click
the green arrow to send to oopic. Make sure you do not change any
code as it will recompile and you will lose any changes that you
made. I would recommend using the ram object over this but if you
need to do it, it will work.

--- In oopic@yahoogroups.com, "tinslwc" <tinslwc@...> wrote:
>
> Hello all,
> I have been working on the RAM workaround that was previously
> mentioned and have been able to make the oEvent object work
correctly
> in my program. I thought that I would share this with you. You
have
> to be able to look at the compiled code in order to make them
work.
> The problem is that when the oEvent object is declared, the
compiler
> does not fill in the pointer for the code address. In order to
make
> them work, you have to go back and fill in what the compiler left
> out. After you write your program how you would normally, declare
an
> oRAM object and you first several lines in the Main subroutine will
> be used to setup the event pointer. Here is an example:
>
> ---
>
> Dim Test As oEvent
> Dim Test_Wire As oWire
> Dim LED As oDIO1
>
> Dim RAM_Access As oRAM
>
> Const Event_Obj_Location = 41 ' oEvent "Test" memory location
> Const TestCode_Location_Hi = 0 ' Test_Code EEPROM location High
> Const TestCode_Location_Lo = 67 ' Test_Code EEPROM location Low
>
> Sub Main()
> RAM_Access.Location = Event_Obj_Location
> RAM_Access.Value = 8 ' The oEvent object class
> RAM_Access.Location = Event_Obj_Location + 1
> RAM_Access.Value = TestCode_Location_Lo
> RAM_Access.Location = Event_Obj_Location + 2
> RAM_Access.Value = TestCode_Location_Hi
>
> Test_Wire.Input.Link(ooPIC.Hz1)
> Test_Wire.Output.Link(Test.Operate)
> Test_Wire.Operate = cvTrue
>
> LED.IOLine = 26
> LED.Direction = cvOutput
> End Sub
>
> Sub Test_Code()
> ' This code simply swaps the state of an IO Line
> LED.Invert
> End Sub
>
> ---
>
> For the constants, you will have to fill in these values.
> Event_Object_Location will be the memory location where the event
is
> initialized. TestCode_Location_Lo will be the low byte of the
EEPROM
> address for the oEvent object code. TestCode_Location_Hi will be
the
> high byte of the EEPROM address for the oEvent object code. Once
you
> have the address, the high byte = Address / 256 (no decimal places,
> no rounding) and the low byte will be the remainder (Address Mod
> 256). The only way that I know to get these is to compile the code
> and look through the compiled code for the first line under
the "LXX:
> Proc.Begin ;This.Test_Code" so you will have to put in fake numbers
> first (anything between 0 and 255 should be OK). Once you have
> placed those values into the constants, compile again and check to
> make sure that nothing has changed. Unless you added or removed
some
> code, everything should be just fine. Send the code to your OOPic
> and you are good to go...Hopefully!
>

------------------------------------

Yahoo! Groups Links

<*> To visit your group on the web, go to:

http://groups.yahoo.com/group/oopic/

<*> Your email settings:
Individual Email | Traditional

<*> To change settings online go to:

http://groups.yahoo.com/group/oopic/join

(Yahoo! ID required)

<*> To change settings via email:
mailto:oopic-digest@yahoogroups.com
mailto:oopic-fullfeatured@yahoogroups.com

<*> To unsubscribe from this group, send an email to:
oopic-unsubscribe@yahoogroups.com

<*> Your use of Yahoo! Groups is subject to:

http://docs.yahoo.com/info/terms/

No comments: