회원가입 ID/PW 찾기
AA

avr studio 4 에서 빌드를 하는데 자꾸 에러하나가 뜹니다 ㅜ;

 

오류내용은

../uuju87.c:2:20: fatal error: my_def.h: No such file or directory
compilation terminated.
make: *** [uuju87.o] 오류 1
Build failed with 1 errors and 0 warnings...

 

이런식인데요 .. 툴체인을 사용안하고 avr+winavr 조합으로 빌드를 돌려봐도 안되네요 ..

가스센서를 이용해서 반응을 lcd,led,부저로 출력하는 프로그램인데

소스좀 봐주시면 감사하겠습니다 ;;

 

소스내용

 

------------------------------------------------------------------------------------

 

#include<avr/io.h>
#include "my_def.h"


void busy_check(void);
void LCD_init(void);
void msec_delay(u16);
void cmd_write(u08);
void data_write(u08);
void string_out(u08, u08, u08 []);
void LCD_2d1(float number);
//void LCD_4hex(unsigned int number);


u16 i;
u08 temp;


/*void msec_delay(u16 msec)
{
 while(msec--)
 {
  for(u16 i=0;i<4000;i++);     
 };
}*/


void busy_check(void)
{
 
 PORTC &= 0xfe;                //rs = 0
 
 PORTC |= 0x02;                //r/w = 1
 
 PORTC |= 0x04;                //e = 1
 DDRD &=0x7f;                  //input
 do{
  temp = PIND;
  }while(temp & 0x80);
 PORTC &= 0xf8;                //rs,r/w,e = 0
 DDRD |=0x80;                  //output
}

 

void cmd_write(u08 cmd)
{
  busy_check();
  PORTC &= 0xfb;               // rs 0
  PORTC &= 0xfd;               //r/w = 0
  PORTC |= 0x04;               // e = 1
 
  PORTD = cmd&0xf0;            //상위4비트 출력
  PORTC &= 0xfb;
  PORTC |= 0x04;
 
  PORTD = (cmd<<4)&0xf0;      //하위4비트 출력
  PORTC &= 0xfb;              // e = 0
  PORTC |= 0x04;              // e = 1
 
  PORTC |= 0x02;              // r/w = 1
  msec_delay(50);
}

 

void data_write(u08 dat)
{
  busy_check();
  PORTC |= 0x01;
  PORTC &= 0xfd;
  PORTC |= 0x04;
 
  PORTD = dat&0xf0;
  PORTC &= 0xfb;
  PORTC |= 0x04;
 
  PORTD = (dat<<4)&0xf0;
 
  PORTC &= 0xfb;
  PORTC |= 0x02;
  msec_delay(50);
}


