VOC, Programmer with 4MHz (posible)
[owSlave2.git] / common / I2C / MAX1164x.c
diff --git a/common/I2C/MAX1164x.c b/common/I2C/MAX1164x.c
new file mode 100644 (file)
index 0000000..8160ac2
--- /dev/null
@@ -0,0 +1,55 @@
+#define F_CPU 8000000UL
+#include <avr/io.h>
+#include <avr/interrupt.h>
+#include <util/delay.h>
+#include <avr/wdt.h>
+#include <avr/sleep.h>
+#include "USI_TWI_Master.h"
+#include "MAX1164x.h"
+
+void MAX1164x_init(){
+       
+       
+}
+void MAX1164x_config(uint8_t setup,uint8_t config){
+       I2c_StartCondition();
+       I2c_WriteByte (0b01101100);
+       I2c_WriteByte (setup|0x80);
+       I2c_WriteByte (config);
+       I2c_StopCondition();
+       
+}
+int16_t MAX1164x_read() {
+       uint16_t res;
+       I2c_StartCondition();
+       I2c_WriteByte (0b01101101);
+       //DDR_USI&=~(1<<PIN_USI_SCL);
+       //while ((PIN_USI&(1<<PIN_USI_SCL))==0);
+       //DDR_USI|=(1<<PIN_USI_SCL);
+       _delay_us(80);
+       res=((int16_t)(I2c_ReadByte(ACK)&0x0F))<<8;
+       res|=I2c_ReadByte(NO_ACK);
+       
+       
+       I2c_StopCondition();
+       return res;
+       
+}
+
+
+int16_t MAX1164x_read8() {
+       uint16_t res;
+       I2c_StartCondition();
+       I2c_WriteByte (0b01101101);
+       //DDR_USI&=~(1<<PIN_USI_SCL);
+       //while ((PIN_USI&(1<<PIN_USI_SCL))==0);
+       //DDR_USI|=(1<<PIN_USI_SCL);
+       _delay_us(80);
+       res=((int16_t)(I2c_ReadByte(ACK)&0x0F))<<8;
+       res|=I2c_ReadByte(NO_ACK);
+       
+       
+       I2c_StopCondition();
+       return res;
+       
+}