اطلاعیه

Collapse
No announcement yet.

مشکل با خروجی ثابت قطب نما

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل با خروجی ثابت قطب نما

    دوستان سلام ، من میخوام قطب نمای ماژول gy 87 را راه اندازی کنم ،(که قظب نماش HMC5883l هست) ولی خروجی ثابت به من میده

    تا حالا چندتا برنامه هم روش تست کردم ولی فرقی نکرد
    این کد برنامه :
    کد:
    #include <mega16a.h>
    #include <delay.h>
    #include <i2c.h>
    #include <math.h>
    #include <alcd.h>
    #include <stdlib.h>
    #include <stdio.h>
    
    // Declare your global variables here
    
    int xh; int xo; int xl;
    int yh; int yl; int yo;
    int zh; int zl; int zo;
    unsigned char buffer [60];
    
    
    void main(void)
    {
    
    i2c_init();
    
    lcd_init(20);
    
    while (1)
       {
       
        i2c_start();
        delay_ms(10);
        i2c_write(0x3C); //write to HMC
        delay_ms(10);
        i2c_write(0x02); //mode register
        delay_ms(10);
        i2c_write(0x00); //continuous measurement mode
        delay_ms(10);
        i2c_stop();
        //=================================================================================== 
        //must read all six registers plus one to move the pointer back to 0x03
        i2c_start();
        delay_ms(10);
        i2c_write(0x3D); //read from HMC
        delay_ms(10);
        xh = i2c_read(1); //x high byte
        delay_ms(10);
        xl = i2c_read(1); //x low byte
        delay_ms(10);
        xo = xl|(xh << 8);
         
        sprintf(buffer,"xo : %d ", xo);
        lcd_gotoxy(0,0);lcd_puts(buffer); 
        //================================
        yh = i2c_read(1); //y high byte
        delay_ms(10);
        yl = i2c_read(1); //y low byte
        delay_ms(10);
        yo = yl|(xh << 8);
        sprintf(buffer,"xo : %d ", xo);
        lcd_gotoxy(0,1);lcd_puts(buffer); 
        //==================================
        zh = i2c_read(1); //z high byte
        delay_ms(10);
        zl = i2c_read(1); //z low byte
        delay_ms(10);
        zo = zl|(zh << 8);
        sprintf(buffer,"zo : %d ", zo);
        lcd_gotoxy(0,2);lcd_puts(buffer); 
        
        
    
        i2c_write(0x3D); //must reach 0x09 to go back to 0x03
    
        i2c_stop(); 
        
        delay_ms(500);
    
       }
    }
    x , y , z را به من (1-) میده ، با جابجایی ماژول هم تغییر نمیکنه ، مشکل از کجاست؟؟؟
لطفا صبر کنید...
X