8-bit with 8K Bytes In-System Programmable Flash

 

 

간단한 특징은 아래와 같습니다.

 

(1) 저 전력 고성능의 RISC구조 - 8MHz를 사용 시 8MIPS, 16MHz 사용 시 16MIPS 실행
(2) 데이터 및 비휘발성 프로그램 메모리
    - 8K Bytes의 프로그램 가능한 Flash Memory (직렬 프로그래밍 인터페이스 방식)
    - 1K Bytes의 내부 SRAM
    - 512 Bytes의 데이터 EEPROM(직렬 프로그래밍 인터페이스 방식)
    - In-System Programing을 위한 SPI Interface
(3) 주변장치의 특징 - 8비트 범용 작업 레지스터 32개
    - Programmable Serial USART
    - Master/Slave SPI Serial Interface
    - 별도의 프리스케일러를 갖는 8비트 타이머/카운터 2개
    - 비교·캡쳐 모드와 8~10비트의 PWM기능을 갖는 16비트 타이머/카운터
(4) 내부 및 외부 인터럽트 소스
(5) 저 전력 Idle, Power Save과 Power-down 모드
(6) 동작전압 : 4.5∼5.5V
(7) 동작클럭 : 0∼16 MHz

 

Features
• High-performance, Low-power AVR® 8-bit Microcontroller
• Advanced RISC Architecture
– 130 Powerful Instructions – Most Single-clock Cycle Execution
– 32 x 8 General Purpose Working Registers
– Fully Static Operation
– Up to 16 MIPS Throughput at 16 MHz
– On-chip 2-cycle Multiplier
• Nonvolatile Program and Data Memories
– 8K Bytes of In-System Self-Programmable Flash
Endurance: 10,000 Write/Erase Cycles
– Optional Boot Code Section with Independent Lock Bits
In-System Programming by On-chip Boot Program
True Read-While-Write Operation
– 512 Bytes EEPROM
Endurance: 100,000 Write/Erase Cycles
– 1K Byte Internal SRAM
– Programming Lock for Software Security
• Peripheral Features
– Two 8-bit Timer/Counters with Separate Prescaler, one Compare Mode
– One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture
Mode
– Real Time Counter with Separate Oscillator
– Three PWM Channels
– 8-channel ADC in TQFP and MLF package
Eight Channels 10-bit Accuracy
– 6-channel ADC in PDIP package
Eight Channels 10-bit Accuracy
– Byte-oriented Two-wire Serial Interface
– Programmable Serial USART
– Master/Slave SPI Serial Interface
– Programmable Watchdog Timer with Separate On-chip Oscillator
– On-chip Analog Comparator
• Special Microcontroller Features
– Power-on Reset and Programmable Brown-out Detection
– Internal Calibrated RC Oscillator
– External and Internal Interrupt Sources
– Five Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, and
Standby
• I/O andPackages
– 23 Programmable I/O Lines
– 28-lead PDIP, 32-lead TQFP, and 32-pad MLF
• Operating Voltages
– 2.7 - 5.5V (ATmega8L)
– 4.5 - 5.5V (ATmega8)
• Speed Grades
– 0 - 8 MHz (ATmega8L)
– 0 - 16 MHz (ATmega8)
• Power Consumption at 4 Mhz, 3V, 25°C
– Active: 3.6 mA
– Idle Mode: 1.0 mA
– Power-down Mode: 0.5 μA

 

 

아트메가128을 통해서 이미 다 공부해보시고 원하는 기능만을 구현하실때 사용하시면 참 편리합니다^^

적당한 I/O 갯수로 원하는 동작을 심플하게 디자인된 회로로 만들어 내실수 있습니다.

 

 

 

 

ATMega8.pdf

 

SHT1x / SHT7x
Humidity & Temperature Sensor

 

