레이블이 MCU-AVR인 게시물을 표시합니다. 모든 게시물 표시
레이블이 MCU-AVR인 게시물을 표시합니다. 모든 게시물 표시

6/27/2016

AVR RS232 통신 Protocol 설계 및 구현

1. RS232 기반의 Protocol 구현

2개의 AVR128 Board를 통신하기 위해서 RS232 Serial port를 사용하기로 결정을 했다
하지만 RS232를 이용하여 실시간으로 다른 Board를 Control 하고 Status를 읽어야 해야하기때문에 새로운 Protocol 을 만들기로 결정했다.

  • 새로운 Protocol 의 적용 방안  
  1. Protocol의 Flow Control 기능( TCP/IP와 참고 )  
  2. Fast Response 
  3. Connection Status 확인 ( CSMA/CD 와 유사하게 구현)
  4. Protocol의 안정성 ( CRC or Checksum)
  5. Simple Protocol 

기본 개념은 많이 사용되어지는 Protocol과 비슷하게 구현하도록 했으며, 구조도 비슷하고 개념도 비슷하다.
다만 최대한 간략하게 만들었고, Network에 필요한 기능과 Checksum 기능을 추가했다.

간단히 개념을 소개하면 Host->Device로 GET, SET으로 Command 명령보내면, Device는 DATA를 Host에 전송해주거나 이 DATA를 Device에 설정하는 것이다.
그리고 더불어 Device->Host는 ACK or NAK인지 알아 Feedback을 받는 방식이다.

RPT Command는 Device->Host로 주기적으로 보내는 명령으로 Device의 상태를 주기적으로 알기위해서 만들었다.
그리고, 내부에 TYPE을 두어 원하는 각각의 별도의 명령을 만들었다.

위 것으로 보면, 사실 USB 이나, IETF 기반 HTTP/SIP/등 기본개념의 Protocol 인 것 같다.

두 CPU 간의 실시간 적용이다 보니, TCP/IP 처럼 Flow Control 개념이 필요 할 부분이 있는 것 간단히 이를 구현을 했다.
예를 들면, Host-> Device 가 GET를 이용하여 Data를 얻고자 했다면, Device->Host NAK or Checksum 에러로 인하여 얻지 못할 경우,
다른 Command를 바로 실행하는 것이 아니라 이를 반복하여 DATA 값을 얻는 것이다.


1.1 기본 Protocol Message 개념 

기본 동작개념은 Master(Host) 와 Slave(Device) 개념을 가지고 Master가 Slave에게 SET or GET 명령을 주어 제어를 하고
Slave는 Master에게 ACK or NACK 주어 확인받는 방식이다.
사용하다보니, NACK의 사용이 거의 불필요 해지는 것 같다는 생각이 들어 이부분은 좀 더 생각을 해야 했다.

더불어 Protocol Parsing 하는 부분에서 내부 Buffer(FIFO형식) 를 두어 Flow Control을 하는 부분을 추가하였다.

매번 TYPE-0의 Message를 Count하고 이를 추적하여 ACK를 받았는지 확인하고 못받았다면, 자동으로 재 발송하는 System이다.

  • Master Board의 동작방식  
  1. MSG_DAT_TYP_SND_SET  : TYPE-0의 방식으로  동작 제어 및 관련 설정 명령 
  2. MSG_DAT_TYP_SND_GET :  TYPE-0의 방식으로  동작 정보 읽기 및 상태정보 명령 

  • Slave Board의 동작방식   
  1. MSG_DAT_TYP_ACK:  TYPE-0의 두개 명령을 받으면 ACK를 주는 방식 
  2. MSG_DAT_TYP_RPT_SET : TYPE-1의 방식으로 Master에 보고하는 방식 

  • TYPE-0 과 TYPE-1의 차이 
    TYPE-0은 Flow Control 기능을 제공하며, TYPE-1은 Flow Control 기능을 제공하지는 않게 구현을 했다.


1.2 Protocol Message 방식 

MAIN : Master
SUB   : Slave

  • MAIN과 SUB의 Message의 기본설명  

MAIN,SUB

  TX,RX
     TYPE-0
         MSG_DAT_TYP_SND_SET OR
         MSG_DAT_TYP_SND_GET

   RX,TX
     TYPE-0
          MSG_DAT_TYP_ACK
          MSG_DAT_TYP_NACK 
     TYPE-1
          MSG_DAT_TYP_RPT_SET  

  

 There are two kind of Messages , TYPE-0, TYPE-1 
 
 Main can send two kinds of message GET or SET (TYPE0) to sub , this messages have flow control system. 
 it's similar to window but simple so Sub have to resposne ack messages that sometimes includes datas to main.
 Sub can send messages to main but this don't have flow control, only report.  (TYPE1)


