ROM
- Read Only Memory
- 일반 인은 쓰지 못하고 읽기만 가능한 메모리
- 제조사에서 한번은 원하는 값을 써야함
ROM 의 발전
- Mask ROM : 최초의 롬. 사진을 현상하듯 같은값만 찍는 방식
- PROM programmable ROM : 사용자가 1회 한해서 새 내용을기록가능한 롬.
높은 전압을 가해 롬 내부 퓨즈를 끊는 방식으로 한번 수정 가능
- EPROM Erasable PROM : 여러번 수정 가능한 롬으로 투명한 창이 있어 자외선을 쏘여 자우는 방식
지우려면 3~40분 정도 시간 소요. 지울수있는 횟수도 20회 전후
- EEPROM Electrically Erasable PROM : 전기적으로 지울수 있는 롬으로 12V 높은 전압 필요. 소켓형태로 롬을부착가능
- Flash : 보드 상에서 바로 지우고 쓸수있는 롬
ATmega128
- 총 53개 GPIO 핀
- Pxn(x 는 X~G, n은 0~7)
- 각 핀은 입,출력 설정 레지스터를 통해 소프트웨어로 선택가능
- DDRx 레지스터가 입력, 출력 선택 레지스터(Data Direction Register)
- 설정을 위해 각 핀은 DDRx, PORTx, PINx 세 종류 레지스터 사용
DDR 레지스터
- 입력과 출력 핀 설정
ex) PA0핀을 입력으로 할시 -> DDRA 레지스터의 0번 비트를 0으로 하면 됨
PORT 레지스터
- GPIO를 출력한다면 PORT 레지스터를 통해 해당 핀 전압레벨을 0이나 1로 하면됨
ex) PA0핀을 1로 출력 -> PORTA레지스터의 0번 비트를 1로 하면됨
PIN 레지스터
- 입력으로 된 핀 레벨을 읽으려 한다면 PIN 레지스터의 값을 읽으면 됨
ex) PA0핀의 입력값을 알고싶다 -> PIN A레지스터의 0번 비트를 읽으면됨
PA0 핀을 출력으로 설정하고, 레벨을 high로 설정하는 C 코드
#include <avr/io.h>
int main(void)
{
DDRA = 0b00000001;
PORTA = 0b00000001;
return 0;
}
ATmega128과 LED 연결 제어 실습
- LED 제어 펌웨어 소스
#include <avr/io.h>
#define F_CPU 16000000L
#include <util/delay.h>
int main()
{
DDRE = 0x01;
//E1핀만 출력 설정
while (1){
PORTE = 0x01;
//E!핀에 1출력, 나머지 핀 0 -> 불켜짐
_delay_ms(1000);
PORTE = 0x00;
//E 전체 핀 0 -> 불 꺼짐
_delay_ms(1000);
}
}
'컴퓨터과학 > 임베디드' 카테고리의 다른 글
펌웨어구현 환경구축 9 - 데이터시트 분석 (0) | 2020.05.06 |
---|---|
펌웨어구현 환경구축 8 - 회로도 분석 (0) | 2020.05.06 |
펌웨어구현 환경구축 6 - JTAG 활용 (0) | 2020.05.06 |
펌웨어구현 환경구축 5 - 교차 개발 환경 (0) | 2020.05.06 |
펌웨어구현 환경구축 4 - 펌웨어 디버깅 도구 이해 (0) | 2020.05.06 |