ifconfig eth0 192.168.0.1 netmask 255.255.255.0


route add default gw 192.168.0.255 

'IT 공부 > linux' 카테고리의 다른 글

linux swap  (0) 2018.02.06
linux 파일시스템 mount 하기  (0) 2018.02.06
linux 시작 프로그램 등록하기  (0) 2018.02.06

grep -r [찾을 문자열] [찾을 경로]

linux swap 사용하기??


-dd 명령을 이용하여 swapfile 생성

#dd if=dev/sda1 of=/media/ubuntu/USB/swapfile bs=1024 count=524288


#mkswap /media/ubuntu/USB/swapfile

#swapon /media/ubuntu/USB/swapfile


스왑 메모리 확인

#free -m


부팅시 자동 인식 설정

#vi /etc/fstab


*************************************

/boot/swapfile swap swap defaults

*************************************


swap 제거


#swapoff /var/swap/swapfile


#rm -f var/swap/swapfile

'IT 공부 > linux' 카테고리의 다른 글

linux ip 설정  (0) 2018.02.06
linux 파일시스템 mount 하기  (0) 2018.02.06
linux 시작 프로그램 등록하기  (0) 2018.02.06

mount -t vfat /etc/ubuntu/어쩌고저꺼고 /media/ubuntu/폴더 


-> -t는 파일시스템 타입 vfat은 fat32 

-> 리눅스 파일 시스템의 경우에는 따로 -t을 적어줄 필요가 없음

'IT 공부 > linux' 카테고리의 다른 글

linux ip 설정  (0) 2018.02.06
linux swap  (0) 2018.02.06
linux 시작 프로그램 등록하기  (0) 2018.02.06

linux  상에서 시작 프로세스 등록하기


1. /etc/rc.local -> 파일내에 시작 프로세스 등록


2. /etc/profile.d/ -> 폴더내에 시작 쉘 스크립트 등록

 

'IT 공부 > linux' 카테고리의 다른 글

linux ip 설정  (0) 2018.02.06
linux swap  (0) 2018.02.06
linux 파일시스템 mount 하기  (0) 2018.02.06

clcd 시계

#include <mega128.h>      
#include <delay.h>
#define ENABLE  PORTA.2=1
#define DISABLE PORTA.2=0
#define LINE1   0x80
#define LINE2   0xc0
void rg_set(void)
{
        DDRC=0xff;
        DDRA=0xff;
}
void lcd_cmd(unsigned char cmd)
{       
        PORTA.0=0;
        PORTA.1=0;
        PORTC=cmd;
        ENABLE;
        DISABLE;
        delay_ms(2);
}
void lcd_clr(void)
{
        delay_ms(30);
        lcd_cmd(0x30);
        delay_ms(5);
        lcd_cmd(0x30);
        delay_us(100);
        lcd_cmd(0x30);
        
        lcd_cmd(0x38);
      //  lcd_cmd(0x01);
        lcd_cmd(0x0c);
        lcd_cmd(0x06);
}
void lcd_write(unsigned char data)
{       
        PORTC=data;
        PORTA.0=1;
        ENABLE;
        DISABLE;
        delay_us(40);
}
void lcd_str(unsigned char flash *str)
{       
        int i=0;
        
        while(str[i])
        {
                lcd_write(str[i]);
                i++;
        }
}
////////////////////////////////////////////////
/*                RTC                         */
///////////////////////////////////////////////
typedef unsigned char  u08; // 0 ~ 255     1바이트
typedef unsigned short u16; // 0 ~ 65535   2바이트
void RTC_Write (u08 addr, u08 data);
u08 RTC_Read (u08 addr);
void RTC_Set_Time (void);
void RTC_Get_Time (void);
u08 hour, hour2;   // 몇 시인지 저장할 변수
u08 min, min2;     // 몇 분인지 저장할 변수
u08 sec, sec2;     // 몇 초인지 저장할 변수     
u08 RTC_Get_Hour (void)
{
 return hour;
}
u08 RTC_Get_Hour2 (void)
{
 return hour2;
}
u08 RTC_Get_Min (void)
{
 return min;
}
u08 RTC_Get_Min2 (void)
{
 return min2;
}
u08 RTC_Get_Sec (void)
{
 return sec;
}
u08 RTC_Get_Sec2 (void)
{
 return sec2;
}                            
                