요즘 주석을 영어로 쓰려고 하는 노력을 하고 있어서 그러니, 틀려도 이해를 해주시기 바람

  • Message Types 구현 방법


- For Default Message (TYPE-0)


****** TYPE-0   (General Type, M->S or S->M)
------------------------------------------------------------
    0      1     2          3        4   [  5     6     7    ]->LENs  Except SEQ, 
   ID0    ID1   TYP        LENs     SEQ  [  CMD   DAT0  DAT1 ]->LENs  CMD and DATAs.   
-----------------------------------------------------------  
  0xEA  0x57   0x10-SET   0x03     0x01 (M->S)  odd number.         --> checksum 
               0x11-GET                                             --> checksum 

         0x20-ACK            0x02 (S->M)  even number


IDs    : Preamble 0xEA 0x57  
TYP    : Type-0

     (M->S)
    MSG_DAT_TYP_SND_SET OR
    MSG_DAT_TYP_SND_GET     
   
  ** two commands have to receive ACK with data or without it. 

        (S->M)   
   MSG_DAT_TYP_ACK  

SEQ    : Sequence Number between Main and Sub. 

LENs   : Lens between CMD and DATs

CMD    : MSG_CMD_T is below ******


- For Report Message (TYPE-1)

This Message is Only for Reporting Main so Do not need SEQ. 

******  TYPE-1  (For Report Type, S->M ) 
-------------------------------------------------------------
   0       1      2          3     [ 4       5     6    ]->LENs
  ID0     ID1    TYP        LENs   [ CMD   DAT0   DAT1  ]
-------------------------------------------------------------
 0xEA    0x57   0x31-RPT    0x03

IDs    : Preamble 0xEA 0x57  
TYP    : Type 
SEQ    : Sequence Number between Main and Sub. 

LENs   : Lens between CMD and DATs

CMD    : MSG_CMD_T is below **** 



1.3 결론 

현재 이 버전은 안정적으로 잘돌아가고 있으지만 사실 파싱하는 부분은 개선을 해나가야 할 것 같다.
실시간으로 빠른 모터제어와 다른 기능들을 제어를 하고 있어 괜찮게 구현을 한 것 같지만, AT Command 방식이 쉽고, 구현하기 더 좋은 것 같다.

12/14/2015

AVR Timer

1. ATmega128A Timer 

Timer를 사용하는 이유는 다양하겠지만, 기본 Timer 와 추가 Timer를 사용하고 있으며,
기본 Timer는 일정 간격으로 Main 함수의 여러 기능의 함수를 Poling 방식 호출하는 데 사용하고 있다.
Linux의 일종의 HZ 설정 , 즉 jiffies 기능이다

기본구성을 처음 Timer 없이 Polling으로 Main 함수를 구현 했으며, 필요한 부분은
Delay를 사용을 했으나, 각 interrupt의 성능저하의 문제를 일으켜 delay대신 Timer로 변경하게되었다.

   http://www.elecrom.com/2008/02/12/avr-tutorial-2-avr-input-output/

2. TIMER의 기본구성 

AVR128은 Timer는 4개의 Timer로 구성이 되어있으며, 8bit와 16bit 각각 2개씩 구성이 되어있다.
그리고, 이 Timer는 많은 기능을 가지고 있어 나의 경우는 Timer로 밖에 사용하지 않았기에 다른 기능은 별로 중요하지 않았다.


  • 아래와 같이, Timer 관련핀들

  1. T1,T2,T3        :  외부의 별도의 Crystal를 사용하여 이를 Timer로 이용. 
  2. ICP1,3           : 외부의 신호 이용하여 Timer로 이용하는 것 같다. 
  3. OC0,OC1A 등 : 내가 설정한 값에 도달하면 이를 알려준다(비교기)
OCx관련된 핀으로  PWM 기능으로 사용한다.
그러므로, 만약 PWM기능이 필요없다면, 사용할 필요가 없을 거 같다.



Timer는 기본적은 PWM과 동작이 가능하며, 여러가지 모드를 제공을 한다.
현재 정확히 모든기능을 모두 사용을 해보지 못하고 테스트를 해보지도 못했다.

  • 제공모드
  1. Normal Mode
  2. Clear Timer on Compare Match (CTC) Mode
  3. Fast PWM Mode
  4. Phase Correct PWM Mode
  5. Phase and Frequency Correct PWM Mode