Relative humidity and temperature sensors
- Dew point
- Fully calibrated, digital output
- Excellent long-term stability
- No external components required
- Ultra low power consumption
- Surface mountable or 4-pin fully interchangeable
- Small size
- Automatic power down

 

 

SHT1x / SHT7x Product Summary
The SHTxx is a single chip relative humidity and temperature multi sensor module comprising a calibrated digital output. Application of industrial CMOS processes withpatented micro-machining (CMOSens® technology) ensures highest reliability and excellent long term stability. The device includes a capacitive polymer sensing element for relative humidity and a bandgap temperature sensor. Both are seamlessly coupled to a 14bit analog to digital converter and a serial interface circuit on the same chip. This results in superior signal quality, a fast response time and insensitivity to external disturbances (EMC) at a very competitive price. Each SHTxx is individually calibrated in a precision humidity chamber with a chilled mirror hygrometer as reference. The calibration coefficients are programmed into the OTPmemory. These coefficients are used internally during measurements to calibrate the signals from the sensors.
The 2-wire serial interface and internal voltage regulation allows easy and fast system integration. Its tiny size and low
power consumption makes it the ultimate choice for even the most demanding applications.

The device is supplied in either a surface-mountable LCC (Leadless Chip Carrier) or as a pluggable 4-pin single-in-line
type package. Customer specific packaging options may be available on request.

 

 

 

 

 

온도 습도 센서.pdf

 

 

DUAL LOW VOLTAGEPOWER AMPLIFIER

 

 

 

DESCRIPTION
The UTC TDA2822 is a monolithic integrated audio amplifier
in a 8-Pin plastic dual in line package. It is designed for
portable cassette players and radios.

 

 

Operating Supply Voltage 1.8V ~ 12V

 

저전압 동작 OP-AMP 입니다! 간단한 5V 동작 오디오 앰프로 쓰일수 있습니다.

저전압이기때문에 간단하게 USB 전원으로도 충분한 성능을 보일수 있습니다.

 

 

 

 

 

 

TDA2822_low.pdf

 

A741, uA741Y

GENERAL-PURPOSE OPERATIONAL AMPLIFIERS

 


● Short-Circuit Protection

●  Offset-Voltage Null Capability

●  Large Common-Mode and Differential

     Voltage Ranges

●  No Frequency Compensation Required

●  Low Power Consumption

●  No Latch-Up

●  Designed to Be Interchangeable With

     Fairchild mA741

 


Description


The mA741 is a general-purpose operational amplifier featuring offset-voltage null capability. The high common-mode input voltage range and the absence of latch-up make the amplifier ideal for voltage-follower applications. The device is short-circuit protected and the internal frequency compensation ensures stability without external components. A low value potentiometer may be connected between the offset null inputs to null out the offset voltage as shown in Figure 2.

The mA741C is characterized for operation from 0°C to 70°C. The mA741I is characterized for operation from –40°C to 85°C.The mA741M is characterized for operation over the full military temperature range of –55°C to 125°C.

 

 

전자회로 실험시간에 한번씩 써보셨을거라 생각되는 굴러다니는 OP_AMP IC 입니다.^^




UA741.pdf


소자의 이름에는 그 소자의 특성과 기능(?) 등이 숨어있답니다.

 

NTC-10KD-5J

 

NTC : Negative를 의미합니다. 온도가 올라갈수록 저항값이 낮아진다는걸 의미하죠

10KD : 기준온도(25도)에서 저항값이 10K옴이라는 뜻입니다.

5J : 저항값의 오차율이 +,-5%를 의미한다는 말입니다.

 

개념 : MCU에서 (현재기준은 ATmega128로 설명) 값을 읽을때는 0,1밖에 인식을 하지 못합니다.

         그래서 ADC를 사용합니다.아래의 회로에서는 " 입력전압값 = [ RT1 / (R4+RT1) ]*VCC " 을 읽습니다.

         자세한 내용은 "아무도 가르쳐주지 않는" 파트를 참고해주세요.

 

