ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 марта
742597 Топик полностью
Ксения (15.03.2017 19:11, просмотров: 360) ответил Adept на зачем-то у меня именно так и сделано :)) (процедуры работы с I2C перетащены из другого проекта (с XMEGA A4) там, кстати,
Давайте тогда сверим часы - мне тоже интересен ваш код обмена, хотя вы его откуда-то позаимствовали, а я писала сама. :) Это обмен с капаситометром AD7745, но совершенно такого же вида код работал с магнитометром MAG3110 и генератором CDCE913. bool AD7745_writeReg( unsigned char reg, unsigned char data) { TWIF.MASTER.STATUS = TWI_MASTER_BUSSTATE_IDLE_gc; TWIF.MASTER.ADDR = AD7745_ADDR << 1; // write while( !(TWIF.MASTER.STATUS & TWI_MASTER_WIF_bm)); // wait if( TWIF.MASTER.STATUS & TWI_MASTER_RXACK_bm) goto fail; // NACK? TWIF.MASTER.CTRLC = TWI_MASTER_CMD_RECVTRANS_gc; TWIF.MASTER.DATA = reg; while( !(TWIF.MASTER.STATUS & TWI_MASTER_WIF_bm)); // wait TWIF.MASTER.CTRLC = TWI_MASTER_CMD_RECVTRANS_gc; TWIF.MASTER.DATA = data; while( !(TWIF.MASTER.STATUS & TWI_MASTER_WIF_bm)); // wait TWIF.MASTER.CTRLC = TWI_MASTER_CMD_RECVTRANS_gc; TWIF.MASTER.CTRLC = TWI_MASTER_CMD_STOP_gc; return true; fail: TWIF.MASTER.CTRLC = TWI_MASTER_CMD_STOP_gc; return false; } bool AD7745_readReg( unsigned char reg, unsigned char *pdata) { TWIF.MASTER.STATUS = TWI_MASTER_BUSSTATE_IDLE_gc; TWIF.MASTER.ADDR = AD7745_ADDR << 1; // write while( !(TWIF.MASTER.STATUS & TWI_MASTER_WIF_bm)); // wait if( TWIF.MASTER.STATUS & TWI_MASTER_RXACK_bm) goto fail; // NACK? TWIF.MASTER.CTRLC = TWI_MASTER_CMD_RECVTRANS_gc; TWIF.MASTER.DATA = reg; while( !(TWIF.MASTER.STATUS & TWI_MASTER_WIF_bm)); // wait TWIF.MASTER.ADDR = (AD7745_ADDR << 1) | 1; // read while( !(TWIF.MASTER.STATUS & TWI_MASTER_RIF_bm)); // wait read *pdata = TWIF.MASTER.DATA; TWIF.MASTER.CTRLC = TWI_MASTER_ACKACT_bm | TWI_MASTER_CMD_STOP_gc; return true; fail: TWIF.MASTER.CTRLC = TWI_MASTER_CMD_STOP_gc; return false; }