//*************************************************************************** // // Author(s)...: Павел Бобков http://ChipEnable.Ru // // Target(s)...: mega16 // // Compiler....: IAR // // Description.: Драйвер ведущего TWI устройства. // Код основан на Atmel`овских доках - AVR315. // // Data........: 13.11.13 // //*************************************************************************** #include "twim.h" #define TWSR_MASK 0xfc volatile static uint8_t twiBuf[TWI_BUFFER_SIZE]; volatile static uint8_t twiState = TWI_NO_STATE; volatile static uint8_t twiMsgSize; /*предделители для установки скорости обмена twi модуля*/ uint8_t pre[4] = {2, 8, 32, 128}; /**************************************************************************** Инициализация и установка частоты SCL сигнала ****************************************************************************/ uint8_t TWI_MasterInit(uint16_t fr) { uint8_t i; uint16_t twbrValue; for(i = 0; i<4; i++){ twbrValue = ((((F_CPU)/1000UL)/fr)-16)/pre[i]; if ((twbrValue > 0)&& (twbrValue < 256)){ TWBR = (uint8_t)twbrValue; TWSR = i; TWDR = 0xFF; TWCR = (1<