온도센서의 경우 아래의 회로도를 참고해주세요.

 

 

 

 

 

10KD-5J RT.pdfNTC-10KD-5J R값.txtNTC-10KD-5J.pdf


The LM386 is a power amplifier designed for use in low voltage
consumer applications. The gain is internally set to 20 to
keep external part count low, but the addition of an external
resistor and capacitor between pins 1 and 8 will increase the
gain to any value up to 200.
The inputs are ground referenced while the output is automatically
biased to one half the supply voltage. The quiescent
power drain is only 24 milliwatts when operating from a

 


6 volt supply, making the LM386 ideal for battery operation.

저전압 스피커설계시 주로 사용하는 Amp입니다 ^^

나중에 USB전원으로 동작하는 관련회로도도 포스팅해보겠습니다~




LM386.pdf

 

8-bit Microcontroller  with 128K Bytes In-System Programmable Flash
ATmega128 , ATmega128L


첨부파일 참조.



atmega128l-datasheet.pdf


출처 :  나.


ATmega128을 사용하기위한 기본회로도 구성입니다~ 물론 LED는 제외하셔도 됩니다!

주의 하실부분은 ISP를 무엇을 사용하는가에 따라서 커넥터의 모양이 바뀔거 같네요~
저는 아래의 몰에서 구입했습니다!


 http://www.avrmall.com/ishop/goods_detail.php?goodsIdx=2739           
 USBISP V3.0 38,500원

ISP의 6개핀은 각각 ATmega128과 연결이 됩니다. ATmega시리즈중에서 유일하게 128만 MOSI,MISO가 2,3번 RX,TX핀에 연결이 되기때문에 기본 하드웨어 설계시 주의하셔야 합니다.

크리스탈(Y1)은 8Mhz를 사용하였으며 (최대 16Mhz까지 가능합니다) ATmega128A는 ATmega128과 L의 통합형이라 생각하세요
22PF의 세라믹커패시터를 연결해줬습니다.

RESET은 간단히 스위치와 저항으로만 구성하였습니다.
회로에는 표기되어있지 않는데 63번 GND핀도 GND에 연결해주세요.



 

                                        (제작한 회로입니다.) 커넥터 몇개는 다른 테스트때문에 연결한겁니다^^;
                      


AVR Studio 5 installer
(390 MB, revision 5.0.1223, updated 11/11)
This installer contains AVR Studio 5 only and requires that you have already installed Visual Studio Shell (Isolated mode) 2010 and .NET 4.0.

Select this installer if you have installed AVR Studio 5 beta already and only need to upgrade.

NOTE:
AVR Studio 5.0 cannot be upgraded from its beta versions. Please uninstall any beta versions of AVR Studio 5.0 from Add/Remove programs and reinstall.

http://www.atmel.com/dyn/resources/prod_documents/as5installer-small-5.0.1223.exe

 

 

 

AVR Studio 5 installer (includes VSS and .NET)
(605 MB, revision 5.0.1223, updated 11/11)
This installer contains AVR Studio 5, Visual Studio Shell (Isolated mode) 2010 and .NET 4.0.

Select this installer if you need all three or are unsure of what installer to use.

NOTE:
AVR Studio 5.0 cannot be upgraded from its beta versions. Please uninstall any beta versions of AVR Studio 5.0 from Add/Remove programs and reinstall.

http://www.atmel.com/dyn/resources/prod_documents/as5installer-full-5.0.1223.exe

 

 

 

AVR Studio 5 - AVR Software Framework Update
(222 MB, revision 2.8.1, updated 10/11)
AVR Software Framework update for AVR Studio 5.
http://www.atmel.com/dyn/resources/prod_documents/AVRStudio5-ASF-Update-2.8.1.76.exe

 

 

 

AVR Studio 5 installer (includes VSS and .NET)
(602MB, revision 5.0, updated 5/11)
This installer contains AVR Studio 5, Visual Studio Shell (Isolated mode) 2010 and .NET 4.0.

