hallo m.a.r.v.i.n,
danke für deinen tollen Beitrag, habe es mit dem I2C Programmbeispiel des Asuro hinbekommen. \/
Hier nochmal der Code um dem Thread einen schönen Abschluss zu geben (zwar kein Lauflicht aber eine einzelne Led des PCF1 blinkt und eine des PCF3 leuchtet).
Ebenfalls sind die Energiesparfunktionen des RNBFRA implementiert.
Code:#include <avr/io.h> #include <stdint.h> #include <avr/delay.h> #include "i2cmaster.h" #define PCF1 0x72 #define PCF2 0x7E #define PCF3 0x74 void warten(int t) //ermöglicht Pausen { //_delay_ms(200); int h; for (;t>0;t--) { for (h=1600;h>0;h--) {} } return; } int main(void) { unsigned char ret; uint8_t i2cdaten; //Datenbyte für I2C i2c_init(); // init I2C interface /****************************************************** Für Energiesparfunktionen des RNBFRA (ab Version 1.2)*/ ret = i2c_start(PCF3+I2C_WRITE); i2cdaten=0xC2; i2c_write(i2cdaten); i2c_stop(); _delay_ms(10); /*******************************************************/ while(1) { ret = i2c_start(PCF1+I2C_WRITE); // set device address and write mode if ( ret ) { /* failed to issue start condition, possibly no device found */ i2c_stop(); warten(10); } else { /* issuing start condition ok, device accessible */ i2cdaten=0x08; i2c_write(i2cdaten); // write data i2c_stop(); warten(2000); ret = i2c_start(PCF1+I2C_WRITE); // set device address and write mode i2cdaten=0x00; i2c_write(i2cdaten); // write data i2c_stop(); warten(2000); // set stop conditon = release bus } } return 0; }







Zitieren

Lesezeichen