The unified diff between revisions [4f22e7ef..] and [056a532c..] is displayed below. It can also be downloaded as a raw diff.
This diff has been restricted to the following files: 'i2c.c'
# # old_revision [4f22e7ef7d3064e3b51a5b868a4722f3f13c747b] # new_revision [056a532c92301bcb224e1f786c5f6720e8acf3eb] # # patch "i2c.c" # from [7f5362fc29f8f8f81682424c73930b5e3044c994] # to [2dff1acf82a051d155952429555a65a193ba0fd5] # ============================================================ --- i2c.c 7f5362fc29f8f8f81682424c73930b5e3044c994 +++ i2c.c 2dff1acf82a051d155952429555a65a193ba0fd5 @@ -33,8 +33,12 @@ void init_i2c(void) IREG(I2CONSET) = 0x40; /* Enable I2C ready for Master Tx */ /* Set up for just under 400kHz */ #ifdef I2C_FAST +#if 0 IWREG(I2SCLL) = (25 * 100); IWREG(I2SCLH) = (12 * 100); +#endif + IWREG(I2SCLL) = 25 * 4; /* ~400kHz */ + IWREG(I2SCLH) = 12 * 4; #else IWREG(I2SCLL) = 73; /* ~100kHz */ IWREG(I2SCLH) = 73; @@ -106,10 +110,10 @@ void __attribute__((interrupt("IRQ"))) i IREG(I2CONSET) = STAFLAG; IREG(I2CONCLR) = STOFLAG | AAFLAG | SIFLAG; } else { + event_set(i2c_transaction->event); i2c_transaction = NULL; IREG(I2CONSET) = STOFLAG; IREG(I2CONCLR) = STAFLAG | AAFLAG | SIFLAG; - event_set(EVENT_I2C_COMPLETE); } } break; @@ -137,10 +141,10 @@ void __attribute__((interrupt("IRQ"))) i IREG(I2CONSET) = STAFLAG; IREG(I2CONCLR) = STOFLAG | AAFLAG | SIFLAG; } else { + event_set(i2c_transaction->event); i2c_transaction = NULL; IREG(I2CONSET) = STOFLAG; IREG(I2CONCLR) = STAFLAG | AAFLAG | SIFLAG; - event_set(EVENT_I2C_COMPLETE); } break; @@ -150,10 +154,10 @@ void __attribute__((interrupt("IRQ"))) i case 0x38: /* arbitration lost during SA+W or data */ case 0x00: /* bus error */ *(i2c_transaction->result) = I2C_FAIL; + event_set(i2c_transaction->event); i2c_transaction = NULL; IREG(I2CONSET) = STOFLAG; IREG(I2CONCLR) = STAFLAG | AAFLAG | SIFLAG; - event_set(EVENT_I2C_COMPLETE); break; /* We don't handle slave mode */