По мануалу написал код для проверки работоспособности 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 пожалуйста