IT

'하드웨어/ATmega128'에 해당되는 글 13건

  1. 2011.06.28 USART
  2. 2011.06.27 Source Insight 사용법
  3. 2011.06.27 내부 EEPROM 제어
  4. 2011.06.23 Avr 128 Memory Map
  5. 2011.06.16 1초당 FND 숫자 증가&LED ON/OFF

USART

2011. 6. 28. 12:45 : 하드웨어/ATmega128

Full Duplex 동작

 직렬 송수신 버퍼가 독립적이다.

비동기와 동기 모드를 지원한다.

2개의 USART를 제공한다.


----------------------------------------------------

데이터 시트 p.189 참조

UBRRxH/L

통신속도 설정 (ex 4800)

((CPU_CLOCK / (16L * BAUD_RATE))-1)

UDRx

송/수신 버퍼 (8 bit)

UCSRxA

RXCn Bit 7 : 수신 완료

         1 이면 데이터가 있음

         0 이면 비어 있음

 

TXCn Bit 6 : 송신 완료

         1 이면 데이터가 있음

         0 이면 비어 있음

 

UDREn Bit 5 : 버퍼 Empty

               1 이면 버퍼가 비어있음

UCSRxB

MCU 27번 RxD(수신용)

RXEN : Bit 4를 1로 설정

 

MCU 28번 TxD(송신용)

TXEN : Bit 3를 1로 설정

UCSRxC

(UMSEL) Bit 6 : 비동기 모드 0, 동기 모드 1

 

(UPM1:0) Bit 5-4 : Parity bit 없음 0 0 설정

         Even Parity    1 0 설정

         Odd Parity     1 1 설정

 

(USBS) Bit 3 : stop bit 1-Bit  0 설정

       stop bit 2-Bit  1 설정

 

(UCSZ1:0) Bit 2-1 & (UCSZ2) UCSRxB의 bit 2

               UCSZn2 UCSZn1 UCSZn0

data size 5bit     0       0        0

data size 6bit     0       0        1

data size 7bit     0       1        0

data size 8bit     0       1        1

data size 9bit     1       1        1

'하드웨어 > ATmega128' 카테고리의 다른 글

mac에서 AVR 프로그래밍 환경설정 방법  (2) 2011.07.01
function declaration isn't a prototype  (0) 2011.06.30
Source Insight 사용법  (0) 2011.06.27
내부 EEPROM 제어  (0) 2011.06.27
Avr 128 Memory Map  (0) 2011.06.23
Posted by sinpk

1. Project -> New Project 클릭 후 프로젝트 이름을 입력한다.

그림입니다.
원본 그림의 이름: K-1.jpg
원본 그림의 크기: 가로 1032pixel, 세로 746pixel


2. Project -> Add and Remove Project Files.. 클릭

그림입니다.
원본 그림의 이름: K-1.jpg
원본 그림의 크기: 가로 1032pixel, 세로 746pixel


3. 메인 소스를 찾아서 Add 클릭

그림입니다.
원본 그림의 이름: K-2.jpg
원본 그림의 크기: 가로 582pixel, 세로 515pixel


4. winavr의 헤더파일 경로를 찾아서 모두 추가(하위 디렉토리까지)

그림입니다.
원본 그림의 이름: K-4.jpg
원본 그림의 크기: 가로 582pixel, 세로 515pixel


5. 옵션 체크 – 하위 디렉토리 내용 포함

그림입니다.
원본 그림의 이름: K-5.jpg
원본 그림의 크기: 가로 378pixel, 세로 104pixel


6. 확인 클릭

그림입니다.
원본 그림의 이름: K-6.jpg
원본 그림의 크기: 가로 286pixel, 세로 131pixel

'하드웨어 > ATmega128' 카테고리의 다른 글

function declaration isn't a prototype  (0) 2011.06.30
USART  (0) 2011.06.28
내부 EEPROM 제어  (0) 2011.06.27
Avr 128 Memory Map  (0) 2011.06.23
1초당 FND 숫자 증가&LED ON/OFF  (0) 2011.06.16
Posted by sinpk

EECR(Control Register) 레지스터

EERE(Read Enable) 0비트

EEAR에 지정된 주소의 1바이트를 읽어 EEDR에 저장


EEWE(Write Enable) 1비트

쓰기 기능 동작, 시스템에 의한 클리어


EEMWE(Master Write Enable) 2비트

EEWE 동작 전 1을 지정해야 함, 시스템에 의한 클리어


