помогите разобраться с кодом .(послать значение по шине TWI на ЦАП PCF8591) не работает в протеусе ...
#define F_CPU 8000000UL
#include <stdlib.h>
#include <avr/io.h>
#include <util/delay.h>
//*** ИНИЦИАЛИЗАЦИЯ ШИНЫ TWI ***/
void TWI_Init(void)
{
// Установка тактовой частоты F_scl = 100 кГц
TWBR =32;
TWSR &= (~((1<<TWPS1)|(1<<TWPS0)));
TWCR |= (1 << TWEN); // Разрешение работы TWI-модуля
}
/*** ЗАПУСК TWI ***/
void TWI_Start(void)
{
TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
while(!(TWCR & (1<<TWINT)));
TWDR = 1001000; // передача адреса модуля PCF8591 в шину TWI
TWCR=(1<<TWINT)|(1<<TWEN);
while(!(TWCR & (1<<TWINT)));
}
/*** ОСТАНОВКА TWI ***/
void TWI_Stop(void)
{
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
while(TWCR & (1<<TWSTO)); // Ожидание завершения передачи условия СТОП
}
/***ПЕРЕДАЧА ДАННЫХ В TWI***/
void TWI_WriteByte(uint8_t data)
{
TWDR = data; // Загрузка данных в TWDR
TWCR=(1<<TWINT)|(1<<TWEN);
while(!(TWCR & (1 << TWINT))); // Ожидание завершения передачи данных
}
/*** ПЕРЕДАТЬ ЗНАЧЕНИЕ В PCF8591 ***/
void PCF8591_get(void)
{
TWI_Start(); // Запуск TWI
TWI_WriteByte(0x40); //включаем цап
TWI_WriteByte(100); // запись в ЦАП значения 100
TWI_Stop(); // Остановить TWI
}
int main(void)
{
TWI_Init();
while (1)
{
PCF8591_get;
_delay_ms(50);
}
}