11/25/2015

RGB , YCbCr, YUV 및 영상 Format 정리

매번 영상관련부분을 할때 마다 관련부분을 까먹어서 아래와 같이 간단히 정리한다.


1. RGB (Red , Green, Blue)

일반적으로 RGB Color의 정확한 이해부터 해보도록 해보자.
어렸을 때 흔히 빛의 3원색과 색의 3원색을  배웠던 기억이 있을 것이다.
우선 RGB를 이해하기위해서는 빛의 3원색의 이해가 중요하다.
색의 3원색은 우리가 물감을 이용할때가 필요 할때이며, 빛의 3원색과 성질이 다르다.

1.1 빛의 3원색 

이 세상에는 다양한 색이 존재하고 인간은 이를 많은 색상을 구분하는 것이 가능하다. (사람이 모든 색상을 완벽하게 구분을 하는 것은 아니지만)

색상의 기본적인 이해부터 해보도록 해보자. 일단 빛이 있어야 사람은 색상을 구분한다.
흔히 예전에 빛의 R, G, B로 색을 기본으로 합칠 경우 거의 모든색상이 표현이 되는데, 이를 빛의 3원색이다. 그리고, 이것이 RGB 이다.
기본적으로 존재하는 색상은 3가지 색상이며 이를 혼합하여 다른색상을 표현을 하는 것이 기본원리이다.
흔히 말하는 빛의 3원색이라고 한다. 빛의 경우 3가지 색상을 합칠 경우 흰색이 나온다.




1.2 빛의 이론과 성질 

빛의 이론으로 들어가면 빛도 일종의 파장과 진동수가 존재하며 이를 깊게 파고 들고자 한다면 (예전부터 과학동아 많이 봐왔기에 이 부분을 간단히 정리하겠다 )
빛은 파동설과 입자설 존재하며, 이 부분은 거의 정설로 되어져 있다. (이 부분까지 들어가며 설명이 길어질 것 같다, 사실 나도 자세히 모르겠다.)

간단히 설명하면, 빛도 일종의 파장을 가지고 있으며, 주파수를 가지고 있다고 하는 것이 기본 정설이다. 그래서 일종의 주파수 개념이라고 생각을 파면되겠다. 거기에 입자설까지 나왔는데, 그 부분은 나도 오래되어서 까먹었다. (추후 공부하겠지만, 현재부분과 별로 관계가 없다)
관련부분이 궁금하다면, 직접 검색을 추천 (이 부분은 이전에 과학동아에서 우주관련부분에서 많이 설명이 나왔다.)

그래서 결론적으로 RGB의 즉 빛은 3원색에서 각 색상에는 특정 파장(Wavelength) 과 진동수(Frequency ,Hz) 도 존재한다는 것이다.

일단 차근차근 살펴보자. 인간이 볼수 있는 가시광선부터 살펴보자.
아래의 그림처럼 Wavelength와 Frequency를 나타내어주고 있으며,  빨간색으로 갈수록 점점 Low Frequency 와 Wavelength가는 것을 볼수 있다. .  
빛을 파동설로 보기때문에 이를 Microwave와 Radio 까지 연결시켜 볼수 있다.
빛을 일종의 전자파 개념으로 보는 것이다.


  • 파동-입자설 
 https://ko.wikipedia.org/wiki/%EB%B9%9B
 https://ko.wikipedia.org/wiki/%ED%8C%8C%EB%8F%99-%EC%9E%85%EC%9E%90_%EC%9D%B4%EC%A4%91%EC%84%B1


사람은 가시광선의 빛을 보고 색을 감지하기 때문에 이부분에 대해서 좀 더 자세히 알아보자.


RGB 색상혼합
  http://yjh-phys.tistory.com/35
  https://ko.wikipedia.org/wiki/RGB_%EA%B0%80%EC%82%B0%ED%98%BC%ED%95%A9


sRGB관련사항
  https://en.wikipedia.org/wiki/SRGB
  https://ko.wikipedia.org/wiki/SRGB



1.3 RGB의 표현 


  • RGB16  (5:6:5) 
