블로그 이미지
하루, 글. 그림. 영상매체. 표현을 도와주는 기기들. 도전 중. 동화다아아
    동화다아아

    카테고리

    분류 전체보기 (176)
    잡담 (1)
    IT 기기-리뷰&뉴스 (7)
    리뷰 - 도서 (1)
    리뷰 - 영상 (0)
    리뷰 - 그림/음악 (1)
    내장형 하드웨어 (163)
    Total
    Today
    Yesterday
     

    - CPU는 core 와 device로 나누어져 있다.

    - core란 ALU, CU, Reg의 세 부분을 가지고 있다.

    - core와 device를 가지고 있는 것이 MCU(Microcontroller).


    - UART - 비동기 시리얼 통신

     ⇒ 시리얼은 선을 4개 정도 가지는 직렬 통신(간단하나 속도고 느리다.)

        BUS는 32개 병렬(복잡한 대신 속도가 빠르다.

     ⇒ 고속 시리얼의 등장(ex. USB), 단점으로 클럭을 계속 공급해 주어야 한다.

     ⇒ 예전에는 병렬 방식이 무조건 빨랐으나 고속 시리얼의 등장으로 반드시 그렇지는 않다.


    - 양자화

     ⇒ 아날로그 데이터, 즉 연속적인 값을 디지털 데이터, 즉 띄엄띄엄한 값으로 바꾸어 근사하는 과정을 뜻한다.

     ⇒ mp3를 예로 들어 아날로그 신호를 디지털화 하려면 양자화 작업이 필요하다. 여기서 전압과 시간을 촘촘하게 하면 할수록 왜곡(손실)이 적어진다.

     ⇒ 시간을 쪼게어 변환하는 것을 샘플링, 전압을 쪼게어 변환하는 것을 분해능이라 하며 이와 같은 작업을 양자화 작업이라 한다.

     ⇒ 아날로그 데이터에서 디지털 데이터로 바꾸는 과정에서 손실은 발생할 수 밖에 없다.

     ⇒ ADC(Analog-Digital converting) ex. 녹음기

     ⇒ DAC(Digital-Analog converting) ex. 재생기

     

    - UART(비동기 시리얼 통신)

     ⇒ ATmega128에서 시리얼은 선이 4개 정도의 직렬연결 (간단하나 속도가 느리다.)

     ⇒ BUS는 32rodlm 선을 가진(32bit) 병렬 (복잡한 대신 속도가 빠르다.)


    - PWM에 대한 간단한 조사 첨부.



    C 복습

    #include<stdio.h>


    int main()

    {

            unsigned int length;

            unsigned int area;


            length = 3;

            area = length * length;

            area = 3*3;

            printf("The area of rectangular is %d square meter.\n", area);


            return 0;

    }

    ⇒ Disassembly 모드로 분석

      

     ⇒ mov 명령이 조건에 따라 C7일수도 6B일 수도 있다.

     ⇒ C7이 나오면 6byte로 끊어 읽고 8B면 2byte로 끊어 읽으라는 것을 CPU가 알게 된다.

     ⇒ mul = multiplier


     ⇒ 상수의 곱샘, 나누기 등은 컴파일 때 값을 계산하므로 실행시에는 다시 계산하지 않아 최적화의 한 방법이 된다. (ex. length = 9 * 9;)

     


    ※ gdb를 이용한 디버깅

     ⇒ intel mode로 변환

     (gdb) set disassembly-flavor intel


     (gdb) x/10i main         

     

     (gdb) break 3


     (gdb) x/40bx 0x8048406         

     

     ⇒ 위에서 보면 0xc7 0x45 0xfc 0x03 0x00 0x00 0x00로 역시 Visual studio 6.0으로 확인한 것과 일치한다.




    ※ PWM에 대한 간단한 조사.(http://www.hanb.co.kr/network/view.html?bi_id=1087)


    저자: Michael Barr / 주재경 역
    원문: http://www.oreillynet.com/pub/a/network/synd/2003/07/02/pwm.html

    PWM은 프로세서의 디지털 출력으로 아날로그 회로를 제어하는 강력한 기법이다. PWM은 계측과 통신에서 전력제어와 전력 변환에 이르기까지 광범위한 영역에서 사용되고 있다.

    아날로그 회로

    시간과 크기 모두에서 제한되지 않은 분해능(resolution)을 가지는 아날로그 신호는 연속적으로 변하는 값을 가진다. 9볼트의 배터리는 출력 전압이 정확히 9V가 아니라 시간에 대해 항상 변하며 임의의 실수 값을 가질 수 있다는 점에서 아날로그 기기의 좋은 예이다. 이와 비슷한 예로 배터리에서 출력되는 전류의 양 또한 일정한 값으로 제한되지 않는다. 디지털 신호는 항상 미리 결정된 집합(0V, 5V)와 같이 제한된 집합 내의 값을 가진다는 면에서 아날로그 신호와 구분된다.

    아날로그 전압과 전류는 자동차 라디오의 볼륨과 같이 직접적으로 무언가를 조절하는데 사용된다. 간단한 라디오에서 손잡이(역: 볼륨조절기)는 가변 저항과 연결 되어있다. 손잡이를 돌리면 저항은 커지거나 작아진다. 이 순간 저항을 통해 흐르는 전류의 양 또한 많아지거나 적어진다. 이를 통해 볼륨은 증가하거나 줄어든다. 아날로그 회로는 라디오와 같이 출력이 선형적으로 입력에 비례한다.

    아날로그 제어가 직관적이고 간단하게 보인다고 해서 항상 경제적으로도 매력이 있거나 실용적인 것은 아니다. 하나의 예로 아날로그 회로는 시간에 대해 항상 변한다. 그래서 수정하기가 매우 까다롭다. 이러한 문제를 해결한 정교한 아날로그 회로는 아주 크고 무거우며 비싸다( 간단히 예전의 스테레오기기를 생각해 보라). 아날로그 회로는 매우 뜨거울 수도 있다. 소모전력 은 연결된 기기를 통해 흐르는 전류와 이들 사이의 전압의 곱에 비례한다. 아날로그 회로는 제한되지 않은 분해능으로 인해 또한 잡음에 민감할 수 있다. 심지어 아날로그 신호의 아주 작은 동요도 값을 변화 시킨다.

    디지털 제어

    디지털화 하여 아날로그 회로를 제어하면 시스템의 가격과 전력소모는 급격히 줄어든다. 이미 많은 마이크로 컨트롤러와 DSP들은 구현을 용이하도록 하는 PWM 컨트롤러를 칩에 내장하고 있다.

    간단히 말해 PWM은 아날로그 신호를 디지털화 하여 인코딩하는 방법이다. 고분해능의 카운터를 통해 사각형파의 duty cycle은 특정 아날로그 신호를 인코드 하기위해 변조된다. 직류전원 공급 장치는 ON 아니면 OFF 이므로 임의의 주어진 시간에 PWM 신호는 여전히 디지털 신호이다. 일련의 반복되는ON, OFF 펄스를 통해 전압이나 전류가 아날로그 장치에 공급된다. On-time은 DC가 아날로그 장치에 공급되는 동안을 말하며 off-time은 전원 공급 스위치가 꺼진 기간을 일컫는다. 충분한 대역폭이 주어진다면 어떠한 아날로그 값도 PWM을 통해 인코드 될 수 있다.

    [그림 1]은 서로 다른 세 개의 PWM을 보여준다. 그림1a는 10%의 duty cycle에서 PWM 출력을 보여준다. 즉 주기의 10%동안만 신호가 ON이고 나머지 90%동안은 신호가 OFF이다. 그림 1b와 1c는 각각 50%와 90%에서의 PWM출력을 보여준다. 이 세가지 PWM출력은 전체 강도의 10%, 50%, 90%의 서로 다른 아날로그 신호를 인코딩한다. 예를 들어 9V로 전원 공급이 이루어지고 있고 duty cycle이 10%라면 0.9V의 아날로그 신호가 결과로 나온다.

    [그림 1] 다양한 duty cycle에서의 PWM신호


    [그림 2]는 PWM이 사용되는 간단한 회로를 보여주고 있다. 그림에서 9V배터리가 백열전구에 전원을 공급한다. 만약 50ms동안 배터리와 램프를 연결하면 전구는 9V의 전압 을 가지게 될 것이다. 그리고 나서 50ms동안 배터리와 램프 사이의 연결을 차단하면 전구의 전압은 0V가 된다. 이와 같이1초 동안 10회 반복하면 전구는 마치 4.5V의 전원에 연결되어 있는 것처럼 전구에 불이 켜질 것이다.(9V의 50%). 이럴 경우 duty cycle은 50%가 되고 변조 주파수는 10Hz이다.

    [그림 2] 간단한 PWM회로


    대부분의 장치는 10Hz이상의 변조 주파수가 필요하다. 스위치를 5초 동안 ON하고 5초 동안 OFF한다고 상상해 보라. Duty cycle은 여전히 50%이지만 전구는 처음 5초 동안 밝게 빛나고 다음 5초 동안은 꺼져 버린다. 전구가 4.5V의 전압을 가지게 하기 위해서는 장치(lamp)가 스위치의 상태변화(ON, OFF)에 반응하는 시간에 비해 상대적으로 스위치를 켜고 끄고 하는 시간이 더 짧아야 한다. 전구에 빛은 들어오는 상태에서 좀 더 어둡게 하기 위해서는 변조 주파수를 더욱 증가 시켜야 한다. 다른 PWM의 응용도 위의 경우와 같다. 일반적인 변조 주파수의 범위는 1kHz에서 200kHz사이 이다.

    하드웨어 컨트롤러

    많은 마이크로 컨트롤러가 칩상에 PWM을 내장하고 있다. Micorchip의 PIC6C67은 2개를 내장하고 있는데 각각은 on-time과 그 기간을 선택할 수 있다. Duty cycle은 on-time과 그 길이에 대한 비율이다. 변조 주파수는 그 기간의 역수 이다. PWM을 동작시키기 위해서는 데이터 시트에 소프트웨어에 대해 아래와 같은 명세가 있어야 한다.

    * 사각형파 변조를 제공하는 칩에 내장된 타이머와 카운터의 길이를 설정
    * PWM 레지스터의 on-time을 설정
    * 범용 목적의 I/O핀인 PWM output의 방향을 설정
    * 타이머 시작
    * PWM컨트롤러를 가능으로 설정

    PWM컨트롤러에 대한 세부적인 프로그램 명세가 다양하다 하더라도 기본적인 것은 위에 설명된 것과 같다.

    통신과 제어

    PWM의 장점중의 한 가지는 프로세서에서 컨트롤된 시스템에 이르는 모든 길이 디지털화 되어 있다는 것이다. 어떠한 DAC(디지털/아날로그 변환)도 필요하지 않다. 디지털 신호를 계속 유지함으로써 잡음을 최소화 한다. 잡음은 논리적인 1을 논리적인 0으로 바꿀 만큼 충분히 강한 경우에만 디지털 신호에 영향을 준다.

    아날로그 제어를 위해 PWM을 선택하면 잡음이 어느 정도 증가 하더라도 상관없으며 이는 통신을 위해 PWM을 사용하는 주요한 이유가 된다. 아날로그 신호를 PWM으로 변환하면 통신 채널의 길이를 크게 증가 시킬 수 있다. 수신 말미에 적절한 RC(resistor-capacitor) 혹은LC(inductior-capacitor)회로는 고주파 사각형파 변조를 제거할 수 있고 아날로그 형태로 신호를 만들 수 있다.

    PWM은 다양한 시스템에서 응용되고 있다. 좀더 구체적인 예로, PWM으로 제어되는 브레이크를 생각해 보자. 문제를 간단히 하기 위해 브레이크를 아주 강력히 제지하는 장치로 생각하자. 대부분의 브레이크에서 제지력의 크기는 아날로그의 입력신호로 제어된다. 브레이크에 전압이나 전류가 커질수록 브레이크의 제지 압력 또한 커진다.

    PWM은 다양한 시스템에서 응용되고 있다. 좀더 구체적인 예로, PWM으로 제어되는 브레이크를 생각해 보자. 문제를 간단히 하기 위해 브레이크를 아주 강력히 제지하는 장치로 생각하자. 대부분의 브레이크에서 제지력의 크기는 아날로그의 입력신호로 제어된다. 브레이크에 전압이나 전류가 커질수록 브레이크의 제지 압력 또한 커진다.

    100psi의 압력을 브레이크에 설정하기 위해서 소프트웨어는 해당 크기의 힘을 얻기 위한 duty cycle을 역순으로 찾기 시작한다. 새로운 값으로 PWM duty cycle을 설정하면 브레이크는 이에 따라 반응한다. 시스템에 센서가 있다면 원하는 정확한 압력을 얻을 때 까지 closed-loop control 하에서 duty cycle을 미세하게 조절 할 수 있다.

    PWM은 경제적이고 공간을 절약하며 잡음에 강하다.




    Posted by 동화다아아
    , |

    최근에 달린 댓글

    최근에 받은 트랙백

    글 보관함