Вот код:
#include <avr/io.h>
#define F_CPU 1000000UL
#include <util/delay.h>
#include <math.h>
#include "lcd_func.h"
unsigned char twi_start(void)
{
TWCR|=(1<<TWINT)|(1<<TWEN)|(1<<TWSTA);
while(!(TWCR & (1<<TWINT)));
return TWSR;
}
unsigned char twi_write(unsigned char data)
{
TWDR=data;
TWCR|=(1<<TWINT)|(1<<TWEN);
while(!(TWCR & (1<<TWINT)));
return TWSR;
}
void twi_stop(void)
{
TWCR|=(1<<TWINT)|(1<<TWEN)|(1<<TWSTO);
}
int main (void)
{
_delay_ms(1000);
lcd_init();
TWBR=2;
lcd_integer(twi_start()); // Выводит 0x08
lcd_integer(twi_write(0b01000000)); /*Это адрес с битом записи, выводит 0х20, то есть ведомый
ответил NACK */
lcd_integer(twi_write(0x01)); /*Это просто значение которое хочу записать в порт PCF8574T выводит 0х10 то есть поступил повторный старт.*/
while(1);
Мк настроен на тактовую частоту 1Мгц от внутреннего генератора. Запитал микроконтроллер с одной стороны, то есть подключил только к VCC и GND. На осциллографе линия SDA и SCL поднимается примерно на секунду и все дальше ничего нет. В протеусе все работает. На микросхеме написано PCF8574T, а не PCF8574 и не PCF8574А.