Red,Blue에 5Bit를 할당하고, Green에 6bit에 할당하며, 이유는 Green 값이 Gamma 값과 밀접하기때문에 이곳에 더 할당값을 더 주었다.

그리고, 2Byte로 쉽게 표현이 가능하기에 , 이전에는 Video 영상보다는 거의 OSD에서 많이 사용되어져 왔으며 사용되었다.


  • RGB24  (8:8:8) 
각각 8bit씩 할당하며, 이 값은 LCD에도 전달하기에도 편하고 많이 사용되어지고 있다.
흔히 True Color 라고 하며, RGB888이라고 한다.


  • RGBA 
상위 RGB24와 거의 동일하지만, A 즉, 알파,Alpha 값 즉 투명값을 두어 32bit로 만들어 이를 사용하고 있다.



2. YUV 


YUV를 논하기 전에 사람의 색상을 인식하는 방법에 대해서 좀 알아보도록하자.
인간은 어떻게 색을 구분하는지에 대해서 원리를 알아야 YUV에 대한 기본접근이 가능하기 때문이다.

상위 RGB는 물리적인 접근이라면, YUV는 사람이 색을 어떻게 감지하는지에 대해서 힌트를 얻어 만들어낸 접근방식이라고 한다.
그리고, Analog TV, NTSC 와 PAL에서 이를 주로 사용했으며, Codec에서 주로 사용한다.



2.1 인간의 색 인식 방법 

인간은 망막을 가지고 있으며,  망막에는 망막에 상이 맺히며, 이 상을 시세포가 인지하여 색을 구분을 한다.
시세포는 다시 2가지로 구분이 되는데, 이 것이 간상세포와 원추세포이다.

각 세포의 역할을 살펴보면 다음과 같다.


  • 간상세포(막대세포)
사람마다 다르겠지만, 대체적으로 약 1억 3천만개의 간상세포을 가지고 있다고 한다.
빛에 대한 감도는 원추세포보다는 간상세포가 더 뛰어나기때문에 물체의 명암을 구별을 해주고 빛에 민감하다고 한다.
이 값이 Y값이며, 그래서, YUV 개념이 나왔다고 한다. 
 
  https://ko.wikipedia.org/wiki/%EA%B0%84%EC%83%81%EC%84%B8%ED%8F%AC
  https://en.wikipedia.org/wiki/Rod_cell


  • 원추세포(원뿔세포)
사람마다 다르지만, 약 7백만개 정도를 가지고 있다고 하며, 원추세포의 역할은 자세한 모양과 색을 구별을 해주는 역할이다.
상위에서 RGB에서 배웠듯이 빛의 3원색에 각 빛에는 파장이 존재하며, 각 원추세포는 16개 정도의 원추세포가 존재하는 것으로 알려져있다.
대략 아래와 같이 3가지색으로 구분해보고 그 비율을 보면 아래와 같다.

  1. 장파장 L 원추세포인 로우(ρ)세포 (빨간영역)
  2. 중파장 M 원추세포인 감마(γ)세포 (초록색 과 노랑색 부분)
  3. 단파장 S 원추세포인 베타(β)세포 (파란색)

  https://en.wikipedia.org/wiki/Cone_cell
  https://ko.wikipedia.org/wiki/%EC%9B%90%EC%B6%94%EC%84%B8%ED%8F%AC


  • 사람의 색 인지방법 
  http://yjh-phys.tistory.com/35
  http://lovescience.pe.kr/ms/chapter2/color.htm



2.2 YUV 값의 사용 


  • YUV 값의 사용 
YUV에서 가장 중요한 것은 Y값이며, Y 값만 전송하면, 흑백 TV가 되어진다.
물리적으로는 YUV는 존재하지는 않지만, 주로 전송을 위해 혹은 Codec, 영상처리를 위해서 사용하는 것으로 보인다.

  • YUV의 주파수 개념도입 
