﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>RoboticsConnection User Forum / RoboticsConnection Hardware Support / Robot Sensor Support  / I2C line following sensor - can't read / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>RoboticsConnection User Forum</description><link>http://www.roboticsconnection.com/userForums/</link><webMaster>info@roboticsconnection.com</webMaster><lastBuildDate>Thu, 17 May 2012 16:21:06 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: I2C line following sensor - can't read</title><link>http://www.roboticsconnection.com/userForums/Topic1910-10-1.aspx</link><description>Here is the PIC code we use in the Serializer, where address is 0x50:&lt;/P&gt;&lt;P&gt;#use I2C(master, sda=PIN_c4, scl=PIN_c3,slow)&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;&lt;BR&gt;i2c_start();   // restart condition&lt;BR&gt;i2c_write(ADDRESS + 1);&lt;BR&gt;value = i2c_read(0);&lt;BR&gt;i2c_stop();&lt;/P&gt;&lt;P&gt;Best Regards,</description><pubDate>Fri, 09 Jul 2010 10:39:56 GMT</pubDate><dc:creator>jsummerour</dc:creator></item><item><title>I2C line following sensor - can't read</title><link>http://www.roboticsconnection.com/userForums/Topic1910-10-1.aspx</link><description>Hello I have been trying for 2 days to read the sensor but without success.&lt;br&gt;I'm using a pic18f248 with 1.8k pull up on sda &amp; scl and the c18 compiler&lt;br&gt;&lt;br&gt;here is my code maybe you guys can find anything wrong ?&lt;br&gt;I don't know if my I2C_read routine is correct.&lt;br&gt;Maybe my initialization isn't correct ? I've read many topics on internet and there was sometimes " #pragma config BOR = ON " but I didn't see anything about that on the 18f248 datasheet.&lt;br&gt;&lt;br&gt;#include &lt;p18f248.h&gt;&lt;br&gt;#pragma config OSC=HS &lt;br&gt;#pragma config WDT=OFF&lt;br&gt;#pragma config LVP=OFF&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;void I2C_idle(void)&lt;br&gt;{&lt;br&gt;	int boucle;&lt;br&gt;	&lt;br&gt;	while(boucle == 0)&lt;br&gt;	{&lt;br&gt;		if((SSPCON2bits.ACKEN == 0) &amp;&amp; (SSPCON2bits.SEN == 0) &amp;&amp; (SSPCON2bits.RSEN == 0) &amp;&amp; (SSPCON2bits.PEN == 0) &amp;&amp; (SSPCON2bits.RCEN == 0) &amp;&amp; (SSPSTATbits.R_W == 0))&lt;br&gt;          boucle=1;&lt;br&gt;        }&lt;br&gt;}&lt;br&gt;&lt;br&gt;void I2C_start(void)	&lt;br&gt;{&lt;br&gt;	I2C_idle();&lt;br&gt;	SSPCON2bits.SEN = 1;&lt;br&gt;}&lt;br&gt;&lt;br&gt;void I2C_write(char donnee)&lt;br&gt;{&lt;br&gt;	I2C_idle();&lt;br&gt;	SSPBUF = donnee;&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;br&gt;void Ack_slave_master(void)&lt;br&gt;{&lt;br&gt;	I2C_idle();&lt;br&gt;	while(SSPCON2bits.ACKSTAT==1);&lt;br&gt;	&lt;br&gt;}&lt;br&gt;&lt;br&gt;void Repeated_start(void)&lt;br&gt;{&lt;br&gt;	I2C_idle();&lt;br&gt;	SSPCON2bits.RSEN = 1;&lt;br&gt;}&lt;br&gt;&lt;br&gt;void I2C_read(void)&lt;br&gt;{&lt;br&gt;	I2C_idle();&lt;br&gt;	SSPCON2bits.RCEN=1;&lt;br&gt;	while(SSPCON2bits.RCEN==1);&lt;br&gt;}	&lt;br&gt;&lt;br&gt;&lt;br&gt;void Ack_master_slave(void)&lt;br&gt;{&lt;br&gt;	I2C_idle();&lt;br&gt;	SSPCON2bits.ACKDT = 0;&lt;br&gt;	SSPCON2bits.ACKEN = 1;&lt;br&gt;}&lt;br&gt;&lt;br&gt;void I2C_NOACK(void)&lt;br&gt;{&lt;br&gt;	I2C_idle();&lt;br&gt;	SSPCON2bits.ACKDT = 1;&lt;br&gt;	SSPCON2bits.ACKEN = 1;&lt;br&gt;}&lt;br&gt;&lt;br&gt;void I2C_stop(void)&lt;br&gt;{&lt;br&gt;	I2C_idle();&lt;br&gt;	SSPCON2bits.PEN = 1;&lt;br&gt;}&lt;br&gt;&lt;br&gt;void pause(void)&lt;br&gt;{&lt;br&gt;	unsigned int time = 0;&lt;br&gt;	&lt;br&gt;	while(time &lt; 10000)&lt;br&gt;		time++;&lt;br&gt;}&lt;br&gt;&lt;br&gt;void main(void)&lt;br&gt;{&lt;br&gt;	unsigned char test;&lt;br&gt;	SSPSTATbits.SMP = 1;&lt;br&gt;	SSPSTATbits.CKE = 0;&lt;br&gt;	SSPADD = 0x31;        //master mode&lt;br&gt;	SSPCON1 = 0x28;     //SCL ~100k&lt;br&gt;	TRISB = 0x00;&lt;br&gt;	TRISC = 0x18;&lt;br&gt;	I2C_start();&lt;br&gt;	I2C_write(0x50);&lt;br&gt;	I2C_read();&lt;br&gt;	I2C_stop();&lt;br&gt;	PORTB=SSPBUF; //display the result&lt;br&gt;	while(1);&lt;br&gt;&lt;br&gt;}&lt;br&gt;&lt;br&gt;with this code the only thing displayed is the value inside write</description><pubDate>Fri, 11 Jun 2010 04:43:01 GMT</pubDate><dc:creator>johnb</dc:creator></item></channel></rss>
