Welcome & Happy Holidays!
Trang 6 của 6 Đầu tiênĐầu tiên ... 456
Kết quả 51 đến 56 của 56
  1. #51
    Ngày tham gia
    Apr 2016
    Bài viết
    0
    các bạn cho mình hỏi chút xíu.
    trong đoạn code của chủ thớt viết:
    int16 GetData(unsigned char address)
    {
    int16 H=0,L=0;
    //================================//
    i2c_start(); // start condition
    i2c_write(mpu6050); // Truyen/ghi dia chi den MPU6050
    i2c_write(address); // Chon dia chi thanh ghi address cua MPU6050
    i2C_start(); // Khoi dong lai I2C
    i2C_write(mpu6050|1); // Set MPU6050 truyen du lieu ve Master
    H=i2C_read(); // Doc du lieu tu MPU6050 ve Master (8 bit cao)
    L=i2C_read(0); // Doc du lieu tu MPU6050 ve Master (8 bit cao)
    i2c_stop(); // Ngung truyen nhan I2C
    //==================================================//
    //! H=Mpu6050_Read(address);
    //! L=Mpu6050_Read(address+1);
    return (H<<8)|L;
    }

    mình ko hiểu khúc này:
    H=i2C_read(); // Doc du lieu tu MPU6050 ve Master (8 bit cao)
    L=i2C_read(0); // Doc du lieu tu MPU6050 ve Master (8 bit cao)

    trong hàm main, bạn ấy chỉ gọi địa chỉ thanh ghi 8 bit cao để nạp vô hàm getdata:
    accY = GetData(ACCEL_YOUT_H);
    accZ = GetData(ACCEL_ZOUT_H);

    vậy làm sao lấy được 8 bit thấp????
    .
    .
    một điều hơi khó hiểu nữa là trong hàm main, chủ thớt viết chỉ lấy dữ liệu trục Y và Z để suy ra X. hack não như vậy liệu có đc ko?? chuẩn ko?? hay cứ lấy dữ liệu cả 3 trục luôn???

  2. #52
    Ngày tham gia
    Jun 2016
    Bài viết
    0
    coi lại I2C đi bạn.... trong trường hợp đó liên tục nhiều thanh ghi đó... Chủ thớt chỉ cần xác định thanh ghi cao là được rồi đọc liên tục 2 byte mà.... khi nào đọc xong mới Stop i2c đấy

  3. #53
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    ok, thank bạn tam762410
    mình còn câu hỏi này các bạn trả lời dùm với ^_^
    DOUBLE gyroXrate = (double) gyroX / 131.0;
    vì sao lại chia cho 131???

  4. #54
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi quanvanbinh
    ok, thank bạn tam762410
    mình còn câu hỏi này các bạn trả lời dùm với ^_^
    DOUBLE gyroXrate = (double) gyroX / 131.0;
    vì sao lại chia cho 131???
    Chủ thớt chia theo thang đo mà bạn ấy đã sử dụng... chủ thớt cấu hình mpu với thang đo 250 o /s nên chia 131., 500 chia 65.5 , 1000 thì chia 32.8 , 2000 thì chia 16.4........ bạn coi lại datasheet của nó để hiểu rỏ thêm....

  5. #55
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi tranthonghuy
    you có thể giải thích mình 2 câu lệnh:
    #use TIMER(TIMER=1, TICK=1ms, BITS=16, NOISR)
    timer = get_ticks();
    trong ccs c mình đâu thấy có câu lệnh này: #use TIMER(TIMER=1, TICK=1ms, BITS=16, NOISR)
    timer =getstick();
    là gì v bạn ơi
    mình là người mới
    help mình chút xíu với

  6. #56
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    cho mình xin hàm set_tick với get_tick với. mình mới học mong mọi người chỉ giúp, tks!

 

 
Trang 6 của 6 Đầu tiênĐầu tiên ... 456

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 11:27 AM. Diễn đàn sử dụng vBulletin® Phiên bản 4.2.5.
Bản quyền của 2025 vBulletin Solutions, Inc. Tất cả quyền được bảo lưu.
Ban quản trị không chịu trách nhiệm về nội dung do thành viên đăng.