View previous topic :: View next topic |
Author |
Message |
croc4
Joined: 02 Sep 2005 Posts: 10
|
Does version 3.203 support HW I2C for 16F88? |
Posted: Fri Sep 02, 2005 5:33 pm |
|
|
anybody know, I don't want to upgrade if I don't have to and at the moment
my code for talking to a slave 16F88 is not working, the slave is not acking the address, pretty basic problem I know, but I "think" the code is correct so I'm starting to question my compiler version |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Fri Sep 02, 2005 6:20 pm |
|
|
Do you have PCW or PCWH ? If so, read this thread
which talks about checking to see if H/W i2c is enabled
for Slave i2c, by using the Device Editor. See the post
that's a little bit below the half-way point in thread.
http://www.ccsinfo.com/forum/viewtopic.php?t=23792
If that's not the problem, or if you just have the plain PCM compiler
then post the code for the function in which you see the problem.
Also indicate the line of code within the function that's causing
the problem. |
|
|
croc4
Joined: 02 Sep 2005 Posts: 10
|
|
Posted: Fri Sep 02, 2005 7:32 pm |
|
|
I have PCWH I believe (no near my dev system at the moment), I can't point to a part of the code that is failing, I don't think that it even gets that far. Here is how I understand it, and I could be totaly wrong.
I have set the device up in slave mode (#use I2C scl=PIN_B4, sda=PIN_B1, address=0xA4, force_hw) (typing from memory, but you get the jist)
and have a while loop in the main function just looping, not shouldn't the device 'ack' the address I gave it?, I would think it would, this is what I'm calling a failure, I do not see the device ack the data line when it is addressed on the bus, this (the 'ack') should be totally separate from SW correct? |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Fri Sep 02, 2005 8:03 pm |
|
|
The 16F88 data sheet says:
Quote: | When an address is matched, or the data transfer after
an address match is received, the hardware automatically
will generate the Acknowledge (ACK) pulse and
then load the SSPBUF register with the received value
currently in the SSPSR register. |
When you get back into your office, you should check
if H/W i2c slave is enabled for the 16F88 with your version
of the compiler. It may not be, and that would cause the
problem. Use the Device Editor in PCWH to check for
this, and to fix it if necessary. |
|
|
croc4
Joined: 02 Sep 2005 Posts: 10
|
|
Posted: Fri Sep 02, 2005 8:31 pm |
|
|
Just checked it and it was marked as "true" for I2C slave.... |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
|
croc4
Joined: 02 Sep 2005 Posts: 10
|
|
Posted: Sat Sep 03, 2005 12:25 pm |
|
|
thanks for that thread, but I'm not using the setup_spi() routine, so that can't be it, well it seems that the tools that I am using should support HW I2C so maybe I have mad a bone head mistake, I'll go over every thing again to see if I may have missed something, Thanks for your help PCM pro, I'll also continue to go through this forum, that lots of good stuff here |
|
|
croc4
Joined: 02 Sep 2005 Posts: 10
|
|
Posted: Tue Sep 06, 2005 9:51 pm |
|
|
found the problem, brain fart!!!!! I was using 7 bit addressing and not eight, duh!
I set the device up as addr 0x52, and sending in 0xA4 (which translates to 0x52 on the bus), once I set it to 0xA4 and sent in 0xA4 the part ack'd as it is supposed to.
Thanks for the help and sorry for the trouble ;-/ |
|
|
|