728x90

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 세 종류 레지스터 사용

ATmega128 GPIO

DDR 레지스터

- 입력과 출력 핀 설정

  ex) PA0핀을 입력으로 할시 -> DDRA 레지스터의 0번 비트를 0으로 하면 됨

PORT 레지스터

- GPIO를 출력한다면 PORT 레지스터를 통해 해당 핀 전압레벨을 0이나 1로 하면됨

 ex) PA0핀을 1로 출력 -> PORTA레지스터의 0번 비트를 1로 하면됨

PIN 레지스터

- 입력으로 된 핀 레벨을 읽으려 한다면 PIN 레지스터의 값을 읽으면 됨

 ex) PA0핀의 입력값을 알고싶다 -> PIN A레지스터의 0번 비트를 읽으면됨

 

DDR, PORT, PIN 레지스터 구조

PA0 핀을 출력으로 설정하고, 레벨을 high로 설정하는 C 코드

#include <avr/io.h>

int main(void)
{
	DDRA = 0b00000001;
	PORTA = 0b00000001;
	return 0;
}

 

ATmega128과 LED 연결 제어 실습

PE1에 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);
    }
}
300x250

+ Recent posts