반응형

 

비트 연산하여 LED를 옮기는 방법은 아래 자료를 참고한다.

https://ansan-survivor.tistory.com/1207

 

[Atmega 128] 아트메가 비트연산으로 LED한칸씩 옮기기

(아래 직접 제작한 Atmega128 모듈으로 테스트를 진행했다.) https://ansan-survivor.tistory.com/1144 [PCB제작] OrCAD로 설계한 데이터를 JLCPCB를 통해 SMT 주문하기 ! (설계부터 PCB 주문 생산 까지) PCB제조..

ansan-survivor.tistory.com

 

여기에서는 LED를 좌측으로 LED를 옮겼다가 다시 우측으로 옮기는 코드이다.

dir 이라는 트리거를 정해서 0과 1으로 방향을 정했다.

 

포트는 PAn 포트를 사용.

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
	char led = 0x01; // LED 값 초기화 (첫번째가 바로 켜진다고 했을때)
	char dir = 0;	// 방향을 결정하는 트리거
	
	DDRA = 0xFF; // PORTA 출력 설정

	while(1){
		PORTA = led;

		if(dir == 0){
			if(led == 0x80)
				dir = 1;
			else
				led <<= 1;  // 0x08까지 좌측으로 이동
		}
		else{
			if(led == 0x01) // 0x01 이 되면 다시 우측으로 이동
				dir = 0;
			else
				led >>= 1;
		}
		_delay_ms(100);
	}
}

 

(결과)

끝까지 쭉 갔다가 다시 돌아오는 LED

 

동일한 기능을 하는 코드인데, 배열을 이용하는 방법이다.

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
	char led[8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80}; // 켜질 LED를 배열 내 미리 등록
	char i;


	DDRA = 0xFF;

	while(1){
		for(i=0; i<8; i++){
			PORTA = led[i];
			_delay_ms(100);
		}
		
		for(i=7; i>0; i--){
			PORTA = led[i];
			_delay_ms(100);
		}
	}

}
반응형

 

 

 

이와 비슷한 LED모듈 구매는

https://coupa.ng/cbzIe9

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

 

AVR ATmega128 브레드보드 모듈 LA22

COUPANG

www.coupang.com

 

필요시 여러 학습 모듈 킷트를 구매해서 사용하면 좋다. (LED, 센서 등등)

https://coupa.ng/cbzNuF

 

아두이노 UNO R3 학습 키트 스타터 키트 스텝 모터 학습 키트 박스 포함

COUPANG

www.coupang.com

 

 

USB to ISP 전송 케이블 (코드를 MCU에 넣기 위해)

https://coupa.ng/cbzNFz

 

아두이노 USB ASP AVR ISP ICSP Atmega2560 다운로더

COUPANG

www.coupang.com

 

 

반응형
반응형

(아래 직접 제작한 Atmega128 모듈으로 테스트를 진행했다.)

https://ansan-survivor.tistory.com/1144

 

[PCB제작] OrCAD로 설계한 데이터를 JLCPCB를 통해 SMT 주문하기 ! (설계부터 PCB 주문 생산 까지)

PCB제조업체는 중국에 홍콩 업체 JLCPCB를 이용했다. 이번에는 한번 SMT를 이용해서 기계 납땜을 이용해보았다. Atmega128을 이용해서 최소한의 구동과 ISP를 통해 다운로드가 가능하도록 만든 회로이

ansan-survivor.tistory.com

 

이 예제 코드는 Atmega128PA0 ~ PA7 포트를 출력포트로 변환시키고 사용하였다.

DDRA = 0xFF; // DDRx는 1일때 출력으로 쓰고, 0일때 입력으로 쓴다. 0xFF1111 1111 으로 모두 출력으로 쓴다.

 

 

비트연산으로 LED를 하나씩 좌측으로 옮기는 코드이다.

이제 포트는 출력으로 쓰이게 되고, 1을 넣으면 LED가 켜지고, 0을 넣으면 LED가 꺼진다.

PA0 ~ PA7 까지는 이런 구조 이다.

16진수 2진수
0x00 0000 0000
0x01 0000 0001
0x02 0000 0010
0x04 0000 0100
0x08 0000 1000
0x10 0001 0000
0x20 0010 0000
0x40 0100 0000
0x80 1000 0000
반응형

아트메가는 입출력을 방향을 등록하는 DDRn 레지스터가 있고, 출력신호 레지스터 PORTn, 입력신호 레지스터 PINn이 있다.

 

좌측으로 비트를 옮기는 코드는 아래와 같다.

최초 0x01 번 LED가 켜져있다가 0x80을 넘으면 다시 0x01으로 초기화가 된다.

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
	char led = 0x01; // LED 값 초기화 (첫번째가 바로 켜진다고 했을때)

	DDRA = 0xFF; // PORTA 출력 설정

	while(1){
		PORTA = led;  // PORTA를 계속 쓰기 귀찮아서 led로 치환

		if(led == 0x80) // 1000 0000 비트가 되면 다시 0x01으로 복귀
		led = 0x01;
		else
		led <<= 1;  // 1씩 비트를 좌측으로 옮김

		_delay_ms(100);
	}
}

 

(결과)

 

 

 

이와 비슷한 LED모듈 구매는

https://coupa.ng/cbzIe9

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

 

AVR ATmega128 브레드보드 모듈 LA22

COUPANG

www.coupang.com

 

USB to ISP 전송 케이블 (코드를 MCU에 넣기 위해)

https://coupa.ng/cbzNFz

 

아두이노 USB ASP AVR ISP ICSP Atmega2560 다운로더

COUPANG

www.coupang.com

 

 

각종 키트 세트

https://coupa.ng/cbzNE0

 

