๐ ๋ง์ดํฌ๋กํ๋ก์ธ์ ๊ณผ๋ชฉ
๐ซ ๋ง์ดํฌ๋กํ๋ก์ธ์
Micro-Processor (์์-์ฐ์ฐ์ฅ์น)
ํ๋ก์ธ์(CPU, GPU, โฆ ์ผ๋ฐ์ ์ผ๋ก CPU)์ ๊ธฐ๋ฅ์ ํ ๊ฐ ~ ๋ช ๊ฐ ์ด๋ด์ ์นฉ์ผ๋ก ์ง์ฝํ ์ฒ๋ฆฌ๊ธฐ
๋ฉ๋ชจ๋ฆฌ์ ์ฃผ๋ณ ์ฅ์น์์ ์ธ๋ถ ์ฐ๊ฒฐ์ ์ํ ํ์ ๊ฐ์ง๊ณ ์๋ค.
๋ฉ๋ชจ๋ฆฌ : ์ด๋๋ ์ค ๋ฒ์ค, ๋ฐ์ดํฐ ๋ฒ์ค, โฆ
์ฃผ๋ณ ์ฅ์น : ์ ์ ๊ณต๊ธ, ๋ฐ์ง๊ธฐ, โฆ
๋ฐ์ดํฐ ๋ฒ์ค ํฌ๊ธฐ, ์ด๋๋ ์ค ๋ฒ์ค ํฌ๊ธฐ, ์ฐ์ฐ ๋ ์ง์คํฐ ํฌ๊ธฐ, ๋ฒ์ฉ ๋ ์ง์คํฐ ์, ํด๋ก ์คํผ๋ ๋ฑ์ผ๋ก ์ฑ๋ฅ์ด๋ ๊ท๋ชจ๊ฐ ๋ถ๋ฅ๋๋ค.
๊ฐ์์์๋ AVR2560์ ๋ค๋ฃธ
AVR - Alf-Egil Bogen, Vergard Wollen, RISC
๐ซ ๋ฒ์ฉ ์ /์ถ๋ ฅ ํฌํธ ๋ ์ง์คํฐ - General Purpose IO Port Register
๋ ์ง์คํฐ๋ ๋ฐ์ดํธ ๋จ์, ๊ธฐ๋ฅ์ ๋นํธ ๋จ์
AVR MCU ๋ชจ๋ ๋ ์ง์คํฐ๋ ๋ฉ๋ชจ๋ฆฌ ์ฑ ์ฝ๊ธฐ/์ฐ๊ธฐ ๋ฐฉ์ ์ ๊ทผ ๊ฐ๋ฅ, ์ผ๋ถ๋ ๊ฒฉ๋ฆฌ ์ฝ๊ธฐ/์ฐ๊ธฐ ์ ๊ทผ ๊ฐ๋ฅ
DDR : ๋ฐ์ดํฐ ๋ฐฉํฅ ์ง์ ๋ ์ง์คํฐ
โ ๊ฐ ํ์ ๋ํด, ์
๋ ฅ(0)์ผ๋ก ์ธ์ง ์ถ๋ ฅ(1)์ผ๋ก ์ธ์ง ์ค์
โ i.e. DDR == 0x01, 1ํ ์ถ๋ ฅ + 7ํ ์
๋ ฅ
PORT : ์ถ๋ ฅ ์ฉ์ผ๋ก ์ค์ ๋ ํ์ ๋ํด, ๋ฐ์ดํฐ๋ฅผ ์ฐ๋/์
๋ ฅํ๋ ๋ ์ง์คํฐ
PIN : ์
๋ ฅ ์ฉ์ผ๋ก ์ค์ ๋ ํ์ ๋ํด, ๋ฐ์ดํฐ๋ฅผ ์ฝ๋/์ถ๋ ฅํ๋ ๋ ์ง์คํฐ
- ์
/์ถ๋ ฅ ๋ ์ง์คํฐ
- A ~ L 11๊ฐ (I ์ ์ธ)
- PIN ์ : 11 * 8 = 88
- ๊ฐ๊ฐ DDRA, PORTA, PINA ๋ช
์นญ
- <avr/io.h> ์ ์ ์
- ์ฐ์ฐ
- PORTF = 0xff : ๋ชจ๋ ์ถ๋ ฅ์ผ๋ก ์ค์
PORTF = PORTF 0x01 : ์ฒซ ํ๋ง ์ถ๋ ฅ์ผ๋ก ์ค์ , ๋๋จธ์ง ๊ธฐ์กด ๊ทธ๋๋ก - PORTF = PROTF & 0xfe : ์ฒซ ํ๋ง ์ ๋ ฅ์ผ๋ก ์ค์ , ๋๋จธ์ง ๊ธฐ์กด ๊ทธ๋๋ก
- v = PINF & 0x01 : ๋งจ ์ฒซ ํ์ ์ ๋ ฅ๊ฐ๋ง ํํฐ๋ง
๐ซ ํน์ ๊ธฐ๋ฅ ๋ ์ง์คํฐ - SFR - Special Function Register
๋ฒ์ฉ ๋ ์ง์คํฐ, ๋ฒ์ฉ ์
/์ถ๋ ฅ ๋ ์ง์คํฐ โ ๋ฐ์ดํฐ ๋ณด๊ด/์ ๋ฌ
ํน์ ๊ธฐ๋ฅ ๋ ์ง์คํฐ โ ์ค์ : MCU ์ฃผ์ ์ฅ์น๋ค์ ๋์ ๋ฐฉ์, ์ฃผ์ ๋ถ์ฐ์ ๊ตฌ์ฑ ์์ ํํ ์กฐ์
๋ง์ฐฌ๊ฐ์ง๋ก, ๋ ์ง์คํฐ๋ ๋ฐ์ดํธ ๋จ์, ๊ธฐ๋ฅ์ ๋นํธ ๋จ์
๋ง์ฐฌ๊ฐ์ง๋ก, AVR MCU ๋ชจ๋ ๋ ์ง์คํฐ๋ ๋ฉ๋ชจ๋ฆฌ ์ฑ ์ฝ๊ธฐ/์ฐ๊ธฐ ๋ฐฉ์ ์ ๊ทผ ๊ฐ๋ฅ, ์ผ๋ถ๋ ๊ฒฉ๋ฆฌ ์ฝ๊ธฐ/์ฐ๊ธฐ ์ ๊ทผ ๊ฐ๋ฅ
USART - Universal Synchronous and Asynchronous serial Receiver & transmitter
UDRn : USART Data Register
๐ซ 2์ฐจ์
7372800
๋ฒ์ฉ ์ ์ถ๋ ฅ ํฌํธ
#include <avr/io.h>
์ ๋ฉ๋ชจ๋ฆฌ ๋งต ๋์์ด ๋์ด์๋ค
Like
โ #define PORTE #(unsigned char)0x180
๋ ์ง์คํฐ 3๊ฐ
PORTL ์ด ์ค์ฌ?
PORTL ์ถ๋ ฅ
PINL ์
๋ ฅ
DDRL = RORTL์ ์ ์ดํ๊ธฐ ์ํ ์ฃผ์?
๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํ ์ง ์ถ๋ ฅํ ์ง ์ฌ๋ถ ๊ฒฐ์
Direction Register
DDRL = 0xff // 1 ์ถ๋ ฅ
DDRL = 0x00 // 0 ์
๋ ฅ
GPIU?
@ 25p
๐ซ 3์ฐจ์
๐ซง USART
Universal Synchronous and Asynchronous serial Receiver and Transmitter
Synchronous ๋ณด๋ค ์ฃผ๋ก Asynchronous๋ฅผ ์
๐ซง UDRn
USART Data register of the nth device
ํ๋์ 8๋นํธ ๋ ์ง์คํฐ๋ฅผ I/O์ฉ์ผ๋ก ๊ณต์
UDR0 = x;
x = UDR0;
I/O ๋์์ ๋ฐ๋ผ ๋ด๋ถ์ ์ผ๋ก ๋ถ๋ฆฌํ์ฌ ์ธ์
I/O ๋์์ ์ํด์๋ ์ฅ์น(๋๋ฐ์ด์ค) ์ด๊ธฐํ๊ฐ ํ์
์๋๋ฐฉ์์ ๋ณด๋ด์จ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์๋ค๊ฐ ์ฝ์ ์๊ฐ ์๋ฉธ
๋ณด๋ผ ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ ์๊ฐ ์ ์ก์ด ์์๋จ
๐ซง UBRRnL, UBRRnH
USART Baud Rate Registers of the nth device
16๋นํธ ํต์ ์๋ bps bit per second ์กฐ์
UBRRnL Low๋ฐ์ดํธ
UBRRnH High๋ฐ์ดํธ
UCSRnA
USART Control and Status Register A of the nth device
Bit 1 : U2Xn(Double the Transmission Speed of the nth device)
์ค์ ๋ ํต์ ์๋์ 2๋ฐฐ ์ก์์ ์ฌ๋ถ
UCSRnB
USART Control and Status Register B of the nth device
Bit 3 : TXENn(Transmitter Enable of the nth device)
์ก์ ๊ธฐ๋ฅ ํ์ฑํ ์ฌ๋ถ
๐ซง ๋นํธ ์ฐ์ฐ ๋งคํฌ๋ก (bit on/off)
sbi(byte b, int n) : Set Bit
8๋นํธ ๋ณ์ ๋ ์ง์คํฐ b์ n๋ฒ ๋นํธ๋ฅผ 1๋ก ๋ณ๊ฒฝ (on)
I.E. sbi(UCSR0A, U2X0) : UCSR0A ๋ ์ง์คํฐ์ U2XN(==1)๋ฒ ๋นํธ๋ฅผ 1๋ก ๋ณ๊ฒฝ
cbi(byte b, int n) : Clear Bit
8๋นํธ ๋ณ์ ๋ ์ง์คํฐ b์ n๋ฒ ๋นํธ๋ฅผ 0์ผ๋ก ๋ณ๊ฒฝ (off)
I.E. cbi(UCSR0B, TXEN0) : UCSR0B ๋ ์ง์คํฐ์ TXEN0(==3)๋ฒ ๋นํธ๋ฅผ 0์ผ๋ก ๋ณ๊ฒฝ
@ ๋นํธ ๋ฒํธ๋ avr/io.h ์ ๋ค ์ ์๋์ด ์์
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <avr/io.h>
#include <compat/deprecated.h>
void uart_init()
{
// 115.2Kbps
UBRR0H = 0x00;
UBRR0L = 0x07;
// ํต์ ์๋ 2๋ฐฐ
sbi(UCSR0A, U2X0);
// TX enable (Transmitter Enable, ์ก์ ๊ธฐ๋ฅ ํ์ฑํ)
sbi(UCSR0B, TXEN0);
}
void uart_putchar(char ch)
{
if (ch == '\n')
uart_putchar('\r');
UDR0 = ch;
}
USART, ์๋ฆฌ์ผํต์
@ ์ ์ด๋ฌธ์
ํจ์ ์ ์ธ(์ฐ๊ฒฐ)์ ํค๋ ํ์ผ์ ์ด์ฉํจ.
์์ค ์ฝ๋๋ ๊ฐ๊ธ์ ๊ธฐ๋ฅ(ํจ์) ๋จ์๋ก ์๊ฒ ๋๋๊ณ , ํ์ผ๋ช
์ ๊ธฐ๋ฅ์ ์๋ฏธ๋ฅผ ๋ถ์ฌํจ.
๋
๋ฆฝ๋ ํ์ผ๊ฐ์ ํจ์ ํธ์ถ ์ ํจ์ ์ ์ธ์ ์ ์ํด์ผ ํจ.
์๋ฒ ๋๋ ํ๋ก๊ทธ๋จ์ ์คํ์ ์ด๋ค ๊ฒฝ์ฐ์๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋์๋ ์๋จ.
1
2
3
4
5
int main()
{
while(1) ; // must not return
return 0;
}
๐ซ _
@ U ์ค๊ฐ๊ณ ์ฌ ์ถ์ : ์์์ ํ์ ๋ํด ์ค๋ช
ํ๊ณ , ๊ทธ ํด๊ฒฐ๋ฐฉ๋ฒ์ ์ ์ผ์์ค.
@ U ์ค๊ฐ๊ณ ์ฌ ์ถ์ : โDDRA, PORTA ~โ ์ฝ๋๋ฅผ ๋ณด๊ณ ์๋๋๋ก ์ ์ผ์์ค.
@ U ์ค๊ฐ๊ณ ์ฌ ์ถ์ : โuart_initโ ์ฝ๋๋ฅผ ๋ณด๊ณ ์๋๋๋ก ์ ์ผ์์ค.
@ U ์ค๊ฐ๊ณ ์ฌ ์ถ์ : ์ฝ๋ ๋น์นธ์ ์์ฑํ์์ค, ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค, Strtok
@ U ๊ธฐ๋ง๊ณ ์ฌ ์์ : ๋์ ์น ํ์ด์ง Dynamic Web Page, ์ด๋ฏธ ๋ง๋ค์ด์ง ํ ์คํธ ํ์ผ์ด ์๋๋ผ, .exe ํํ์ ์คํ ํ์ผ์ ์คํ์์ผ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ ๋๊ฒจ์ฃผ๋ ๊ฒฝ์ฐ
@ U ๊ธฐ๋ง๊ณ ์ฌ ์์ : IIS ๋ฑ์ ์น ์๋ฒ๋ ์์ฒญ๋ URL์ด ์ง์ํ๋ ์คํ ํ์ผ์ ์คํ์์ผ, ๊ทธ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ๋ธ๋ผ์ฐ์ ์๊ฒ ์ ๋ฌํจ.
@ U ๊ธฐ๋ง๊ณ ์ฌ ์์ : ๋ฐ๋ผ์, ์น ์๋ฒ์ ์คํ ํ๋ก๊ทธ๋จ์ IPC (Inter-Process Communication) ์๋จ์ ์ฌ์ฉํ์ฌ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์์ผ ํจ.
@ U ๊ธฐ๋ง๊ณ ์ฌ ์์ : ์น ์๋ฒ์ ์คํ ํ๋ก๊ทธ๋จ ์ฌ์ด์ IPC ์๋จ์ ๊ณตํต์ ์ผ๋ก ์ ์๋์ด์ผ๋ง ์น ํ๊ฒฝ์์ ํ์ค์ผ๋ก ์ฌ์ฉ๋ ์ ์์ -> CGI (Commong Gateway Interface)
@ U ๊ธฐ๋ง๊ณ ์ฌ ์์ : ์
๋ ฅ IPC ์๋จ์ผ๋ก ํ์ค ์
๋ ฅ(stdin)๊ณผ ํ๊ฒฝ ๋ณ์ ๋ฑ ๋ ๊ฐ์ง๋ฅผ ์ฌ์ฉ
@ U ๊ธฐ๋ง๊ณ ์ฌ ์์ : ์ถ๋ ฅ IPC ์๋จ์ผ๋ก ํ์ค ์ถ๋ ฅ(stout)์ ์ฌ์ฉํจ (printf())
@ U ๊ธฐ๋ง๊ณ ์ฌ ์์ : GET ์ฟผ๋ฆฌ๋ CGI์์ โQUERY_STRINGโ ํ๊ฒฝ๋ณ์๋ก ์ ๊ทผ ๊ฐ๋ฅ, Windows๋ getEnvํจ์๋ก ํ๊ฒฝ ๋ณ์ ์ ๊ทผ ๊ฐ๋ฅ
@ U ๊ธฐ๋ง๊ณ ์ฌ ์์ : C, โ\33โ ๊ฐ์ด ๋ฐฑ์ฌ๋์ ๋ถ์ด๋ฉด 8์ง์, โ\33โ์ ASCII๋ก ESC