Все равно не работает
Код меги:
- Код: Выделить всё
/*****************************************************
This program was produced by the
CodeWizardAVR V2.04.6 Evaluation
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 04.04.2010
Author : Freeware, for evaluation and non-commercial use only
Company :
Comments:
Chip type : ATmega8L
Program type : Application
AVR Core Clock frequency: 1,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega8.h>
#include <delay.h>
// Two Wire bus interrupt service routine
interrupt [TWI] void twi_isr(void)
{
PORTC.0 = 1;
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x01;
PORTD=0x00;
DDRD=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// Two Wire Bus initialization
// Bit Rate: 9,615 kHz
TWBR=0x2C;
// Two Wire Bus Slave Address: 10h
// General Call Recognition: On
TWAR=0x05;
// Generate Acknowledge Pulse: Off
// TWI Interrupt: On
TWCR=0x05;
TWSR=0x00;
// Global enable interrupts
#asm("sei")
PORTC.0 = 1;
delay_ms(300);
PORTC.0 = 0;
while (1)
{
}
}
Код NXT:
- Код: Выделить всё
task main {
SetSensorType(S4, sensorLowSpeed);
sbyte I2Cmsg[4];
I2Cmsg[1]=0x02;
I2Cmsg[2]=0x42;
I2Cmsg[0]=2;
while (1) {
sendI2CMsg(S4, I2Cmsg[0], 1);
wait1Msec(100);
}
}
Похоже на решение уравнения с 3 неизвестными. NXT, Mega и соединение между ними.
В коде NXT я более-менее уверен - стандартная работа по I2C. Опыт работы с такими датчиками есть - Mindsensors'овский серво контроллер используется уже несколько месяцев. Но что-бы не рисковать, конкретно этот фрагмент скопировали из блога одного из разработчиков RobotC.
Соединение проверяли несколько раз - все подключено правильно. Подтягивающие резисторы 82К стоят.
Осцилографа нету, пытался проверить уровни напряжений тестером. До начала передачи на SCL - 2.35, на SDA - 3.26. После запуска проги на NXT на SCL стало 3.16, на SDA - 3.20.
Посмотрите пож. код Меги - должен он работать?