블로그 이미지
하루, 글. 그림. 영상매체. 표현을 도와주는 기기들. 도전 중. 동화다아아
    동화다아아

    카테고리

    분류 전체보기 (176)
    잡담 (1)
    IT 기기-리뷰&뉴스 (7)
    리뷰 - 도서 (1)
    리뷰 - 영상 (0)
    리뷰 - 그림/음악 (1)
    내장형 하드웨어 (163)
    Total
    Today
    Yesterday

    ATmega128 spec 분석

    - High-performance

    - Low-power(저전력, 3.3V로도 수행 가능하다.)

    - 8-bit Microcontroller (데이터 처리가 8bit)

     ⇒ Microconroller (Microprocessor + Memory + Peripheral Interface)


    - Advanced RISC Architecture

     ⇒ 133 instructions (기능이 133개라는 뜻, 대부분 ‘포인터’로 제어 가능하다.

     ⇒ Fully Static Operation (명령어 길이가 고정되어 있다.)

     ⇒ Up to 16 MIPS Throughput at 16MHz

     ⇒ 모든 CPU는 1주기(Cycle)에 덧셈을 한번한다.

     ⇒ On-chip 2-cycle Multiplier (곱셈을 2Cycle에 한다. CPU간에 덧셈은 서로 차이가 없지만 곰셈에선 차이가 있다.)

    - RISC(Reduced Instruction Set Computer)

     ⇒ 레지스터가 많으므로 CISC보다 비싸나 속도는 더 빠르다.


    - High Endurance Non-volatile Memory segments

     ⇒ 128k Bytes of In-System Self-programmable Flash program memory

     ⇒ 4K Bytes EEPROM

     ⇒ 4K Bytes Internal SRAM

     ⇒  Write/Eraser cycles: 10,000 Flash/100,000 EEPROM
     

    - 비휘발성 메모리(Non-volatile memory)

     ⇒ EEPROM(4k - Flash보다 비싸다. 하지만 Flash보다 성능이 좋다.)

     ⇒ FLASH (128k) - 코드영역

       지우고 쓰는 것이 1번이다.(반드시 지우고 써야 한다.), 10,000 write/erase 이후로는 읽기만 가능해 진다.
     

    - 휘발성 메모리

     ⇒ SRAM(속도가 가장 빠르다 - random access memory) - stack 영역.

        단, 기억시간이 너무 짧으므로 recycle(재활용) 기능의 회로가 달려있다.

    - Programming Lock for Software Security(칩안에 있는 프로그램을 다운받지 못하게 한다.)
     

    - JTAG(IEEE std. 1149.1 Compliant) interface

     ⇒ 칩안에 있는 내용을 디버그 할 수 있다.(CPU 상태 모니터링)

     ⇒ 프로그램도 집어 넣을 수 있다.(펌웨어 업데이트 기능)

     ⇒ 장비를 따로 사야한다.
     

    - Peripheral Features

     ⇒ Two 8-bit Timer/Counters with Separate Prescalers and Compare Modes

     

    C언어 복습

    <프로그램 예제: p1_3.c>

    #include<stdio.h>

    int main()

    {

            int number;

            number = 3;

            

            printf("The number is %d\n", number);

            printf("&number = %08X\n", &number);

            *((int *)0xBFFFF848) = 100;

            printf("The number is %d\n", number);


            return 0;

    }


    ⇒ 출력 결과         

     

    ⇒ printf("&number = 08X\n", &number); // number의 주소값

      → &numbr = BFFFF848

      →

    48

    49

    4A

    4B

    ⇒ *((int *)0XBFFFF848) = 100; // 포인터로 number의 주소에 접근해 값 변경

      → The number is 100




    Posted by 동화다아아
    , |

    최근에 달린 댓글

    최근에 받은 트랙백

    글 보관함