EERIE(Ready Interrupt Enable) 3비트

EEWE가 클리어 될 때 인터럽트 발생 여부

SREG 레지스터의 I비트도 활성화 되어있어야 한다.


----------------------------------------------------


EEAR(Address Register) 레지스터

16비트 공간중에서 12비트를 사용한다.

12비트 공간이기 때문에 unsigned int형을 사용한다.


EEDR(Data Register) 레지스터

읽거나 쓰기 위한 데이터를 저장한다.

8비트 공간이기 때문에 unsigned char형을 사용한다.

'하드웨어 > ATmega128' 카테고리의 다른 글

USART  (0) 2011.06.28
Source Insight 사용법  (0) 2011.06.27
Avr 128 Memory Map  (0) 2011.06.23
1초당 FND 숫자 증가&LED ON/OFF  (0) 2011.06.16
[Normal mode]Timer Counter Overflow Interrupt  (0) 2011.06.16
Posted by sinpk

Avr 128 bus 구조

Data bus 8bit

Address bus 16 bit


<SRAM 영역>

SRAM 4KB
4k * 1byte = 2^2 * 2^10 * 1byte = 2^12 * 1byte = 4096

avr128 데이터 시트 p20에 보면 메모리맵 그림이 있다.
Normal mode 일 때 SRAM은 0100 ~ 10FF 번지를 사용한다.
외부SRAM을 추가하였을 때는 1100 번지부터 64KB 영역 번지까지 사용한다.


<내부 eeprom 영역>
내부 EEPROM은 총 4Kbyte이다. (그렇다면  0 ~ 4095 의 주소크기를 갖게 된다.)
4k * 1byte = 2^2 * 2^10 * 1byte = 2^12 * 1byte = 4096

<Flash 영역>

Flash 128KB
65536 = 2^16 = 2^10 * 2^6 = 1K * 2^6 = 64K * 2byte = 128KB

'하드웨어 > ATmega128' 카테고리의 다른 글

Source Insight 사용법  (0) 2011.06.27
내부 EEPROM 제어  (0) 2011.06.27
1초당 FND 숫자 증가&LED ON/OFF  (0) 2011.06.16
[Normal mode]Timer Counter Overflow Interrupt  (0) 2011.06.16
AVR128 메모리 어드레스  (0) 2011.06.13
Posted by sinpk

#include <avr/io.h>
#include <avr/signal.h>
#include <avr/interrupt.h>

#define DDR_LED                      DDRF
#define DATA_LED                    PORTF

#define DDR_KEY                      DDRC
#define PIN_KEY                       PINC

#define DDR_SENSOR               DDRD
#define PIN_SENSOR                PIND

#define DDR_FND                      DDRE
#define DATA_FND                    PORTE

#define TIMER_COUNT              0x06

void init_LED(void);
void init_FND(void);
void init_SENSOR(void);
void init_TimerCounter0(void);
void sleep(unsigned int e_time);

SIGNAL(SIG_OVERFLOW0);

volatile unsigned int g_time = 0;

int main (void)
{
        init_LED();
        init_FND();
        init_TimerCounter0();
        sei();

        unsigned char num = 0;

        for(;;)
        {       
                DATA_LED = ~DATA_LED;
                DATA_FND = ((num/10)<<4) | (num%10);                

                sleep(500);

                if(num>99)
                        num=0;
                else
                        num++;
        }
        return 0;
}

void init_LED()
{
  DDR_LED = 0xff;
  DATA_LED = 0xFF;
}

void init_FND()
{
  DDR_FND = 0xFF;
  DATA_FND = 0xff;

void init_SENSOR()
{
        DDR_SENSOR = 0X00;
        PIN_SENSOR=0X00;
}

void init_TimerCounter0()
{
        TCCR0=1<<CS02;
        TCNT0=TIMER_COUNT;
        TIMSK=1<<TOIE0;
}

void sleep(unsigned int i)
{
        g_time = 0;
        while(g_time<i);
}

SIGNAL(SIG_OVERFLOW0)
{
        g_time++;
        TCNT0=TIMER_COUNT;
}

'하드웨어 > ATmega128' 카테고리의 다른 글

내부 EEPROM 제어  (0) 2011.06.27
Avr 128 Memory Map  (0) 2011.06.23
[Normal mode]Timer Counter Overflow Interrupt  (0) 2011.06.16
AVR128 메모리 어드레스  (0) 2011.06.13
AVR128 특징  (0) 2011.06.01
Posted by sinpk