roboforum.ru

Технический форум по робототехнике.

HMC6352 и mega8

HMC6352 и mega8

Raskolin » 22 мар 2011, 01:16

По мануалу написал код для проверки работоспособности hmc6352. Вроде как если значения меняются, то норм. Собрал на макетке. Подключил. Вроде как пошли разные значения, но через несколько секунд все замерло. После сколько не включал выдает 00 00. Так вот я не пойму то ли я дурак, т.е. изначально все было плохо, ничего не изменялось и в коде ошибка, то ли с hmc6352 что то?

Код: Выделить всёРазвернуть
#include <mega8.h>

// I2C Bus functions
#asm
   .equ __i2c_port=0x18 ;PORTB
   .equ __sda_bit=2
   .equ __scl_bit=1
#endasm
#include <i2c.h>   


// Standard Input/Output functions
#include <stdio.h>
#include <delay.h>
#define adress_write 0x42
#define adress_read 0x43
// Declare your global variables here
usart_write(char byte)
{
while(!(UCSRA & (1<<5)))
{
}
UDR=byte;

}

i2c_re()
{
i2c_start();
i2c_write(adress_write);
i2c_write(0x41);
delay_ms(10);
i2c_start();
i2c_write(adress_read);
usart_write(i2c_read(1));
usart_write(i2c_read(0));
i2c_stop();
}


void main(void)
{
PORTB=0x00;
DDRB=0x00;
DDRB.0=1;
PORTB.0=1;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
TIMSK=0x00;
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// I2C Bus initialization
i2c_init();
usart_write('C');
usart_write('O');
usart_write('n');
usart_write('n');
usart_write('e');
usart_write('c');
usart_write('t');
usart_write(' ');
usart_write('O');
usart_write('k');

while (1)
      {
PORTB.0=~PORTB.0;
i2c_re();
delay_ms(1000);
      };
}


Модератор Setar:Используйте впредь тег CODE пожалуйста

Re: HMC6352 и mega8

Raskolin » 22 мар 2011, 11:12

хм. Переписал так, что бы на терминал выводились числа и поднял со стола. Значения начали меняться. Только это больше напоминает инклинометр, чем магнитометр. Если лежит на столе как не крути всегда 0. Если поднять со стола и наклонить вправо, то значения начинают меняться от 0 до 11, а если влево то от 3599 до 3588. :/ чет не понимать я

Re: HMC6352 и mega8

Radist » 22 мар 2011, 14:10

весь код не осилил, но проверьте инициализацию ног. Там вначале число 18, это биты 3 и 4, за ними написано что и2ц это биты 1 и 2. Но скорее всего я не прав, просто в коде не разобрался.

Re: HMC6352 и mega8

Raskolin » 22 мар 2011, 18:38

18 указывает на порт. И сейчас он значения то выдает, только эти значения указывает на положение крена относительно земли.

Re: HMC6352 и mega8

SkyStorm » 23 мар 2011, 00:50

Ты брал готовый модуль? или паял сам?
Фотки покажи?

Re: HMC6352 и mega8

Raskolin » 23 мар 2011, 03:04

Готовый модуль. И судя по Вашей подписи модуль брал у Вас.
http://test.roboforum.ru/product_11067.html

Re: HMC6352 и mega8

SkyStorm » 24 мар 2011, 02:10

Обычно с этим модулем проблем нет.
Но на текущий момент ничем не могу помочь, нахожусь в Вене.
30го вернусь в Москву и смогу посмотреть что там как с ним.

Re: HMC6352 и mega8

SkyStorm » 03 май 2011, 15:43

Как успехи с новым модулем?

Re: HMC6352 и mega8

Raskolin » 07 май 2011, 17:02

Норм. Новый модуль сразу же заработал.


Rambler\'s Top100 Mail.ru counter