반응형

(아래 직접 제작한 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

 

 

 

반응형

+ Recent posts