본문 바로가기

avr13

[Harman 세미콘 아카데미] 18일차 - Timer/Counter, Interrupt 실습 [Timer/Counter] #define F_CPU 160000000UL #include #include // 인터럽트 사용을 위한 헤더파일 #include int cnt; // 카운트 값을 저장할 변수 선언 ISR(TIMER0_OVF_vect){ // 타이머/카운터 0번의 오버플로우 인터럽트 서비스 루틴 함수 // cnt++; TCNT0 = 131; // 약 2ms를 만들기 위한 초기값 if(cnt == 500) // 500번째 인터럽트 발생 시 LED 출력을 변경함. 약 1초(1,000ms) { PORTD = ~PORTD; // 출력 반전 cnt = 0; } } int main(void) { DDRD = 0xff; //PORTD = 0x00; // 다 꺼진 것을 시작 PORTD = 0xaa; // .. 2023. 7. 12.
[Harman 세미콘 아카데미] 18일차 - Interrupt, Timer/Counter 이론 [Interrupt] 인터럽트란? CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치에 예외상황이 발생하여 처리가 필요할 경우에 CPU에게 알려 처리할 수 있도록 하는 것 우선적으로 처리해야할 일이 발생하였을 때 그것을 처리하고 원래 동작으로 돌아옴 크게 하드웨어 인터럽트와 소프트웨어 인터럽트로 나눔 1. H/W Interrrupt 일반적인 인터럽트를 이르는 말 CPU외부로부터의 인터럽트 요구 신호에 의해 발생되는 인터럽트 Maskable interrupt, Non-maskable interrupt 가 있다. (Interrunpt Mask가 가능) ① Maskable interrupt - Interrupt Mask(인터럽트가 발생하였을 때 요구를 받아들일지 말지 지정하는 것)가 가능 - 인.. 2023. 7. 12.
[Harman 세미콘 아카데미] 17일차 - ATmege128 실습(LED shift, Tactile switch 활용), FSM의 개념 [LED shift] 예제 1 0000 0000 1000 0001 0100 0010 0010 0100 0001 1000 0000 0000 0001 1000 0010 0100 0100 0010 1000 0001 0000 0000 위와 같이 LED가 shift하며 출력되는 코드 작성 여러 가지 방법으로 작성할 수 있다. 1번 - 가장 기초적인 방법(case 다 써서 반복) 더보기 #define F_CPU 16000000UL #include #include #include uint8_t ledArr[]={ 0x81, // 1000 0001 0x42, // 0100 0010 0x24, // 0010 0100 0x18, // 0001 1000 0x24, // 0010 0100 0x42, 0x81 }; int ma.. 2023. 7. 11.
[Harman 세미콘 아카데미] 16일차 - ATmege128 setting & 실습(LED-on/off, shift, structure) [ATmega128 Setting] Microchip Studio 실행 전, ATmega128 board가 컴퓨터와 정상적으로 연결되었는지 체크해야한다. 포트(COM & LPT)에 뜨거나, 기타 항목에서 우클릭해서 해당 드라이버를 업데이트 해주면 제대로 인식된다. LED 우리가 사용할 LED는 극성을 가지고 있으며, 해당하는 극과 반대로 연결한 경우 터질 수 있다. 대개 wire가 긴 쪽이 (+), 짧은 쪽이 (-) 이고, 허용전류는 약 250mA이다. 여담으로 Red, Green, White, Blue 순서로 개발되었고 RGB가 모두 개발되어 Full color 구현이 가능해졌다. 프로젝트 생성 솔루션과 프로젝트라는 개념이 있는데, "프로젝트 ⊂ 솔루션" 이라고 생각하면 된다. [프로젝트 : 하나의 실.. 2023. 7. 10.