///////////////////////////////////////////////////////////////////////////
/////////                         RTC시작                        //////////
///////////////////////////////////////////////////////////////////////////    
void RTC_Write (u08 addr, u08 data)
{
        DDRB = 0xff;    // 포트B를 출력으로 설정
       
 PORTA.3=1;  // RD = high
 PORTA.4=1;  // WR = high
 PORTA.6=0; // CS = low
 
 PORTA.5=1; // ALE = high
 
 PORTB = addr;    // RTC에 Address 전송
 delay_us(2);    
 
 PORTA.5=0; // ALE = low   
 PORTA.4=0;  // WR = low
 PORTB = data;    // RTC에 데이터 전송  
 delay_us(2);   
 
 PORTA.4=1;  // WR = high 
 PORTA.5=1; // ALE = high
  
 PORTA.6=1;  // CS = high
}
u08 RTC_Read (u08 addr)
{
 u08 data;
 DDRB = 0xff;     // 포트B를 출력으로 설정
 
 PORTA.3=1;  // RD = high 
 PORTA.4=1;  // WR = high
 PORTA.6=0; // CS = low  
 delay_us(2); 
                                                                
 
 PORTB = addr;    // RTC에 Address 전송
 PORTA.5=1; // ALE = high
 delay_us(2); 
 PORTA.5=0; // ALE = low 
 
 DDRB = 0x00;     // 포트B를 입력으로 설정
 
 PORTA.3=0; // RD = low 
 delay_us(2);
 
 data = PINB;     // RTC로부터 데이터 수신  
 delay_us(2);
 
 PORTA.4=1;  //WR = high
 PORTA.3=1;  // RD = high
 PORTA.5=1; // ALE = high
 PORTA.6=1; // CS = high
 return data;
}
void RTC_Set_Time (void)
{
 RTC_Write(0x0A, 0x2f);  // A 레지스터 선택
                         // A 레지스터에 데이터 전송, 오실레이터를 ON 시키고,
                         // RTC가 시간을 유지하도록 설정, 주기적 인터럽트를 발생시킴(500ms)
                         // 이 코드가 실행되면서부터 RTC의 시간이 흘러가기 시작한다.
 RTC_Write(0x0B, 0x80);  // B 레지스터 선택
                         // 업데이트를 금지시킴
                         // 현재시각 설정하기
 RTC_Write(0x09, 0x08);  // 몇 년 2008년  
 RTC_Write(0x08, 0x06);  // 몇 월 5월
 RTC_Write(0x07, 0x09);  // 몇 일 22일 
 RTC_Write(0x06, 0x02);  // 몇 요일 목요일
 RTC_Write(0x04, 0x91);  // 몇 시 3시
 RTC_Write(0x02, 0x06);  // 몇 분 20분
 RTC_Write(0x00, 0x10);  // 몇 초 10초
  
 RTC_Write(0x0B, 0x40);       // B 레지스터 선택 , 저장완료코드
                                // 업데이트 정상동작, 주기적 인터럽트 인에이블 시킴
                                // (C 레지스터에 있는 주기적 인터럽트 플래그(PF)가 IRQ 핀을 Low로 구동하는 것을 가능하게 함)
                                // BCD 데이터 사용, 12-hour 모드 사용
                                // 주기적 인터럽트를 사용하지 않는다면 disable 시켜도 상관없다.
                                // 주기적 인터럽트는 MCU의 /INT0 단자에 연결해서 MCU가 주기적으로
                                // 인터럽트를 받기 위해서 사용하는 것임
}
void RTC_Get_Time (void)
{
 hour = hour2 = RTC_Read(0x04); // 몇 시인지 RTC로부터 시간을 읽어옴
                                // BCD 값이므로 상위 4비트와 하위 4비트를 각각 다른 변수에 저장함
 hour &= 0xF0;                  // 하위 4비트는 0으로 채우고 상위 4비트만 사용
 hour >>= 4;                    // 상위 4비트를 하위 4비트로 이동
 hour2 &= 0x0F;                // 상위 4비트는 0으로 채우고 하위 4비트만 사용
 //---------------------------------------
 min = min2 = RTC_Read(0x02); // 몇 분인지 RTC로부터 시간을 읽어옴
                              // BCD 값이므로 상위 4비트와 하위 4비트를 각각 다른 변수에 저장함
 min &= 0xF0;                 // 하위 4비트는 0으로 채우고 상위 4비트만 사용
 min >>= 4;                   // 상위 4비트를 하위 4비트로 이동
 min2 &= 0x0F;                // 상위 4비트는 0으로 채우고 하위 4비트만 사용
 //----------------------------------------
 sec = sec2 = RTC_Read(0x00); // 몇 초인지 RTC로부터 시간을 읽어옴
                              // BCD 값이므로 상위 4비트와 하위 4비트를 각각 다른 변수에 저장함
 sec &= 0xF0;                 // 하위 4비트는 0으로 채우고 상위 4비트만 사용
 sec >>= 4;                   // 상위 4비트를 하위 4비트로 이동
 sec2 &= 0x0F;                // 상위 4비트는 0으로 채우고 하위 4비트만 사용
}                                                                           
//////////////////////////////////////////////////
void main(void)
{
        rg_set();
         
                    
        SREG=0x80;           
       // RTC_Set_Time();
        lcd_clr();  
     /*   lcd_cmd(LINE1);
        lcd_str("CJB");
        lcd_cmd(LINE2);
        lcd_str("31JB");
      */  
        while(1){
  RTC_Get_Time();
  lcd_cmd(LINE1);           
  lcd_str("???");
 
  }
        ;
}


