Datasheet

Soft_I2C_Break
406
MIKROELEKTRONIKA - SOFTWARE AND HARDWARE SOLUTIONS FOR EMBEDDED WORLD
Libraries
mikroC PRO for AVR
CHAPTER 6
Prototype
void Soft_I2C_Break(void);
Returns Nothing.
Description
All Software I
2
C Library functions can block the program flow (see note at the
top of this page). Call this routine from interrupt to unblock the program execu-
tion. This mechanism is similar to WDT.
Note: Interrupts should be disabled before using Software I
2
C routins again
(see note at the top of this page).
Requires Nothing.
Example
// Software I2C connections
sbit Soft_I2C_Scl_Output at PORTC.B0;
sbit Soft_I2C_Sda_Output at PORTC.B1;
sbit Soft_I2C_Scl_Input at PINC.B0;
sbit Soft_I2C_Sda_Input at PINC.B1;
sbit Soft_I2C_Scl_Direction at DDRC.B0;
sbit Soft_I2C_Sda_Direction at DDRC.B1;
// End Software I2C connections
char counter = 0;
void Timer0Overflow_ISR() org 0x12 {
if (counter >= 20) {
Soft_I2C_Break();
counter = 0; // reset counter
}
else
counter++; // increment counter
}
void main() {
TOIE0_bit = 1; // Timer0 overflow interrupt
enable
TCCR0_bit = 5; // Start timer with 1024 prescaler
SREG_I_bt = 0; // Interrupt disable
...
// try Soft_I2C_Init with blocking prevention mechanism
SREG_I_bit = 1; // Interrupt enable
Soft_I2C_Init();
SREG_I_bit = 0; // Interrupt disable
...
}