게시판 > 자이로센서 이용 하이퍼터미널 출력

TODAY46 TOTAL237,740
사이트 이용안내
Login▼/회원가입
포럼 동영상강좌 회원가입


BASIC4MCU 후원업체 최신 정보

BASIC4MCU | 게시판 | 일반 | 자이로센서 이용 하이퍼터미널 출력

페이지 정보

작성자 빠박이빠박 작성일2018-03-16 17:28 조회345회 댓글0건

본문

	

ATMEGA128 로 자이로센서를 이용해서 값을 I2C 통신으로 받은 후 하이퍼 터미널로 출력하려고 합니다.

 

 

#include <mega128.h>

#include <stdio.h>

#include <delay.h>

#include <stdio.h>

 

typedef unsigned char byte;

 

 

void MPU6050_write(byte addr, byte dat)

{

        

    TWCR = 0xa4; //Start

    while(((TWCR & 0x80) == 0x00 || ((TWSR & 0xf8)!=0x08))); 

    TWDR=0xd0;  //AD+W

    TWCR=0x84;  

                                                                                                                      

    while(((TWCR & 0x80) == 0x00 || ((TWSR & 0xf8)!=0x18)));

    TWDR=addr;  //  RA

    TWCR=0x84;   

 

    while(((TWCR & 0x80) == 0x00 || ((TWSR & 0xf8)!=0x28)));

    TWDR=dat; 

    TWCR=0x84;      

   

    while(((TWCR & 0x80) == 0x00 || ((TWSR & 0xf8)!=0x28)));

    TWCR = 0x94;

    delay_us(50);

}

 

 

byte MPU6050_read(byte addr)

{

    byte dat;

    

    TWCR = 0xa4; //Start

    while(((TWCR & 0x80) == 0x00 || ((TWSR & 0xf8)!=0x08))); 

    TWDR=0xd0;  //AD+W

    TWCR=0x84;  

                                                                                                                      

    while(((TWCR & 0x80) == 0x00 || ((TWSR & 0xf8)!=0x18)));

    TWDR=addr;  //  RA

    TWCR=0x84;   

                                                   

    while(((TWCR & 0x80) == 0x00 || ((TWSR & 0xf8)!=0x28)));

    

    TWCR=0xa4;   // restart (S)       

    

    while(((TWCR & 0x80) == 0x00 || ((TWSR & 0xf8)!=0x10))); 

    TWDR=0xd1;   // AD+R

    TWCR=0x84;           

        

    while(((TWCR & 0x80) == 0x00 || ((TWSR & 0xf8)!=0x40)));

            

    TWCR=0x84;         

    

    while(((TWCR & 0x80) == 0x00 || ((TWSR & 0xf8)!=0x58))); //NO ACK 

    dat = TWDR;

    TWCR = 0x94;        

    

    return dat;                      

}

 

void uart_ini()

{UCSR0A=0x00; UCSR0B=0x98; UCSR0C=0x86; UBRR0H=0; UBRR0L=0x67; SREG=0X08;} //115200bps     UBRR0L=0x67;

 

void main(void)

{   

    

    byte dat0, dat1,dat2, dat3,dat4, dat5,dat6, dat7,dat8, dat9,dat10, dat11;

    

 

    TWSR=0x00;

    TWBR=0x12;

     

    uart_ini();

    MPU6050_write(0x6b,0x00);  

    MPU6050_write(0x6c,0x00);

    MPU6050_write(0x1b,0x10);  // gyroscope 설정, 최대 1000도/s로 설정함

    MPU6050_write(0x1c,0x10);  // accelerometer 설정, 최대 4g로 설정함

    

while (1)

      {                 

 

        dat0=MPU6050_read(0x43);

        dat1=MPU6050_read(0x44);

        dat2=MPU6050_read(0x45);

        dat3=MPU6050_read(0x46);

        dat4=MPU6050_read(0x47);

        dat5=MPU6050_read(0x48);

        

        

        dat6=MPU6050_read(0x3b);

        dat7=MPU6050_read(0x3c);

        dat8=MPU6050_read(0x3d);

        dat9=MPU6050_read(0x3e);

        dat10=MPU6050_read(0x3f);        

        dat11=MPU6050_read(0x40);

 

   printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",0xff,0xff,dat0,dat1,dat2,dat3,dat4,dat5,dat6,dat7,dat8,dat9,dat10,dat11,0);

      

        delay_ms(100);   

      };         

      

      

 

             

   

}

 

 

이렇게 작성을 했는데 출력이 안됩니다 ㅜㅜ 어떻게 해야  할까요?

댓글 0

조회수 345

등록된 댓글이 없습니다.

게시판HOME > 게시판 > 전체 목록

게시물 검색

Privacy Policy
MCU BASIC ⓒ 2017