matlab 허수 사용시 주의사항

matlab에서 주의 할점
허수를 위해서 i나 j를 사용할 때
이미 i나 j가 변수로 선언되어있다면
앞에 1을 붙여주자


아두이노 코드를 보다가 의문이 들었다.


main함수는 어디에 있는 것일까??


보통 컴파일 후 코드가 main으로 점프하는 걸로 알고 있는데 말이다...


갑자기 궁금해서 여기저기 찾아본 결과


main 함수는 존재했다.


단지 다른 파일에 있고 아두이노 개발 환경에서는 그게 보이지 않았을 뿐...


파일의 위치는 설치경로\arduino\avr\cores\arduino\main.cpp 를 확인하면 된다.



관련 코드 부분은 아래에 첨부!! 



스케치에서 사용하는 함수가 setup과 loop이다.


함수를 보니 setup을 한번 실행하고 loop함수는 무한루프안에 있는 것을 확인 할 수 있다.


다른 함수들은 시간이 되면 보기로 하고 궁금증은 해결!!

'IT 공부 > arduino' 카테고리의 다른 글

아두이노 시작하기 - 컴퓨터 연결 및 툴 사용  (0) 2016.12.30
아두이노 시작하기 - 툴 설치  (0) 2016.12.30
아두이노  (0) 2016.12.30

저번 글에서 아두이노 프로그램을 설치를 완료했다.


이어서 컴퓨터와 연결 및 툴 사용에 대해서 알아보자.




설치형이면 설치 된 경로에 arduino.exe를 실행하면 되고


무설치형이면 압축을 푼 경로에서 arduino.exe를 실행하면 된다.




arduino.exe 실행화면







예제 실행


파일 - 예제 - 01.Basics - Blink 실행







예제 Blink를 실행하면 아래와 같이 창이 뜬다.






USB 케이블과 컴퓨터 연결


보드에 usb 케이블 꽂고 컴퓨터와 연결을 하면 보드에 있는 LED에 불이 들어온다.


윈도우7을 사용 중인데 디바이스 드라이버는 자동으로 잡혔음





보드 설정 


지금 사용하는 보드는 Arduino Leonardo r3 호환보드이므로 Arduino Leonardo 선택






시리얼 포트 설정


COM3 (Arduino Leonardo) 선택 -> 보드랑 연결된 시리얼 포트 설정 하면 됨 (괄호안에 보드 이름이 잡혀 있음)


혹시 보드 이름이 없으면 디바이스 드라이버 체크가 필요







업로드를 누르고 업로드 완료가 되면 아래와 같이 업로드 완료. 라는 메세지가 뜬다.







업로드 완료 후 보드를 보면 L이라는 LED가 깜빡이는 모습을 확인 할 수 있다.







위 코드를 설명 하면


digitalWrite(LED_BUILTIN, HIGH); ->  LED on 

delay(1000);                            -> 상태를 1초 유지

digitalWrite(LED_BUILTIN, LOW);  -> LED off 

delay(1000);                            -> 상태를 1초 유지


delay(1000)은 ms 단위 이므로 1초를 뜻함


조금 더 재미를 느껴 보려면 아래 소스코드에서 delay(1000)에서 1000 대신 다른 값으로 변경 해볼 수 있다.


숫자를 더 크게 바꾸면 LED의 상태는 더 느리게 바뀔것이고


숫자를 더 작게 바꾸면 LED의 상태는 더 빠르게 바뀔것이다.


단 깜빡이는 속도가 너무 빠르면 우리 눈에서는 계속 켜져 있는 것 처럼 보일 것임.

'IT 공부 > arduino' 카테고리의 다른 글

아두이노 main 함수는 어디에??  (0) 2017.01.02
아두이노 시작하기 - 툴 설치  (0) 2016.12.30
아두이노  (0) 2016.12.30

아두이노로 개발을 하기 위해서는 컴파일 및 다운로드를 해줄수 있는 프로그램인 통합개발환경이 필요하다.


프로그램은 아래 사이트에서 받는다.

https://www.arduino.cc/en/Main/Software


그림을 보며 따라하면 된다.





설치형이나 무설치형을 다운로드 한다.


설치형이면 설치 된 경로에 arduino.exe를 실행하면 되고


무설치형이면 압축을 푼 경로에서 arduino.exe를 실행하면 된다.




arduino.exe 실행화면



위와 같이 실행되면 설치 끝!!

(처음 실행되는 파일이나 프로젝트 명은 다를 수 있다. 나는 프로젝트를 몇번 실행했기 때문...)



'IT 공부 > arduino' 카테고리의 다른 글

아두이노 main 함수는 어디에??  (0) 2017.01.02
아두이노 시작하기 - 컴퓨터 연결 및 툴 사용  (0) 2016.12.30
아두이노  (0) 2016.12.30

+ Recent posts