반응형

AVR 24

AVRISP mkII 및 Microchip Studio 사용법

Microchip Studio에서 프로젝트를 생성하여 AVR에 프로그램을 올리는 방법을 다룹니다. AVRISP mkII 호환제품과 Atmega 128 보드로 테스트를 진행했습니다. 2015. 12. 7 최초작성 https://www.olimex.com/forum/index.php?topic=4065.0 에서 7.0에서도 사용 가능하다는 글을 보고는 정품 AVRISP mkii를 사용하는 것은 아니지만 혹시나 해서 해봤습니다.. 윈도우 10 64비트 버전을 사용중인데 문제 없이 잘 동작합니다 : ) ~ 2021. 7.10 최종작성 최근(아마도 작년) Avr Studio에서 MicoChip Studio로 이름이 바뀌었네요. 2번~5번을 하지 않고 진행해도 되는지는 테스트 못해봤습니다. 1. 아래 링크에서 Mi..

Atmel Studio 7.0에서 시뮬레이터 사용하기( Simulator )

Atmel Studio 7.0에서 제공하는 시뮬레이터를 사용하여 간단한 소스 코드를 디버깅해보았습니다. 실행된 코드에 의해서 레지스터들이 어떻게 변하는지 확인할 수 있습니다. http://www.atmel.com/tools/ATMELSTUDIO.aspx 에서 Atmel Studio 7.0을 다운로드 받습니다. 인터넷이 사용가능하면 web installer로 하는게 좋습니다. 설치 완료 후, Atmel Studio를 실행시킵니다. 새로운 프로젝트를 생성하기 위해 메뉴에서 File - New - Project를 선택합니다. New Project 창에서 C/C++ - GCC C Executable Project를 선택해주고 적당한 프로젝트 이름과 프로젝트 저장위치를 지정해줍니다. Atmega128을 선택해줍니..

적외선 통신( IR ) - 리모컨 NFC format을 시리얼로 출력하는 코드

LG에서 사용하는 NEC format을 시리얼로 출력해주는 소스코드입니다. 리모컨에서 버튼을 누르면 해당되는 값을 16진수로 변환하여 시리얼로 출력해줍니다. 2016. 6. 5 최초작성 실행화면입니다. 아래 주소에 있는 코드를 atmega128에서 동작하도록 수정하고 시리얼 통신으로 결과값을 받아볼 수 있도록 수정하였습니다. http://extremeelectronics.co.in/code-libraries/using-ir-remote-with-avr-mcus/ 10진수를 16진수로 변환하는 부분은 아래 사이트에 있는 코드를 사용했습니다. https://dojang.io/mod/page/view.php?id=743 usart.h #ifndef USART_H_ #define USART_H_ #include..

Atmega128 기초 - SPI(Serial Peripheral Interface)

Atmega128의 SPI에 대해 간단히 설명하고 포스트 끝에 마스터와 슬레이브 예제를 제공합니다. 2016. 6. 29 최초작성 2021. 7. 18 최종작성 SPI (Serial Peripheral Interface)를 사용하면 AVR과 주변 장치 간 또는 여러 AVR 장치간에 고속 동기 데이터 전송이 가능합니다. 두 개의 장치가 SPI 통신을 하는 경우 한대는 마스터 장치가 되며 다른 한대는 슬레이브 장치가 됩니다. 하나의 마스터 장치가 여러 대의 슬레이브 장치와 통신이 가능하지만 동시에는 일대일 통신만 가능합니다. 두 대 이상의 마스터 장치가 슬레이브 장치와 연결될 수 도 있지만 이때 주의점은 동시에 두 대 이상의 마스터 장치가 SPI 통신을 시작하지 않도록해야 합니다. 센서 같은 주변 장치의 경..

Atmega128 기초 - 시리얼 통신( USART )

Atmega128의 시리얼 통신(USART)에 대해 다룹니다. 2016. 6. 25 최초작성 1. Baud rate (in bits per second, bps)와 시스템 클록을 정의한다. #define 9600 #define F_CPU 16000000UL 2. 시스템 클록과 원하는 baud rate를 이용하여 USART Baud Rate Register(UBRR)을 계산한다. BAUD Baud rate (in bits per second, bps) fOSC System Oscillator clock frequency UBRR Contents of the UBRRH and UBRRL Registers, (0 - 4095) UBRR_VALUE = (((F_CPU / (9600 * 16UL))) - 1); ..

Atmega128 기초 – ADC(Analog to Digital) 변환