생소할지는 모르지만, 보통 영상처리 혹은 Codec에서 많이 사용되어지며, 영상의 한 장면 2D로 나타낼 경우, 
이를 공간주파수? 개념으로 생각하면된다. (정확히 말해 주파수가 아님,주파수는 시간기반임)
예를들면, 사진의 경우 Y값을 간단히 생각을 해보면, 사진 속의 물체 or 사람있다고 하면 그 주변의 Y값은 각 그라데이션 형식으로 윤곽을 나타낸다.
이 때 이 Y값 변화율을 공간주파수?로 도입하여, 2D FFT or DCT 기반으로 사용해서 주파수 대역을 파악 후 각 윤곽(높은 공간변화?) 파악이 가능하다.
그리고, 영상(사진에 Time 축 추가)의 경우, Time 축을 추가되면서 더 재미었지며, 특정영역의 시간변화율 측정에도 주파수 개념을 넣어 또 측정 가능하다.
즉, 3D FFT or DCT 도 가능하며, 이를 사용하는 것이 Codec 과 영상처리인 걸로 기억한다.

  • YUV 사용 
YUV도 좀 깊게 들어가면, Analog 와 Digtal이 존재하며, 이제 거의 Analog를 사용안하니, Digtal 만 알아두자 
YPbPr : Analog 방식으로 Y 값 과 UV 값을 각 주파수에 할당해서 전송하는 것으로 기억하며 Bandwith가 다름(Component Cable) (정확히 기억이 안남?) 
동축 Cable 기반으로도 가능하며, 여러 Channel을 합쳐서 FDM 형식으로 보낼수도 있다. (1 Channel 당 각 Y Bandwith, UV Bandwith가 존재하며,이를 각 Channel 할당하여 전송)
YCbCr : Digtal 에서 Codec or Video 영상처리에서 주로 사용되어진다.
  https://en.wikipedia.org/wiki/YUV

  • YCbCr 관련 사항 Link
간단히 정리하면, 각 Y 값 기반으로 UV를 몇개 넣어 구성하는 구조로 아래와 나뉜다.
YUV 4:4:4 / YUV 4:2:2 / YUV 4:2:0 / YUV 4:1:1
  https://en.wikipedia.org/wiki/Chroma_subsampling
  https://ko.wikipedia.org/wiki/%ED%81%AC%EB%A1%9C%EB%A7%88_%EC%84%9C%EB%B8%8C%EC%83%98%ED%94%8C%EB%A7%81


  • CIE-1931 Color Space 
아래와 같이 각 빛의 Wavelength를 알아보자. (nm, Wavelength라고 보면되겠다)
X 축 Cb
Y 축 Cr


  https://en.wikipedia.org/wiki/Chromaticity
  https://en.wikipedia.org/wiki/CIE_1931_color_space

   https://en.wikipedia.org/wiki/CIE_1931_color_space#CIE_xy_chromaticity_diagram_and_the_CIE_xyY_color_space

  http://www.fourcc.org/yuv.php
  http://ryan.tistory.com/129
  https://msdn.microsoft.com/ko-kr/library/windows/desktop/bb970578(v=vs.85).aspx

11/21/2015

ARM 용 Tool Chain 설치 및 관련 설정

1. Tool Chain 설치준비

기존 LINK는 찾아봤는데, 끊기고, 되는 곳은 아래의 사이트가 동작.
공통된 ARM Core를 사용하기 때문에 DM8127 or DM8148 , DM368 다 동일하다.
이 GCC가 본인사용하는 ARM version 이 지원하는가 중요 할뿐이다.
하지만, ARM 64bit는 이야기가 다르기 때문에 이부분은 반드시 GCC Manual이나,
관련부분을 확인해야겠다.

  • 지원사항 확인 및 설치방법
만약 아래의 Link가 살아있다면, 이것대로 하는것이 가장편하고 좋은 것 같다.
아래의 설명도 아래의 Link와 동일하다.
구지 아래의 문서를 보지 않아도 되겠다.

https://developer.ridgerun.com/wiki/index.php/Code_Sourcery_ARM_toolchain_2009q1-203

1.1 Download 및 How to Install 

