i2c.c-Dateireferenz

Funktionen zum Emulieren der I2C Bus.
Dabei werden die Pins C2 und C3 genutzt als SCL und SDA. Sie sind aber in myasuro.h veraenderbar. Die Verwendung von I2C Bus benoetigt PullUps jeweils 4.7k Ohm. Mehr ...

#include "asuro.h"
#include "i2c.h"

gehe zum Quellcode dieser Datei

Funktionen

void InitI2C (void)
 I2C Bus Initialisieren.
unsigned char WriteI2C (unsigned char byte)
 Daten ueber I2C schreiben.
unsigned char ReadI2C (unsigned char ack)
 Daten aus I2C Bus lesen.
unsigned char StartI2C (unsigned char device)
 Datenaustausch starten.
void StopI2C (void)
 Datenaustausch Stoppen.


Ausführliche Beschreibung

Funktionen zum Emulieren der I2C Bus.
Dabei werden die Pins C2 und C3 genutzt als SCL und SDA. Sie sind aber in myasuro.h veraenderbar. Die Verwendung von I2C Bus benoetigt PullUps jeweils 4.7k Ohm.

Siehe auch:
Defines fuer die I2C in asuro.h
Version:
V001 - 17.02.2006 - Rizqi Ahmad (raid_ox)
Original Version

V002 - 18.02.2006 - Sternthaler
Keine Codeaenderung.
Austausch der TAB's gegen BLANK's.

Definiert in Datei i2c.c.


Dokumentation der Funktionen

void InitI2C ( void   ) 

I2C Bus Initialisieren.

Parameter:
keine 
Rückgabe:
nichts
Siehe auch:
SDA_HI, SCLHI
Funktionsweise:
Schaltet PC2 und PC3 als Ausgang. und Setze die Pins als High

Definiert in Zeile 48 der Datei i2c.c.

00049 {
00050   SDA_DDR |= (1 << SDA);        
00051   SCL_DDR |= (1 << SCL);        
00052   SDA_HI;             
00053   SCL_HI;             
00054 }

unsigned char ReadI2C ( unsigned char  ack  ) 

Daten aus I2C Bus lesen.

Parameter:
ack NAK oder ACK
Rückgabe:
erhaltene Daten
Siehe auch:
SDA_HI, SDA_LO, SCL_HI, SCL_TOGGLE, HDEL

Definiert in Zeile 115 der Datei i2c.c.

00116 {
00117   unsigned char i, byte = 0;
00118   
00119   SDA_HI;
00120   SDA_DDR &= ~(1 << SDA);
00121   
00122   for (i=0; i<8; i++)
00123   {
00124   HDEL;
00125     SCL_HI;
00126     byte <<= 1;
00127     byte |= (SDA_PIN & (1 << SDA)) >> SDA;
00128     HDEL;
00129     SCL_LO;
00130   }
00131 
00132   SDA_DDR |= (1 << SDA);
00133 
00134   if (ack)
00135     SDA_LO;                             // ack
00136   else
00137     SDA_HI;                             // nak
00138 
00139   SCL_TOGGLE;
00140   SDA_HI;
00141 
00142   return byte;
00143 }

unsigned char StartI2C ( unsigned char  device  ) 

Datenaustausch starten.

Parameter:
device Addresse der I2C Gerät
Rückgabe:
antwort

Definiert in Zeile 159 der Datei i2c.c.

00160 {
00161   I2C_START;
00162   return WriteI2C (device);
00163 }

void StopI2C ( void   ) 

Datenaustausch Stoppen.

Parameter:
nichts 
Rückgabe:
nichts

Definiert in Zeile 179 der Datei i2c.c.

00180 {
00181   SDA_LO;
00182   I2C_STOP;
00183 }

unsigned char WriteI2C ( unsigned char  byte  ) 

Daten ueber I2C schreiben.

Parameter:
byte daten
Rückgabe:
antwort
Siehe auch:
SDA_HI, SDA_LO, SCL_HI, SCL_TOGGLE, HDEL

Definiert in Zeile 72 der Datei i2c.c.

00073 {
00074   unsigned char i;
00075   
00076   for (i=8; i>0; i--)
00077   {
00078     if ( byte & (1<<(i-1)) )
00079       SDA_HI;
00080     else
00081       SDA_LO;         
00082     SCL_TOGGLE;         
00083   }
00084   SDA_HI;             
00085 
00086   SDA_DDR &= ~(1 << SDA);
00087   HDEL;
00088   SCL_HI;
00089   byte = SDA_PIN & (1 << SDA);
00090 
00091   HDEL;
00092   SCL_LO;
00093   SDA_DDR |= (1 << SDA);
00094   HDEL;
00095 
00096   return (byte == 0);
00097 }


Erzeugt am Sun Nov 18 18:24:53 2007 für ASURO Library von  doxygen 1.5.1-p1