하지만, 내가하는 일은 PWM을 사용하는 일이 아니기에 필요가 없지만, PWM Motor 제어라든지 이때 사용하면 적합할껏 같다.


  • 확인 Register


  1. TIFR/ETIFR       :  Flag 설정
  2. TIMSK/ETIMSK  : Interrupt 설정






  • 16bit timer의 구성 




  • 8bit timer 기본정의



TOP은 고정값 0XFF이외에도 OCR2에 저장된 값에 의해서도 사용이 가능하다. (유저셋팅)


  • 16bit timer 기본정의


TOP은 고정값, 0xFF, 0x1FF,0x3FF  혹은 OCRnA의 ICRn에 저장된 값에 의해 변경이 가능














cbi(TCCR1A,WGM10);
sbi(TCCR1A,WGM11);
sbi(TCCR1B,WGM12);
sbi(TCCR1B,WGM13);











  1. TOVn Flag Set on (Timer/Counter Overflow Flag) : Timer interrupt 발생 시점  
  2. Update of OCRnx at : OCRnX Register를 Update 해주는 시점 
  3. TOP : 위 의 정의 참조 
  4. BOTTOM: 위 정의 참조 
  5. MAX: 위 정의 참조 


위 도표를 보면,
예를 들면, Mode 14 , Fast PWM 일 경우, TOP에 ICRn로 유저가 설정하고
그 TOP이 TOV에 적용이 된다. 그래서, User Timer로 사용이 가능하다.
15도 동일 할 것이다.




  • 8bit timer






  • 16bit Counter  , 8bit는 유사함




  • ICP





  • OCP



아래와 같이 library를 사용해서 간단히 Timer를 쉽게 구현했다.

 timer1Init();
 timer1SetPrescaler(TIMER_CLK_DIV1024); // 11059200/1024 = 10800 HZ Tick . 
 timer1PWMInitICR(TIMER_DIV_VAL);       // 10800/1080 = 10Hz , 100ms  this timer is 16bit and  (timer 1) 
 timerAttach(TIMER1OVERFLOW_INT,setHandler);        // timer handler, 

   timer3Init();
 timer3SetPrescaler(TIMER_CLK_DIV1024);            // 11059200/1024 = 10800 HZ Tick . 
 timer3PWMInitICR(TIMER_DIV_VAL);                  // 10800/1080 = 10Hz , 100ms  this timer is 16bit and  (timer 3) 
 timerAttach(TIMER3OVERFLOW_INT,Timer2Handler);    // Timer2Handler


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


10/13/2015

ATMEGA-128A 기본정보 및 ISP 지원여부

1. 개발환경  

AVR은 오랜된 MCU이며, 인터넷에 AVR 관련자료가 너무 많기에 찾는것은 상당히 고민 될것이며,
오래전에 사용했던 경험이 있어 이전의 기억으로 컴파일러도 제각각으로 였던걸로 기억이 되어 관련자료를 다시 검색했다.
관련 IDE TOOL은 AVR STUDIO에서 제공해주는 TOOL이 있으며, 타사에서 제공해주는 존재 한다
나의 경우는 ARTMEL사에서 제공하는  것으로 결정했으며 아래와 같이 사용하기로 했다.

1.1 AVR 개발환경 
  • 개발툴               :  AVR STUDIO 4.19
  • CROSS COMPILER:  GCC
  • ISP  Driver          :  PL2303_Prolific_DriverInstaller_v1.5.0

1.2 개발보드구성
  • AVR128A 구성된 HW Board 2개  ( Main Board 와 Sub Board) 
  • Serial로 Data 통신을 함. 

2. ATMEGA-128A 기본정보 

8bit 마이컴이며, Flash 와 EERPOM , SRAM을 포함하고 있어 , 다른 메모리 디바이스가
별도로 필요 없으며, CPU가 많은 예제소스를 제공하기에 다루기가 쉬우며, JTAG도 지원한다
그리고, 별도의 크리스탈로 없이 동작이 된다고 하지만 나의 보드 경우 Serial의 에러율문제인지 별도의 크리스탈을 사용한다.
아마도 성능문제로 외부 Clock을 사용하는 것 같다.

2.1 기본 정보 
    
A.  AVR128A Datasheet 및 TOOL 정보         

  http://www.atmel.com/devices/ATMEGA128A.aspx
         
  *AVR 관련 Series 정보
  http://www.atmel.com/products/microcontrollers/avr/megaAVR.aspx

B.  AVR128A 관련 한글정보

  http://cafe.naver.com/circuitsmanual/113706
  http://cafe.naver.com/circuitsmanual/16709


C. ATmega128A의 기본구성 



