테크/AVR(Microchip Studio)

[AVR] Atmel Studio7 레지스터 제어, Simulator 디버깅

2021. 12. 23. 19:41

이번에는 AVR의 Atmel Studio를 사용하는 방법을 알아보고 레지스터 제어하는 법과 시뮬레이터 디버깅을 해보자.

(이 회사는 인수되고 이름이 중구난방이 되버렸다....처음엔 AVR Studio였다가 Atmel Studio로 바뀌고 이젠 Microchip Studio란다....난는 뭔가 Atmel Studio가 더 편하고 친근하다.)


환경 설정

Atmel Studio7 설치 후 File - New - Project 을 누르면 칩을 선택하는 화면이 나온다. 

 

여기서 사용할 칩을 선택하면 되는데 가장 많이 사용하고 교육용으로도 사용되는 흔하디 흔한 ATmega128을 사용해보자.

칩 검색 후 선택

칩을 선택하면 비주얼스튜디오와 비슷한 화면을 맞이 할수 있다.

이제 여기서 신나게(?)코딩을 해주면 된다.

AVR코딩은 C언어를 기본으로 깔고 가지만 선택한 칩의 데이터시트를 보면서 어떤 레지스터를 무슨 명령어를 통해 제어할건지 따로 공부해야 한다.


레지스터 제어

크게 3가지의 범용레지스터를 지정해줘야 한다.

  • DDRx : 해당 레지스터를 입력/출력으로 설정할건지 방향설정을 해주는 레지스터.(0 : 입력, 1 : 출력)
  • PORTx : 출력 레지스터(0 : 0V, 1 : +5V)
  • PINx : 입력 레지스터

x에는 A~G까지 지정 가능하며(ATmega128한정) 각각의 레지스터는 8비트(1바이트)로 구성되어있다.

ATmega128 datasheet 중 I/O 레지스터

그럼 이제 다음과 같이 코드를 작성해보자.

DDRB 레지스터에 0xFF값을 대입한다는 의미는 전부 출력모드로 설정한다.

이제 무한루프 안에서 동작을 설정해주면 된다.

무한루프 내부 코드는 10미리초 단위로 포트B의 레지스터 전부가 on/off를 반복한다는 뜻이다.

 

실제 보드를 연결해서 테스트를 해보면 좋지만 당장 갖고있는 보드가 없어서 시뮬레이션을 돌리면서 레지스터의 변화를 확인해보자.


시뮬레이터
1. Project – Properties – Tool 항목에 들어가서 Selected debugger/programmer를 Simulator로 변경 후 저장.

2. main.c디렉토리로 돌아와서 Debug – Windows – I/O를 누르면 사용되는 레지스터를 디버깅을 통해 확인 할 수 있다.

이제 확인하고싶은 구간에 중단점을 찍으면서 디버깅을 해보자.

첫번째 초기값은 DDRB로부터 모두 출력모드로 설정되고 포트B에 0x00을 대입해서 아무 변화가 없다.

두번째는 포트B에 0xFF를 대입하여 전부 출력으로 설정한 결과 레지스터가 on돼서 빨간불이 들어온 것을 알 수 있다.

세번째는 while문을 돌아서 다시 포트B에 0x00을 대입하여 레지스터가 off되었다. 


비트 쉬프트 패턴

앞에서 한 실습은 레지스터 1바이트를 통으로 제어했다면 쉬프트연산자를 통해 비트단위로 제어 해보자.

위와같이 코드를 작성해보자.

pattern_value라는 변수를 생성해 0x01이라는 hex값을 대입하고 DDRB레지스터를 전부 출력모드로 선언해 주었다.

무한루프문 안에서 포트B에 pattern_value를 대입하고 1칸씩 비트 쉬프트를 진행한다.

if문은 레지스터가 8비트라서 쉬프트를 계속하게되면 범위를 벗어나게 된다. 이렇게 overflow가 되면 다시 0x01로 세팅하는 작업이다.

이제 포트B에 중단점을 찍고 시뮬레이터로 디버깅을 해보자.

초기값

비트쉬프트연산을 개발보드 없이 시뮬레이터를 돌려서 레지스터의 변화를 확인할 수 있다.

'테크 > AVR(Microchip Studio)' 카테고리의 다른 글

[AVR] Atmega328P UART통신 & 헤더파일 나누기(putty)  (0) 2021.12.29
[AVR] 아두이노를 이용한 AVR코딩 & 버튼 채터링(Microchip Studio)  (0) 2021.12.25
[µ-Processor] 내부구조(ALU)  (1) 2021.07.20
[µ-Processor] AVR내부연산 & Opcode  (0) 2021.07.17
[µ-Processor] 기본적인 어셈블리어 & 문법  (0) 2021.07.17
'테크/AVR(Microchip Studio)' 카테고리의 다른 글
  • [AVR] Atmega328P UART통신 & 헤더파일 나누기(putty)
  • [AVR] 아두이노를 이용한 AVR코딩 & 버튼 채터링(Microchip Studio)
  • [µ-Processor] 내부구조(ALU)
  • [µ-Processor] AVR내부연산 & Opcode
시그널보내
시그널보내
삽질을 통해 깊게 공부하는 Electronic Engineer 연락 및 문의사항은 'donghyun9904@naver.com' 으로 부탁드립니다!
시그널보내
시그널보내
시그널보내
전체
오늘
어제
  • 분류 전체보기 (86)
    • 감상평 (0)
    • 테크 (4)
      • Network (2)
      • C | C++ (3)
      • MATLAB (12)
      • OSEK ⁄ VDX (4)
      • AVR(Microchip Studio) (9)
      • STM32 (1)
      • PcB (2)
      • [verilog | VHDL] (6)
      • 라즈베리파이 (4)
      • 아두이노 (6)
      • ML | DL (5)
      • ROS (3)
      • 리눅스 (12)
      • 프로젝트 (3)
      • 예제 (3)
    • 연수 ⁄ 교육 (4)
    • 대회 ⁄ 공모전 (3)
    • 취준 (4)
    • 사담 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • AVR
  • 마이크로프로세서
  • 아두이노avr
  • IDEC
  • 선형회귀
  • MSE
  • 현대오토에버
  • 머신러닝
  • VHDL
  • 매트랩
  • 아두이노
  • osekos
  • 차량용운영체제
  • 현대오토에버 모빌리티 임베디드 SW스쿨
  • vhdl문법
  • 경사하강법
  • 아트멜스튜디오
  • 리눅스
  • osek
  • 라즈베리파이

최근 댓글

최근 글

hELLO · Designed By 정상우.
시그널보내
[AVR] Atmel Studio7 레지스터 제어, Simulator 디버깅
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.