VOC Optimation
[owSlave2.git] / common / I2C / MAX1164x.c
1 #define F_CPU 8000000UL\r
2 #include <avr/io.h>\r
3 #include <avr/interrupt.h>\r
4 #include <util/delay.h>\r
5 #include <avr/wdt.h>\r
6 #include <avr/sleep.h>\r
7 #include "USI_TWI_Master.h"\r
8 #include "MAX1164x.h"\r
9 \r
10 void MAX1164x_init(){\r
11         \r
12         \r
13 }\r
14 void MAX1164x_config(uint8_t setup,uint8_t config){\r
15         I2c_StartCondition();\r
16         I2c_WriteByte (0b01101100);\r
17         I2c_WriteByte (setup|0x80);\r
18         I2c_WriteByte (config);\r
19         I2c_StopCondition();\r
20         \r
21 }\r
22 int16_t MAX1164x_read(void) {\r
23         uint16_t res;\r
24         I2c_StartCondition();\r
25         I2c_WriteByte (0b01101101);\r
26         //DDR_USI&=~(1<<PIN_USI_SCL);\r
27         //while ((PIN_USI&(1<<PIN_USI_SCL))==0);\r
28         //DDR_USI|=(1<<PIN_USI_SCL);\r
29         _delay_us(80);\r
30         res=((int16_t)(I2c_ReadByte(ACK)&0x0F))<<8;\r
31         res|=I2c_ReadByte(NO_ACK);\r
32         \r
33         \r
34         I2c_StopCondition();\r
35         return res;\r
36         \r
37 }\r
38 \r
39 \r
40 int16_t MAX1164x_read8(void) {\r
41         uint16_t res;\r
42         I2c_StartCondition();\r
43         I2c_WriteByte (0b01101101);\r
44         //DDR_USI&=~(1<<PIN_USI_SCL);\r
45         //while ((PIN_USI&(1<<PIN_USI_SCL))==0);\r
46         //DDR_USI|=(1<<PIN_USI_SCL);\r
47         _delay_us(80);\r
48         res=((int16_t)(I2c_ReadByte(ACK)&0x0F))<<8;\r
49         res|=I2c_ReadByte(NO_ACK);\r
50         \r
51         \r
52         I2c_StopCondition();\r
53         return res;\r
54         \r
55 }\r