Select this installer if you need all three or are unsure of what installer to use.

NOTE:
AVR Studio 5.0 cannot be upgraded from its beta versions.
Please uninstall any beta versions of AVR Studio 5.0 from Add/Remove programs and reistall.

http://www.atmel.com/dyn/resources/prod_documents/as5installer-5.0.1163-full.exe

 

 

 

AVR Studio 5 installer
(387 MB, revision 5.0, updated 5/11)
This installer contains AVR Studio 5 only and requires that you have already installed Visual Studio Shell (Isolated mode) 2010 and .NET 4.0.

Select this installer if you need all three or are unsure of what installer to use.

NOTE:
AVR Studio 5.0 cannot be upgraded from its beta versions.
Please uninstall any beta versions of AVR Studio 5.0 from Add/Remove programs and reistall.
http://www.atmel.com/dyn/resources/prod_documents/as5installer-5.0.1163-small.exe

 

 

 

AVR Studio 5 beta (522 MB, revision 5.0, updated 3/11)

See AVR Studio 5.0 Release Notes for more details. (Release Note, 12 pages, revision 5.0, updated 3/11)

http://www.atmel.com/dyn/resources/prod_documents/avrstudio5.0.beta.exe

 

 

 

AVR Studio 4.18 SP3 (b716) (31 MB, updated 9/10)

New device support since the release of AVR Studio 4.18:
See Release Notes 4.18 SP3 for more details.

http://www.atmel.com/dyn/resources/prod_documents/AVRStudio4.18SP3.exe

 

 

 

AVR Studio 4.18 SP2 (b700) (28 MB, updated 2/10)

New device support since the release of AVR Studio 4.18:
See Release Notes 4.18 SP2 for more details.

http://www.atmel.com/dyn/resources/prod_documents/AVRStudio4.18SP2.exe

 

 

 

AVR Studio 4.18 SP1 (build 692) (28 MB, updated 12/09)

New device support since the release of AVR Studio 4.18:
See Release Notes 4.18 SP1 for more details.

http://www.atmel.com/dyn/resources/prod_documents/AVRStudio4.18SP1.exe

 

 

 

AVR Studio 4.18 (build 684) (116 MB, updated 11/09)
AVR Studio 4.18 includes new device support and numerous overall enhancements;
QT600 support in programming dialog in AVR Studio, AVR Dragon support for all AVR 8-bit devices including XMEGA, Programming and debugging within AVR Studio, command line software support for ELF production file format, and button for starting AVR32 Studio.

http://www.atmel.com/dyn/resources/prod_documents/AvrStudio4Setup.exe

 

 

 

AVR Studio 4.17 (build 666) (112 MB, updated 7/09)

Full AVR ONE! 8-bit support - both programming and debugging, AVR Battery Studio version 1.02, JTAGICE mkII command line SW with support for ELF production file format, and STK500 command line SW with support for ELF production file format.

http://www.atmel.com/dyn/resources/prod_documents/AvrStudio417Setup.exe

 

 

 

AVR Studio 4.16 SP1 (build 638) (34 MB, updated 5/09)

New device support since the release of AVR Studio 4.16:
ATxmega16D4, ATxmega32D4, ATxmega64D3, ATxmega128D3, ATxmega256D3

New Features
AVR ISP mkII command line SW support for XMEGA device family.

http://www.atmel.com/dyn/resources/prod_documents/AVRStudio4.16SP1.exe

 

 

 

AVR Studio 4.16 (build 628) (126 MB, updated 2/09)
AVR Studio 4.16 includes new device support and numerous overall enhancements;
AVR QTouch Studio, STK600 support for multiple socket/routing card combinations, Windows Error Reporting (WER) system activated, and JTAGICE mkII command line SW support for XMEGA device family.

