https://github.com/hun7176/BIDOL_328
GitHub - hun7176/BIDOL_328: COSS project
COSS project. Contribute to hun7176/BIDOL_328 development by creating an account on GitHub.
github.com

여름방학에 참여한 co-week에서 되게 이 대회를 홍보를 많이 했었다. 엄청 큰대회인지, 이 스티커가 붙여진 물티슈를 나눠주시던데 5개정도 강제로 받은것 같다... IT 1호관 게시판에도 붙어있던데 홍보에 되게 진심인듯?
MCU면 atmega나 stm32정도 다뤄봤으니까 해볼 수는 있겠다고 생각했는데 이게 전국단위 모집이라 실력자가 많이 나올것 같아서 고민을 꽤나 했다. 결국 경험을 쌓자는 목표로 동아리 친구들 모아서 신청서를 제출했다.
신청자들이 많아서 예선을 따로 진행했는데, 예선부터 완제품을 만드는 프로젝트를 시키셨다.
제한된 자원 안에서 완제품을 만들고, 제품의 가격이 낮을수록 가산점, 난이도가 높을수록 가산점을 주었다.
난이도를 위해서 MCU는 atmega로 제한을 했는데, 요즘 8비트 mcu를 사용하는데가 거의 없는 추세라고 하지만은 그렇다고 stm32를 쓰면 수많은 HAL속에서 함수를 이어붙이는 블록코딩이 되어버리기 때문에(CUBE IDE가 너무 편하다..) 운영진들이 이런 결정을 내린 것 같다.
일단 하드웨어 선택부터 난관이 많았는데, 핀개수가 8개밖에 안되는 attiny모델을 선택하려고 했었다. 그런데 구현해야될 기능이 너무 많았고 자료가 너무 부족했다. 그리고 무엇보다 기능이 너무 적었다. 예를들어서 서보모터를 제어하기 위해서 PWM파형을 만들어야되는데, ATTINY에는 8비트 카운터밖에 없고 16비트 카운터가 없다.
16비트 카운터에서는 고속PWM모드를 사용해서 주기, DUTY Cycle을 설정하기 너무 쉬운데, 8비트는 그런것도 없다.
보드비용 1000원 아끼겠다고 코드의 길이랑 안정성을 포기하기보다는 그냥 328을 쓰기로 결정했다.


초기 프로토타입 회로.
led는 핀을 다 사용하기보다는 시프트레지스터를 사용하는 방식으로 했고 스위치는 전압분배회로를 간단하게 만들어서 회로를 구성했다.
오른쪽에 전압분배회로를 만들었는데, LM7805를 써서 MCU에는 5V가 들어가게 두었고, 사용할 모터 등의 외부 전원은 12V를 그대로 사용하게 두었다.
2024년 9월달에 제작한 작품.



완성된 회로.
워낙 SW적인 기능이 많아서 잘 돌아갈까 걱정을 많이 했는데 기본적인 레지스터를 헤더파일로 다 저장하고 UART로 데이터를 봐가면서 디버깅을 하니깐 확실히 코딩에 속도가 붙었다.
채널간의 ADC 변환이 잘 안되었다.

10bit adc를 썼다. 물리적인 adc는 하나고 gpio에서 mux를 통해 adc로 입력되는 방식이다.
물의 온도를 온도계로 adc해서 읽어와야하고, 또 스위치의 전압을 adc로 읽어와야했다.
sw적으로는 race condition인 경우가 아니므로 당연히 작동해야 맞겠지만 여기서 에러가 떠서 삽질을 좀 했다.
// 지정한 채널의 ADC 값 읽어서 반환
int read_ADC(unsigned char channel) {
ADMUX = ((ADMUX & 0xE0) | channel);
// 변환 시작
_delay_us(200); // 채널 변경 딜레이 대기
ADCSRA |= (1 << ADSC);
while (!(ADCSRA & (1 << ADIF))); // 변환 완료 대기
return ADC; // 변환 완료시 10비트 값 반환
}
결론적으로는 딜레이를 넣는 방식으로 해결하였다.
컴퓨터 구조적으로 보면 파이프라인으로 mux를 adc의 연결하는 과정 바로 뒤에 adc변환을 바로 진행하는데, 그렇게 되면 mux의 propagation delay를 고려하지 못한 상황이 되었기 때문이지 않을까라고 예상한다.
sw적으로는 정상작동을 시킬때는 문제가 없지만, 가끔씩 버그가 생겼다.
그런데 이 상황은 매번 발생하는 것이 아니고 가끔씩 한번씩 hard fault가 발생하는 상황이라서 에러 원인도 찾기 어려웠다.
그렇게 어찌저찌 완성은 해서 제출 완료!
https://www.youtube.com/watch?v=FQ7of4cQNEk

'프로젝트 > MCU 경진대회' 카테고리의 다른 글
| 2024 COSS 차세대반도체 MCU 응용 경진대회 본선 2일차 (0) | 2025.04.02 |
|---|---|
| 2024 COSS 차세대반도체 MCU 응용 경진대회 본선 1일차(2/2) (0) | 2025.04.02 |
| 2024 COSS 차세대반도체 MCU 응용 경진대회 본선 1일차(1/2) (0) | 2025.04.02 |