ARM 32bit용을 지원하며, 위에서 언급했듯이 거의 모든 Coretex에서 지원하여 사용한다.
  • Download Tool Chain
http://www.codesourcery.com/sgpp/lite/arm/portal/package4573/public/arm-none-linux-gnueabi/arm-2009q1-203-arm-none-linux-gnueabi.bin

1.2 기본환경구성 및 준비 

본인은 Ubuntu를 사용하기 때문에 Ubuntu기반으로 설명
위의 Link 사이트에 들어가면 Red Hat에 관련 설명도 있으니, 이부분도 참고하시길

/opt/codesourcery 에 설치할 것이며, 본인이 원한다면 주소를 변경을 하여도 상관은 없다.

sudo mkdir -p /opt/codesourcery
sudo chmod ugo+wrx /opt/codesourcery

1. Download arm-2009q1-203-arm-none-linux-gnueabi.bin 파일
2. Ubuntu의 Terminal에서 이파일을 실행 준비

이 파일을 실행시키기 위해서 GTK관련부분이 필요하기에 아래와 같이 필요한 Package를 설치한다.

1.3 BASH 관련부분 설정 확인

sudo rm /bin/sh
sudo ln -s /bin/bash /bin/sh

1.4 GTK Package 설치 

GTK 역시 32bit version으로 작성이 되어있으며, 만약 OS가 64bit이면 아래와 같이 32bit용을
별도로 설치해주어 동작을 진행하도록 하자.
64bit OS에서도 크게 문제없이 동작이 된다.

  • OS 32bit 인 경우 
sudo apt-get install libgtk2.0-0:i386 libxtst6:i386 gtk2-engines-murrine:i386 libstdc++6 libxt6:i386
sudo apt-get install libdbus-glib-1-2:i386 libasound2:i386

  • OS 64bit일 경우
아래와 같이 32bit version으로 동작 하게 관련 Package 설치

sudo apt-get install ia32-libs ia32-libs-gtk 

위와 같이 설치후, 32bit version과 동일

  https://sourcery.mentor.com/sgpp/lite/arm/portal/kbentry62

1.5 Virtual Machine 설치

sudo apt-get install openjdk-6-jre

for Ubuntu 16.04

sudo add-apt-repository ppa:openjdk-r/ppa  
sudo apt-get update   
sudo apt-get install openjdk-7-jre 


2. Tool chain 설치 

UBuntu의 Terminal에서 실행모드를 추가 한 후, 실행하면

chmod ugo+x arm-2009q1-203-arm-none-linux-gnueabi.bin
./arm-2009q1-203-arm-none-linux-gnueabi.bin


2.1 기본설치 



                        Next 와 I agree로 진행


                      설치되는 Tool Chain의 기본 Library 확인


                       Typical 선택 및 진행
                               
                             
                       /opt/codesourcery/arm-2009q1 으로 변경
             
                             
                       Do not modify PATH로 진행

                               
                   Link Folder -> Don't create Links 선택 진행
                  (이부분 동적 Library  Link path 이므로 기억해야한다.)
                  만약 본인이 추가로 동적 Library를 사용한다면, others를 넣고 설정


                     위와 같이 설치 될 예정 Link Folder에 문제가 있지만,
                     추후 확장을 안한다면 문제가 없다.
                             
2.2 본인 PATH 및 Link Folder 설정 

본인의 Folder안에 설치가 가능하며, 위의 Link Folder를 이용하여 Link Folder도 설정가능하다.




솔직히, 2.1로 설치하는 것이 편하며, Link Folder 역시 별도로 아직 사용하지 않는것 같다.
Shared Library를 이곳에 추가 할일도 없는 것 같다.


3. Linux의 환경설정 

아래의 설정을 .vimrc에 강제로 추가해도 되지만, source로 하는것이 더 편할것 같다.
UBOOT와 KERNEL에서 ARCH와 CROSS_COMPILE 환경변수는 필수이며,
INSTALL_MOD_PATH 는 Linux Kernel에서 Module의 설치 장소이다.


  • 환경변수 설정

