AtmelStudio와 USBtinyISP를 이용하여 AVR(AtMega,Attiny)의 개발 환경을 창조하다

개시하다


Arduion의 개발 환경은 매우 편리하지만 인터넷에 존재하는 AVR의 C 코드와 구성 요소 코드를 이용하면 곤란하다.C 사이즈면 이식할 수 있지만 어셈블리면 어쩔 수 없어요.
인터넷상의 AVR 자산을 효과적으로 활용하기 위해 저는 Atmel Studio에서 개발하고 USBtiny ISP에 Arduion의 전통적인 개발 환경을 기록하고 사용하지 않으려고 합니다.
문말에 Fuse 설정 방법을 추가합니다.가필2018-08-22
AtMega328p의 상황을 추가했다.2018-10-14

준비물


Atmel Studio


Atmel Studio 7
이제 Atmel Studio7로 위에서 다운로드할 수 있습니다.

USBtinyISP


AVR을 쓰는 라이터예요.ATTiny 2313A-PU를 사용하는 라이터는 Aliexpress로 U달러 정도입니다.

AVR


이번에는 Attiny 13A로 럭키를 진행해보겠습니다.

ArduinoIDE


아두노의 개발 환경도 필요하다.아두노의 개발 환경에 실제로 포함된 AVRDUDE.exe 를 사용합니다.아두노가 없다면 AVRDUDE를 사용할 수 있는 환경이 필요하다.

Atmel Studio 설치


여기에는 혜택이 기재되어 있지 않다.단지 설치 프로그램에 따라 설치한 것이다.
프로젝트의 제작과 절차의 제작에 관해서 나는 망설인 적이 없어서 먼저 이야기하지 않겠다.

USBtiny ISP에 쓰기


어셈블리 또는 C 코드로 컴파일을 완료하면 HEX 파일이 만들어집니다.AVR에 기록된 단계를 기록합니다.
USBtiny ISP는 Atmel의 표준 도구로 인식되지 않기 때문에 External Tool로 사용됩니다.생성된 HEX 파일을 매개변수로 전송하려면 exe 를 호출합니다.

External Tools...등록


메뉴에서 "Tools"-> "External Tools..."탭

대화 상자.

다음과 같이 설정합니다.

Title


원하는 이름을 설정합니다.

Command


AvrDude.exe에 대한 경로를 설정합니다.나의 환경은 아래와 같다.
Command
C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude.exe

Argument


Argument
-c usbtiny -C "C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf" -p t13 -v -v -v -U flash:w:"$(TargetDir)$(TargetName).hex":i
옵션 설정
"-c"
USBtiny ISP를 사용하기 때문에 "-c"옵션에서 "usbtiny"를 설정합니다.
"-C"
이것은 이번에 가장 고민되는 옵션이다.이것을 설정하지 않으면 오류가 발생하지만, "avrdude. conf"에서 찾을 수 없는 오류를 발견하려면 시간이 필요합니다.나는 이유를 알았기 때문에 너에게 전보를 지정해 주겠다.
"-p"
AVR의 종류를 설정합니다.AvrDude의 설명서에 기재되어 있으므로 여기서 지정한 AVR을 참조하십시오.
2.1 Option Description
"-U"
우리는 특별히 난처할 필요가 없다.
-U
-U flash:w:"$(TargetDir)$(TargetName).hex":i
이 기록대로라면 문제없다.

Initial Directory


AvrDude의 경로를 지정했습니다.
Command
C:\Program Files (x86)\Arduino\hardware\tools\avr\bin

Use output window


선택하면 AvrDude의 출력이 AVR Studio의 Output window에 표시됩니다.

연결선


USBTinyISP 커넥터

Attiny13A 플러그 구성

