일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- cancellationtoken
- iscancellationrequested
- C++
- Avr
- 아두이노 통신
- 객체지향
- flag 변수
- STL
- STM32
- GPIO
- 알고리즘
- 백준
- Mega2560
- STM32CubeIDE
- STM32 라인업
- SPXL
- c#
- 아두이노
- atmega
- S&P500
- 코딩테스트
- 코테
- NUCLEO-F103RB
- 정렬
- Microchip Studio
- sort
- 정렬알고리즘
- CubeIDE
- STM32 개발환경
- STM32 IDE
- Today
- Total
뽕구의 개발일지
[AVR] Arduino 벗어나기 (졸업하기) 본문
Arduino IDE 벗어나기 (졸업하기)
저는 응용 프로그램 개발자인데, 회사에서 MCU를 다뤄야할 업무가 생겼습니다. 팀 내에서 유일하게 아두이노 Mega 보드를 써본 경험이 있어서 서브 업무로 당첨되었는데, 학부생때 Arduino IDE로만 아두이노를 다뤄본게 전부여서 DigitalWrite() 같은 아두이노 라이브러리 단에서 코드 짜집기하는 수준이었습니다ㅠ
문제는 여기서 발생되었습니다.
nano 초 단위로 디지털 신호를 발생시켜라.
아두이노 라이브러리로 딜레이를 줄 수있는 최소 단위가 1 마이크로초 였기 때문에, 앞이 막막했습니다. 구글링도 해보고.. 1마이크로초 자체가 아두이노에서 보장이 안된다는 글도 있고.. 아두이노가 산업용으로 적합한가 라는 생각도 들었습니다. 오실로스코프도 찍어보고, 구글링도 해보면서 연구아닌 연구를 하게 되었습니다.
이때 맨땅에 헤딩하면서 이해된 개념이 MCU의 Register와 Clock 속도의 상관관계였습니다. 물론 전공자이니 각각의 개념은 알고 있었지만 이 개념들이 종합되어 머리에 쏙 들어온 순간이었습니다.
아두이노 보드의 경우 16MHz 크리스탈이 달려있어 8Bit 명령어를 초당 16,000,000개 처리할 수 있습니다.
이를 거꾸로 생각해보면 8Bit 명령어 1개가 처리되는 속도를 구할 수 있습니다.
1 / Clock 속도 = 1개 명령어 처리 속도
결론적으로 1개 명령어를 처리는 속도는 1 / 16,000,000 = 62.5 nano초 라는 계산 결과가 나왔습니다.
이 개념을 적용해 명령어 집합 Register에 접근하여 nano 초 단위로 디지털 신호를 발생시킬 수 있었습니다.
오실로스코프로 파형까지 찍어보았고, Pusle 폭이 62.5 nano초임이 검증되었습니다.
물론 위에서 언급한 개념을 코딩에 적용할 때 Arduino IDE에서도 가능하지만, IDE 자체적인 기능이 단순한 면이 있고, 기본적으로 아두이노 라이브러리를 기반으로 개발된 IDE이기 때문에 라이브러리 단에서 개발하는데 특화되어 있다고 느껴집니다. 결정적으로 구버전의 경우 CodeLens와 같은 기능도 없고요.
때문에 Arduino IDE를 벗어나서 Visual Studio 기반의 Microchip Stduio를 사용해 C언어 레벨에서 코딩하여 아두이노 Mega 보드에 실장되어 있는 ATMega 2560의 기능을 모두 뽑아보려고 합니다. (이를 AVR 코딩이라고도 하더라고요.)
단, 신호 폭이 밀리 초 단위로 간단한 5V 신호발생이 목적이라면 당연히 아두이노 라이브러리를 써서 빠르게 개발하는 것이 생산성 면에서는 뛰어날 수 있으니 상황에 맞게 IDE를 현명하게 선택하면 좋을 것 같습니다.
'개발 일지 > AVR' 카테고리의 다른 글
[AVR] 개발환경 구축하기 2 - Microchip Studio 설치 (0) | 2023.08.07 |
---|---|
[AVR] 개발환경 구축하기 - Arduino IDE (0) | 2023.08.07 |
[AVR] MCU 제품군 이름 해석해보기 (0) | 2023.08.07 |
[AVR] Atmel / AVR / Microchip (0) | 2023.08.07 |