http://www.atmel.com/dyn/resources/prod_documents/AvrStudio416Setup.exe

 

 

 

AVR Studio 4.15 (build 623) (94 MB, updated 11/08)
AVR Studio 4.15 includes new device support and numerous overall enhancements;
Support for the new AVR ONE! on-chip debugging and programming tool. Introducing Live debug that enables you to attach/detach to running processes (AVR ONE! feature only). AVR Battery Studio v1.0. Front-end to the SB200/201 Single and dual cell Smart Battery kit.
 
AVR Studio 4.14 (build 589) (89 MB, updated 4/08)
AVR Studio 4.14 includes new device support and numerous overall enhancements;
Support for the new XMEGA device family, full support for 32-bit and 64 bit versions of Vista, AVR Wireless Services application supporting the AVR Raven Kit
See release notes for more details. 
 
AVR Studio 4.13 SP2 (build 571) (45 MB, updated 12/07)
http://www.atmel.com/dyn/resources/prod_documents/AVRStudio4.13SP2.exe

 

AVR Studio 4.13 SP1 (build 557) (37 MB, updated 9/07)
http://www.atmel.com/dyn/resources/prod_documents/aStudio413SP1b557.exe

 

AVR Studio 4.13 (build 528) (73 MB, updated 03/07)
AVR Studio 4.13 includes new device support and numerous overall enhancements;
Complete device support for AVR Dragon, 2 new I/O- and Processor views, WinAVR and 32- and 64-bit Windows(R) support!
See release notes for more details.

출처  : http://blog.naver.com/ryumr?Redirect=Log&logNo=110074109653


 

세상에는 눈에는 보이지만 보이지 않는것이 더 많다..(?)
(이게 갑자기 왠 헛소리?)
이제부터의 부분은 이해하기가 까다롭고 힘듭니다..
(..제가..힘들었기 때문에...-_-)
암튼 서론은 이제 집어치우고 본론으로..!!
 이제부터는 ATmega의 내부구조에 대해서 정리하겠습니다.

 

 

 

[ATMEGA128의 내부구조]

일단 CPU부터 시작해보겠습니다..
아 그전에 위에 보이는 그림의 굵은 선은 앞장에서 말한 말한  버스입니다.
이 버스를 흔히 도로가에 다니는 시내버스, 동네버스~ 그런버스라고 가정해봅시다.
왜냐면 버스는 무언가를 이동시키기는 통로이기 때문입니다.!

 바로 시내버스는 많은 사람들을~
 저기 그림의 버스는 여러 데이터들을!!

암튼 앞으로 사용할 ATMEGA128은 명령어버스와 데이터버스로 두개의 버스로 분리된 (이게바로! 하버드구조) 구조입니다. 
그럼 이곳은 누가 사용하느냐? 아래의 표를 참조해주세요.
(굳이 여기서 폰이노만과 하버드구조를 비교하진 않겠습니다)
 

아래의 그림을 보시면 어디서 많이 본 이름들이 보입니다.
바로 위에서 내부구조라고 올려놓은 그림에서 중앙왼쪽부분만 따로 떼어놓은것이라고 볼수있습니다.


이 그림이 바로 CPU CORE부분입니다. 아트메가를 더 잘 이해하기 위해서는 분명히 이해하고 넘어가야할 부분이며 처음에는 그냥 이게 무슨 그림이지 이렇게 생각하며 넘어갈게 될겁니다. 하지만 후에 어느정도 공부를 하고 다시 보면 아 이 화살표가 왜 여기서 이렇게 가는지, 왜 이 구조도를 이렇게 그렸는지 어느정도는 이해할수있을 겁니다! 일단 이부분은 고성능 ALU가 32개의 일반목적레지스터를 단일싸이클로 처리 한다고만 하겠습니다.

 아래의 그림은 위의 CPU CORE부분과 동일한 부분을 첫번째 내부구조그림에서 필요한것만 잘라서 떼어낸 그림입니다.

