So ich habe den Code geändert und die 2 offenen Eingänge auf Masse gezogen. Über das Terminal bekomme ich immer den Wert 255 gesendet, obwohl sich die Spannung an den Eingänger ändert.
Wer hat da ne Idee?
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;
    if(ret) byte = 0xEE;
    StopI2C();                           // Sende Stop Condition, Bus freigeben
    return byte;
}

int main(void)
{
    unsigned int 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: ");
    PrintInt(rled);
    SerPrint("\r\n Port 2: ");
    PrintInt(lled);
    Msleep(500);
   }
    return 0;
}