2016-03-10 <CPU 모듈>
Atmel ATmega 2560
Brown-out Detection
특정 전압 이하로 떨어지는걸 방지, 자동으로 CPU를 리셋하는 회로.
Watchdog
특정한 시간동안 시스템이 응답없으면 리셋시킴.
86 Programmable I/O Lines
86개의 제어가능한 입출력(Input/Output) 라인.
칩의 심박수가 곧 "Clock"
발진기(오실레이터)
발진회로 혹은 클럭발생기라고도 함
Crystal - XTAL
수정발진자 혹은 수정진동자라고 함
16.000 MHz
소수점 이하 0이 많이 붙을수록 정확한 진동자
1초에 16000000 개를 센다.
타이머 카운터(T/C) - 시간 측정회로, 기준이 되는 것은 동작 주파수
GPR(General Purpose Register)과 Data SRAM간의 Direct Addressing
: Memory와 Register간 직접 주소 연결
AVR memories
256kb Flash Memory
0x7FFF(0~)-> 0x8000 -> 32768 /1024 -> 32
0xFFFF -> 0X10000 -> 65536 /1024 -> 64
0x1FFFF -> 0X20000 -> 131072/1024 -> 128
flash memory 한 Section에 2byte 공간을 가지기에 128 x 2 = 256kbyte를 가짐
인텔 CPU는 폰 노이만 구조. 폰 노이만은 컴퓨터 설계의 기본을 만든 천재 수학자.
하바드(Harvard) 구조는 양방향이라 효율적이고 빠르지만 단가가 비싸다.
DDRA - Port A Data Direction Register
데이터의 방향을 결정하는 레지스터
0-7번 비트까지 8bit Register를 가지며, 읽고 쓰기가 가능하다.
initial value(초기값)는 0이고 0과 1에 따라 Direction이 바뀐다.
Port-출력과 방향
DDR-방향을 결정
Port에 값을 줄건지 말건지에 따라 5V 또는 0V 가 출력.
LED 두개, 교차 깜박임 실습
LED 두개의 한쪽 선을 각각 PORT A의 1번, 5번에 꼽음 (나머지 한쪽선은 각각 GND에 꼽음)
PORTA의 1번
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 | 2
PORTA의 5번
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
2 | 0
소스
#define DDRA (*((volatile unsigned long *)0x21))
#define PORTA (*((volatile unsigned long *)0x22))
#define PINA (*((volatile unsigned long *)0x20))
int main(void) //void 안적으면 컴파일시 warning isn't a prototype
{
volatile unsigned long uiCnt;
DDRA=0xFF; // 출력으로 쓴다.
while(1)
{
for(uiCnt=0; 100000>uiCnt;++uiCnt);
PORTA=0x02; //2번
for(uiCnt=0; 100000>uiCnt;++uiCnt);
PORTA=0x20; //5번
}
return 0;
} |
결과 - LED 두개가 번갈아 깜박거리는 것을 볼 수 있다.
전해 콘텐서는 순간적으로 전압이 떨어지는 걸 방지한다. (일종의 배터리)
'Study > Embedded' 카테고리의 다른 글
20160316-LCD출력 (0) | 2016.03.17 |
---|---|
20160315-펌웨어 분석 및 학습 (0) | 2016.03.16 |
20160314-펌웨어 분석(외부 인터럽트) (0) | 2016.03.15 |
20160311-펌웨어분석 (FND, LED Test) (0) | 2016.03.12 |
20160309-CPU 모듈 (0) | 2016.03.09 |