oled 1.0
OLED Graphics Control Library
Loading...
Searching...
No Matches
twi_soft.h
Go to the documentation of this file.
1
19
20#ifndef TWI_SOFT_H_
21#define TWI_SOFT_H_
22
23 #ifndef F_CPU
31 #define F_CPU 12000000UL
32 #endif
33
34 #ifndef F_SOFT_TWI
42 #define F_SOFT_TWI 100000UL
43 #endif
44
45 #ifndef TWI_SOFT_CLOCK_PULSE_US
53 #define TWI_SOFT_CLOCK_PULSE_US (float)(1000000.0/(F_SOFT_TWI<<1))
54 #endif
55
56 #ifndef TWI_SOFT_PULLUP_ENABLE
64 // #define TWI_SOFT_PULLUP_ENABLE
65
66 #ifdef _DOXYGEN_ // Used for documentation, can be ignored
67 #define TWI_SOFT_PULLUP_ENABLE
68 #endif
69 #endif
70
71 #ifndef TWI_SOFT_DDR
79 #define TWI_SOFT_DDR DDRB
80 #endif
81
82 #ifndef TWI_SOFT_PORT
90 #define TWI_SOFT_PORT PORTB
91 #endif
92
93 #ifndef TWI_SOFT_PIN
101 #define TWI_SOFT_PIN PINB
102 #endif
103
104 #ifndef TWI_SOFT_SCL
112 #define TWI_SOFT_SCL PINB0
113 #endif
114
115 #ifndef TWI_SOFT_SDA
123 #define TWI_SOFT_SDA PINB1
124 #endif
125
139 #ifndef TWI_SOFT_STATUS
140 #define TWI_SOFT_STATUS_BUS_INIT_COMPLETE 0x00
141 #define TWI_SOFT_STATUS_TRANSMIT 0x01
142 #define TWI_SOFT_STATUS_RECEIVE 0x02
143 #define TWI_SOFT_STATUS_BUS_ERROR 0xFF
144 #endif
146
147 #ifndef TWI_SOFT_BLOCK_IE
158 // #define TWI_SOFT_BLOCK_IE
159
160 #ifdef _DOXYGEN_ // Used for documentation, can be ignored
161 #define TWI_SOFT_BLOCK_IE
162 #endif
163 #endif
164
165 #include <limits.h>
166 #include <avr/io.h>
167 #include <util/delay.h>
168
169 #ifdef TWI_SOFT_BLOCK_IE
170 #include <avr/interrupt.h>
171 #endif
172
175
187 #ifdef TWI_SOFT_PULLUP_ENABLE
188 #define SCL_LOW() { TWI_SOFT_PORT &= ~(1<<TWI_SOFT_SCL); TWI_SOFT_DDR |= (1<<TWI_SOFT_SCL); }
189 #define SDA_LOW() { TWI_SOFT_PORT &= ~(1<<TWI_SOFT_SDA); TWI_SOFT_DDR |= (1<<TWI_SOFT_SDA); }
190 #define SCL_HIGH() { TWI_SOFT_DDR &= ~(1<<TWI_SOFT_SCL); TWI_SOFT_PORT |= (1<<TWI_SOFT_SCL); }
191 #define SDA_HIGH() { TWI_SOFT_DDR &= ~(1<<TWI_SOFT_SDA); TWI_SOFT_PORT |= (1<<TWI_SOFT_SDA); }
192 #else
193 #define SCL_LOW() { TWI_SOFT_PORT &= ~(1<<TWI_SOFT_SCL); TWI_SOFT_DDR |= (1<<TWI_SOFT_SCL); }
194 #define SDA_LOW() { TWI_SOFT_PORT &= ~(1<<TWI_SOFT_SCL); TWI_SOFT_DDR |= (1<<TWI_SOFT_SDA); }
195 #define SDA_HIGH() { TWI_SOFT_DDR &= ~(1<<TWI_SOFT_SDA); TWI_SOFT_PORT &= ~(1<<TWI_SOFT_SCL); }
196 #define SCL_HIGH() { TWI_SOFT_DDR &= ~(1<<TWI_SOFT_SCL); TWI_SOFT_PORT &= ~(1<<TWI_SOFT_SCL); }
197 #endif
199
200 unsigned char twi_soft_init(void);
201 void twi_soft_disable(void);
202 unsigned char twi_soft_status(void);
203
205 void twi_soft_stop(void);
206 TWI_Error twi_soft_address(unsigned char address, TWI_Operation operation);
207 TWI_Error twi_soft_set(unsigned char data);
208 TWI_Error twi_soft_get(unsigned char *data, TWI_Acknowledge acknowledge);
209
210#endif /* TWI_SOFT_H_ */
Macro definitions for TWI/I2C communication flags and operations.
Enumerations for TWI/I2C interface modes, operations, acknowledgment, and error codes.
enum TWI_Acknowledge_t TWI_Acknowledge
Alias for enum TWI_Acknowledge_t representing TWI acknowledge mode.
Definition TWI_enums.h:66
enum TWI_Operation_t TWI_Operation
Alias for enum TWI_Operation_t representing TWI operation modes.
Definition TWI_enums.h:48
enum TWI_Error_t TWI_Error
Alias for enum TWI_Error_t representing TWI error status.
Definition TWI_enums.h:89
void twi_soft_stop(void)
Stop the TWI (I2C) transmission.
Definition twi_soft.c:116
TWI_Error twi_soft_address(unsigned char address, TWI_Operation operation)
Sends the slave address with the read/write operation on the TWI bus.
Definition twi_soft.c:140
TWI_Error twi_soft_get(unsigned char *data, TWI_Acknowledge acknowledge)
Reads a byte of data from the TWI bus and sends an ACK or NACK.
Definition twi_soft.c:216
TWI_Error twi_soft_set(unsigned char data)
Transmit a byte of data on the TWI bus.
Definition twi_soft.c:156
void twi_soft_disable(void)
Disable the software TWI (I2C) interface.
Definition twi_soft.c:56
unsigned char twi_soft_status(void)
Get the current status of the software TWI bus.
Definition twi_soft.c:70
unsigned char twi_soft_init(void)
Initialize the software TWI (I2C) bus.
Definition twi_soft.c:32
TWI_Error twi_soft_start(void)
Generate a TWI start or repeated start condition.
Definition twi_soft.c:87