$ vi setPATH.sh
#!/bin/sh
# source setPATH.sh
export TOOLCHAIN_PATH=/opt/codesourcery/arm-2009q1/bin/
export TOOLCHAIN_PATH1=/home/jhlee/dm8148/CodeSourcery/Sourcery_G++_Lite/bin
export TOOLCHAIN_PATH2=/home/jhlee/dm8127/CodeSourcery/Sourcery_G++_Lite/bin

export PATH=$PATH:${TOOLCHAIN_PATH}

export ARCH=arm
export CROSS_COMPILE=arm-none-linux-gnueabi-
export INSTALL_MOD_PATH="${HOME}/dm8148/targetfs"    


  •  source를 이용하여 적용 


$ source setPATH.sh 


**source 사용이유 

./setPATH.sh 만 실행할 경우, 이 shell script가 실행되는동안 이 PATH가 적용이 된다.
그래서 source를 사용하여 지속적으로 적용시킨다.

11/20/2015

AVR Studio 기본사용법

1. AVR STUDIO 기본사용법 

ATMEL에서 제공해주는 IDE 개발 TOOLS 이며,  AVR STUDIO이외에도 다양한 툴이 존재하는 것 같다.
대표적으로 Codevision 이지만,  사용해보지 않아 잘 모르겠다. 솔직히 10년만에 다시하는것라 익숙지가 않다.

AVR STUDIO는 다른 툴과 비슷하여 한번 사용한다면 쉽게 익힐 수가 있으며, 사용하기가 쉽지만
AVR과 PC의 Interface부분을 정확히 인지하고 용어를 정확히 알고 있어야 할 것 같다.
현재 ISP 인터페이스는 (Serial to SPI) 이며  AVR과 Connect 시도를 할때, AVR ISP 혹은 STK500으로 정하고, Serial로 연결하고 이를 Flash를 하면 된다.


       Main->Read Signature   자신의 CPU Signature 값 확인.
       Program->Flash            Program으로 write 시도


1.1 AVR의 IDE 환경 및 Download 

아래의 사이트에서 AVR의 IDE Tool을 Download하고 설치를 해보자.

  • AVR STUDIO4,6 및 Codecvision 관련사용법        
        http://binworld.kr/3
        http://blog.daum.net/ledpark/20

  • AVR STUDIO- DOWNLOAD SITE 

   
       * 설치했던 AVR-STUDIO 버전들 


       Atmel Studio 6.2 sp2 (build 1563) Installer – with .NET
       installer version은 toolchain을 포함하고 있습니다.
       
       AVR Studio 4.19 (build 730)
       Atmel AVR 8-bit and 32-bit Toolchain 3.4.1 - Windows

  • AVR STUDIO 6.2 설치
       http://www.atmel.com/tools/atmelstudio.aspx


  • CODEVISON 관련사이트
       http://www.codevision.be/atxmega-sbc-with-lcd/xg7100-atxmega-sbc



2. AVR Studio 4 기본사용법

현재 USB ISP 문제로 인하여, AVR Studio 4.19 Version을 사용하고 있다.
나의 USB ISP가 AVR Studio 상위 Version에서는 동작이 되지 않는다.
GCC도 역시 3.3 Version을 사용한다.

본인의 USB ISP를 구입시 이부분을 확인하기 바라며, 나와 같은 분이 없기를 바란다.

  • AVR Studio 4기본사용법 
     http://www.jkelec.co.kr/img/ucom/avr/avr_rabbit/avrstudio_programmer_manual.html


2.1 기본 프로젝트 생성 


A. Project->New Project 선택
  • Project Name 선택 : 프로젝트 이름
  • Inital file 선택 :    Main file 이름
  • Create folder  :    부분체크 



B. next 진행 ( 본인 device 선택 , )

저는 JTAG 이 없기에, 시뮬레이터를 선택했습니다.



2.2 ISP 연결 

나의 USB ISP는 STK500을 사용하며 USB To Serial 형식을 취하고 있다.
그리고 Serial Interface에서 SPI 로 변경되어 연결이 되어있다.
이를 이용하여 빌드된 파일을 AVR128 Flash에 저장이 가능하다.