Atmega128의 ADC에 대해 다룹니다. 2016. 6. 24 최초작성 센서들은 보통 아날로그 출력 값들을 내놓기 때문에 ADC(Analog to Digital Converter)를 거쳐 마이크로컨트롤러에 연결하는 것이 필요하다. 이를 위해 Atmega128에는 다음과 같이 포트 F에 8개의 핀을 제공하고 있다. Atmega 128의 ADC는 연속 근사(successive approximation) 방식을 이용하여 아날로그 입력 전압을 10비트 디지털 값으로 변환한다. 아날로그 입력 채널과 Gain은 ADMUX 레지스터의 MUX 비트들을 설정함으로써 선택된다. Atmega128에는 8개의 ADC 채널(PF0~PF7)이 있다. 이 중 어떤 것을 사용할지 정할 때 다음 비트들을 사용한다. 기준 전압을 선..

Atmega128 ADC예제 - lm35 온도 센서값 시리얼로 출력하기

실수를 시리얼 포트를 통해 출력하려면 프로젝트를 생성하고 다음 두 가지를 변경해주어야 합니다. 제가 사용한 버전은 Atmel Studio 7.0이지만 다른 버전에서도 비슷한 방법으로 변경하면 가능합니다. 메뉴에서 프로젝트 – 속성을 선택한 후. Toolchain에 아래 항목에 libprintf_flt를 추가해줍니다. 그리고 General에서 다음 부분을 체크해줍니다. /* * atmega128-adc-example.c * * Created: 2015-12-15 오후 1:37:05 * Author : webnautes */ #define F_CPU 16000000UL //1. baud rate를 선택 #define USART_BAUDRATE 9600 //2.시스템 클록과 원하는 baud rate를 이용하여..

Atmega128 기초 - 8비트 타이머/카운터 Phase Correct PWM 모드

용어 정의BOTTOM - 카운터가 0이 되었을 때를 의미. MAX – 카운터가 0xFF(=255)에 도달했을 때를 의미 TOP TOP값은 0xFF(MAX) 또는 OCR0 레지스터에 저장된 값으로 지정할 수 있다.카운터가 TOP값과 똑같거나 더 커진 경우를 의미한다. Phase Correct PWM 모드Phase Correct Pulse Width Modulation(Phase Correct PWM) 모드는 TCCR0 레지스터의 WGM01비트는 0으로, WGM00비트는 1로 설정된 경우이다. 카운터값(TCNT0)는 BOTTOM에서 MAX로 증가하다가 다시 MAX에서 BOTTOM으로 감소하는 것을 반복한다. PWM 해상도는 8비트로 고정된다. noninverting Compare Output 모드에서는 TC..

Atmega128 기초 - 8비트 타이머/카운터 Fast PWM 모드

용어 정의BOTTOM - 카운터가 0이 되었을 때를 의미. MAX – 카운터가 0xFF(=255)에 도달했을 때를 의미 TOP TOP값은 0xFF(MAX) 또는 OCR0 레지스터에 저장된 값으로 지정할 수 있다.카운터가 TOP값과 똑같거나 더 커진 경우를 의미한다. Fast PWM 모드fast Pulse Width Modulation(fast PWM) 모드는 TCCR0 레지스터의 WGM01과 WGM00비트가 1로 설정된 경우이다. 카운터값(TCNT0)는 BOTTOM으로부터 MAX까지 값이 증가하고 MAX에 도달하면 다시 BOTTOM부터 증가를 시작한다. non-inverting Compare Output 모드에서는 TCNT0와 OCR0가 일치하는 경우 output compare (OC0)가 0으로 클리어..

Atmega128 기초 - 8비트 타이머/카운터 CTC 모드

용어 정의BOTTOM - 카운터가 0이 되었을 때를 의미.MAX – 카운터가 0xFF(=255)에 도달했을 때를 의미TOP TOP값은 0xFF(MAX) 또는 OCR0 레지스터에 저장된 값으로 지정할 수 있다.카운터가 TOP값과 똑같거나 더 커진 경우를 의미한다. Clear Timer on Compare Match (CTC) 모드 TCCR0 레지스터의 WGM00 비트가 0이고 WGM01 비트가 1로 설정된 경우이다. TCNT0 레지스터는 카운터에서 값을 직접 읽거나 쓸 수 있게 해주는 레지스터이다. OCR0 레지스터에는 카운터 값인 TCNT0 레지스터와 비교할 때 사용되어 지는 8비트 값이 포함되어 있다. OCR0 레지스터의 값과 TCNT0 레지스터의 값이 일치하면 Output Compare Interru..

반응형