전자공학/마이크로프로세서7 2024.2 마이크로프로세서 실험 시험 복기 1. reset 시 led_pattern, fnd 값led_write(led_pattern);fnd_write_numbers(fnd_num);2. 터미널에 알파벳 대문자만 입력으로 받아 출력하고, 엔터키 기능 구현3. m이나 M을 누르게 되면 speaker 동작 4. 다시 입력 시 음악 중단5. SW2를 누르면 led_pattern 0.5초마다 toggle6. SW2를 다시 누르면 그 상태 그대로 정지7. SW3를 누르면 fnd 값 2초마다 1씩 증가8. SW3를 다시 누르면 fnd 값 정지정확한 시간? -> Timer 사용 (delay X), CTC mode 설정2초, 0.5초 주기가 정수배인 신호를 생성해야 하므로 같은 Timer에서 생성할 수 있을 것 같다.try 1) CTC mode로 mode 4.. 2024. 12. 27. [atmega1281] 실험 11. AVR ADC의 활용 실험 예비 과제1. 다음은 AVR MCU의 내부 ADC를 사용하기 위한 초기화 작업을 하는 함수이다. 내용을 완성하여라. void adc_init(void) { // ADC enable, single conversion 모드 // AD 변환 범위는 0 ~ AVCC가 되도록 설정 // ADC clock이 50 KHz와 200 KHz 사이의 값을 가지도록 prescaler 설정 }2. 다음은 single-ended single conversion 모드에서 원하는 채널의 AD 변환을 시작시킨 후 변환이 끝날 때까지 기다린 변환 결과를 읽어서 값을 반환하는 함수이다. 내용을 완성하여라.uint16_t adc_get_result(uint8_t channel_num) { // channel_num은 0 ~ .. 2024. 12. 11. [atmega1281] 실험 10. AVR의 UART를 사용한 비동기 직렬 통신 실험 목적- 비동기 직렬 통신의 원리를 이해한다. - ATmega1281의 UART의 동작 모드를 이해하고 사용법을 배운다. - UART를 사용하여 ATmega1281과 PC가 통신을 할 수 있도록 프로그래밍하는 방법을 익힌다. 실험 예비 과제1. uart.c라는 새로운 파일을 만들어 다음에 설명하는 함수들을 추가하여라.2. . USART0를 사용하여 BAUDRATE라는 이름으로 define한 속도로 직렬 통신을 하려고 한다. 다음은 이를 위한 초기화 작업을 하는 함수이다. 내용을 완성하여라.void uart_init(void) { #define BAUDRATE 115200L // UBRR0 값을 설정한다. (U2X0 == 1로 가정) // U2X0를 1로 설정하고 .. 2024. 12. 2. [atmega1281] 실험 9. AVR MCU의 타이머 활용 3 – PWM 실험 목적- ATmega1281 타이머로 PWM 출력을 만드는 방법을 익힌다. - PWM 출력을 사용하여 DC 모터의 속도를 조절하는 방법을 익힌다.실험 예비 과제1. Timer2와 Timer3은 PWM 모드로 동작시키고 Timer5는 실험 8에서처럼 CTC 모드로 동작시키려고 한다. 아래의 timer_init() 함수를 완성하고 그 내용을 설명하여라. void timer_init(void) { // Timer2를 Fast PWM 모드로 동작시키고 PWM 신호는 OC2A 핀으로 출력하려고 한다. // datasheet의 Table 20-8을 참조하여 Mode 3의 Fast PWM으로 동작하도록 설정한다. // 이 때 prescaler는 1로 설정하고 COM2A1 비트와 COM2A0 비트는 각각 1과 .. 2024. 11. 27. [atmega1281] 실험 8. AVR MCU의 타이머 활용 2 – 스피커 구동 실험 목적- ATmega1281 타이머의 CTC 모드를 활용하여 원하는 주파수를 가진 구형파를 출력하는 방법을 이해한다.- 타이머와 외부 인터럽트를 동시에 사용하는 방법을 익힌다.- 타이머 출력을 이용하여 스피커를 구동해 본다. 실험 예비 과제 1. 아래의 동작을 하도록 timer_init() 함수와 interrupt_init() 함수를 작성한다. void timer_init(void) { // Timer3을 CTC 모드로 하고 compare match가 발생할 때마다 OC3A 핀을 toggle시키도록 설정한다. // 이 때 타이머의 동작 모드만 설정하고 실제로 타이머가 동작하지는 않도록 해야 한다. // Timer5를 CTC 모드로 하고 0.1 초 간격으로 compare match inter.. 2024. 11. 21. [atmega1281] 실험 7. AVR MCU의 타이머 활용 1 – 기초 실험 목적 ATmega1281의 타이머 동작 모드 중 Normal 모드와 CTC 모드를 이해하고 그 사용 방법을 익힌다.타이머 인터럽트의 활용 방법을 익힌다. 실험 예비 과제 1. 다음 동작을 하는 함수 timer_init()을 작성하고 그 내용을 설명하여라.void timer_init(void) { // 16-bit 타이머인 Timer3을 CTC 모드로 동작하도록 설정하고 정확하게 250 개의 타이머 입력 clock // 마다 compare match가 발생하도록 OCR3A 레지스터의 값을 설정한다. prescaler는 /8로 설정한다. // 16-bit 타이머인 Timer5를 Normal 모드로 동작하도록 설정하고 prescaler를 /64로 설정한다. } WGMn0 ~ WGMn3 p.. 2024. 11. 20. 이전 1 2 다음