Все равно не работает
 
 Код меги:
- Код: Выделить всё • Развернуть
- /*****************************************************
 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.
Посмотрите пож. код Меги - должен он работать?





 
  
   
 

