gehe zum Quellcode dieser Datei
Makrodefinitionen | |
#define | READ 1 |
#define | WRITE 0 |
#define | ACK 1 |
#define | NAK 0 |
#define | SDA PC3 |
#define | SCL PC2 |
#define | SDA_DDR DDRC |
#define | SCL_DDR DDRC |
#define | SDA_PIN PINC |
#define | SCL_PIN PINC |
#define | SDA_PORT PORTC |
#define | SCL_PORT PORTC |
#define | NOP asm volatile("nop") |
#define | QDEL NOP; NOP; NOP; NOP; NOP |
#define | HDEL QDEL; QDEL |
#define | SDA_HI SDA_PORT |= (1 << SDA) |
#define | SDA_LO SDA_PORT &= ~(1 << SDA) |
#define | SCL_HI SCL_PORT |= (1 << SCL) |
#define | SCL_LO SCL_PORT &= ~(1 << SCL) |
#define | SCL_TOGGLE HDEL; SCL_HI; HDEL; SCL_LO |
#define | I2C_START SDA_LO; QDEL; SCL_LO |
#define | I2C_STOP HDEL; SCL_HI; QDEL; SDA_HI; HDEL |
Funktionen | |
void | InitI2C (void) |
I2C Bus Initialisieren. | |
unsigned char | WriteI2C (unsigned char byte) |
Daten ueber I2C schreiben. | |
unsigned char | ReadI2C (unsigned char nak) |
Daten aus I2C Bus lesen. | |
unsigned char | StartI2C (unsigned char device) |
Datenaustausch starten. | |
void | StopI2C (void) |
Datenaustausch Stoppen. |
V002 - 10.02.2007 - m.a.r.v.i.n
Absplittung von asuro.h in eigene Header-Datei,
Doxygen Kommentare (KEINE Funktionsänderung)
Definiert in Datei i2c.h.
void InitI2C | ( | void | ) |
unsigned char ReadI2C | ( | unsigned char | ack | ) |
Daten aus I2C Bus lesen.
ack | NAK oder ACK |
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 | ) |
void StopI2C | ( | void | ) |
unsigned char WriteI2C | ( | unsigned char | byte | ) |
Daten ueber I2C schreiben.
byte | daten |
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 }