ISP 커넥터<-->Attiny
PIN 1(MISO)<----> PIN6 (MISO)
PIN 2(VCC) <----> PIN8 (VCC)
PIN 3(SCK) <----> PIN7 (SCK)
PIN 4(MOSI)<----> PIN5 (MOSI)
PIN 5(RST) <----> PIN1 (RESET)
.
쓰기 어댑터를 편리하게 만들었습니다.

쓰기


설정이 완료되면 Tool에서 설정한 항목을 클릭하면 쓰기 시작할 수 있습니다.

결과는 Output Window에 표시됩니다.

토치카


L 해볼게요.delay_ms () 를 사용할 때는 동작 주파수를 "F CPU"로 설정해야 합니다.또 이것을 설정하면 퓨즈 설정도 했다.거짓말이었어Fuse 설정을 할 수 없습니다. (delay계의 함수가 수정된 것 같습니다.) 문장 끝에 Fuse 설정 방법을 추가합니다.가필2018-08-22
L-chika.cpp
#include <avr/io.h>
#include <util/delay.h>

#define LED          PB1
#define DELAY        2500

// For delay.h
#ifndef F_CPU
#define F_CPU   9600000     // 9.6MHz
#endif


int main(void)
{
    /* Replace with your application code */
    DDRB |= _BV(LED);
    while(1)
    {
        PORTB ^= _BV(LED);
        _delay_ms(DELAY);
    }
}
컴파일 후
Outputwindow
------ Build started: Project: GccApplication1, Configuration: Debug AVR ------
Build started.
Project "GccApplication1.cppproj" (default targets):
Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').
Target "CoreBuild" in file "C:\Program Files (x86)\Atmel\Studio\7.0\Vs\Compiler.targets" from project "D:\******\Documents\Atmel Studio\7.0\GccApplication1\GccApplication1\GccApplication1.cppproj" (target "Build" depends on it):
    Task "RunCompilerTask"
        Shell Utils Path C:\Program Files (x86)\Atmel\Studio\7.0\shellUtils
        C:\Program Files (x86)\Atmel\Studio\7.0\shellUtils\make.exe all --jobs 8 --output-sync 
        make: Nothing to be done for 'all'.
    Done executing task "RunCompilerTask".
    Task "RunOutputFileVerifyTask"
                Program Memory Usage    :   68 bytes   6.6 % Full
                Data Memory Usage       :   0 bytes   0.0 % Full
    Done executing task "RunOutputFileVerifyTask".
Done building target "CoreBuild" in project "GccApplication1.cppproj".
Target "PostBuildEvent" skipped, due to false condition; ('$(PostBuildEvent)' != '') was evaluated as ('' != '').
Target "Build" in file "C:\Program Files (x86)\Atmel\Studio\7.0\Vs\Avr.common.targets" from project "D:\******\Documents\Atmel Studio\7.0\GccApplication1\GccApplication1\GccApplication1.cppproj" (entry point):
Done building target "Build" in project "GccApplication1.cppproj".
Done building project "GccApplication1.cppproj".

Build succeeded.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
쓰기
Output
avrdude.exe: Version 6.3, compiled on Jan 17 2017 at 12:00:53
             Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
             Copyright (c) 2007-2014 Joerg Wunsch

             System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf"

             Using Port                    : usb
             Using Programmer              : usbtiny
avrdude.exe: usbdev_open(): Found USBtinyISP, bus:device: bus-0:\\.\libusb0-0001--0x1781-0x0c9f
             AVR Part                      : ATtiny13
             Chip Erase delay              : 4000 us
             PAGEL                         : P00
             BS2                           : P00
             RESET disposition             : dedicated
             RETRY pulse                   : SCK
             serial program mode           : yes
             parallel program mode         : yes
             Timeout                       : 200
             StabDelay                     : 100
             CmdexeDelay                   : 25
             SyncLoops                     : 32
             ByteDelay                     : 0
             PollIndex                     : 3
             PollValue                     : 0x53
             Memory Detail                 :

                                      Block Poll               Page                       Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
               eeprom        65     5     4    0 no         64    4      0  4000  4000 0xff 0xff
                                      Block Poll               Page                       Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
               flash         65     6    32    0 yes      1024   32     32  4500  4500 0xff 0xff
                                      Block Poll               Page                       Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
               signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
                                      Block Poll               Page                       Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
               lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
                                      Block Poll               Page                       Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
               calibration    0     0     0    0 no          2    0      0     0     0 0x00 0x00
                                      Block Poll               Page                       Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
               lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
                                      Block Poll               Page                       Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
               hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00

             Programmer Type : USBtiny
             Description     : USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/