A. AVR Studio에서 ISP 장비 연결시도 

   (Tools -> Program AVR -> Connect or Con 아이콘 클릭)

Platform을 STK500 or AVRISP로 선택한후, Port는  연결된 Port를 선택한다



B. PC의 AVR Studio 와 ISP 장비 연결확인

아래의 MSG는 PC가 USB ISP의 연결이 되었다는 확인 메시지이며, ISP의 Firmware version 정보와 연결된 Port 정보 알수 있다.
하지만, Board에 연결이 되었다는 것은 알 수가 없다.
ISP에는 JTAG을 제공하지는 않고 있다.



C. ISP 와 AVR Board와 연결확인

Main으로 이동하여, AVR Board와 연결상태를 확인한다.
확인방법은 Read Signature를 사용하며  AVR Device에 따라 읽는 값이 다르다
값은 해당 Device의 Datasheet를 보시면 나온다.



D. Program Hex file 

프래그래밍을 한 후, 빌드 하면, Hex 파일 생성이 되고 이 Hex 파일을 Flash ROM erase 하고 write하는 Tool 이다.
그리고, 백업이 가능하도록 Read도 제공하고 있다.

EEPROM 같은 경우는  EERPOM 초기 값을 attribute를 이용하여 정의해 놓고,
*.eep 부분 값이 생성된다. 이를 이용하여 초기값을  write이 가능하다.
반드시 OK Message는 확인해야 한다



E. 기타사항 


  • ISP Firmware Version 확인 




  • ISP Firmware Upgrade 
(아직 미확인, 이 부분에서 Upgrade하면, AVR 6.2도 사용가능할 것 같다. )




  • ISP Status
초반에 SPI Interface를 다른 곳에 연결하여 삽질했다.
Hardware적으로 삽질하면, 필요하지 않을까 싶다.





11/17/2015

AVR LIBC 관련정보 및 예제

1. AVR LIBC 

개발을 시작하다보니 AVR의 Device를 Control를 하려다 보니, 개별 예제 소스가 필요했는데, 마침 AVR의
각 Device를 쉽게 Control 할 수 있도록 Library 형태로 제공하는 source를 발견을 하였다.
그리고 사용자는 이를 include 하고 호출하는 형태로 이용하면 된다.

우선 아래의 사이트에서 본인의 AVR의, 지원여부를 확인하고 사용하자

  http://www.nongnu.org/avr-libc/user-manual/index.html


1.1 기본 AVR LIBC 기본 정보 

  • Module 정보 
  http://www.nongnu.org/avr-libc/user-manual/modules.html
  http://www.eit.lth.se/fileadmin/eit/courses/edi021/avr-libc-user-manual/modules.html


  • 유저메뉴얼
     아래의 정보에서 Tool Chain 정보와 관련된 정보를 확인할수 있다. 
  http://www.nongnu.org/avr-libc/user-manual/pages.html   

  • 메모리영역
     빌드시 각영역, 이부분은 나중에 빌드후 생성된 *.map과 보면 되겠다.
     Linker script는 아직 찾지를 못했다.

  http://www.nongnu.org/avr-libc/user-manual/mem_sections.html

  • TOOL CHAIN 소개
  현재 GCC를 사용하고 있으며, 저 같은 경우, GCC 3.3 Version이다
  http://www.nongnu.org/avr-libc/user-manual/overview.html

     GCC 메뉴얼
  https://gcc.gnu.org/onlinedocs/
  https://gcc.gnu.org/onlinedocs/gcc-3.2.3/gcc/

AVR Option을 확인하면 되고,  attribute 기능은 현재 ldscript 혹은 gcc 옵션이랑 같이 연동되겠다.

  • 기본 구현방법 및 예제
  https://exploreembedded.com/wiki/AVR_C_Library


1.2  AVR LIBC 주요 Manual  

