Datasheet

Soft_I2C_Break
342
MIKROELEKTRONIKA - SOFTWARE AND HARDWARE SOLUTIONS FOR EMBEDDED WORLD
Libraries
mikroBasic PRO for AVR
CHAPTER 6
Prototype
sub procedure Soft_I2C_Break()
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˛C routins again
(see note at the top of this page).
Requires Nothing.
Example
'Soft_I2C pinout definition
dim Soft_I2C_Scl_Output as sbit at PORTC.B0
dim Soft_I2C_Sda_Output as sbit at PORTC.B1
dim Soft_I2C_Scl_Input as sbit at PINC.B0
dim Soft_I2C_Sda_Input as sbit at PINC.B1
dim Soft_I2C_Scl_Pin_Direction as sbit at DDRC.B0
dim Soft_I2C_Sda_Pin_Direction as sbit at DDRC.B1
'End of Soft_I2C pinout definition
dim counter as byte
sub procedure Timer0Overflow_ISR() org 0x12
counter = 0
if (counter >= 20) then
Soft_I2C_Break()
counter = 0 'reset counter
else
Inc(counter) 'increment counter
end if
end sub
main:
TOIE0_bit = 1 'Timer0 overflow interrupt enable
TCCR0_bit = 5 'Start timer with 1024 prescaler
SREG_I_bit = 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
...
end.