Bitte hier lesen, das ist die Basis.

Bitbanging ist keine Wissenschaft es ist eine Qual, besonders wenn man so ein Genie ist wie ich. Den folgenden Text schreibe ich für Leute wie mich, alle anderen langweilen sich. Einem 6 IOPin großen AT Tiny 13A i2c beizubringen ist das Thema. Bitbanging die Lösung. Man nehme 2 Pins eigener Wahl, und schalte sie ein und aus. Macht man das in der richtigen Art und Weise entsteht die Magie. In meinem Fall schaltet der PCF8574 einen seiner 8 Anschlüsse ein oder aus und eine LED Blinkt. Hat man 2 Tage lang auf den Bildschirm eines Osziloskop geguckt und einfach nicht verstanden was abgeht, dann ist eine blinkende LED das endgeilste auf der Welt. Eine enorme Last fällt ab und man kann endlich wieder in den Spiegel gucken.

int main(void){

    while(1){    
        i2c_start();
        i2c_send(0x4E);             //Adresse des Gerätes + Schreibbit also 0x27 + 1 Bit   0x01000001
        i2c_send(0x00);             //Databyte - hier 0x00 schaltet alle 8 Pins aus 0x00000000
        i2c_stop();
        _delay_ms(100);
        i2c_start();
        i2c_send(0x4E);
        i2c_send(0x80);             //Databyte Schaltet hier Pin 7 ein 0x10000000
        i2c_stop();
        _delay_ms(100);
    }
    return 0;
}

So die LED blinkt. Aber Warum? Und wie zur Hölle habe ich die Adresse des PCF8574 rausgekriegt, denn im Datenblatt steht die nicht? Was mir auch richtig Kopfzerbrechen bereitet hat, wie kann ein PIN gleichzeit in Ausgabe und Eingaberichtung geschalten sein, denn der IC gibt Antwort auf die man reagieren muss. Auch wenn die Reaktion nur aus warten besteht. Ist bei Frauen auch manchmal die beste und einzig sinnvolle Reaktion.