PIC16F88 I2C Accelerometer Help


Closed Thread
Results 1 to 7 of 7

Hybrid View

  1. #1
    Join Date
    May 2015
    Posts
    2


    Did you find this post helpful? Yes | No

    Default Re: PIC16F88 I2C Accelerometer Help

    After looking over your last post im confident that should work. At this point I'm kicking my group members but for not buying us analog inclinometers which would have saved me about 12-15 hours working on this one function. I will load up my current program with your suggestion on it tomorrow. If it works i will load a video onto youtube and link the video. Until then, if i am wanting to read the values and and use them to compare angles (like in the original program) is it necessary to both read and write or should i just write or vice versa. This type of programming evades me. I'm essentially reading both "Yout" values for 2 inclinometers on 1 PIC and using it co compare angles until i can get them to be even.

  2. #2
    Join Date
    Jan 2013
    Location
    Texas USA
    Posts
    229


    Did you find this post helpful? Yes | No

    Default Re: PIC16F88 I2C Accelerometer Help

    As I stated in my earlier post, to READ data using the I2CREAD command, PBP will handle the low-level
    I2C protocol actions to the target I2C device. (PBP acts as the I2C Master)
    This information can be gleaned from the PBP manual as well, but maybe not as concise? ;-)

    For example, if you want to read the data from register ($07) and the I2C device's 7bit slave address is ($1D).

    Code:
    ''Read a single byte from device ($1D) (7bit addr) from register ($07).
    
    myData var byte   ' byte variable to hold the received data from Target device
    myAddr var byte   ' byte variable to hold Target device's 8bit slave address
    myReg  var byte   ' byte variable to hold the Target device's Register address
    
    DPIN1 var PORTB.4 'data pin
    CPIN1 var PORTA.2 'clock
    
    myAddr = $3A    ' 7bit slave address left-shifted 1 bit to make an 8bit address and make bit0 (R/W) "0". ($1D << 1 = $3A)
    myReg  = $07    ' Address of Target device's Register to Read
    
    I2CREAD DPIN1, CPIN1, myAddr, myReg, [myData]
    Now this is what happens:
    1. PBP transmits a start condition (ST) to the Target device, slave address ($1D), with the R/W bit set to "0" for a write.
    2. PBP waits for an acknowledgement from the Target device.
    3. PBP transmits the 8bit address of the register to read. ($07)
    4. PBP waits for an acknowledgement from the Target device.
    5. PBP transmits a repeated start (SR) condition to the Target device, slave address ($1D), with the R/W bit set to "1" for a read of the register in step 3.
    6. PBP waits for an acknowledgement from the Target device.
    7. PBP clocks in the byte of data sent from the Target device for the register asked for ($07) and stores it in the myData variable.
    8. PBP issues a Stop Condition to the Target device once the 8 bits of data are clocked in and stored in the myData variable.

    Writing data to an I2C device is similar in that PBP handles the low-level I2C protocol actions for you.

    BTW
    You should read the MMA7455L datasheet.
    As with any device, you will need to make sure you configure the MMA7455L correctly for your application use.
    Device default settings in general may not fit a person's application.
    Also, it provides information on how to communicate with it and how connect the MCU to it.
    All of the information is in there. :-).
    Regards,
    TABSoft

Similar Threads

  1. I2C MMA8452 Accelerometer
    By emf985 in forum mel PIC BASIC Pro
    Replies: 12
    Last Post: - 15th January 2015, 18:28
  2. Accelerometer reading
    By joseph Degorio in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 8th February 2011, 12:43
  3. accelerometer question
    By griffin in forum mel PIC BASIC Pro
    Replies: 0
    Last Post: - 27th February 2009, 22:00
  4. Pic16f88-I2c-Interrupt PORTB...
    By robert0 in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 23rd September 2007, 04:38
  5. PIC16F88, Bootloader & I2C Memory
    By digilord in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 30th December 2005, 16:36

Members who have read this thread : 2

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts