본문 바로가기
코스웨어/15년 스마트컨트롤러

20150423-29번-주보건 PC PWM,Void *, Hexaview 프로그램, vi 편집기의 기본 명령어

by 알 수 없는 사용자 2015. 4. 24.
728x90
반응형

#AVR 컨트롤러

다음 시간에 16Bit를 활용한 타이머를 사용하여 코딩해 보자.

 

일반 모드와 CTC

 

PC PWM 의 대하여 공부하여 보자.

 

PWM은 Pulse Width Modulation의 약자로 펄스폭 변조라는 의미이다클릭의 주기는 유지하나 high와 low 구간을 조절하는 기능을 한다.

 

PC 는 Phase Correct의 약자이다.


TCCR0A-Phase Correct PWM 모드를 바꾼다.

TCCR0B-64분주 - 비율을 64번당 1번으로 세어준다.

while 문 내에 OCR0A 설정해준값을 100까지 센다음 어떠한 결과값이 나타나게 만들어주는것 밑의 동영상에서 나오듯 HIGH 부분의 폭을 설정해주는것.



이번에 만든 PC PWM 펄스폭변조를 ATMEGA2560으로 만들어본결과



#공장 내 네트워크

Void *, Hexaview 프로그램, vi 편집기의 기본 명령어

 

학습목표

 

- void *에 대하여 이해하고 void *의 캐스팅 문법에 대해 숙지한다.

헥사뷰 프로그램을 만들 수 있다.

- vi 편집기의 기본 명령어 기능을 익히고 간단한 프로그램을 작성하여 컴파일 할 수 있다.

 

void *는 포인터가 가리키는 형에 상관없이 대상을 지정할 수 있다다만 형을 맞춰주기 위해서 캐스팅을 사용해야 한다.

 

캐스팅 방법은 *((type *) X) 이다.



주소 값/헥사 값/아스키 값이 나오도록 프로그램을 작성해야 한다.

골격은 이런식으로 잡아준다.

완성된 코드는 다음과 같다.

<main.c>

 #include <stdio.h>

#include "hexaview.h"

int main(void)
{
  int iNum=100;
  hexaview(&iNum, 160);
  


  return 0;
}

<hexaview.c>

#include <stdio.h>
#include "hexaview.h"

void hexaview(void * vP, unsigned int uiLen)
{
  unsigned int uiCnt;
  unsigned int uiLine;

  printf("===============================================================================\n");
  printf("  Address      Hexa           ASCII       \n"); 
  printf("-------------------------------------------------------------------------------\n");
  for (uiLine = 0; uiLine <=  uiLen; uiLine += 16)
  {
    printf(" %08X  ", vP);
  
    for(uiCnt=0; uiCnt<16; ++uiCnt)
    {
      printf("%02X ", *((unsigned char *)vP));
      vP = (char *)vP + 1;
    }
    vP = (char *)vP - 16;
    putchar(' ');

    for(uiCnt=0; uiCnt<16; ++uiCnt)
    {
      if (32 > *((unsigned char *)vP))
      {
        putchar('.');
      }    
      else if(127 < *((unsigned char *)vP))
      {
        putchar('.');
      }
      else
      {        
        printf("%1c", *((unsigned char *)vP));
      }

      vP = (char *)vP + 1;
    }
    putchar('\n');
  }
  return;

} 

<hexaview.h>

#ifndef __HEXAVIEW_H__
#define __HEXAVIEW_H__

/*** 함수 원형 선언 ***/

void hexaview(void *, unsigned int);


#endif //__HEXAVIEW_H__


산딸기 시간!

지난 시간에 vi 편집기로 작성하던 test.txt파일로 가보자.

 

<vi 편집기 명령어>

 

우선 20줄 정도의 무작위의 자료를 작성하고 나서 아래의 명령어들을 입력하여 학습해 보자.


<Command mode(esc키를 눌러 설정)>

dw = 한 단어 삭제

dd = 한 줄 삭제 

/dd삭제할 때 해당 줄이 복사된 상태이기 때문에 dd를 누른 후에 p나 u를 누르면 지웠던 줄이 다시 살아난다.

yy = 한 줄 복사    //y=yanked

yw = 한 단어 복사

p = 붙여넣기    //p=past

shift + p = 복사한 내용 위로 붙혀 넣기

//d나 y에서 숫자를 누르고 방향키를 누를 때 숫자는 현재 있는 라인에서 추가로 삭제하거나 복사한다.

v = visual  mode: 선택하는 구역을 보여준다.

ctrl + z = 다른 프로세서 실행

/ = 검색 모드

/로 검색한 문자가 1개 이상일 때,

- n = 다음 대상 선택    //n=next

- shift + n = 이전 대상 선택

shift + r or insert key = 겹쳐쓰기 

shift + j = 커서가 있는 줄과 다음줄을 가져다가 붙이기


<Expanded Command Mode(:키를 눌러 설정)>

w_파일명 = 파일명으로 저장


<Insert Mode(i를 눌러 설정)>


a: 현재 위치 다음에 문자 삽입

i: 현재 위치에 문자 삽입

 

//gcc 4.x 버전에서는 메모리 주소가 보안이 되어 바뀐다.

/컴파일시 main.c 와 -o main의 자리는 바꾸어도 컴파일에 지장이 없다.

컴파일 시 중간파일 생성을 위한 옵션 명령어,

 

--save-temps

728x90