교육/ATmega2560 썸네일형 리스트형 ATmega2560 - TWI의 동작 F_CPU 클록 주파수 TWPS는 TWSR 레지스터에 설정된 프리스케일러 비트값 TWPS1~0이다. -TWI의 마스터 모드에서 전송속도를 결정하기위한 프리스케일러, 전송속도는 시스템 클록의 주파수와 이 프리스케일러 및 TWBR 레지스터의 설정값에 의하여 결정된다. - - 프리스케일러의 0 / 0 전송속도 1을 사용한다. - TWI의 동작 - TWI 통신에서는 동작이 끝날 때마다 인터럽트가 발생하며 다음동작을 지정한다. 모든 통신 동작은 인터럽트에 의하여 백그라운드로 수행된다. /**** EEPROM에서는 Data를 WORD ADDRESS로 받아들인다. ****/ /**** ACK는 EEPROM에서 발생 ****/ [검정] - 시간상 흐름 ~(while)~ 1. TWI 하드웨어가 START 조건을 전송하도.. 더보기 아트메가2560..... BCD는 Binary Coded Decimal의 약자로서 이진코드의 십진화를 의미. 새로받은 기판의 7 Segment를 사용할것이기 때문에 seven.c / .h 를 복사해서 Decode.c / .h 를 만들어준다. 데이터의 용량이 정해지지 않은 상태로 그때그때 출력하여 주는것을 스트리밍 방식이라고 한다. 데이터의 용량이 정확히 정해져있는 상태를 블럭방식이라고 한다. 장치와 AVR을 연결하는 선은 2개(2-wire)이지만 장치에 필요한 VCC연결과 GND때문에 4개의 선으로 연결하는 것 처럼 보인다. (TWO Wire Interfaie = TWI) 클럭을 만들어내는 장치를 마스크라고한다. master에서 만들어내는 클럭을 받는것을 slave라고한다. ┌ TWI - 데이터 전용선과 제어전용선이 있다. ├ .. 더보기 ATmega2560 풀업다운등.. AVR 과 USART / AVR 과 ADC / AVR과 EEPROM 는 BUS로 연결되어있다. EEPROM은 레지스터를 건드려야 접근이 가능하다. C로는 접근이 불가능하며 Read만 가능하고 어셈블리로 접근할 수 있다. AC -> 전류가 변함(교류) DC -> 직류 (DK128-EXT의 VCC는 직류임) VCC 로 연결되면 풀업저항이라 하며 GND로 연결되면 풀다운저항이라 한다. 스위치를 누르지 않을 때에는 칩에 항상 5V의 전압이 가해지는데 이 때 회로는 항상 5V전압을 가지고 있다. 그런데 스위치를 누르게 되면 회로의 전압은 0V가 되고 1이 입력된다. 더보기 ATmega2560 증/감 인터럽트와 EEPROM사용하기 우리가 안썼던 인터럽트를 사용할 것이다. INT 5번과 INT 4번을 사용하여 인터럽트를 줄거기 때문에 PE5(7번),PE4(6번)에 푸쉬버튼을 연결하면됨 INT5/4번을 INit해주고 이전값을 보존하기 위해서 EICRB = EICRB | 이렇게 or을 걸어준다. 처음에 EICRB 를 or걸어주지 않고 사용했는데 무한루프에 빠져서 인터럽트를 빠져나오지 못했당 ㅠㅠ 백터테이블을 보고 백터를 걸어주고 백터는 smart.c에서 선언하여 사용한다. 주석을 확인하구 이렇게 소스를 완성시켜 AVR을 컴파일시켜주면 푸쉬버튼을 눌렀을 때 char LCD에 001~060까지 증가 or 감소가 되어 찍힌다! 최솟값이 1이기 때문에 001에서 감소버튼을 한번 더 눌러도 001이 나왔다. EEPROM AVR의 왼쪽 굵은선(B.. 더보기 7 Segment / 인터럽트를 이용하여 숫자 증감하기 버튼 두개로 증감하기 / 4번스위치 증가 5번 감소 6번 시작 7번 멈춤 Plus상태로 동작 /3번 스위치 리셋 추가 PORTJ 2번 의 PCINT11을 추가하여 RESET버튼을 추가했다. Minus 상태로 동작 smart.c - while문안의 for반복문을 ++ 에서 --로 바꿈 더보기 ATmega2560 인터럽트의 정의와 PCINT연결 AVR ATmega1280/2560 정복 (130p~) (1) 인터럽트 (interrupt) ㄴ CPU 외부의 하드웨어적인 요구에 의해 정상적인 프로그램의 실행 순서를 변경하여 명령한 작업을 수행한 후에 다시 원래의 프로그램으로 복귀하는것 인터럽트 발생원인에 따른 분류 ┌하드웨어 인터럽트 ┬ 내부 인터럽트 │ └ 외부 인터럽트 └소프트웨어 인터럽트 인터럽트 발생시 마이크로프로세서의 반응 방식에 따른 분류 ┌차단 가능 인터럽트(INT : maskable interrupt) └차단 불가능 인터럽트(NMI : non-maskable interrupt) 차단 가능한 인터럽트를 마스크 인터럽트라 하는데 EIMSK같은 마스크가 존재하는 interrupt를 뜻한다. 차단이 불가능한 인터럽트를 논 마스크 인터럽트라 하.. 더보기 ATmega2560 TimerCounter와 인터럽트 이용하여 7 Segment증가시키기 어제 했었던 7 Segment 의 함수를 따로 만들어 편집한다. uc1은 1의 자리 숫자를 출력하는 변수이다. font[]의 안에 위치한 숫자만을 쓸 수 있게 만드는 변수. 그리고 smart.c를 수정했음 7 Segment를 TimerCounter를 이용하여 1초마다 숫자를 증가시키는 소스 그 후 smart.c - main함수에서 디파인 되어있는 DELLAY대신 Dellay_ms(1000); 을 주게되면 1초마다 증가되는 숫자를 볼 수 있다. 인터럽트를 이용하여 푸쉬버튼을 누를시에 숫자가 STOP | START 되게 하기 위와 같이 INT 6번과 INT7번 설정한다. 내부인터럽트 설정 smart.c 에서 소스를 보기 편하게 하기위해 Init들을 System_Init함수에 넣어 main에서는 System_.. 더보기 ATmega2560 - 7 Segment연결 아트메가 128에 사용하였던 소스를 가져와 아트메가 2560을 동작시키고있다. 이렇게 소스를 가져와 조금 수정하여 쓰는 것을 쿼팅이라한다. 쿼팅 - 비슷한소스를 활용하여 쓰는 것 7 Segment - 8을 이루고있는 선의 총 합이 7개라서 7세그먼트라 부른다. ( 7개의 선은 각각 LED로 이루어져 있다. ) 지금 사용하고 있는 7 Segment는 왼쪽 회로도를 참고하여야 한다. LED이기 때문에 GND와 VCC만 연결하여 주면 불이 들어온다. ( 옆에 .도 LED임 ) (GND와 VCC에 각각 연결할 다리 2쌍씩이 필요하다.) common - anode type의 경우 밑 그림과 같이 GND값을 넣어주면 된다. b번 다리에 GND를 넣어 b번의 불을 킨 연결 셋팅이다. 지금 사용하고 있는 7 Segme.. 더보기 ATmega2560 / LED,LCD 연결과 작동 portA 번을 실행시키기 위한 셋팅을 한다. GND 는 -에 VCC는 +에 셋팅 (ATmega데이터시트의 2페이지를 확인하자) PORTA번의 0번다리에 꼽혀있는 LED를 동작시킨다. (노란 전구의 불이 깜빡깜빡) ↓소스코드 ----------LCD.c----------- LCD셋팅 LCD의 데이터시트 선연결 참고~ PORTC 0 번은 53번다리이므로 활주로의 53번부터 PORT 7번의 60번다리까지 꼽음. PORTA 0 은 (78)~(76)까지 꼽는다. 그리고 저번수업의 LCD.c소스와 LCD.h소스를 가져와 smart소스와 연결 ↓소스코드 더보기 ATmega2560 셋팅과 LED 아트메가는 5v를 쓰는데 어댑터로 들어오는 전류가 12v라서 바로 받으면 회로가 타게된다. 그래서 레귤레이터가 12v전류를 5v전류를 바꾸어줌. 5V와 5V/ GND와 GND를 연결해준다. (아트메가 메인보드와 개발보드) (12v와 GND를 연결해선 안됨~!!) J = JUMP의 준말 (회로칩에있음) -회로를 다른선으로 연결해 준다 - 1. 발광 다이오드 2. 저항 왼쪽의 회로는 전력이 들어오면 바로 빠져나가는 회로이다. 오른쪽의 회로는 전력이들어오면 LED로 넘겨진다. ↓ 저항이 없으면 FULL 옵 이라서 항상 켜져있는데 이럴경우 오동작가능성이 높아진다. (아주 작은 전압에도 H가 되기 때문에) LED -> 42번다리 (PL7) 7번을 조종하면 D2 LED의 불을 켤 수 있다. 위의 D1은(왼쪽회로) .. 더보기 이전 1 2 다음