D. ATmega128A의 의 Block Diagram 
  • SERPROG :   Serial ISP Interface 부분  (PEN,  PDI, PDO, SCK , SPI Interface )
  • Timer 4개 :  TC0,3 구성 ( OCxXX: 비교 Interrupt, Tx: Counter로 사용, ICPx:  Input Capure)

                 

3. AVR STUDIO 6.2 이상 지원여부

처음 개발할때 AVR 개발 TOOL을 AVR STUDIO 6.2를 사용했지만, ISP의 지원문제로 인하여
4.19로 변경을 하였다.
ToolChain은 이미 포함이 되어있으므로, 다른 IDE를 설치필요가 없고 아래 와 같이 그밖의 기능들은
Tools -> Extension Manager 를 이용하여 기능을 확장하자

  • Arduino IDE for Atme Studio  
  • Atmel AVR 32bit GNU Toolchain Version 
  http://www.atmel.com/tools/STUDIOARCHIVE.aspx
  http://blog.daum.net/ledpark/20


참고로 AVR STDUIO 6.2는 개별로 크로스 컴파일러인 GCC를 별도로 설치해 줘야한다.
  1. Tools->Add Target    현재 잡힌 Port 추가 
  2. Tools->Device Programming 실행 




3.1 AVR USB ISP 문제사항정리

  • ERROR Message 관련 
    Unable to connect to tool STK500
    ModuleName: TCF (TCF command: Tool:connect failed.)
    The signature of the attached tool is AVRISP_2, which is unexpected.

    만약 저처럼 AVR STUDIO 6.2에서 아래의 메세지가 계속나올경우,



  • USB ISP AVR STUDIO 6 지원여부 확인
  아래는 내가 사용하는 USB ISP이며 관련 Driver 와 간단한 설명이다.

  http://avr128.com/40
  http://whiteat.com/pAVRISP

  나의 USB ISP가 AVR STUDIO 6에서 지원이 되지 않아, 구입업체에  문의내용이다.
            
  http://whiteat.com/index.php?mid=QnA&category=59053&document_srl=227224


   ***결론 AVR STUDIO 6 Version 이상  미지원


  • AVR USB ISP 추가확인사항
아래의 관련내용은 USB ISP의 Firmware를 사용하는데, firmware version을 변경을하면
AVR Stduio 6을 사용하는 것 같다.
하지만, 나의 USB ISP Chip과 모양다르며, 구입시 반드시 참고하시고 이 USB ISP로 구입하시기 바랍니다. 

  firmware의 version에 따라 AVR Studio의 동작 버전도 다르다고 한다.  
  (firmware to version 1.07 or later 이상을 사용해야한다고 한다.)


  추가사항
  XML을 추가
  https://www.pololu.com/docs/0J36/3.b.1

8/31/2015

AVR-ATMEGA-128A

1. 개발환경

ATMEGA-128A는 8bit Micom으로 내부 Flash와 EEPROM 및 SRAM을 포함하고 있으며,
ISP (In-System Programmable)를 이용하여 쉽게 Flash가 가능하다.

ISP는 ATMEGA-128A의 SPI Interface  연결 되어있으며, 이는 USB Device Chip과 SPI호환이 되는 CHIP이 연결이 되어 쉽게 개발이 가능하다.
PC는 USB Driver만 있다면, Flashing 과 Debugging이 쉽다.

  • AVR128A Datasheet 및 TOOL 정보 
  http://www.atmel.com/devices/ATMEGA128A.aspx
  http://rottenapp1e.tistory.com/36


  • 전자공작 까페 ( AVR 및 STM정보 확인)
  http://cafe.naver.com/circuitsmanual/113706
  http://cafe.naver.com/circuitsmanual/16709


설치하며, ToolChain은 이미 포함이 되어있으므로, 다른 IDE를 설치필요가 없다.
그 밖의 IDE는 Tools -> Extension Manager 를 이용하여 기능을 확장하자

  • Arduino IDE for Atme Studio 
  • CodeVisionAVR C compiler  
  • Atmel AVR 32bit GNU Toolchain Version 
  http://www.atmel.com/tools/STUDIOARCHIVE.aspx
   

  • CodevisionAVR
  http://www.codevision.be/atxmega-sbc-with-lcd/xg7100-atxmega-sbc


2. AVR STUDIO 사용법

기본적으로 필요한 패키지 (Visual Studio관련 패키지 및 관련패키지) 다 설치하면, 큰 어려움 없이 쉽게 설치가 가능하다.
Project를 있어야, Build 기능을 사용가능하다.

STK500 이용정보
  http://blog.daum.net/ledpark/20

AVR IDE Tool 정보
  http://binworld.kr/3

AVR128 PinMap 및 기본정보
  http://goni2.tistory.com/6