EmbeddedSystem/AVR9 [AVR] 타이머/카운터와 Prescaler(분주비) AVR 마이크로컨트롤러의 타이머/카운터 설정에서 가장 헷갈리는 부분인 분주비(Prescaler) 선택에 대해 알아보겠습니다. 특히 16MHz에서 주로 사용되는 타이머 설정을 자세히 살펴보면Prescaler가 뭔가요?Prescaler는 시스템 클럭을 나누는 분주기입니다. 쉽게 말해서, 16MHz라는 엄청 빠른 클럭 신호를 우리가 원하는 속도로 낮춰주는 역할을 해요. 마치 자동차의 기어박스처럼요!시스템 클럭과 분주비 이해하기우리가 주로 사용하는 ATmega2560의 시스템 클럭은 16MHz입니다. 이걸 그대로 사용하면:1클럭 = 0.0625μs (아주아주 짧은 시간!)16비트 타이머 최대값 = 65,535이렇게 빠른 클럭은 LED 깜빡임같은 일반적인 용도에는 너무 빨라요. 그래서 분주비를 사용합니다!🎨 분.. 2024. 12. 27. [AVR] Timer Mode : "normal" vs "CTC" vs "PWM" Modes of Operation(atmega1281) Normal vs CTC vs PWMnormal modeoverflow가 발생할 때마다 timer 값을 지정해주어야 한다.=> 비효율적임RAM 사용을 최소화해야 하는 경우 (별도의 비교 레지스터 불필요)CTC mode (Clear Time on Compare match)compare register의 값과 같은지 비교기(하드웨어적으로)compare interrupt flag 자동으로 set정확한 주기의 인터럽트 생성PWMnormal + CTC compare match, overflow 모두 사용아날로그같은 출력(모터 속도 제어, LED 밝기 제어)이 필요할 때 Q. 원하는 주기의 구형파 신호를 출력하려면?? 1. normal mode : over.. 2024. 11. 7. [AVR] Timer / Counter Timer / Counter- 입력 클럭의 개수를 세기 위한 소자timer vs counter타이머(timer) : 입력 클럭이 일정한 주파수 펄스- MCU 내부 counter 입력으로 선택 : 시간 측정 가능카운터(counter) :입력 클럭의 주파수가 일정하지 않음- 외부 입력 신호를 counter 입력으로 선택 : 외부 발생 event의 횟수 측정 가능overflow flag- 각 타이머는 자신의 overflow flag를 가짐- timer나 counter에서 overflow가 발생하면 해당 bit가 set 된다. ->(timer overflow interrupt 발생하도록 설정 가능)- overflow flag를 기준으로 사용하면 timer overflow interrupt를 사용하여 일정한 시간.. 2024. 11. 5. [AVR] Microchip studio Tutorial atmel studio를 microchip 회사에서 인수하여 microchip studio가 되었다. https://www.microchip.com/en-us/tools-resources/develop/microchip-studio 두 가지 옵션이 있는데 - Offline : 인터넷 없어도 가능, 용량 상대적으로 큼- Web : 인터넷 있어야 가능, 용량 상대적으로 가능 다운로드 받고 실행 후 설계할 Architectrue인 AVR을 선택 후 install하면, 실행 new project board 종류 선택 - 우리가 사용할 보드인ATmega1281은 8GB 데이터 영역 메모리를 가지는 보드이다. - Datasheet를 다운로드 받는 걸 추천한다. project 생성 완료! 이러면 SW.. 2024. 10. 24. [AVR] External Interrupts 2 Interrupt Vector Table메모리에서 ISR의 주소가 적혀있는 데이터셋interrupt Vecto table의 위치(주소)는 정해져 있고, 주소값은 빌드(중 linking) 시 주소값이 해당 주소의 쓰여진다.그 주소값은 인터럽트 핸들러의 함수 위치이다.Interrupt Vector Table in AVRAVR은 인터럽트 핸들러 함수의 주소가 저장되어 있는게 아니라 명령어(Assembly어)가 저장되어 있다.#include ISR(INT7_vect){ PORTC ^= 0X03; // 함수 정의(ISR()) : 이 함수가 ISR임을 compiler가 인지 // 인터텁트 벡터(INT7_vect) 어떤 interrupt handler인지 compiler에게 알려줌}.lss fil.. 2024. 10. 15. [AVR] External Interrupt AVR External Interrupt에 대한 이해 우리는 무언가 집중하는 작업 중인데 갑자기 전화가 걸려왔다고 상상해 보면, 전화를 받기 위해 하던 작업을 일시 중지한다.마이크로컨트롤러(MCU)의 세계에서 interrupt도 비슷하게 작동한다.인터럽트란?interrupt는 MCU가 하는 일을 멈추고 다른 작업을 즉시 처리하라는 신호입니다. 인터럽트를 처리한 후 MCU는 이전 작업으로 돌아갑니다.인터럽트의 예:전화 알림: 휴대폰이 울려서 업무를 방해하는 것과 마찬가지로 외부 장치가 MCU에 신호를 보내 일시 중지하고 처리할 수 있습니다.타이머 인터럽트: MCU는 매 밀리초와 같이 일정한 간격으로 작업을 수행해야 할 수 있습니다. 타이머 인터럽트를 사용하면 작업이 제때 처리됩니다.마우스 또는 키보드 입력.. 2024. 10. 14. 이전 1 2 다음