내가 사용하는 Device 들이며, 이를 이용하여 구현을 할 것이라 자료수집

  • EEPROM 관련 메뉴얼
  http://www.nongnu.org/avr-libc/user-manual/group__avr__eeprom.html

  • FLASHROM 관련 메뉴얼
  http://www.nongnu.org/avr-libc/user-manual/group__avr__pgmspace.html#ga963f816fc88a5d8479c285ed4c630229

  • ISR 관련메뉴얼
      ISR or SIGNAL을 사용하시기전에 반드시  sei() 사용 해주시기 바랍니다.
 

자세한 내용은 아래사이트

  http://www.nongnu.org/avr-libc/user-manual/group__avr__interrupts.html
  https://ccrma.stanford.edu/courses/250a-fall-2005/docs/avr-libc-user-manual-1.2.5/group__avr__interrupts.html


2. 예제 Program 및 AVR library     

위의 AVR Libc에서 다 지원이 되면 좋겠지만, 지원이 많이 되지 않기 때문에
필요 Library와 예제 Program을 아래에서 참조하자.


  • 기본예제 및 기타 필수 Library Download    
  http://www.procyonengineering.com/embedded/avr/avrlib/docs/html/index.html
  http://www.procyonengineering.com/embedded/avr/avrlib/docs/html/main.html

  • Timer 와 Delay        
  Timer와 Delay구현하기위해서 다음과 같은 부분을 읽고 참조했지만 결론적으로,
  위에 library에 있는 timer128.h을 사용하여 쉽게 구현하여 이용했습니다. 

  http://dal2iya.tistory.com/category/knowledge/AVR%20-%20ATMega128?page=1
  http://dal2iya.tistory.com/category/knowledge/AVR%20-%20ATMega128?page=2
   
  http://efundies.com/avr/avr_timer_interupts_c_simple.htm
  http://binworld.kr/35
              http://www.procyonengineering.com/embedded/avr/avrlib/docs/html/group__timer128.html

      * HW Info      
  http://blog.naver.com/PostView.nhn?blogId=jung4453&logNo=110017823188

  • UART 
  UART로 printf 구현하기 예제
  http://www.appelsiini.net/2011/simple-usart-with-avr-libc

  • Memory Area and Malloc
  http://www.eit.lth.se/fileadmin/eit/courses/edi021/avr-libc-user-manual/malloc.html


3. 기타 참고 예제 

현재 AC 모터 제어와 온도 센서가 중요하기때문에, LCD의 제어 및 폰트기능등 각각을 참고하기 위해서 관련자료 수집.

  • LED
  http://cafe.naver.com/circuitsmanual/31137

  • LCD
  http://cafe.naver.com/circuitsmanual/31137

  http://kin.naver.com/qna/detail.nhn?d1id=11&dirId=1118&docId=102930127&qb=QVZSMTI4IOyGjOyKpA==&enc=utf8&section=kin&rank=1&search_sort=0&spq=0&pid=SmG/UsoRR1dsstxDDJ0sssssss8-260606&sid=YK6CEMPM7Y5vLF%2BCpXw8GQ%3D%3D

  • UART 관련소스 
  http://cafe.naver.com/circuitsmanual.cafe?iframe_url=/ArticleList.nhn%3Fsearch.clubid=18968931%26search.menuid=191%26search.boardtype=L

  http://cafe.naver.com/carroty/85366

  • 3상 모터
  http://kin.naver.com/qna/detail.nhn?d1id=11&dirId=1118&docId=226863507&qb=M+yDgeuqqO2EsA==&enc=utf8&section=kin&rank=4&search_sort=0&spq=1&pid=SPdSdloRR0GssuQAvJGsssssssK-348429&sid=I5wRQrnBMHxsXknz/R0lXg%3D%3D

  http://www.higenmotor.com/info/download_data.asp?no=334


  • 3상 모터의 원리 (U V W)     
  http://www.cnmmotor.com/data/Chapter%202.%EC%9C%A0%EB%8F%84%EB%AA%A8%ED%84%B0%EC%9D%98%20%EA%B8%B0%EC%B4%88.pdf

  https://www.youtube.com/watch?v=XLVWqMSvNtU

  https://en.wikipedia.org/wiki/Induction_motor

  http://tip.daum.net/question/56303326