ATmega128 풀다운 저항으로 연결된 스위치로 LED제어 질문드립니다.
페이지 정보
작성자 빈대떡 작성일21-10-14 21:52 조회7,372회 댓글2건본문
#define F_CPU 16000000L | |
#include <avr/io.h> | |
#include <util/delay.h> | |
char circular_shift_left(char pattern) | |
{ | |
return ( (pattern << 1) | (pattern >> 7) ); | |
} | |
int main(void) | |
{ | |
DDRB = 0xFF; // PORT B 핀을 출력으로 설정 | |
DDRF &= ~0x04; // PORT F의 PF2 핀을 입력으로 설정 | |
char pattern = 0x01; // 초기 출력값 | |
PORTB = pattern; | |
// 이전 및 현재 버튼의 상태 | |
char state_previous = 0, state_current; | |
while (1) | |
{ | |
state_current = (PINF & 0x04) >> 2; // 버튼 상태 읽기 | |
// 버튼이 눌러지지 않은 상태에서 눌러진 상태로 바뀌는 경우 | |
if(state_current == 1 && state_previous == 0){ | |
pattern = circular_shift_left(pattern); | |
PORTB = pattern; | |
} | |
state_previous = state_current; // 버튼 상태 업데이트 | |
} | |
return 0; | |
} |
마이크로컨트롤러 프로그래밍 책으로 공부중에 질문드립니다.
줄친 (DDRF &= ~0x04;// PORT F의 PF2 핀을 입력으로 설정) 부분에서
한번 입력핀을 바꿔서도 해보려고(2번에서 5번으로)
입력핀을 PF5번으로 하기 위해서 0x04 부분을 전부 0x20으로 고쳐보았는데 스위치가 작동하지 않아서 질문드립니다.
ATmega128 usb 사용하고 있습니다.
스위치는 풀다운 저항으로 연결한 상태입니다.
보라선이 PF5에 연결된 상태고 초록선은 VCC에 연결되어 있습니다.
댓글 : 2
조회수 : 7,372
master님의 댓글
master 작성일
리셋초기값(전원 ON 시에 항상 리셋이 실행 됨)에서 모든 포트의 초기입출력값은 입력입니다.
따라서 입력으로 설정하지 않아도 입력입니다.(코드 불 필요)
//
PF4~PF7은 JTAG 핀입니다.
JTAG 사용중이라면 반드시 퓨즈비트에서 JTAG에 체크 해야 하는데요, 이 때에는 다른 용도로 사용하지 못합니다.(JTAG 용도로 고정)
JTAG 사용하지 않는데 퓨즈비트에서 JTAG가 체크되어 있다면 체크를 해제 하세요, 이 때에는 입출력 핀으로 사용가능합니다.
빈대떡님의 댓글
빈대떡
답변 감사합니다