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, December 9, 2007

[oopic] Re: Controll RFID module over I2C bus

90% of the code you posted has nothing to do with the problem and
serves to obscure what is really going on. You can get better help if
you post the absolute minimum code necessary to demonstrate the problem.

The most common problem with I2C is the fact that the OOPic uses the
'normal' I2C address divided by two.

If the factory says the address is 0x42 which seems to be what was
used for the PIC, then you want to use 0x21.

Sometimes manufacturers specify the address is a full 8 bit manner
where the low bit is 0 to write and 1 to read. Others specify only
the 7 actual address bits and expect the user to deal with it.

How to deal with it depends on what is expected by the processor. For
the OOPic, it wants only the 7 actual address bits or the 8 bit
address divided by 2.

Richard

--- In oopic@yahoogroups.com, "ngocthach1130" <ngocthach1130@...> wrote:
>
> hi i'm trying to control an RFID module using I2C bus. Looking at
> sample program written for PicMicro i cannot relate the same code to
> OOpic.
> void sm130_version(void)
> {
> I2C_start(); //Send start command
> I2C_write(0x42); //Send Slave address
> I2C_write(0x01); //Length is 1 byte
> I2C_write(0x81); //Version = command 0x81
> I2C_write(0x82); //Send checksum
>
> //while zero is read
> //{
> // Send stop() if zero is read
> //}
>
> //Read in length byte
>
> //Read in "LENGTH" number of bytes
>
> //Send stop()
> }
>
> ======================================================================
> While running my code the oopic seem to run only the first line when
> it enter the GetFirmware() function
> oLED redled = New oLED;
> oLED yellowled = New oLED;
> oLED greenled = New oLED;
> oSpeaker Spk = New oSpeaker;
> oDIO1 Dipswitch = New oDIO1;
> oI2CM Ports = New oI2CM;
> oDIO1 dataready = New oDIO1;
>
>
> Void Main(Void){
> Setup();
> //RFOn(); //turn on rf field
> GetFirmware();
> //RFOff(); //turn off rf field
> ooPIC.Delay = 10000;
> }
>
> Void Setup()
> {
> //set up I2C ports
> Ports.Node = &h84;
> Ports.NoInc = cvTrue;
> Ports.Mode = cv7Bit;
> Ports.Width = cv16Bit;
>
> //initialize 3 led and default them off
> redled.IOLine = 7;
> yellowled.IOLine = 6;
> greenled.IOLine = 5;
> redled.TurnOff;
> yellowled.TurnOff;
> greenled.TurnOff;
>
> //at start only yellow led is on
> //with acknoledge on sound sequence
> yellowled.TurnOn;
> Spk.Beep(65000,100);
> ooPIC.Delay = 1000;
>
> //set up a dipswitch and other I/O
> ooPIC.PullUp = cvTrue;
> Dipswitch.IOLine = 8;
> Dipswitch.Direction = cvInput;
> dataready.IOLine = 9;
> dataready.Direction = cvInput;
> }
>
> Void GetFirmware()
> {
> //greenled.TurnOn; When uncommenting this. Only this command run
> Ports.Value=&h81;
> //Ports.Value=&h83;
> //Ports.Value=&h84;
> greenled.TurnOn;
> ooPIC.Delay = 10000;
> For(Int x=0;x<=10000;x++)
> {
> greenled.TurnOn;
> ooPIC.Delay = 500;
> If (dataready == cvTrue)
> {
> greenled.TurnOn;
> Spk.Beep(64000,100);
> Break;
> }
> greenled.TurnOff;
> }
> Ports.Node=&h85;
> Int length;
> Do
> {
> length = Ports.Value;
> }
> While(length == &hFF Or length ==&h00);
> If(length == &h08)
> redled.TurnOn;
> ooPIC.Delay = 5000;
> If(Ports.Value == &h00)
> redled.TurnOff;
> ooPIC.Delay = 5000;
> }
>



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: