Arduino에서 마이크로 컨트롤러를 직접 사용하는 방법은 무엇입니까?


19

Arduino 프로젝트를 진행하고 있습니다. Arduino를 사용하여 모든 것이 작동하면 Arduino를 사용하지 않는 솔루션으로 옮기고 싶습니다. 즉, Arduino 보드를 사용하지 않고 마이크로 컨트롤러를 사용하고 싶습니다. 이렇게하면 차폐 솔루션이없는 단일 보드를 사용할 수 있습니다.

나는 브레드 보드에 나만의 Arduino를 만드는 방법이 있다는 것을 알고 있지만 실제로 내가하려는 것은 아닙니다.

어떻게 해야할지 모르겠습니다.

더 나은 옵션이 없으면 Arduino에서 사용하는 ATmega328을 사용하려고합니다. 개발 도구가 무료로 제공되거나 최소한 비싸지 않다는 것을 알고 있습니다.

이 질문의 목적을 위해 회로에 + 5V를 공급할 수 있다고 가정하십시오.

첫 번째 질문은 MCU를 프로그래밍하는 방법입니다. 두 가지 옵션이 있다고 생각합니다.

  1. 프로그래머를 구입하고 MCU를 프로그래밍 한 다음 칩을 회로에 넣으십시오.
  2. 회로 내 프로그래밍 지원을 포함하도록 회로를 설계하십시오.

옵션 # 1을 사용하면 회로에 프로그래밍 된 칩을 삽입하는 것만 큼 간단하다고 가정합니다. 나는 다른 것이 필요하지 않습니다. 물론 소프트웨어를 변경하는 것은 불편합니다.

그러나 옵션 # 2의 경우 필요한 것이 확실하지 않습니다. 내가 읽은 것부터 프로그래밍 케이블과 보드의 커넥터 (어떤 유형)가 필요하다고 생각합니다. 그런 다음 커넥터를 ATmega의 특정 핀에 올바르게 연결합니다.

어느 쪽이든, 나는 Atmel 스튜디오가 필요합니다.

둘째, 전원 공급 장치 외에 Arduino에 내가 절대적으로 필요한 것이 있습니까? 리셋 스위치일까요?


2
Arduino를 사용하여 AVR을 프로그래밍 할 수 있습니다. 개인적으로 IDE 대신 명령 줄 도구와 makefile을 사용하고 싶습니다.
jippie

1
이 질문은 Arduino Stack Exchange에 더 적합 할 수 있습니다. arduino.stackexchange.com 이 공개 베타에 지금
akellyirl

4
그러나 내 목표는 arduino가없는 디자인입니다.
Rick

"아두 이노에 내가 꼭 필요한 것이 있습니까?" UART (일련의 직렬 포트) 핀이 필요할 것으로 생각되며 디버깅에 편리합니다.
vvy

Atmel 스튜디오는 절대 필요하지 않습니다. 커맨드 라인 (및 텍스트 편집기)에서 칩을 프로그래밍합니다. 대형 프로젝트에 부여하지만 아트멜 스튜디오는 확실히 쉽게 할 것이다
크리스 Laplante

답변:


10

멋진 Atmel 세계에 오신 것을 환영합니다. 취미와 전문적인 경험을 바탕으로 질문에 대한 답변을 드리겠습니다.

그러나 인-서킷 프로그래밍을 방해하지 마십시오. 완벽한 코더가 아니라면 프로그래밍 할 때마다 칩을 제거하는 것이 악몽입니다. AVRISPmkII를 엔트리 레벨 프로그래밍 도구로 추천합니다. 단점은 지원되는 하드웨어 디버그가 없다는 것입니다. 대안은 용이지만 그 경험은 없습니다. JTAGICEmk3은 훌륭한 디버깅 도구라고 말할 수 있습니다.

Atmel 스튜디오는 프로그래밍에 좋습니다. 실제로 제가 가장 좋아하는 임베디드 개발 환경입니다. AVRDUDE 및 AVR-GCC와 같은 CLI 도구를 사용할 수 있지만 IDE가이를 처리합니다.

요약해서 말하자면:

프로그래밍 (쉽고 플러그 앤 플레이) 또는 DRAGON (어드바이스를 제공 할 수 없음)을 위해 AVRISP를 구입하십시오.

보드에서 ICSP 핀을 6 핀 이중 행 0.100 "헤더로 가져옵니다. 연결은 이 데이터 시트에 설명되어 있습니다.

리셋 스위치는 필요하지 않습니다.


1
EvUSBasp로 훌륭한 결과를 얻었습니다.
Ignacio Vazquez-Abrams

보드에 ICSP 핀을 가져온 후에는 회로 내 프로그래밍 전용으로 사용해야합니까, 아니면 그래도 GPIO 핀으로 사용할 수 있습니까?
Ricardo

2
SPI와 기능을 공유하므로 GPIO로 사용할 수 있습니다. 프로그래머는 칩을 리셋 한 후 통신합니다.
HL-SDK

1
마이크로 컨트롤러 프로그래밍 시작 에 관한 관련 튜토리얼 시리즈 . 그들은 AVRMega를 사용하고 ISP를 배선하는 과정과 고급스러운 C 코드를 통해 LED를 깜박입니다.
MDMoore313

1
@ HL-SDK는 RESET 핀만 ICSP 전용으로 사용해야하지만 다른 핀에도주의가 필요합니다. 즉, 입력 핀이 아닌 출력 핀으로 사용되어야합니다. ICSP 모드에서 외부 회로에 의해 방해받지 않아야하며, 이에 부착 된 것은 프로그래밍 트래픽이 전송하는 임의의 신호 조합에 불리하게 반응하지 않도록 설계되어야합니다.
microtherion

10

한 번에 "졸업"할 필요는 없습니다. 내가 변환 한 방법은 다음과 같습니다.

시작하기 위해 Arduino를 계속 사용했지만 Arduino 라이브러리에 대한 호출을 한 번에 한 줄씩 레지스터 읽기 및 쓰기로 변환하여 내 프로그램이 여전히 작동하는지 확인했습니다. 이 방법으로 레지스터를 사용하는 데 익숙해졌으며 Arduino 방식으로 근본적으로 불 연속적이지 않음을 알았습니다. digitalWrite ()와 같은 Arduino 함수는 레지스터를 조작하기 만하면 스케치에서 직접 읽고 쓸 수 있습니다.