1) 플래시 프로그램 메모리 

프로그램 메모리는 8비트로 구성되어있지만 기본적으로 한 개의 번지가 16비트 단위로 구성되어 16비트 마이크로프로세서인 것처럼 동작을 합니다. (8bit = 1byte / 16bit = 2byte)
아트메가의 플래시 메모리는 명령어(모든 AVR의 명령어는 16비트 또는 32비트 길이로 구성 )를 저장하는 역할을 하며 (후에 AVR STUDIO로 코딩하게되어 프로그램을 주입하게 되면 이곳에 저장됩니다.)

64Kbyte X16bit(2byte) = 128Kbyte
플래시로 되어 있는 내부 프로그램 메모리는 부트 프로그램 섹션(boot program section)과 응용 프로그램 섹션(application program section)의 두 가지 영역으로 나누어져 있습니다.

예를 들면 컴퓨터를 켰을때 ROM에 저장된 프로그램들이 실행되어 윈도우 부팅전까지 COMS셋업을 해주는것 처럼 그런 부분이 아트메가에선 부트섹션이며 컴퓨터에서 설치된 윈도우나 한글97과 같은 프로그램은 아트메가에서 사용자가 컴파일러로 작성한  프로그램으로  응용 프로그램 섹션에 저장됩니다.

 내부 프로그램 메모리는 특정의 메모리 잠금 비트(memory lock bit)를 사용하여 쓰기와 쓰기/읽기의 금지를 할 수 있습니다. 이는 내가 수고해서 만든 코드들을 다른 사람들이 훔칠수 없게 잠금장치를 거는것입니다. - 여기에 관해 역해킹을 알아봤는데 어셈로 저장된 Flash memory의 정보를 읽어올순 있지만..이를 다시 C코드화 하는건 경우의 수가 너무 많아서 불가능하다고 결론을 내렸습니다. 

 

2)ALU (산술-논리 연산장치) 

AVR의 ALU는 32개의 일반 목적의 동작 레지스터(general purpose working register)와 직접적으로 연계되어 동작합니다.

즉 ALU는 두뇌의 산술처리하는 부분에 해당되며 32개의 목적레지스터는 두뇌의 순간기억장치에 해당합니다. 이 두개가 서로 연계되어 더하기 빼기 등을 하며 동작하는 것입니다. 결국 컴퓨터는 0101...을 빠르게 연산하는 기계니깐요..
ALU는 레지스터 간 또는 레지스터와 상수 간의 산술 또는 논리 연산을 단일 클럭 사이클에 수행 연산된 결과에 대한 ALU의 상태를 상태 레지스터로 갱신됩니다. (3번 상태레지스터참고) AVR에서는 강력한 하드웨어 곱셈기를 가지고 있어서 부호있는 정수/부호없는 정수의 곱셈 연산과 소수점 형식의 곱셈 연산을 빠르게 수행할수있습니다.

 

3)상태 레지스터 (Status register)

가장 최근에 실행된 산술 연산의 명령어 처리 결과 에 대한 상태를 나타내 주는 레지스터입니다.
조건부 처리 명령에 의해 프로그램의 흐름을 변경하는데 사용될 수 있습니다.
(조건부 명령이란 FOR,WHILE,SWITCH.. 등을 말하는겁니다)
상태 레지스터는 인터럽트를 처리하는 과정에서 자동으로 저장되거나 복구되지 않으므로, 반드시 소프트웨어에서 이러한 동작을 처리하여 주어야 합니다. (즉 플립플롭처럼 유지되는거죠)

     

 I(7) : interrupt enable    1= 전체 interrupt enable, 0 = 전체 인터럽트 disable

(주로 코딩을 하시면 SREG레지스트중 i비트를 가장 많이 다루시게 될겁니다.)
 T(6) : 비트 복사 저장,  T bit를 통하여 bit 전송