아두이노 UNO R3 학습 키트 스타터 키트 스텝 모터 학습 키트 박스 포함

COUPANG

www.coupang.com

 

 

 

반응형
반응형

최고의 입문용 연습용 칩으로 잘 알려져있는 Atmega시리즈는 Google에 찾아봐도 공개된 회로가 참 많다.

이중 제일 기본적인 모듈, 다운로더와 Port로만 이루어진 최소한의 모듈을 아래 사이트에서 볼 수 있다.

 

 

<Olimex사에서 공개한 자료>

https://www.radiolocman.com/op/device.html?di=63108&/AVR-H128 

 

ATMega128 header board Olimex AVR-H128

AVR-H128 - ATMega128 header board with JTAG and ICSP connector. AVR-H128 is inexpensive way to develop and prototype circuits with ATMEGA128 microcontroller without need to deal with SMD soldering. All microcontroller pins are available on extension header

www.radiolocman.com

출처:https://www.radiolocman.com/op/device.html?di=63108&/AVR-H128

 

<EasyEDA에서 공개된 자료>

https://easyeda.com/JUAN10HC/atmega128

 

Atmega128 - EasyEDA

Documents Open in Editor Sheet_1 Open in Editor Atmega128 Open in Editor Open in Editor Attachments None

easyeda.com

출처: https://easyeda.com/JUAN10HC/atmega128

 

https://easyeda.com/Arhammon/mega128breakout

 

MEGA128Breakout - EasyEDA

Description Atmega 128 Breakout Board Documents Open in Editor SCH Open in Editor PCB Open in Editor Open in Editor BOM ID Name Designator Footprint Quantity 1 8082728501afe38c9b335a4420925b93 U1 QFP-64_LSA16.25-LSB16.25-PITCH0.80-BL 1 2 4ae178cd3b173aa432

easyeda.com

출처: https://easyeda.com/Arhammon/mega128breakout

 

필요시 해당 모듈을 바탕으로 회로도 및 PCB를 제작하여 본인 회로에 응용할 수 있다.

 

 

 

 

 

반응형
반응형

Atmega 타이머에서 유용하게 사용할 수 있는 분주비에 관한 엑셀 자료이다.

이를 이용해서 원하는 분주비를 만들어 타이밍을 만들면 된다.

분주비 구하기.xlsx
0.13MB

 

반응형
반응형

아트메가 시리즈는 기본적으로 아트멜 스튜디오 7에서 쉽게 펌웨어를 작성할 수 있도록 도와준다.

비주얼 스튜디오와 비슷한 UI를 제공하여 프로그램을 작성하기 쉽다.

다운로드는 아래 링크에서 한다.

https://www.microchip.com/en-us/development-tools-tools-and-software/microchip-studio-for-avr-and-sam-devices#Downloads

 

Microchip Studio for AVR® and SAM Devices | Microchip Technology

Get free training on our products 24 hours a day, every day. We offer on-demand courses and live sessions on general embedded control topics as well as Microchip, Atmel and Microsemi products. Learn how to improve your business by using our products to the

www.microchip.com

아트멜 스튜디오 웹으로 다운받기 (오프라인보다 웹이 속도가 더 빠른거 같다)

 

먼저 AVR에 연결하는 커넥터가 여러가지가 시중에 있는데, 필자는 아래 커넥터를 사용했다. (맨 아래 구매 링크있음)

    다행히 장치관리자에 드라이버가 자동으로 설치 된다.

 

 

1. New - Project  새로운 프로젝트 생성

 

2. GCC C Excutable Project 선택 후 이름과 경로 지정

 

3. Device Family에서 사용중인 Atmega선택. (여기서는 Atmega128)

 

 

4. Atmega128를 위한 Atmel Studio 초기 설정

 

5. Atmega128에서 사용하는 Clock주파수가 16Mhz이므로 아래와 같이 설정

 

6. ISP 다운로더 주파수 설정 및 포트 잡기

    Tools에 아래 항목을 선택하면, 지금 Atmega와 연결한 장치가 잡힌다. 사용중인 드라이버를 잡는다.

7. 간단하게 코드 작성 후 저장.

/*
 * GccApplication1.c
 *
 * Created: 2022-01-13 오후 9:34:49
 * Author : test
 */ 

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
	DDRA = 0xFF;
    /* Replace with your application code */
    while (1) 
    {
		PORTA = 0xFF;
		_delay_ms(1000);
		PORTA = 0x00;
		_delay_ms(1000);
    }
}

A포트에 LED가 1초마다 깜빡거리에 만든다.
저장 안하고 진행하면 오류 발생

8. 빌드해보기

    빌드가 성공하면 아래 Succeed가 뜸.

빌드를 하면 .hex 파일이 만들어짐

 

9. 타겟 지정

 

10. 디바이스 프로그래밍 테스트

인터페이스 ISP 설정

 

11. 메모리 클리어 시키기 (모든 찌꺼기를 지우고 초기화)

 

12. 빌드로 만든 Hex파일을 Flash에 로드 시키기 (잘 작동 여부 디버깅)

빌드하면 Debug폴더 내 .hex파일 생성되는데, 이를 경로찾아서 넣는다.
이상 없으면 위와 같이 뜸

 

(결과)

반응형

LED가 1초마다 깜빡 거리는 것을 확인할 수 있다.

 

 

https://www.youtube.com/watch?v=E7zXwoMxEgI 

 

 

<USB - ISP 다운로더는 아래 쿠팡에서도 매우 싸게 구매할 수 있다.>

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

https://coupa.ng/cbzpwv

 

아두이노 USB ASP AVR ISP ICSP Atmega2560 다운로더

COUPANG

www.coupang.com

 

 

 

반응형
12

+ Recent posts