#define sda_on PORTA_DIRSET = PIN1_bm ; PORTA_OUTSET = PIN1_bm ;
#define sda_read PORTA_DIRCLR = PIN1_bm ;while(PORTA_IN & (PIN1_bm));PORTA_DIRSET = PIN1_bm ;
#define sda_off PORTA_DIRSET = PIN1_bm ;PORTA_OUTCLR = PIN1_bm ;
#define scl_on PORTA_DIRSET = PIN2_bm ;PORTA_OUTSET = PIN2_bm ;
#define scl_off PORTA_DIRSET = PIN2_bm ;PORTA_OUTCLR = PIN2_bm ;
#include <xc.h>
#include <util/delay.h>
void i2c_start(void)
{
sda_on;
scl_on;
_delay_ms(10);
sda_off;
_delay_ms(10);
scl_off;
}
void i2c_stop(void)
{
sda_off;
scl_off;
_delay_ms(10);
scl_on;
_delay_ms(10);
sda_on;
}
void i2c_data_write(unsigned char data)
{
for(int i=0;i<8;i++)
{
if(data & 0x80)
{
sda_on;
}
else sda_off;
_delay_ms(10);
scl_on;
_delay_ms(10);
scl_off;
data = data << 1;
}
scl_on;
sda_on;
_delay_ms(10);
sda_read;
_delay_ms(10);
scl_off;
_delay_ms(10);
}
Its a just write operation in 24c32a eeprom using by Attiny402..its not working ..im using simulating with debugging by proteus software....i2c debugger gives always question mark while im run the simulation help me..