Gast
#107018
Hallo, ich versuche ohne Erfolg mehrere Bytes zwischen zwei Atmega8 zu übertragen. Bei nur einem Byte hingegen klappt es hervorragend. Ich benutze den (leicht modifizierten) Software Master Lib von Peter Fleury (http://homepage.sunrise.ch/mysunrise/pfleury/group__pfleury__ic2master.html) , und einen Hardware Slave (ebenfalls Atmega8). Nach meinem Verständniss müsste der Master nach dem Senden des ersten Byte darauf warten, bis der Slave die Interrupt-Routine beendet hat und die SCL wieder freigegeben hat. Danach würde er den zweiten Byte senden usw.. Aber so wie ich mir das denke funktioniert das ganze leider nicht, und ich komme einfach nicht darauf, woran das liegen könnte. Ich habe schon allerhand ausprobiert, aber ohne Erfolg. Vielleicht fällt jemanden was auf? ////Auszug aus MASTER: i2c_start_wait((SLAVE1<<1)+I2C_WRITE); i2c_write(temp); i2c_write(temp+1); // 2x byte ohne Slave neu adressieren zu müssen ??? i2c_stop(); ////Auszug aus SLAVE: SIGNAL(SIG_2WIRE_SERIAL) { switch (TWSR) { //**************************************** // Slave status (receiver mode) case(0x60):{ TWCR=(1<<TWEN)|(1<<TWINT)|(1<<TWEA)|(1<<TWIE); break; } case(0x80):{ soll_position=TWDR; if(k==0){ temp1=soll_position;} if(k==1){ temp2=soll_position; k=-1; } k++; TWCR=(1<<TWEN)|(1<<TWINT)|(1<<TWEA)|(1<<TWIE); break; } case(0xA0):{ //i2c_val2=TWDR; // nicht zweimal lesen!! TWCR=(1<<TWEN)|(1<<TWINT)|(1<<TWEA)|(1<<TWIE); break; } } } Danke und Gruß Zoltan