Code:#include "asuro.h" #include "i2c.h" #include "myasuro.h" #define pcf8591_address 0x90 // I2C Adresse des PCF8574 //liest einen ADC Wert vom PCF8591 unsigned char read_pcf8591_adc(unsigned char adc) { unsigned char ret; unsigned char byte = 0; ret = StartI2C(pcf8591_address+WriteI2C); // Sende Start Condition if (ret == 0) ret = WriteI2C(adc); // Senden des Control Bytes startet die A/D Wandlung StopI2C(); // Sende Stop Condition, Bus freigeben Sleep(10); // Warten bis A/D Wandlung benedet (mind. 90µs) ret = StartI2C(pcf8591_address+ReadI2C); // Sende Start Condition if (ret == 0) { // Mehrmaliges Lesen um alte A/D Werte zu ignorieren byte = ReadI2C(1); // Lese Byte + acknowledge byte = ReadI2C(0); // Lese Byte + no acknowledge } else ret = 3; StopI2C(); // Sende Stop Condition, Bus freigeben return byte; } int main(void) { unsigned char rled; unsigned char lled; Init(); InitI2C(); FrontLED(ON); while(1) { rled = read_pcf8591_adc(0); lled = read_pcf8591_adc(1); SerPrint("\r\n Port 1: "); SerWrite(rled,3); SerPrint("\r\n Port 2: "); SerWrite(lled,3); Msleep(500); } return 0; }
Lesezeichen