Mikroelektronika MIKROE-350 データシート

ページ / 526
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 I2C 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.