avrdude.exe: programmer operation not supported

avrdude.exe: Using SCK period of 10 usec
CMD: [ac 53 00 00] [ac 53 00 00]
CMD: [ac 53 00 00] [ac 53 00 00]
avrdude.exe: initialization failed, rc=-1
             Double check connections and try again, or use -F to override
             this check.


avrdude.exe done.  Thank you.
이것으로 쓰기를 끝냅니다.

끝말


도구 설정에 대한 고민은 있지만 끝내 보면 간단한 일이다.
참고가 됐으면 좋겠어요.
2018/08/10 Ikeda

Fuse 쓰기 방법 추기


Fuse 설정은 자동으로 작성되지 않습니다.나는 Delay계의 함수가 정확하게 작동하는 것 같아서 쓴 줄 알았다.미안합니다.끊기는 빈도가 느려서 도대체 어떻게 된 일인지 찾다가 퓨즈 설정에 갔어요.표준은 낮은 바이트가 6A이기 때문에 동작은 1.2MHz이다.(인터럽트가 9.6MHz인 것으로 가정)
Fuse 설정 및 쓰기 방법을 기록합니다.
주파수 설정을 변경하려면 Fuse의 낮은 바이트에 다음과 같은 내용을 설정하십시오.
9.6MHz 액션: 0x7A(표준)
1.2Mhz 액션: 0x6A
Avrdude는 파일의 데이터를 쓰기 때문에 우선Fouse의 낮은 바이트에 쓸 파일을 준비해야 합니다.여기에는 Intel 형식으로 기재되어 있습니다.(옵션 H에서 0x6A를 쓸 수 없기 때문)
lFuse(9.6Mhz).txt
:010000007A85
:00000001FF
lFuse(1.2Mhz).txt
:010000006A95
:00000001FF
도구를 추가합니다.

Argument 설정(기타 설정은 위와 동일)


Argument
-c usbtiny -C "C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf" -p t13 -U flash:w:"『lFuse(9.6Mhz).txtもしくはTXT:lFuse(1.2Mhz).txtのパスをここへ記載』":i
가필2018-08-22

AtMega328p의 경우


기본적으로 같지만 주파수 결정은 외부 수정에 의해 결정되는 경우Fuse 설정이 필요 없습니다delay_ms()는 FCPU만 설정하면 됩니다.

L천화(AtMega328P)


L 해볼게요.delay_ms () 를 사용할 때는 동작 주파수를 "F CPU"로 설정해야 합니다.Util/delay.H에서 Define이 필요합니다.
L-chika.cpp
#ifndef F_CPU
#define F_CPU   16000000UL      // 16MHz
#endif

#include <avr/io.h>
#include <util/delay.h>


int main(void)
{
    DDRB |= (1<<PB0); // PB0 (PIN8 in Arduino UNO) as outputs (LED)

    /* Replace with your application code */
    while (1) 
    {
        _delay_ms(1000);
        PORTB |= (1<<PB0);
        _delay_ms(1000);
        PORTB &= ~(1<<PB0);
    }
}

쓰기(AtMega 328P)


도구 설정은 다음과 같습니다. -다만 p의 옵션이 m328p로 바뀌었다.
TOOL:Tool for AtMega328P
-c usbtiny -C "C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf" -p m328p -v -v -v -U flash:w:$(TargetDir)$(TargetName).hex:i
다 모았어.

좋은 웹페이지 즐겨찾기