(UART통신시 사용하면 편합니다)
 H(5): half carry flag  :   0000 1000 + 0000 1000  half carry 발생
 S(4):  sign bit :  V 배타적 OR  N (XOR을 의미합니다)
 V(3): overflow bit  :   1000 0000 + 1000 0000  overflow bit set

(오버플로는 음수+음수 = 양수 일때 발생합니다)
 N(2): negative bit :  연산결과가 음수임
 Z(1): zero bit : 연산결과가 0임을 나타냄
 C(0): carry bit : 연산결과 자리 수 올림(더하기), 혹은 빌림(빼기) 

위의 상태레지스터는 i비트빼고 잘 사용하진 않지만 후에 코딩이 길어지거나 프로그램의 조건문이 너무 길어지거나 애매할때 조금만 고민해보시면 사용이 편하다는걸 아시게될겁니다.

 

4) 범용레지스터 (위의 ALU와 함께 쓰이는 부분)

AVR의 고성능 RISC 명령을 수행하는데 최적화 되어 있는 레지스터
(SRAM의 일정한 한부분이 이루고있다. 일종의 특공대로 구성된 RAM으로 봐도 무방합니다)
1 바이트 크기(8bit)로 32개의 범용 레지스터로 구성

(R0~R25까지 데이터저장 또는 연산에쓰이며 R26부터는 2개씩 쌍으로 묶어서 16bit(2Byte)레지스터로 사용합니다. 또한 R26부터 총6개의 레지스터인데 각 한쌍씩 X,Y,Z레지스터라고 따로 부르고 있으며 X,Y는 데이터 메모리 지정, Z는 flash memory을 읽어올때 사용합니다.) 
연산의 대상이 누산기가 아닌 이들 32개의 범용 레지스터들을 사용하여 연산을 할 수 있어서 연산의 속도가 빠릅니다.
또한 레지스터간의 연산은 보통 1 사이클의 명령으로 이루어집니다.

 

5) 스택포인터(SP)

 

 마이크로컨트롤러 응용에서 서브루틴이나 인터럽트 발생시에 복귀되는 주소를 임시로 기억하기 위해서 사용되거나 일반 프로그램에서 지역 변수 또는 임시 데이터를 저장하는 용도로 사용되는 LIFO(Last In First Out) 구조의 메모리를 스택이라하며,

LIFO는 말그대로 마지막에 저장된 데이터가 맨 처음 불러져 나온다는 의미입니다.

[][][][][] 의 모양과 같이 한쪽이 막힌 동전지갑과 같은 동작이라고 생각하시면 이해가 빠릅니다.
스택 포인터는 항상 데이터의 상단(top of stack)을 가리키는 16비트 레지스터로서 SP라고 표시되는데, 이는 데이터 저장이 가능한 스택의 번지를 의미하는것입니다.

예를들어, C언어의 코딩중 스택의 의미를 극단적으로 표현해보겠습니다.

{  
  (1)번째 동전을 지갑에 넣어라;
    {    
      (2)번째 동전을 지갑에 넣어라;
      두번째동전을 빼라;   
    }
  첫번째동전을 빼라;  
 }

위의 명령은 설명을 위해 억지 예를 든것 뿐입니다.
프로그램의 실행은 바깥괄호부터 시작하지만 실제처리는 맨 안쪽 괄호부터 끝이납니다.
바로 스택을 이용하기때문입니다. 넣은순서대로 처리가 끝나는것이 아니라, 마지막에 넣은것이 먼저끝이되는 LIFI구조가 바로 스택입니다.


스택의 동작 : 푸싱(동전을넣는것), 팝핑(동전을빼는것) 동작으로 구분됩니다.
스택은 SRAM 영역내에 존재, SP 레지스터의 초기값은 적어도 0x60 번지 이상의 값으로 설정
(메모리구조는 다음에 한꺼번에 설명하겠습니다)

+ Recent posts