void string_out(u08 i, u08 j, u08 str[16])   //문자열 출력 함수
{
 if(i == 0)
  cmd_write(0x80+j);         //address 설정  
 else if(i == 1)
  cmd_write(0xc0+j);         //address 설정
 while(*str != '\0'){
  data_write(*str);
  str++;
  }

 

void LCD_2d1(float number)
{
 unsigned int i, j;
 j=(int)(number*100.+0.5);
 i=j/1000;
 data_write(i+'0');
 data_write('.');
 j=j%1000;
 i=j/100;
 data_write(i+'0');
 j=j%100;
 i=j/10;
 data_write(i+'0');

}

 

void LCD_init(void)
{
  DDRD = 0xf0;                  
  DDRC = 0x0f;        
 
  cmd_write(0x28);     // interface set : 4bit
  msec_delay(50);
  cmd_write(0x28);     // interface set : 4bit
  msec_delay(50);
 
  cmd_write(0x08);     // display on/off control
  msec_delay(50);
 
  cmd_write(0x06);      //LCD ENTRY MODE SET  : shift off
  cmd_write(0x01);      //Entry display Clear, Cursor return to home
  msec_delay(100);
 }


#include <avr/io.h>
#include <avr/interrupt.h>
#include "my_def.h"
#define COUNT_SELECT (65535 - CPU_CLOCK/1000)  // for 1 msec

void init_system_clock(void);

//Atmega8 - one 16 bit timer/counter & two 8 bit timer/counter
u16 msec;
u08 mmsec, csec, dsec, sec, min, hour, day, month, year;
u08 msec_flag, csec_flag, dsec_flag, sec_flag, min_flag; //flag

void init_system_clock(void)
{
 TCCR1A = 0x00; // PWM Disable
 TCCR1B = 0x01; // no prescaling
// TCCR1B = 0x02; // 1/8 orescaling(14,745,600/8=1, 843, 200hz)
 TCNT1 = COUNT_SELECT;
 TIMSK = 0x04; // enable overflow interrupt
 
 msec = mmsec = csec = dsec = sec = min = 0;
 
 msec_flag = csec_flag = dsec_flag = sec_flag = min_flag = 0;

SIGNAL(SIG_OVERFLOW1) //OVERFLOW INTERRUPT SERVICE
{
 msec++;
 msec_flag = 1;
 if(msec == 1000) msec = 0;
 mmsec++;
 
 TCNT1 = COUNT_SELECT;
 
 if(mmsec == 10) {
  csec++;
  csec_flag = 1;
  mmsec = 0;
  
  if(csec == 10) {
   dsec++;
   dsec_flag = 1;
   csec = 0;
   
   if(dsec == 10) {
    sec++;
    sec_flag = 1;
    dsec = 0;
    msec = 0;
    
    if(sec == 60) {
     min++;
     min_flag = 1;
     sec = 0;
     
     if(min ==60) {
      hour++;
      min = 0;
      
     
     };
    };
   };
  };
 };
}

#include <avr/io.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
#include "my_def.h"

void init_adc(u08);

extern u08 dsec_flag;

u16 adc;

void init_adc(u08 adc_ch)
{
 ADMUX = adc_ch;          //기준전압, ADC선택
 ADCSRA = 0xef;          //A/D 컨버터 동작허용, 시작, 프리러닝모드,인터럽트 허용
}

SIGNAL(SIG_ADC)              //인터럽트 서비스 루틴(A/D컨버전 완료시 인터럽트 발생)
{
 adc = ADCW;              //변환값 ADC변수에 저장
}

#include <avr/io.h>
#include <avr/interrupt.h>
#include "my_def.h"

int main(void);
void init(void);
void msec_delay(u16);
void do_gas(void);


#define BUTTON1 0x01                      //버턴입력포트 설정
#define BUTTON1_READ PIND & BUTTON1

 


extern void init_adc(u08);
extern void init_system_clock(void);

//// LCD /////
extern void busy_check(void);
extern void LCD_init(void);
extern void cmd_write(u08);
extern void data_write(u08);
extern void string_out(u08, u08, u08 []);
extern void LCD_2d1(float);
//extern void LCD_4hex(u08);


//////Timer/////////////
extern u16 msec;
extern u08 mmsec, csec, dsec, sec, min, hour, day, month, year;
extern u08 msec_flag, csec_flag, dsec_flag, sec_flag, min_flag; // flag

 

u08 cpu_id;
u16 adc;
u16 i;
u08 temp;


int main(void)
{  
    init();
    string_out(0,1,"Alchol Test");
 string_out(1,1,"Alram OFF");
    msec_delay(1000);
 
 cmd_write(0x0c); //display on
 
   while(1)
 {
  do_gas();
 }
}

void do_gas(void)
{
 u16 alchol;
 
 float fadc=0;
 float d_alchol=0;
 float sum=0;
  
   if(!(BUTTON1_READ))
 {
 
 while(1)
  
  
  { 
  
  if(sec==3)
   
   {
    PORTB= 0x10;
    msec_delay(2000);
    PORTB = 0x00;
    msec_delay(2000);
    
    alchol = adc;
    fadc = alchol;
    d_alchol = (fadc);   
    
    cmd_write(0x8c);           //LCD Address 지정

    sum = (fadc/1000);   
    LCD_2d1(sum);             //ADC값 LCD 표시

    msec_delay(100);
    
    string_out(0,1,"ready to       ");
    string_out(1,1,"Testing....      ");
    msec_delay(50000);  
    //msec_delay(50000);
    //msec_delay(50000);
    
    
    //msec_delay(50000);
    
   
    if( alchol >= 200)
    {
      PORTB =0x04;        //RED LED ON
      //PORTC |= 0x08;      // BUZZ ON
        string_out(0,1,"Detecting:");
     string_out(1,1,"Non Passing!");
     msec_delay(1000) ;
     
     sec=0;
     
     PORTB= 0x14;
     msec_delay(2000);
     PORTB = 0x00;
     msec_delay(2000);
     PORTB= 0x14;
     msec_delay(2000);
     PORTB = 0x00;
     msec_delay(5000);
     
     
           
    }
    else if(alchol >= 150)
    {
     PORTB=0x02;   // YELLOW LED ON
     msec_delay(1000);
     string_out(0,1,"Detecting:");
     string_out(1,1,"Caution!!   ");
     
        sec_flag=0;
     
     PORTB= 0x12;
     msec_delay(2000);
     PORTB = 0x00;
     msec_delay(2000);
     PORTB = 0x12;
     msec_delay(2000);
     PORTB = 0x00;
     msec_delay(2000);
     
    
    }
    else
    {
           //Green LED ON
     string_out(0,1,"Detecting:");
     string_out(1,1,"you can go home");
     msec_delay(1000);  
     
     sec_flag=0;
     
PORTB =0x01;
     msec_delay(2000);
    }
   }
        }
   }
}

void msec_delay(u16 msec)
{
    while(msec--) {
  for(u16 i=0;i<10000;i++);
 };
}

void init(void)
{

 DDRC = 0x0f;                        // set Port_C to Output
 DDRD |= 0xf0;                        // set Port_D to Output
 PORTD &= 0x01;
 
 DDRF = 0x00;
 
 DDRB = 0x1f;                        // set Port_B to Output
 
 msec_delay(10);   // dummy delay for stable
 
 
 init_system_clock();
 LCD_init();
 
 init_adc(5);
 msec_delay(1000);
 
 sei();
}

댓글 1
  • No Profile

    my_def.h  를 못찾고 있네요

     

      AVRstudio 좌측에 보면 header file 부분 우 클릭후  add 후 my_def.h 파일을 찾아서 넣어주면 될듯하네요

하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
         PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.

search
번호 분류 제목 글쓴이 조회 수 날짜
2347 자유주제 HOT많이 배우고 십어요.4 kkwwoonn 17126 2012.02.05
2346 자유주제 HOTIEEE-SA 주관 화상회의 다녀왔습니다. (스마트그리드로 대중과 소통하다.) 일렉트로닉 7805 2012.02.03
2345 자유주제 HOT얼마전 군대를 제대하고 복학하려는데...1 소다수1 16834 2012.02.01
2344 자유주제 HOT전자과 학생인데 전기회사쪽에 인턴을 지원하게 되었습니다...3 조효 16988 2012.01.27
2343 자유주제 HOT눈이 펑펑오는 새해 첫 출근날~(구정기준입니다.)5 Interrupter 15714 2012.01.25
2342 자유주제 HOT설인사5 별헤는 밤 17019 2012.01.22
2341 자유주제 HOT새해 福 많이 받으세요 vovLee 16856 2012.01.20
2340 자유주제 HOT새 해1 견우7 17016 2012.01.19
2339 자유주제 HOT가입하게 되어 감사합니다2 어부와별님 21305 2012.01.04
2338 자유주제 HOT새해를 맞이하는 하루되세요.2 하루백만원 21250 2011.12.31
2337 자유주제 HOT페이지 가 예쁜데요.1 빛나는 영혼 24147 2011.12.29
2336 자유주제 HOT반갑습니다. 가입했어요. 녹슨 21289 2011.12.28
2335 자유주제 HOTUSB-ISP 실험이 올해의 현안...3 견우7 8544 2011.12.27
2334 자유주제 HOT맞춤법... 견우7 17021 2011.12.27
2333 자유주제 HOT마니 춥습니다. 주형수연 20360 2011.12.19
2332 자유주제 HOT미녀와 야수^^19 아무혼 3411 2011.12.16
2331 자유주제 HOT정회원이 않되면 ...자료를 볼수가 없는건가요?4 아무혼 22007 2011.12.16
2330 자유주제 HOT날씨가...쌀쌀합니다~ 아무혼 21097 2011.12.15
2329 자유주제 HOT눈 내리는 곳..1 견우7 20141 2011.12.09
2328 자유주제 HOT국내 MCU 디자인 하우스 문의 학스 18271 2011.12.06
Prev 1 ... 13 14 15 16 17 18 19 20 21 22 ... 135 Next
  • 사랑하고 사랑받는다는 것은 태양을 양쪽에서 쪼이는 것과 같다.
    - 비스코트
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.