View previous topic :: View next topic |
Author |
Message |
MikeValencia
Joined: 04 Aug 2004 Posts: 238 Location: Chicago
|
TC74 Demo Code. |
Posted: Thu Aug 18, 2005 4:14 pm |
|
|
this code works directly on a PICDEM-2 Plus with a TC74 temperature sensor. It is an endless loop that continuously prints out the temperature in Fahrenheit every several hundred milliseconds.
Code: |
#include <16F876.h>
#device ADC=10
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000) /* one instruction=1us? */
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, ERRORS)
#use I2C(master, SCL=PIN_C3, SDA=PIN_C4)
void main(void)
{
int data;
int ack;
long int fahr;
printf ("\r\n\r\n\r\n");
while (1)
{
i2c_start();
ack = i2c_write(0x9A);
ack = i2c_write(0x00);
/* send start again */
i2c_start();
ack = i2c_write(0x9b);
data = i2c_read(0);
i2c_stop();
// Convert the A/D value to fahrenheit
fahr = (9 * (long)data);
fahr = fahr/5;
fahr = fahr + 32;
printf ("Temp: %ld\r\n", fahr);
delay_ms(200);
}
}
|
Last edited by MikeValencia on Wed Aug 24, 2005 6:27 pm; edited 1 time in total |
|
|
MikeValencia
Joined: 04 Aug 2004 Posts: 238 Location: Chicago
|
|
Posted: Tue Aug 23, 2005 6:50 am |
|
|
I have a mistake in the code. "i2c_stop()" should be "i2c_stop(0);"
Without the (0), the TC74 probably wouldn't relinquish the session. My original code works probably because, in my example, the TC74 is the only chip the PIC talks to.
Thanks to "PCM Programmer" for bringing this to my attention. |
|
|
Mark
Joined: 07 Sep 2003 Posts: 2838 Location: Atlanta, GA
|
|
Posted: Tue Aug 23, 2005 7:04 am |
|
|
I believe that you mean i2c_read(0). i2c_stop() doesn't take parameters. |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Tue Aug 23, 2005 1:26 pm |
|
|
In my PM, I did say it should be i2c_read(0).
(I also suggested editing the original post) |
|
|
hfelton
Joined: 07 Sep 2006 Posts: 2
|
link to newer-thread and code |
Posted: Fri Oct 06, 2006 2:19 am |
|
|
howdee - i was just testing a PICDEM HPC demo board and stumbled here (on my TC74 search) in the forums. im going to include a link to another thread which makes the important distinction that the variables should be labelled 'signed' for ccs-c. the linked-code works perfectly on my demo board with the 'standard' addresses given.
http://www.ccsinfo.com/forum/viewtopic.php?t=28089
good luck, h. |
|
|
new2ccs
Joined: 29 Oct 2006 Posts: 10
|
|
Posted: Thu Nov 16, 2006 1:06 pm |
|
|
why is he sending twice before he reads it ?. Also, on the picdem 2+ the eeprom(24lc256) is also connected to the SDA , SCL. with the code above, the pic just reads it from tc74 and doesn't do anything with eeprom. am i right? |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Thu Nov 16, 2006 3:26 pm |
|
|
Quote: | why is he sending twice before he reads it |
Download the TC74 data sheet and look at the "Read Byte" diagram
on page 7. His code matches the diagram.
http://ww1.microchip.com/downloads/en/DeviceDoc/21462c.pdf
Quote: |
Also, on the picdem 2+ the eeprom(24lc256) is also connected to the
SDA , SCL. with the code above, the pic just reads it from tc74 and
doesn't do anything with eeprom. am i right? |
The TC74 and the 24LC256 have different i2c addresses.
Therefore, they can be on the same bus without conflicting with each
other. |
|
|
new2ccs
Joined: 29 Oct 2006 Posts: 10
|
|
Posted: Thu Nov 16, 2006 4:20 pm |
|
|
ok, now i kind of got it. I used one of the examples in the manual and didn't work for me and I also read the data sheet too, but still got confused. now it is some what clear.
another question PCM, so that only the communication between the pic and the TC74(sensor) right?. if my understanding is correct then, if i want to write to the eeprom(24LC256). i would do something like that but with the 24LC256' address right?
thanks PCM, you are the great help. |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Thu Nov 16, 2006 4:39 pm |
|
|
To use the 25LC256 eeprom, just #include the 24256.c driver in your
C program. The driver is located in this folder:
c:\Program Files\Picc\Drivers\24256.c
If you have questions about that driver, please post them in the main
forum. (not the Code library) |
|
|
|