다음 단계는 브레드 보드에 ATTiny 85를 배치하고 ISP로 Arduino와 함께 프로그래밍하는 것입니다 ( http://highlowtech.org/?p=1695 ). 브레드 보드 전원 공급 장치를 구입하고 ATTiny의 내부 발진기를 사용하는 경우 배선이 거의 필요하지 않습니다. Arduino IDE를 사용하여 컴파일했지만 가능한 한 레지스터를 계속 사용했습니다.

그런 다음 무료 Crosspack 명령 줄 도구 체인을 설치하고 깜박 거리는 프로그램을 컴파일했습니다. 더 많은 시행 착오 끝에 Avrdude로만 ATTiny를 프로그래밍하고 Arudino 생태계 외부에 머물 렀습니다.

명령 행 도구만으로 눈부신 습득을 마치면 Arduino에서 벗어날 수 있습니다. 다양한 주변 장치와 레지스터를 살펴보면 곧 자연 스러울 것입니다.

이 모든 후에, 나는 종종 더 빠르기 때문에 Arduino를 자주 사용합니다. 레지스터 설명을 이해하는 것이 다소 짜증나는 것을 발견했습니다. 필요하지 않은 경우에는 그렇게 할 수 없습니다. 그래도 방법을 아는 것이 좋습니다.


8

위의 HL-DSK의 의견에 동의합니다. 추가 비용을 지출하고 디버그 기능을 갖춘 프로그래머를 얻었습니다. 나는 digi-key에 약 $ 110의 JTAGICE3을 사용합니다.

여기 에서 ISP 프로그래밍에 대해 읽어보십시오 . SPI 연결을 해제하는 방법을 보여줍니다. 칩의 SPI 연결은 ATmega 데이터 시트에 있습니다. MISO / MOSI / SCK / RESET 핀은 2 페이지를 참조하십시오. 프로그래머는 리셋 라인을 제어 할 수 있어야합니다. 프로그래머가 분리 된 후 칩이 작동하도록 리셋 라인에 풀업 저항을 사용해야합니다.

여기에 2x3 헤더를 넣으 십시오 . 또는 이탈 헤더를 사용하여 직접 만들 수도 있습니다.


2
두 번째로 디버그를 지원하는 프로그래머를 얻습니다. 이번 달 초 저는 사전에 저수준 경험이없는 PIC32 프로젝트에 대해 깊이 빠져 들었습니다. 다른 사람이 가장 낮은 수준의 비트 뱅킹 기능을 작성하더라도 내부에서 볼 수있는 모든 것이 단일 빨간색 / 녹색 LED 인 경우 내 문제가 어디에 있는지 파악하는 것이 얼마나 어려운지 생각하고 싶지 않습니다.
Dan Neely

전문적인 도구가 있으면 다시는 돌아갈 필요가 없습니다.
Matt Young

7

Arduino와 베어 ATmega328의 차이점은 두 가지뿐입니다. Arduino 부트 로더 및 Arduino 라이브러리 라이브러리를 사용하지 않고도 베어 C 또는 C ++로 Arduino를 코딩 할 수 있습니다. 대신 어셈블리를 사용할 수도 있습니다. 부트 로더를 사용하면 좀 더 복잡한 인서 킷 직렬 프로그래밍 (기본적으로 SPI)을 거치지 않고 직렬을 통해 새 코드를로드 할 수 있습니다.

표준 프로그래밍 라이브러리와 avr-gcc를 거의 모든 아이디어와 함께 사용할 수 있습니다. 다른 사람들의 말과 달리 Arduino를 코딩하는 것은 기본적으로 베어 마이크로 컨트롤러를 코딩하는 것과 비슷하며 일부 성능을 희생하여 편의가 추가됩니다.


4
그러나 Arduino 부트 로더와 라이브러리를 ATmega328과 함께 사용할 수도 있습니다.
Ignacio Vazquez-Abrams

@ IgnacioVazquez-Abrams는 맨 뼈 arduino, natch로 바뀝니다.
Passerby

5

사전 부팅 된 Atmega328P 칩을 구입 하여 Arduino를 프로그래밍하는 방법과 동일하게 FTDI 케이블 및 avrdude 로 회로 내에서 프로그래밍합니다. 나는 Eclipse IDE를 좋아하지만 Atmel Studio, Arduino IDE, emacs 또는 명령 줄에서 맨발로 원하는 환경을 사용할 수 있습니다.

이 보드는 프로그래밍, 전원 및 터미널 용 케이블을 사용하여 Hello 프로그램으로 테스트하기에 충분할 정도로 완성되었습니다. 여전히 전원 공급 장치가 필요합니다 -LM2936 초저 Quiescient 전류 전압 조정기 및 배터리 커넥터, 필자의 경우 프로젝트에 필요한 다른 온보드 구성 요소 및 오프 보드 연결 :

NotDuino

Arduino가 있으므로 Arduino를 사용하여 부트 로더를 설치하면 약간의 비용을 절약하고 프로그래밍되지 않은 칩을 사용할 수 있습니다. 멋진 파란색 핀아웃 라벨은 구내 요금을 낮추는 데 도움이됩니다! 16MHz 크리스털을 사용하지만 내부 발진기로 실행할 수 있으면 부품 수가 3 (xtal 및 2 개의 커패시터) 씩 줄어 듭니다.


2

하드웨어가 제공되고 소프트웨어가 C 언어 오버레이 인 Arduino에서 벗어나기 위해 몇 가지 제안을하고 싶습니다. 나는 사람들이 유용한 답변을 게시 한 것을 보았지만 나는 당신이 어디에 있었으며 약간 다른 일을 할 것입니다.

  1. 디버거를 선택하십시오. 디버거는 마이크로 컨트롤러뿐만 아니라 '단계별'처리, 특정 코드 줄에서 프로그램을 일시 중지하여 코드가 무엇인지 확인할 수있는 '브레이크 포인트'를 포함하는 디버그를 프로그래밍 할 수있는 기능을 제공합니다. ISP (In-Circuit Programming)는 직렬 인터페이스이며 3 핀을 사용하지만 양호하지만 초보자가 원하는 모든 기능을 제공하지는 않습니다. JTAG 인터페이스는 4 개의 핀을 사용하여 중단 점 및 항목 사용과 관련하여 기본적으로 모든 기능을 제공합니다. 사람들은 일반적으로 '상대적으로'설정하기가 더 쉽기 때문에 ISP에 더 의존합니다.하지만 JTAG를 묻는다면 설정하기 어렵지 않지만 개인 취향에 달려 있습니다. 그리고 디버그 와이어가 있습니다 디버그 와이어보다 ISP를 사용하기 때문에이 토론에서 건너 뛰고 싶은 인터페이스.
  2. ISP 및 JTAG 기능이있는 디버거를 구입하십시오. 나는 당신이 한 번 구매하지만 당신이 당신의 디자인을 변경하려는 경우 나중에 도움이 될 좋은 구매 생각합니다. AVR Dragon 또는 JTAGICE를 권장합니다. 둘 다 USB를 통해 PC에 연결하고 ISP와 JTAG를 제공합니다. JTAGICE는 AVR Dragon보다 약간 비싸지 만 AVR Dragon을 추천합니다.
  3. 대부분의 Atmel 마이크로 컨트롤러에는 ISP 기능이 있지만 JTAG는 없습니다. AT90S2313 또는 ATTINY 시리즈와 같은 소형 마이크로 컨트롤러는 크기가 작기 때문에 ISP 시리즈를 사용합니다. 그러나 몇 개의 LED를 깜박일뿐만 아니라 LCD 화면이나 키패드와 인터페이스를 원하거나 약간 더 큰 마이크로 컨트롤러를 사용하는 것이 좋습니다. 5V 전원을 사용하는 경우 ATMega8 또는 ATMega16 또는 ATMega128 (내 즐겨 찾기)을 권장합니다. ATMega16 및 ATMega128에는 ISP 및 JTAG 인터페이스가 있습니다.
  4. IDE에 관해서는 Code vision과 AVR Studio를 사용했지만 모든 요구를 충족시키는 Atmel Studio 6.0 이상을 사용하는 것이 좋습니다.

나는 당신이 당신의 마이크로에 깨끗하고 부드러운 인터페이스를 갖기 위해 스스로 배운 몇 가지 개략적 인 아이디어를 가지고 있습니다. 도움이 필요하면 알려주십시오.


1

정직한 조언

Arduino는 초보자를위한 것입니다. 여기에는 두 가지 방법이 있습니다.

방법 1 : 마이크로 컨트롤러 / 프로세서 작동 방식 이해 (권장되는 접근 방식)

아트멜 8051

즉, 마이크로 PC를위한 아키텍처 및 어셈블리 코드 (또는 베어 메탈)를 배우는 것을 의미합니다. 이를 위해 시작점이 필요한 경우 가장 간단한 아키텍처 및 어셈블리 명령어 세트를 가진 8 비트 마이크로 컨트롤러 인 Atmel 8051을 제안합니다. 다른 최신 32 비트 또는 64 비트 프로세서는 파생 된 형태의 아키텍처를 가지고 있습니다. 이 마이크로 컨트롤러는 좋은 출발점이며 많은 문헌을 이용할 수 있기 때문에 대학원 과정의 일부로 여전히 사용되고 있습니다.

ISP 보드를 만들기위한 키트가 판매됩니다 (프로세스, 납땜 구성 요소가있는 키트를 보드 키트에 완전히 조립 한 키트, IC 및 RS-232 케이블 / 소켓 만 있으면 개발 보드를 직접 구축 할 수 있습니다)

기술 수준이 낮기 때문에 모든 구성 요소가 저렴합니다.

방법 2 : 하드웨어 소프트웨어 접근 방식으로 이동

라즈베리 파이 비글 본 블랙

이것은 약간의 어셈블리에 빠져 들어 하드웨어보다 더 많은 소프트웨어로 전환하고자하는 사람들을위한 방법이다. ARM 프로세서를 사용하여 Raspberry Pi 또는 BeagleBoneBlack과 같은 다른 취미 보드로 옮기고 창의력으로 프로젝트를 시작하는 것이 좋습니다.


0

샌드 박스 라이브러리 및 환경을 사용하지 않고 Arduino 보드를 사용할 수 있으며 모든 것을 직접 프로그래밍 할 수 있습니다. 직렬 / uart를 통해 부트 로더를 사용하여 프로그래밍하려면 정상적으로 작동합니다. 그러나 대부분 / 모든 avr 부품은 다른 방법으로 프로그래밍 할 수 있으며, 부품을 재설정 상태로 유지하면 브릭 킹이 불가능합니다. arduino 또는 다른 마이크로 컨트롤러에서 뱅뱅을 조금이나 쉽게 맛볼 수 있습니다. sparkfun에는 spi 헤더가 분명한 arduino 및 non-arduino 보드 (예 : 32u)가 있습니다. ftdi의 라이브러리 또는 Linux와 함께 제공되는 ftdi 라이브러리를 사용하여 쉽게 bitbang 할 수있는 ftdi 브레이크 아웃 보드.

각 부분의 설명서에는 부팅 옵션 및 플래시 프로그래밍 옵션이 나와 있습니다. 그렇습니다. 일부 부품 만 구매하고 나만의 보드를 만드는 것은 어렵지 않습니다. 기존 브레이크 아웃 또는 간단한 평가 보드를 사용하고 필요할 때 복제 할 때까지 그렇게하지 않습니다. 내부 rc 발진기, 기본적으로 전원, 접지 및 프로그래밍 핀으로 부품을 시작하는 것이 이상적입니다 ...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.