Добрый день. Конечно тема избитая, но все-же помогите разобраться.
Иметься некое мастер –устройство I2C (а именно LEGO MINDSTORMS NXT)
Подключаю Мегу8 (аппаратный TWI Slave) в итоге получаю что-то не очень понятное.
Может я что-то напутал в коде.
Код меги.
######################################
#include ‹mega8.h›
#include ‹lcd.h›
#include ‹delay.h›
unsigned char w,r;
interrupt [TWI] void twi_isr(void) // 2 Wire bus interrupt service routine
{
if (TWSR == 0xA
{TWDR=r;};
TWCR=0xC5;//в прерывании устанавливаются биты 7(TWINT),6(TWEA),2(TWEN) и 0(TWIE)-иначе не работает
w=TWDR;
//w=w/2;
}
#asm
.equ __lcd_port=0x12 ;PORTD // Alphanumeric LCD Module functions
#endasm
void main(void)
{
r=0;
w=0;
ACSR=0x80;//аналоговый компаратор ВЫКЛ
TWBR=0x0C;// Bit Rate: 100,000 kHz
TWAR=0x64;//любой адрес,который хочется,но нулевой бит отвечает за поведение при общем вызове(0-откл;1-вкл)
TWCR=0x45;//включаем для режима работы "ведомый приёмник" 0(TWIE), 2(TWEN) и 7(TWEA) биты
//lcd_init(16); // LCD module initialization
#asm("sei") // Global enable interrupts
while (1)
{
r=w+5;
};
}
################################################## ###
Данный код не совсем мой… Нашел где-то тут.
В итоге вот что получаю:
Отправляю с мастера ##адрес##дата1(число 20 )##дата2(число 33) ##
Полуаю на мастер ответ ##адрес##дата1(число 40 +5 )##
Вопрос почему я получил Удвоенную Дату1+5. почему именно Удвоенная?
Вопрос почему я НЕ получил в мегу Дату2 (число 33). почему?
Просьба помочь …