]>
Commit | Line | Data |
---|---|---|
99e4226b MG |
1 | #include <util/twi.h> |
2 | #include <avr/interrupt.h> | |
3 | #include <stdio.h> | |
4 | #include "i2c.h" | |
5 | ||
6 | #define TWCR_ACK TWCR = (1<<TWEN)|(1<<TWIE)|(1<<TWINT)|(1<<TWEA)|(0<<TWSTA)|(0<<TWSTO)|(0<<TWWC); | |
7 | #define TWCR_NACK TWCR = (1<<TWEN)|(1<<TWIE)|(1<<TWINT)|(0<<TWEA)|(0<<TWSTA)|(0<<TWSTO)|(0<<TWWC); | |
8 | #define TWCR_RESET TWCR = (1<<TWEN)|(1<<TWIE)|(1<<TWINT)|(1<<TWEA)|(0<<TWSTA)|(1<<TWSTO)|(0<<TWWC); | |
9 | ||
10 | void i2c_init() | |
11 | { | |
12 | TWAR = BMC_ADDR; | |
13 | TWCR &= ~(1<<TWSTA)|(1<<TWSTO); | |
14 | TWCR|= (1<<TWEA) | (1<<TWEN)|(1<<TWIE); | |
15 | } | |
16 | ||
17 | ISR (TWI_vect) | |
18 | { | |
19 | printf("Interrupt, Status: %02x!\n", TW_STATUS); | |
20 | ||
21 | switch (TW_STATUS) { | |
22 | default: | |
23 | TWCR_RESET; | |
24 | break; | |
25 | } | |
26 | } |