CodevisionAVR C compiler 사용법 ( 요약 ) (1) 1.1 마이크로프로세서시스템회로도및동작 마이크로콘트롤러 ATmega128 내부회로도 AVR 의구조및종류 ATmega128 Pin 배치및내장 I/O 종류 A

Save this PDF as:
 WORD  PNG  TXT  JPG

Size: px
Start display at page:

Download "CodevisionAVR C compiler 사용법 ( 요약 ) (1) 1.1 마이크로프로세서시스템회로도및동작 마이크로콘트롤러 ATmega128 내부회로도 AVR 의구조및종류 ATmega128 Pin 배치및내장 I/O 종류 A"

Transcription

1 Lecture Note ATmega128 인터페이스 프로그래밍 원서 : 알기쉽게배우는 AVR ATmega128, 신동욱, 오창헌, Ohm 사

2 CodevisionAVR C compiler 사용법 ( 요약 ) (1) 1.1 마이크로프로세서시스템회로도및동작 마이크로콘트롤러 ATmega128 내부회로도 AVR 의구조및종류 ATmega128 Pin 배치및내장 I/O 종류 ATmega128 실험보드구성품및 Base 회로도 5 ATmega128 헤더파일 7 ATmega128 포트종류및포트 I/O 프로그래밍기본방법 8 (1) 7-Seg LED 해설 11 (2) 7-Seg LED 프로그래밍실습 13 (1) LCD 해설 14 (2) LCD 프로그래밍실습 (LCD 의 8-bit 데이터방식사용!) 17 (3) 숫자 ( 정수, 실수 ) 를 LCD 에 display 하기 19 (4) LCD display 프로그램 (4-bit 데이터방식 ) - 실용!! 20 (1) A/D 변환개요 22 (2) ATmega128 내장 A/D Converter 해설 : 23 (3) A/D 변환프로그래밍실습 24 (1) D/A 변환방법원리 ( 사다리형 D/A 변환기 ) 26 (2) D/A 변환프로그래밍실습 27 (1) ATmega128 : 인터럽트해설 : 28 (2) 인터럽트프로그래밍실습 30 (1) ATmega128 : 타이머해설 : 31 (2) ( 타이머 + 인터럽트 ) 프로그래밍실습 32 (1) PWM 이란 33 (2) ATmega128 : 타이머 / 카운터 1, 3 및 PC PWM 해설 : 33 (3) PWM 프로그래밍실습 35 (1) 직렬통신과 RS-232 : 개요 36 (2) ATmega128 USART(RS-232) 해설 : 37 (3) 직렬통신 (RS-232) 프로그래밍실습 39 [ 참고 ] PC 에서 RS-232 직렬통신프로그램구현방법 [main() 에서구현 산술연산자 / 논리연산자 / 비트연산자

3 USB 방식의 AVR 다운로더 = 먼저, CodeVisionAVR 을실행하여 [Settings] 메뉴의 [Programmer] 를선택. 그후, [USBISP V3.0 사용시 ] : =USB 포트사용시!! AVR Chip Programmer Type : Atmel STK500/AVRISP 로설정. Communication Port : 해당 com 포트로설정 (ex: com4).. 이는장치관리자의포트 (COM 및 LPT) 의 'USB Serial port (COMx)' 와일치해야함! <COMx 찾는방법 > ( 모니터하단의 ) 시작 제어판 시스템 하드웨어 장치관리자 클릭 포트 (COM 및 LPT) 더블클릭 그러면알수있음!! OK 버튼! 먼저, [File] 메뉴의 [New] 를선택 Project 를선택 [OK] 버튼! 그러면, CodeWizardAVR 의실행여부를묻는창이나타남 [No] 버튼! ( 즉, 불용!) ( 참고 : CodeWizard = Code를자동으로만들어주는모드 ) 그러면, Create New Project 창이나타남 : 먼저, 이창맨위의 저장위치 를내가작업하려는폴더로지정함. 그후, 이창아래에프로젝트명 (.prj) 을기입. ( 이름 =.c와동일파일명으로, 확장자만다르게 ) [ 저장 ] 버튼! 그에따라, Configure Project... 창이나타나면 : [ 파일 ] 항목에서 [add] 버튼을눌러,.c 파일을이프로젝트에추가함. [C Compiler] 항목을열어, Chip= ATmega128, Clock= 16 MHz 로설정. ( 나머지 = 그대로 ) [After Make] 항목을열어, Program the Chip' 을체크함. ( 그아래에나타나는것들 = 그대로 ) [OK] 버튼! 이제프로젝트만들기는완료! 화면상에 C-소스파일 (.c) 이열림. 먼저, C-소스파일을작성 ( 편집, 수정 ) 한다. 그후, [Project] 메뉴의 [Compile] 을선택...[Compile] 은소스코드를 Object code 로바꿔주는기능을함. 그러면, 컴파일수행결과창이나타남. 중간쯤에 No errors, No warnings 가있으면성공! [OK] 버튼! 그후, [Project] 메뉴의 [Make] 를선택....[Make] 는 Object code를어셈블하여 HEX code를만들어줌. 그러면, 메이크수행결과창이나타남. 중간쯤에 No errors, No warnings 가있으면성공! [Program the chip] 버튼! 그러면, 작성된프로그램을 AVR에다운로딩함!!! long은안됨!!??..char, int, float만됨! char,int,float의데이터길이 = 1,2,4 byte ( 엄격!!) unsigned = 엄격히적용됨!! 즉, char=(-128)~(+127), unsigned char=0~255! int=(-32768)~(+32767), unsigned int=0~..

4 < 마이크로프로세서구조 > 마이크로프로세서 (μ-p) = 메모리에서데이터를가져와서이를처리하는중앙처리소자. 메모리 = μ-p 가해야할일을수록해놓은 S/W(program: 명령어의집합 ) 이들어있는창고. I/O port = μ-p 와외부 device( 장치 ) 를연결해주는매개역할을하는부분. (port = 항구!) < 동작예 1> μ-p가메모리에서읽기동작순서 : (I/O Port도마찬가지방식으로동작함 ) 1 μ-p는 CS신호로원하는메모리를선택하고,( 이때 CS신호는 Address신호에의해만들어짐!) 2 이메모리내의한장소에해당하는 Address신호를주고, 3 이메모리에게 Data를읽고싶다는것을의미하는 RD신호를준다. ( 그러면, 메모리는이에따라 Data를내보낼것이다 ) 4 그후, μ-p는이 Data를받는다. < 동작예 2> μ-p가메모리에쓰기동작순서 : (I/O Port도마찬가지방식으로동작함 ) 1 μ-p는 CS신호로원하는메모리를선택하고,( 이때 CS신호는 Address신호에의해만들어짐!) 2 이메모리내의한장소에해당하는 Address신호를주고, 3 이메모리에게 Data를쓰고싶다는것을의미하는 WR신호를주고, 4 이메모리에게 Data를내보낸다. ( 그러면, 메모리는 Data를받아서자기내의지정된장소 (Address) 에저장함 )

5 ATmega128 인터페이스프로그래밍

6 : 저전력고속의 CMOS/ C 언어를고려한설계 / 다양한기능을포함 = RISC 구조 & 하버드구조 < 참고 > CMOS 의장점 : 소비전력이매우적다 / 전달특성이우수하다 / 잡음여유가크다 / 집적도가높다 / 입력임피던스가크다 / 동작전압의범위가넓다 CMOS 의단점 : 정전기에의해서산화막의절연이파괴되기쉽다 / RISC 구조 : 복합명령어를쓰지않고간단한명령어만을사용하므로명령어의수를필요한최소한줄임. 주소지정방식또는필요한최소한의국한하는컴퓨터구조 하버드구조 = 프로그램메모리와데이터메모리가확연히구분되는구조. ( 즉, 프로그램메모리에데이터를넣을수없고데이터메모리에프로그램을넣을수없음 ) < 장점 > 동일시간대에프로그램메모리와데이터메모리를동시에접근할수있음. 데이터메모리를레지스터파일형태로통합관리하기때문에 레지스터에서레지스터로바로작용하므로따로이상호전송부가필요없음. 프로그램메모리와데이터의메모리의대역폭의변화가가능하므로 입력은 8bit 이지만내부처리는 16bit 등더빠른사이클에작동가능함. : 1 ATtiny 계열 : 4bit 범용마이크로컨트롤러 / 간단한제품에많이사용 2 AT90S 계열 : 8bit 마이크로컨트롤러 / ATtiny와 ATmega의중간급 3 ATmega 계열 : 메가급 8bit 범용마이크로컨트롤러 / 거의모든특수기능을내장 / 복잡한기능을사용하는제품에사용 이들계열은서로간에사용법이거의유사함!! 각계열 AVR의주요 Spec. 표 = 맨뒤 부록 참조!! ATmega8L = Low Power! 가격 (2008 년 4 월현재 ) : ATmega16 = 2500 원, ATmega32 = 3800 원, ATmega64 = 4000 원, ATmega128 = 3800 원, ATmega8515 = 2300 원, ATmega8535 = 2200 원

7 핀이름 설명 Vcc 디지털공급전압핀 GND 접지핀 AVcc ADC 에대한공급전압 AREF ADC 참조전압 포트 A,B,C,D, E,F,G (PA7~PA0) (PB7~PB0) (PC7~PC0) (PD7~PD0) (PE7~PE0) (PF7~PF0) (PG7~PG0) 특별기능 ( 상기의포트겸용 ) RESET 리셋입력 8 비트양방향성 I/O 포트. 인터럽트, 타이머 / 카운터 PWM 등파형발생기직렬포트 (serial 통신 ) AD 변환기 (10 비트, 8 채널 ) 아날로그비교기등.. XTAL1 반전발진증폭기및내부클록회로에대한입력 XTAL2 반전발진증폭기로부터의출력

8 - 구매처 : AVRmall 社 = 다음부품들을 BreadBoard 에설치하고, 필요한추가회로를구성하여실습함. M128 Board V2.2 : ATmega128 의기본확장보드, 128K 플래시, 16MHz, 4.5~5.5V M128KN 보드 [M128 Board V2.2 업보드 ] : M128 Board V2.2 를 1 열로확장한보드, 통신칩내장 구매시, M128KN KIT" 로구매하면, 위 2 개를함께판다! ( 약간더쌈!) USBISP V3.0 : USB 방식의 AVR 다운로더 = M128 Board V2.2 와 PC 사이에연결하여 PC 에서작성한프로그램을 AVR 에다운로드시킴 기타부품 (R, C, LED, LCD 모듈, 전용 RS-232 케이블등 ) <USBISP V3.0> =USB 방식의 AVR 다운로더 ATMEL 사의 STK500 호환가능 AVR ISP 프로그래머 AVR Studio V4.11 이상동작가능 CodevisionAVR C compiler V 이상동작가능 모든 ISP 포트를잇는 AVR MCU 프로그램기능 내부 Fuse Bit, Lock Bit Read/Write 별도의 ISP 사용으로펌웨어업그레이드가능 ATMEL 6Pin ISP 지원 : 1 MISO VCC 2 3 SCK MOSI 4 5 RST GND 6 지원 Device : 많은 AVR류 ATtiny12, ATtiny13, ATtiny15,... AT90S1200 등등 ATmega8, ATmega16,...ATmega128,...ATmega644,.. AT86RF401, 89S51, 89S52, AT90USB162 등., M128 Board V2.2 <M128KN 보드 > M128 Board V2.2 업보드 <M128 Board V2.2> --- 주요기능 : ATmega128 포트확장보드 지원 CPU : ATmega128-16AI, 16MHz ATMEL 6Pin ISP 포트지원 (& JTAG 포트지원 ) 1 MISO VCC 2 3 SCK MOSI 4 5 RST GND 6 통신포트지원 : 4 핀 TYPE(RX,TX,VCC,GND) 리셋스위치지원 동작전원 : 4.5 ~ 5.5V 에서동작 <M128KN> 보드 = M128 Board V2.2 업보드 ---주요기능 : M128 Board V2.2 업보드장착하여사용해야함 (M128 Board V2.2가착탈이가능하여사용자가상황에따라사용가능 ) M128 Board V2.2는별도구매 브레드보드를이용손쉽게시스템구축 RS232통신포트 2채널지원 ( 시리얼케이블별매 ) RTC KH 내장 ATMEL 6PinISP 포트 (& JTAG 포트지원 )

9 < 참고 > M128 Board V2.2 회로도 = 사실상, 아래회로에포함되어있음!

10 ATmega128 인터페이스프로그래밍 -< 상호관련 > ATmega128 의내부레지스터 ATmega128 헤더파일 (.h) 아래헤더파일에서정의되는명칭 = C 프로그램에서변수처럼사용됨!! mega128.h : ATmega128 헤더파일 -for CodeVisionAVR C Compiler = ATmega128 의 I/O registers definitions sfrb PINF=0; sfrb =1; //Port E sfrb =2; sfrb =3; sfrb ADCL=4; sfrb ADCH=5; sfrw ADCW=4; // 16 bit access sfrb =6; //ADC sfrb =7; sfrb ACSR=8; sfrb UBRR0L=9; sfrb UCSR0B=0xa; sfrb UCSR0A=0xb; sfrb UDR0=0xc; sfrb SPCR=0xd; sfrb SPSR=0xe; sfrb SPDR=0xf; sfrb =0x10; sfrb =0x11; sfrb =0x12; sfrb PINC=0x13; sfrb DDRC=0x14; sfrb PORTC=0x15; sfrb PINB=0x16; sfrb DDRB=0x17; sfrb PORTB=0x18; sfrb =0x19; sfrb =0x1a; sfrb =0x1b; sfrb EECR=0x1c; sfrb EEDR=0x1d; sfrb EEARL=0x1e; sfrb EEARH=0x1f; sfrw EEAR=0x1e; // 16 bit access sfrb SFIOR=0x20; sfrb WDTCR=0x21; sfrb OCDR=0x22; sfrb OCR2=0x23; sfrb TCNT2=0x24; sfrb TCCR2=0x25; sfrb ICR1L=0x26; sfrb ICR1H=0x27; sfrw ICR1=0x26; // 16 bit access sfrb =0x28; //PWM sfrb =0x29; sfrw OCR1B=0x28; // 16 bit access sfrb OCR1AL=0x2a; sfrb OCR1AH=0x2b; sfrw OCR1A=0x2a; // 16 bit access sfrb TCNT1L=0x2c; sfrb TCNT1H=0x2d; sfrw =0x2c; // 16 bit access sfrb =0x2e; sfrb =0x2f; sfrb ASSR=0x30; sfrb OCR0=0x31; sfrb TCNT0=0x32; sfrb TCCR0=0x33; sfrb MCUCSR=0x34; sfrb MCUCR=0x35; sfrb TIFR=0x36; sfrb TIMSK=0x37; sfrb EIFR=0x38; sfrb EIMSK=0x39; sfrb EICRB=0x3a; sfrb RAMPZ=0x3b; sfrb XDIV=0x3c; sfrb =0x3d; sfrb =0x3e; sfrb =0x3f; #pragma used- #define DDRF (*(unsigned char*)0x61) #define PORTF (*(unsigned char*)0x62) #define PING (*(unsigned char*)0x63) #define DDRG (*(unsigned char*)0x64) #define PORTG (*(unsigned char*)0x65) #define SPMCSR (*(unsigned char*)0x68) #define EICRA (*(unsigned char*)0x6a) #define XMCRB (*(unsigned char*)0x6c) #define XMCRA (*(unsigned char*)0x6d) #define OSCCAL (*(unsigned char*)0x6f) #define TWBR (*(unsigned char*)0x70) #define TWSR (*(unsigned char*)0x71) #define TWAR (*(unsigned char*)0x72) #define TWDR (*(unsigned char*)0x73) #define TWCR (*(unsigned char*)0x74) #define OCR1CL (*(unsigned char*)0x78) #define OCR1CH (*(unsigned char*)0x79) #define TCCR1C (*(unsigned char*)0x7a) #define ETIFR (*(unsigned char*)0x7c) #define ETIMSK (*(unsigned char*)0x7d) #define ICR3L (*(unsigned char*)0x80) #define ICR3H (*(unsigned char*)0x81) #define OCR3CL (*(unsigned char*)0x82) #define OCR3CH (*(unsigned char*)0x83) #define OCR3BL (*(unsigned char*)0x84) #define OCR3BH (*(unsigned char*)0x85) #define OCR3AL (*(unsigned char*)0x86) #define OCR3AH (*(unsigned char*)0x87) #define TCNT3L (*(unsigned char*)0x88) #define TCNT3H (*(unsigned char*)0x89) #define TCCR3B (*(unsigned char*)0x8a) #define TCCR3A (*(unsigned char*)0x8b) #define TCCR3C (*(unsigned char*)0x8c) #define UBRR0H (*(unsigned char*)0x90) #define UCSR0C (*(unsigned char*)0x95) #define UBRR1H (*(unsigned char*)0x98) #define UBRR1L (*(unsigned char*)0x99) #define UCSR1B (*(unsigned char*)0x9a) #define UCSR1A (*(unsigned char*)0x9b) #define UDR1 (*(unsigned char*)0x9c) #define UCSR1C (*(unsigned char*)0x9d) //interrupt vectors definitions #define 2 #define EXT_INT1 3 #define EXT_INT2 4 #define EXT_INT3 5 #define EXT_INT4 6 #define EXT_INT5 7 #define EXT_INT6 8 #define EXT_INT7 9 #define TIM2_COMP 10 #define TIM2_OVF 11 #define TIM1_CAPT 12 #define TIM1_COMPA 13 #define TIM1_COMPB 14 #define TIM1_OVF 15 #define TIM0_COMP 16 #define TIM0_OVF 17 #define SPI_STC 18 #define USART0_RXC 19 #define USART0_DRE 20 #define USART0_TXC 21 #define 22 #define EE_RDY 23 #define ANA_COMP 24 #define TIM1_COMPC 25 #define TIM3_CAPT 26 #define TIM3_COMPA 27 #define TIM3_COMPB 28 #define TIM3_COMPC 29 #define TIM3_OVF 30 #define 31 #define USART1_DRE 32 #define USART1_TXC 33 #define TWI 34 #define SPM_RDY 35

11 Port 개수 = 총 7개 : PORT A,B,C,D,E,F,G -각각 = 8 bit, 양방향 IO Port!! 특수기능들 = 위 Port와겸용! Timer/Counter PWM output = 6개 (=PE3,4,5 및 PB5,6,7) RS-232 = 2개 (=PE0,1 및 PD2,3) interrupt = 8개 (=PE4,5,6,7 및 PD0,1,2,3) A/D Converter 입력 = 8개 (=PF0-7)..etc.. 레지스터 : -각레지스터 = 8비트. DDRA = 포트 A의데이터방향설정레지스터. (DDR=Data Direction Register) -각비트설정법 : (0= 입력, 1= 출력 ) 으로설정함!! ( 기타, 포트 B,C,D,. = DDRB,DDRC,DDRD,.. 임 ) PINA = 포트 A pin으로부터의데이터입력레지스터. ( 기타, 포트 B,C,D,. = PINB,PINC,PIND,.. 임 ) PORTA= 포트 A pin으로의데이터출력레지스터. ( 기타, 포트 B,C,D,. = PORTB,PORTC,PORTD,.. 임 ) 프로그램예 main() unsigned char led = 0xF0; //0xF0 = 0b ; unsigned char data; DDRA = 0xFF; // 포트 A의모든비트를출력으로설정. 0xFF = 0b DDRB = 0x00; // 포트 B의모든비트를입력으로설정. 0x00 = 0b data = PINB; // 포트 B로부터데이터를입력하여 data에넣음. PORTA = led; // 포트 A로데이터 led를출력. // ( 그러면 H/W적으로포트 A의 pin으로이데이터가나감! // (0=0V, 1=5V) } 위 C- 프로그램의컴파일러 = 사용법 = 본책맨앞에있음! long은안됨!!??..char, int, float만됨! char,int,float의데이터길이 = 1,2,4 byte ( 엄격!!) unsigned = 엄격히적용됨!! 즉, char=(-128)~(+127), unsigned char=0~255! int=(-32768)~(+32767), unsigned int=0~..

12 기능 : C 포트에연결되어있는 LED 를순차점멸한다. H/W 결선상태 : - C 포트의각비트에서 '0' 이출력될때, 해당 LED 가켜짐!! //===LED.c========================================= #include <mega128.h> #include <delay.h> //delay_ms(), delay_us() // void main(void) unsigned char led = 0b ; //0xFE; //LED 초기출력값 DDRC = 0xFF; //C 포트의모든핀을출력으로설정. 각비트설정법 : 0= 입력, 1= 출력 while(1) PORTC = ~led; //C 포트로 led 값을출력 : ~ = 비트반전 (C-언어의비트연산자 ) delay_ms(100); //delay led = led << 1; //led 변수를좌쉬프트 : << = 좌쉬프트 (C-언어의비트연산자 ) if(led == 0b ) led = 0b ; //led 변수초기화 }//while() }//main() < 참고 > delay 함수 : 상기의 delay_ms() 대신, 다음과같이 delay함수를만들어서사용해도됨! void Delay(unsigned int cnt) //delay 함수 unsigned int i, j; for(i=0; i<cnt; i++) // 딜레이횟수지정 j=50000; // 딜레이속도조절 while(--j); }//for() }//Delay() 다음각기능을수행하는프로그램을작성하여실험하시오. [ 문제 1] (D0-D7) 을모두다한꺼번에 ON -> OFF 반복하기 [ 문제 2] (D0-D3)->(D4-D7) 순으로 (4 비트씩 ) 깜박이기. 반복.? [ 문제 3] (D0 D7)->(D1 D6)->(D2 D5)->(D3 D4) 순으로 (2 비트씩 ) 깜박이기. 반복. [ 문제 4] D0-D2-D4-D6 순으로 (1 비트씩 ) 건너가며깜박이기. 반복. [ 문제 5] 랜덤갯수의 LED 깜박이기 : <hint> rand()=stdlib.h [ 문제 6] 랜덤으로 LED 한개씩깜박이기 : <hint> rand()=stdlib.h [ 문제 7] 1 비트씩이동하며깜박이기 : D0 -> D7 -> D0 순서로반복.

13 기능 : E 포트 (PE4,5,6,7) 에연결되어있는스위치를누르면 그상태를 C 포트의상위 LED 4 개에서점등한다. < 예 > PE4 에연결된스위치를누르면 PC4 에연결된 LED 만켜지고나머지는모두꺼짐. 같은방법으로, PE5 PC5, PE6 PC6, PE7 PC7 만이켜진다. H/W 결선상태 : 8 개의 LED 가 C 포트에연결되어있음...C 포트의각비트에서 '0' 이출력될때, 해당 LED 가켜짐!! 4 개의스위치가 E 포트 (PE4,5,6,7) 에연결되어있음.. 스위치를누르면 E 포트의해당비트는 '0' 됨!!.. 평소에는 '1' 임. ('0'=GND, '1'=Vcc) //===Key_LED.c========================================= #include <mega128.h> void main(void) unsigned char key; //--- 설정 DDRC = 0xFF; //C 포트핀전부를출력으로설정 : 0= 입력, 1= 출력 DDRE = 0b ; //E 포트의 PE4~PE7 비트 = 입력으로설정 (PB Switch 가연결되어있음 ) //E 포트의 PE0~PE3 비트 = 출력으로설정 PORTC = 0xFF; //C 포트의 8 개 LED = off //---잠깐테스트 : E포트의상위 4비트 = 입력설정, 하위 4비트 = 출력설정임. //PORTE = 0b ; //E 포트의 bit 3으로 '1' 출력 ( 테스트!!) = OK!! //---키보드입력테스트!! while(1) key = PINE 0x0F; //E 포트핀 ( 스위치상태 ) 읽어오고하위 4비트를 F로! PORTC = key; //C 포트에출력 ( 하위 4개의 LED는 Off) }//while() }//main 다음기능을하는프로그램을작성하여실험하시오. [ 문제 1] 스위치-1(PE4) 을누르고있는동안 => LED 의모든 bit (bit 0,1,2,3...7) 이켜짐스위치-2(PE5) 를누르고있는동안 => LED 의 bit 0,1,2,3 이켜지고나머지는꺼짐스위치-3(PE6) 을누르고있는동안 => LED 의 bit 4,5,6,7 이켜지고나머지는꺼짐스위치-4(PE7) 을누르고있는동안 => LED 의 bit 0,2,4,6 이켜지고나머지는꺼짐아무스위치도안누르면 => 모든 LED = OFF! [ 문제 2] 스위치 -1(PE4) 을한번눌렀다가떼면 => LED 8 개전체가깜박깜박.( 반복 ) 스위치 -2(PE5) 를한번눌렀다가떼면 => LED 가 D0-D1-D2-D3..-D7 순서로깜박임.( 반복 ) 그외다른스위치 (PE6,PE7) 를한번눌렀다가떼면 => LED 가모두꺼짐.

14 7-Segment LED = 7 개의 LED 를조합하여다양한패턴을나타낼수있게일체형으로만든것. 표현할수있는패턴 = 숫자.(0,1,2,3,4,5,6,7,8,9) 영문자.(A,B,C,D,E,F,G) 그외특수패턴일부. 통상 8 개의 LED 로구성됨 : 숫자 / 문자표시용 7 개 + 소수점 (dot) 표시용 1 개. 7-Seg LED 를구성하는각 LED 의특성은앞서의 LED 와동일. 7-Seg LED 의크기및 pin 치수 = 일반 IC 와동일. 7-Seg LED 의배치및패턴예 7-Seg LED 의종류 Common Anode 形 : 7 개의 LED 단자중 Anode 부분을모두묶어하나의외부 pin 으로만든것. Common Cathode 形 : 7 개의 LED 단자중 Cathode 부분을모두묶어하나의외부 pin 으로만든것. 각 LED 를선택적으로 ON/OFF 시킴으로써, 원하는패턴을나타내게할수있다.( 위그림 ) Common Anode 경우 : - 공통 Anode 단자에 Vcc 를걸고, - 점등하기를원하는 Segment(a,b,..) 에 GND 를건다. 소등하기를원하는 Segment(a,b,..) 에 Vcc 를건다. Common Cathode 경우 : - 공통 Cathode 단자에 GND 를걸고, - 점등하기를원하는 Segment(a,b,..) 에 Vcc 를건다. 소등하기를원하는 Segment(a,b,..) 에 GND 를건다. 7-Seg LED 제품예 : MAN6660 = Common Anode 形 ( 참고 : Driver IC = 7447) MAN6680 = Common Cathode 形 ( 참고 : Driver IC = 7448) Common Anode형의 Segment 불량검사방법 : - 3번 pin에 Vcc를달고, 다른 pin을 GND로하여검사. - 이때, GND한 pin에대응한 Segment가점등하면그 Segment = OK! 두경우 Pin 배치는동일하다.( 단지, Vcc,GND 유의 )

15 7-Seg LED Decoder/Driver 의필요성 : 7-Seg LED 로표시할수있는숫자 = 10 개.(0,1,..,9) 7-Seg LED 로이들숫자를표시하려면, 7-Seg LED 내의각 LED 를선택적으로 ON/OFF 시켜야한다. ( 매우번거로움 ) 한편, 10 개의숫자를나타내기위해서는 4 개의 bit 가필요하다. 즉, : 이러한 4-bit 데이터로 7-Seg LED 를직접동작시키면편리하겠다. 7-Seg LED Decoder/Driver IC: 이러한기능을하는 IC = 7-Seg LED Decoder/Driver!! = 4-bit 데이터를입력으로받아서, 그에맞게 7-Seg LED 를동작시키는데이터를출력시키는 IC. (2 가지종류가있다 ) TTL = Common Anode 形 7-Seg LED 용 driver. 각 LED 에대해전류제한용저항이필요. TTL = Common Cathode 形 7-Seg LED 용 driver. 각 LED 에대해전류제한용저항이불필요!! (IC 에저항이내장되어있음 ) <pin 배치도 > 7447/7448 과 7-SegLED 접속도

16 기능 : 7-seg LED 2개를이용하여 2자리수를표시함. H/W 결선상태 : 7-seg LED를 ATmega에 A포트에다음과같이연결함. 10자리 LED = A포트상위 4비트에연결함. 1자리 LED = A포트하위 4비트에연결함. //===Display_7_SegLED.c======================= #include <mega128.h> #include <delay.h> //delay_ms() main() char i,k, Data; int ival; char N10, N1; //10,1자리수 //---포트설정 DDRA = 0xFF; //A 포트 = 출력으로설정 : PA0-PA7= 7-segLED //===(1) Simple Usage======= ival = 12; //---display용환산 N10 = ival / 10; //10자리수추출 N1 = ival % 10; // 1자리수추출 //---display 시행 PORTA = (N10 << 4) + N1; //===(2) 0-20까지증가하면서 Display======= for(ival = 0; ival <= 20; ival++) //---display용환산 N10 = ival / 10; //10자리수추출 N1 = ival % 10; // 1자리수추출 //---display 시행 PORTA = (N10 << 4) + N1; delay_ms(200); //delay 200[ms] } //===(3) 구구단 Display : 표시방식예 : 23 표시후 6 표시 ======= for(i=2; i<=9; i++) for(k=1; k<=9; k++) //---입력값 Data = i; Data = (Data << 4) + k; PORTA = Data; //display delay_ms(500); //delay //---결과값? Data = i * k; N10 = Data / 10; //10자리수추출 N1 = Data % 10; // 1자리수추출 PORTA = (N10 << 4) + N1; delay_ms(500); //delay }//for(k) }//for(i) }//main()

17 -ref = 책 "AVR ATmega128", p.307,317, 신동욱, 오창헌저, Ohm사. -ref = 책 알기쉽게배우는 AVR ATmega128" p , 신동욱 / 오창헌공저, Ohm사 LCD = 16문자 x 2행 LCD 특징 : 표준화된인터페이스!! / 5V 구동 / 폰트 =5x7 or 5x10 / 데이터버스 = 8-bit or 4-bit / C.G.RAM, C.G.ROM, D.D.RAM 내장 (C.G=Character Generator, D.D=Data Display) LCD 모듈의핀번호, 기능 : 14 pin ( 표준화된인터페이스!!) : [Pin No]-[ 기호 ]-[ 기능 ] 1 Vss GND 2 Vdd +5V 3 Vo 밝기조절용.(=GND 연결무난 OK!) 4 RS Register Select : 0=instruction /1=Data 5 R/W' 0=Write /1=Read ( 주체 =CPU) 6 E LCD Enable 신호 : 0=LCD가동작안함 /1=LCD가동작함 7 DB0 Data 0 8 DB1 Data 1 : : : 14 DB7 Data 7 15,16 A,K (= 백라이트용 LED = 불용OK!) (2 개 ) : IR,DR 의선택 = RS(pin 4) 에의해선택됨. IR (Instructiion Register) : 여러개의제어명령어를입력하는곳. DR (Data Register) : 이곳에써넣은데이터는 LCD 에표시됨. (CPU 는읽기 / 쓰기가능 ) [ 표 ] RS와 R/W' 에의한레지스터선택 RS R/W' 동작 0 0 IR 쓰기동작 0 1 BF(Busy Flag) 와 Address Counter 읽기 1 0 DR 쓰기동작 : DR D.D.RAM, C.G.RAM 1 1 DR 읽기동작 : DR D.D.RAM, C.G.RAM = LCD를제어하기위한명령어. ( 이는데이터버스를통해전송됨 )... 이하, 실행시간 (f osc = 250KHz 기준 ) 1 표시클리어 = LCD 화면을클리어 / 커서는홈위치로 (1행1열위치 ) / D.D.RAM의어드레스카운터 =0 됨! 2 커서홈 = 커서는홈위치로 (1행1열위치 ) / D.D.RAM의어드레스카운터 =0 됨!

18 3 엔트리모드셋 = 커서의이동방향설정 / 디스플레이를이동시킬지여부를설정. ATmega128 인터페이스프로그래밍 <bit> I/D = 문자코드를 D.D.RAM or C.G.RAM 에써넣거나읽을때, 어드레스를 +1,-1 하기위한설정비트. <bit> S = D.D.RAM 에데이터를써넣은후에, 표시전체를좌 / 우로이동시키기위한설정비트. <bit> I/D = 1 : 어드레스를 +1 하고, 커서를우로이동시킴. 0 : 어드레스를 -1 하고, 커서를좌로이동시킴. <bit> S = 0 : 디스플레이를이동하지않음. 1 : (& I/D=1 일때 ) 표시전체가좌로이동함. S=1 이면, 커서위치 = 불변임. (& I/D=0 일때 ) 표시전체가우로이동함. 4 표시 ON/OFF 제어 = 전체표시 ON/OFF / 커서 ON/OFF / 커서위치의문자깜박임설정. 커서 : 5x7 폰트에서커서 =8 째줄 / 5x10 폰트에서커서 =11 째줄임. <bit> D = 1 : LCD 전체가 ON( 글자가표시됨 ) / D=0: OFF! (D.D.RAM 내용 = 그대로임 ) <bit> C = 1 : 커서가나타남 / C = 0 : 사라짐. <bit> B = 1 : 커서가깜박임 / B = 0 : not 5 커서 / 표시이동 = D.D.RAM 내용을변경하지않은상태에서 : 커서의이동 / 표시전체의이동설정용. 커서이동 : 첫라인마지막칸 (40) 에서다음라인으로넘어감. 표시이동 : 첫라인과다음라인이동시에이동함. ( 상하이동 = 불가 ) <bit> S/C R/L = 0 0 : 커서가좌로이동 (AC 는 -1 됨 ) 0 1 : 커서가우로이동 (AC 는 +1 됨 ) 1 0 : 표시와커서가좌로이동 1 1 : 표시와커서가우로이동 6 펑션셋 = 인터페이스길이 / 표시행수 / 문자폰트설정용. <bit> DL = 1 : 8-bit 데이터로설정 0 : 4-bit 데이터로설정 -(DB7-DB4 가사용됨. 전송 = 상위 4 bit 이후하위 4 bit!) <bit> N F = 0 0 : 표시라인 = 1 / 글자폰트 = 5x7 도트 / 듀티비 = 1/8 0 1 : 표시라인 = 1 / 글자폰트 = 5x10 도트 / 듀티비 = 1/11 1 * : 표시라인 = 2 / 글자폰트 = 5x7 도트 / 듀티비 = 1/16 7 C.G.RAM 어드레스설정 = C.G.RAM 의어드레스를설정함. 아래 (11) 과관련!! 이어드레스의설정후에 C.G.RAM 의데이터를읽고쓸수있음. 8 D.D.RAM 어드레스설정 = D.D.RAM 의어드레스를설정함. 아래 (11) 과관련!! 이어드레스의설정후에 D.D.RAM 의데이터를읽고쓸수있음. 9 B/F 어드레스읽기 = B/F(Busy Flag) 와어드레스카운터의내용을읽기. B/F = LCD 내부동작상태확인용. B/F = 1 이면 : LCD 내부동작중임. (LCD = 명령을받아들일수없음의미 ) 0 이면 : LCD 에명령어쓰기허락임. 10 C.G.RAM, D.D.RAM 으로데이터쓰기 = C.G.RAM or D.D.RAM 에 8-bit 데이터를쓴다. < 단 > C.G.RAM or D.D.RAM 의선택 = 이전에어드레스값이설정된 RAM 이선택된다. 엔트리모드 에따라, 어드레스 = +1 or -1 된다. 11 C.G.RAM, D.D.RAM 으로데이터읽기 = C.G.RAM or D.D.RAM 으로부터 8-bit 데이터를읽는다. < 단 > 읽기명령을하기전에, 반드시 C.G.RAM or D.D.RAM 의어드레스설정명령을실행해야함!... 만일, 이어드레스설정명령을하지않으면 : 첫번째데이터는무효가되고, 두번째데이터부터정상적으로읽혀짐!

19 전원 ON & 전원 Vdd 가 4.5V 이상된후, 15ms 이상지연!!! 펑션셋 : (RS=0, R/W'=0) : D7 D0 = N F 0 0 표시 ON : (RS=0, R/W'=0) : D7 D0 = C B 표시클리어 : (RS=0, R/W'=0) : D7 D0 = 엔트리모드 : (RS=0, R/W'=0) : D7 D0 = I/D S LCD 초기화완료.. 프로그램시, LCD 의 Busy Flag(BF) 를조사하는대신시간지연함수를사용고려! LCD 모듈의 Read/Write 타이밍도 (= 프로그램시이용!!) (E: 1 0 순간 LCD 는문자읽음 )!!!

20 (LCD 의 8-bit 데이터방식사용!) 기능 : LCD 에다음의문자열을출력한다. (LCD = 16 문자 x2 행 ) ABC-D Hello!! Success! H/W 결선상태 : 8- 비트데이터방식사용! 따라서, LCD 결선 = AVR 포트 2 개 (Port C, D) 필요!! 즉, Control = Port C0,1,2 사용 & Data = Port D0 7 사용 LCD = 16 문자 x2 행 // <H/W 검사 > 회로대로꾸민후, 전원을넣으면 // LCD 에검은블럭들이일렬로나타남. < 유의 > 프로그램시, LCD 의 Busy Flag(BF) 를조사하는대신, 시간지연함수를사용함! //===LCD_Display_8bit_Data.c======================= #include <mega128.h> #include <delay.h> //delay_us(), delay_ms() =[us],[ms] #include <stdio.h> //sprintf() for LCD //---define LCD COMMANDS (LCD Display) < 비교 > LCD 의 4-bit 데이터방식 (= 간편!!) =[ 부록 4] 참조! <LCD 출력회로 > 8-bit data 방식 #define LCD_FUNCSET 0b //=0x38 =Function Set (8-bit Data!!, 표시라인 =2, 폰트 =5x7) #define LCD_ENTMODE 0b //=0x06 =Entry Mode Set ( 커서의이동방향과디스플레이이동여부결정 ) #define LCD_ALLCLR #define LCD_DISPON 0b //=0x01 =All Clear 0b //=0x0C =Display ON #define LCD_DISPOFF 0b //=0x08 =Display OFF #define LCD_HOME #define LCD_LINE2 #define LCD_RSHIFT #define LCD_LSHIFT //---functions b //=0x02 =Cursor LCD_HOME 0b //=0xC0 =2nd Line Move -< 관련 >D.D.RAM addr :1-line=0x00-0x27, 2-line=0x40-0x67. 0b //=0x1C =Display Right Shift 0b //=0x18 =Display Left Shift void LCD_initialize(void); // LCD 초기화함수..book p.316 void send_command_to_lcd(unsigned char byte); //LCD 에 Command( 문자 1 개 ) 쓰기함수 (RS=0, R/W=0) // = LCD-Write Timing Chart 구현! void send_1chardata_to_lcd(unsigned char byte); //LCD 에 Data( 문자 1 개 ) 쓰기함수 (RS=1, R/W=0) // = LCD-Write Timing Chart 구현! void send_stringdata_to_lcd(unsigned char str[]); //LCD 에 Data( 문자열 1 개 ) 쓰기함수 (RS=1, R/W=0) //========================================================= main() unsigned char string[] = " Hello!!"; unsigned char stringa[] = "Success"; LCD_initialize(); // LCD 초기화 send_command_to_lcd(lcd_home); //Cursor LCD_HOME send_1chardata_to_lcd('a'); send_1chardata_to_lcd('b'); < 유의 > LCD = 문자 (char) 만 display 한다!!! send_1chardata_to_lcd('-'); send_1chardata_to_lcd('d'); send_command_to_lcd(lcd_home); //1st Line Move send_stringdata_to_lcd(string); send_command_to_lcd(lcd_line2); //2nd Line Move send_stringdata_to_lcd(stringa); }//main()

21 //===Used Functions (LCD Display)================================= void LCD_initialize(void) // LCD 초기화함수..book p.316 //---AVR-LCD interface init--- DDRC = 0xFF; //C포트 all bit = 출력으로설정..LCD-interface: PC0=RS, PC1=R/W', PC2=E DDRD = 0xFF; //D포트 all bit = 출력으로설정..LCD-interface: PD0-7 = Data0-7 //---LCD init //...send command... send_command_to_lcd(lcd_funcset); //Function Set send_command_to_lcd(lcd_dispon); //Display ON send_command_to_lcd(lcd_allclr); //All Clear send_command_to_lcd(lcd_entmode); //Entry Mode Set }//LCD_initialize() void send_command_to_lcd(unsigned char byte) //LCD에 Command( 문자 1개 ) 쓰기함수 (RS=0, R/W=0) //..This routine = LCD-Write Timing Chart 구현!!! //..interface: (PC0=RS, PC1=R/W', PC2=E), (PD0-7 = DATA0-7) delay_ms(2); //Busy Flag(BF) check -by 단순히시간지연이용! PORTC = 0b ; //set RS=0, R/W=0, E=0..(E=Enable) //RS:0=instraction/1=Data, R/W:0=Write/1=Read, E:1->0순간 LCD는문자읽음. delay_us(1); PORTC = PORTC 0b ; //set E=1! -with (RS=0, R/W=0)..(E: 1->0순간 LCD는문자읽음 ) delay_us(1); PORTD = byte; // 문자를 LCD에게보내기 delay_us(1); PORTC = PORTC & 0b ; //set E=0! -with (RS=0, R/W=0)..(E: 1->0순간 LCD는문자읽음 ) }//send_command_to_lcd() void send_1chardata_to_lcd(unsigned char byte) //LCD에 Data( 문자 1개 ) 쓰기함수 (RS=1, R/W=0) //..This routine = LCD-Write Timing Chart 구현!!! //..interface: (PC0=RS, PC1=R/W', PC2=E), (PD0-7 = DATA0-7) delay_ms(2); //Busy Flag(BF) check -by 단순히시간지연이용! PORTC = 0b ; //set RS=1, R/W=0, E=0..(E=Enable) //RS:0=instraction/1=Data, R/W:0=Write/1=Read, E:1->0순간 LCD는문자읽음. delay_us(1); PORTC = PORTC 0b ; //set E=1! -with (RS=1, R/W=0)..(E: 1->0순간 LCD는문자읽음 ) delay_us(1); PORTD = byte; // 문자를 LCD에게보내기 delay_us(1); PORTC = PORTC & 0b ; //set E=0! -with (RS=1, R/W=0)..(E: 1->0순간 LCD는문자읽음 ) }//send_1chardata_to_lcd() void send_stringdata_to_lcd(unsigned char str[]) //LCD에 Data( 문자열 1개 ) 쓰기함수 (RS=1, R/W=0) int i; for(i=0; str[i]; i++) send_1chardata_to_lcd(str[i]); }//send_stringdata_to_lcd()

22 !!! LCD 는문자 (char) 만을입력으로받아 display 한다. ATmega128 인터페이스프로그래밍 따라서, 숫자 (int, float) 를표시하고싶으면 : 이숫자를문자열로만들어표시해야한다!! 방법 : sprintf() 함수를이용하면편리! <ex> int a = 128; float b = ; unsigned char str[100]; sprintf(str, "%d", a); a 값을문자열로만들어 char 배열 str[] 에넣음! sprintf(str, "%f", b); b 값을문자열로만들어 char 배열 str[] 에넣음! < 주의 > (CodeVisionAVR Compiler) : - long은안됨!!..char, int, float만됨! - char,int,float의데이터길이 = 1,2,4 byte ( 엄격!!) - unsigned = 엄격히적용됨!! 즉, char=(-128)~(+127), unsigned char=0~255 int=(-32768)~(+32767), unsigned int=0~.. #include<math.h> //for fabs()!!! int i, N = 3; //N = 소수점이하자리수 (float 표시할때이용됨 ) int idata1, idata2, idata; float fdata; //<!> 아래프로그램에서, unsigned char Buf[50],str1[50],str2[50]; // LCD_Command( ) = send_command_to_lcd( ) 의미! LCD_init(); //LCD 초기화 // LCD_String( ) = send_stringdata_to_lcd( ) 의미! //---LCD 에 int data 출력 --- // idata1 = 567; idata2 = 9876; LCD_Command(LCD_HOME); sprintf(buf, " %d", idata1); LCD_String(Buf); // 문자열출력 sprintf(buf, " %d <===", idata2); LCD_String(Buf); // 문자열출력 //Cursor LCD_HOME //--LCD 에 float data 출력 float = 소수점이하 3 자리까지만유효함!!! (by test) //< 주의 > sprintf(buf, " %f", fdata); = 안됨!!?? (I don't know WHY?) N = 3; //set 소수점이하자리수 (float 표시할때 ), < 주의 > 소수점이하더욱정밀한수 = double 사용필요함!! fdata = ; //target float data!! //...(1) 소수점윗자리를문자열로만들어 str1[] 에넣기... idata = fdata; // 소수점이하버리기 sprintf(str1, "%d", idata); //...(2) 소수점아랫자리를문자열로만들어 str2[] 에넣기 (= 소수점첫째자리의수가 0 일경우의극복법!)... fdata = fabs(fdata); //delete sign! (= 음수대책용!) idata = fdata; for(i=0; i<n; i++) //N = 소수점이하표시자리수 }//for(i) fdata = fdata - idata; //now, fdata= 소수점이하만인수! fdata = fdata * 10; // 소수점이상 1 자리수만듬 idata = fdata; //1 자리수 only str2[i] = idata + 0x30; //make into ASCII code value! (see ASCII table!) str2[i] = '\0'; //add NULL for string in str2[]!! //...(3) 소수점윗자리, 아랫자리합쳐서완성하여 Buf[] 에넣기... sprintf(buf, "%s.%s", str1, str2); // 실수 (float) 를문자열로완성함. LCD_Command(LCD_LINE2); LCD_String(Buf); // 문자열출력 }//main() //2nd Line Move LCD 첫째줄에정수 (int) 값 2 개를 display 하고, 둘째줄에실수 (float) 값 2 개를 display 하는데, 이때, 각각의값들을 1 씩증가시키면서반복적으로 display 하는프로그램을작성하기.

23 기능 : LCD 에다음의문자열을출력한다. Hello!! -ATmega! You Success!! <LCD 출력회로 > 4-bit data 방식 H/W 결선상태 : 4-비트데이터방식사용! 따라서, LCD 결선 = AVR 포트 1개 (Port D) 만필요!! // <H/W 검사 > 회로대로꾸민후, 전원을넣으면 LCD에검은블럭들이일렬로나타남. // < 유의 > 프로그램시, LCD의 Busy Flag(BF) 를조사하는대신, 시간지연함수를사용함! //===LCD_Display_4bit_Data.c==================== #include <mega128.h> #include <delay.h> //delay_us(), delay_ms() =[us],[ms] #include <stdio.h> //sprintf() for LCD #include <string.h> //strlen() for LCD //---define LCD COMMANDS (LCD Display) #define LCD_FUNCSET 0b //=0x28 =Function Set (4-bit Data!!, 표시라인 =2, 폰트 =5x7) #define LCD_ENTMODE 0b //=0x06 =Entry Mode Set ( 커서의이동방향과디스플레이이동여부를결정 ) #define LCD_ALLCLR 0b //=0x01 =All Clear #define LCD_DISPON 0b //=0x0C =Display ON #define LCD_DISPOFF 0b //=0x08 =Display OFF #define LCD_HOME 0b //=0x02 =Cursor LCD_HOME #define LCD_LINE2 0b //=0xC0 =2nd Line Move -< 관련 >D.D.RAM addr :1-line=0x00-0x27, 2-line=0x40-0x67. #define LCD_RSHIFT 0b //=0x1C =Display Right Shift #define LCD_LSHIFT 0b //=0x18 =Display Left Shift //---used Functions (LDC Display) void LCD_init(void); // LCD 초기화함수 void LCD_Command(unsigned char byte); // 인스트럭션 ( 명령어 ) 쓰기함수 void LCD_Data(unsigned char byte); // 문자 1개쓰기함수 void LCD_String(unsigned char str[]); // 문자열출력함수 //========================================================= void main() int i; unsigned char Buf[50]; LCD_init(); //LCD 초기화 //---LCD에문자열출력--- LCD_Command(LCD_HOME); sprintf(buf, "Hello!!"); LCD_String(Buf); // 문자열출력 sprintf(buf, " -ATmega!"); LCD_String(Buf); // 문자열출력 //Cursor LCD_HOME LCD_Command(LCD_LINE2); //2nd Line Move sprintf(buf, "You Success!!"); LCD_String(Buf); // 문자열출력 }//main() //===Used Functions (LCD Display)=================================

24 void LCD_init(void) // LCD 초기화함수 //---AVR-LCD interface init--- DDRD = 0xFF; //D 포트 all bit = 출력으로설정 PORTD = PORTD & 0xFB; //E=0 : E=Enable pin, 0xFB==0b ATmega128 인터페이스프로그래밍 //---LCD init (send command)--:<! 주의!>-- 이곳 ( 윈래책의 ) 일정부분 routine = 생략한상태임! ( 없어도되므로!) LCD_Command(LCD_FUNCSET); //Function Set LCD_Command(LCD_DISPON); //Display ON LCD_Command(LCD_ALLCLR); //All Clear LCD_Command(LCD_ENTMODE); //Entry Mode Set }//LCD_init() void LCD_Command(unsigned char byte) // 인스트럭션 ( 명령어 ) 쓰기함수 delay_ms(2); //Busy Flag(BF) check -by 단순히시간지연이용! //--- 인스트럭션상위바이트 --- PORTD = (byte & 0xF0); // 데이터 ( 명령어 ) PORTD = PORTD & 0xFE; //RS = 0 :0=instraction/1=Data : FE = PORTD = PORTD & 0xFD; //RW = 0 :0=Write/1=Read : FD = delay_us(1); PORTD = PORTD 0x04; //E = 1 : Enable 신호 : 04 = delay_us(1); PORTD = PORTD & 0xFB; //E = 0 : Enable 신호 : FB = //--- 인스트럭션하위바이트 --- PORTD = ((byte << 4) & 0xF0); // 데이터 ( 명령어 ) PORTD = PORTD & 0xFE; //RS = 0 :0=instraction/1=Data PORTD = PORTD & 0xFD; //RW = 0 :0=Write/1=Read delay_us(1); PORTD = PORTD 0x04; //E = 1 : Enable 신호 delay_us(1); PORTD = PORTD & 0xFB; //E = 0 : Enable 신호 }//LCD_Command() void LCD_Data(unsigned char byte) // 문자 1 개쓰기함수 delay_ms(2); //Busy Flag(BF) check -by 단순히시간지연이용! //--- 문자데이터상위바이트 --- PORTD = (byte & 0xF0); // 데이터 ( 문자 ) PORTD = PORTD 0x01; //RS = 1 :0=instraction/1=Data PORTD = PORTD & 0xFD; //RW = 0 :0=Write/1=Read delay_us(1); PORTD = PORTD 0x04; //E = 1 : Enable 신호 delay_us(1); PORTD = PORTD & 0xFB; //E = 0 : Enable 신호 //--- 문자데이터하위바이트 --- PORTD = ((byte << 4) & 0xF0); // 데이터 ( 문자 ) PORTD = PORTD 0x01; //RS = 1 :0=instraction/1=Data PORTD = PORTD & 0xFD; //RW = 0 :0=Write/1=Read delay_us(1); PORTD = PORTD 0x04; //E = 1 : Enable 신호 delay_us(1); PORTD = PORTD & 0xFB; //E = 0 : Enable 신호 }//LCD_Data() void LCD_String(unsigned char str[]) // 문자열출력함수 while(*str) LCD_Data(*str++); //LCD_Data()= 문자 1 개쓰기함수 }//LCD_String()

25 A/D 변환 = 아날로그신호를디지털신호로변환시켜주는것. < 개념 : A/D 변환구성도및동작해설 > S/H (Sample and Holder) = 변화하는아날로그신호를샘플링하여일정값으로유지해줌. A/D Converter = 아날로그신호를디지털신호로변환시켜줌. Conversion time = Analog 신호를 Digital 신호로변환하는데소요되는시간. A/D Converter IC 구입시유의사항 : - Digital output 의 Bit 수 - Conversion time - Voltage level (Vcc 및 Digital output) 동작처리순서 1 Analog Input을준다 2 8개의입력채널중하나를선택한다 (by 3-bit Address를지정 ) 3 START 신호를준다 4 End Of Conversion 신호의 rising edge를받으면 8-bit Digital Output을받는다.

26 ATmega128 = 10 비트분해능의 A/D 변환기가 8- 채널있음 : ADC0,ADC1,..,ADC7 (=F Port 공용 ) 입력채널 = multiplexer 에의해 A/D 변환기와연결됨. 변환시간 = us 기준전압 = 2.56[V] 내부전압 or 외부전압사용. Sample/Hold 회로내장. 관련 pin : AD 입력핀 = (F 포트 )PF0-PF7 = ACD0 - ADC7! 전원및기준전압관련핀 = AVCC,GND,AREF(=pin 64,63,62) 기준전압 Vref = A/D 변환시사용되는기준전압 (max 전압 ) ADC 입력은 0-Vref[V] 사이값이어야함. 기준전압에대한변환후데이터값 : 0-Vref = 0-0x3F 값에해당. (0x3F = 1023) for 1024 내부 / 외부기준전압선택사용 : - 내부기준전압 = 2.56[V] 제공. H/W 결선 = 공통 : AGND 를 GND 와접속. - 외부기준전압 = 외부회로설치 : 관련 pin= AREF,AGND,AVCC(=62,63,64 번핀 ) 내부기준전압사용시 : AREF 와 AGND 사이를콘덴서 (104) 로접속 & AVCC 를 +5[V] 와접속 외부기준전압사용시 : AREF 와 AGND 사이를콘덴서 (104) 로접속 & AVCC 를 AREF 와접속 & AREF 와 +5[V] 사이를코일 (L=10[uH]) 로접속! ATmega128 의 A/D 변환결과값 = (Analog 입력전압값 / Vref) x 1023! (- 이결과값의 range = !) ADC 레지스터 : ADMUX ( 디지털값 ).. 이는 AD 변환기데이터레지스터 (16 비트 ) 에저장됨. : bit (7,6)= 기준전압선택 : (00)= 외부기준전압사용, (11)= 내부기준전압 (2.56V) 사용 bit (5) = 변환결과를 ADCH,ADCL 에저장하는형식 : (0)=ok! bit (4-0)= 입력채널선택 : (00000)=ADC0, (00001)=ADC1,.., (00111)=ADC7 ADCSRA : bit (7)=ADEN(=ADC Enable bit) : (1)=ADC Enable 로설정됨, bit (6)=ADSC(=ADC Start bit) : (1)=AD 변환시작시킴!, bit (5)=ADFR(=Free Running 모드 ) : (1)=Free Running 모드로설정, bit (4)=ADIF(=AD 변환완료 flag) : 변환이완료되면 (1) 로됨! ( 이 bit 에 1 을쓰면, ADIF 는 clear 됨!) bit (3)=ADIE(=AD 인터럽트 Enable) : (1)= 인터럽트인에이블! bit (2-0)=AD 변환기에입력되는시스템클럭에의분주비선택 : (111)=128 (=125KHz!) ADCH,ADCL: =AD 변환결과값저장레지스터.( 결과값 =10 비트 ) <!!>!!: AD 변환종료후반드시하위값부터읽어야함!!! ( 상위값부터읽으면하위에어떤값이들어갈수있기때문!)

27 기능 : ADC0 pin으로아날로그신호입력하고. 그결과값을 LCD에출력한다. (= 소수점이하두자리표시 ) H/W 결선상태 : AD 입력핀 = (F포트)PF0-PF7 = ACD0 - ADC7! 전원및기준전압관련핀 = AVCC,GND,AREF(=pin 64,63,62) //===A/D.c======================= #include <mega128.h> #include <delay.h> //delay_ms(), delay_us() = [ms],[us] #include <stdio.h> //sprintf() for LCD #include <string.h> //strlen() for LCD #include <math.h> //fabs() for LCD void LCD_init(void); //LCD 초기화함수 void Display_LCD(unsigned char Channel, float fdata); //LCD display ( 소수점 2자리까지 -ex: 3.25) main() unsigned char Channel; int ad_value; //ad_value = AD변환결과값 float fvalue, Vref; //fvalue = 실제전압값 ( 환산값 ) -from ad_value LCD_init(); // LCD 초기화!!! //---포트설정 DDRF = 0x00; //F 포트 = 입력으로설정.(=ACD 입력단!!) //---do ADC!!------Channel 0를반복적으로ADC 처리및 LCD로출력. Channel = 0; //A/D 채녈 0 설정. while(1) //---ADC 채널선택 & 초기화 -- ADMUX = 0b Channel; //ADC0 채널선택, 단극성입력, 외부기준전압 (Vref) 으로설정. ADCSRA = 0x87; //=0b : AD변환정지!, ADC = Enable, 16MHz의 128분주 (=125 KHz) 로설정. delay_ms(5); //delay반드시필요!! -by test!! ( 잘안되면더길게!!!) //---AD 변환수행--- ADCSRA = 0xC7; //=0b : AD변환시작!, ADC = Enable, AD완료bit=0. while((adcsra & 0x10) == 0) ; //ADIF=1이될때까지기다림. delay_ms(5); //delay반드시필요!! -by test!! ( 잘안되면더길게!!!) ad_value = (int)adcl + ((int)adch << 8); //AD변환결과값읽어오기. //!< 주의 >! ad_value = ((int)adch << 8) + (int)adcl; = 안됨!! -by TEST!! //---실제전압값으로환산-- Vref = 4.80; // H/W보드에서 AREF pin 전압의실제측정값으로해야함!( 유의 ) <=( 통상 Vcc =5[V]!) fvalue = ((float)ad_value / ) * Vref; //= 실제의아날로그입력전압값!! //---LCD Display-- Display_LCD(Channel, fvalue); //AD변환값을 LCD에표시. }//while() }//main() void Display_LCD(unsigned char Channel, float fdata) //LCD display ( 소수점 2자리까지 -ex: 3.25) int i, N = 2; //N = 소수점이하자리수 (float 표시할때 ) int idata; unsigned char Buf[50],str1[50],str2[50];

28 //--- //LCD_init(); //LCD 초기화 = 위의 main() 에서수행했음! ATmega128 인터페이스프로그래밍 //--LCD에 float data 출력 소수점이하 3자리까지만유효함!(by test) ////< 주의 > sprintf(buf, " %f", fdata); = 안됨!?! //...(1) 소수점윗자리를문자열로만들어 str1[] 에넣기... idata = fdata; // 소수점이하버리기 sprintf(str1, "%d", idata); //...(2) 소수점아랫자리를문자열로만들어 str2[] 에넣기 (= 소수점첫째자리의수가 0일경우의극복법!)... fdata = fabs(fdata); //delete sign! (= 음수대책용!) idata = fdata; for(i=0; i<n; i++) //N = 소수점이하표시자리수 fdata = fdata - idata; //now, fdata= 소수점이하만인수! fdata = fdata * 10; // 소수점이상 1자리수만듬 idata = fdata; //1자리수 only str2[i] = idata + 0x30; //make into ASCII code value! (see ASCII table!) }//for(i) str2[i] = '\0'; //add NULL for string in str2[]!! sprintf(buf, "(%d)%s.%s ", Channel, str1, str2); // 실수 (float) 를문자열로완성함. LCD_Command(LCD_HOME); //1st Line Move LCD_String(Buf); // 문자열출력 }//Display_LCD() A/D 채녈 0,1,2 로부터 3 개의아날로그전압을입력받아, 이모두를 LCD 에 display 하는프로그램을작성하라. ( 측정하여 display 하는작업을반복할것 )

29 D/A 변환 = 디지털신호를아날로그신호로변환시켜주는것. <ex> D/A 용 IC = "DAC0800" ( 사다리형 D/A 변환기 ) < 회로분석 >-by 절점해석법..where, 의혼합입력 = 중첩의원리로해결됨!

30 (a) 경우 : a점 : b점 : c점 : ,3 의 를 1 에대입 : (b) 경우 : a점 : b점 : c점 : ,3 의 를 1 에대입 :!!!! (c), (d) 경우 : = 같은방법!! 기능 : B포트로출력한 Digital신호에대한 Analog신호 ( 전압 ) 을구한다. H/W 결선상태 : B포트의 8-비트에 D/A 변환회로 (R-2R회로) 가결선되어있음. //===D/A.c======================= #include <mega128.h> #include <delay.h> //delay_ms(), delay_us() = [ms],[us] main() unsigned char data; DDRB = 0xFF; //B 포트의모든핀을출력으로설정 : 0= 입력, 1= 출력 data = 0b ; // 디지털출력겂 PORTB = data; }//main() //B 포트로값을출력 위프로그램에서, data 값으로서여러값을주고, 이때포트 B 의각비트에서출력되는전압과 Analog 출력값 ( ) 의전압을전압계로측정하여 아래표를완성하라.

31 data 0b b b b b 포트 B 의각비트출력전압값 [V] PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 Analog 출력값 [V] 0b b b b b b b b b D/A 변환으로 sin 파를만들어라. - 리포트검사 = 오실로스코프로측정하여검사! <hint> -<! 특별검사!> 오실로스코프 & 펑션제너레이터사용능력검사!! for(angle=0; 1; angle=angle+0.01) value = sin(angle); //then, -1 <= value <= +1 PORTB = data; //(ex) data = (value + 1)*255? }

32 일반적으로, MCU 에서입력을받아들이는방법 = 2 가지. 1 폴링 (polling) 방식 = 사용자가외부입력의변화를알아내기위해, 외부입력의값을계속읽어보는방식. 2 인터럽트 (interrupt) 방식 = MCU 자체가 H/W 적으로외부입력의변화를체크하여, 외부입력의변화시에 만사용자의프로그램이그에대한동작을수행하도록하는방식. 인터럽트가발생하면 MCU 는지금까지실행하던프로그램을일단중단하고, 사용자가미리정해놓은 인터럽트서비스루틴 을실행한다. 이루틴의실행이끝나면다시원래실행하던 프로그램으로돌아가서하던일을계속한다. [ 비교 ]: 폴링 = 모든경우의입력또는값의변화에대응하여처리가가능하지만, 인터럽트 = H/W 적으로지원되는몇개의입력또는값의변화에만대응처리가가능하며, 처리속도는통상인터럽트가더빠르다. 인터럽트소스 = 인터럽트를발생시키는주체. (ex: 외부입력핀, 카운터, Serial 포트등 ) 인터럽트벡터테이블 = 인터럽트발생시이인터럽트를처리하는프로그램 (= 인터럽트서비스루틴 ) 의 초기주소를기록해놓은곳 ( 테이블 ). (= 인터럽트점프테이블 이라고도함 ) 인터럽트서비스루틴 = 인터럽트발생시, 이인터럽트를처리하는프로그램.(= 함수 ). (= 인터럽트핸들러 라고도함 )

33 : INT0 INT7 = 외부인터럽트요구 0-7 ( 해당외부 pin = 포트 E의 bit 4 7, 포트 D의 bit 0 3) TIMERx.. = 타이머 / 카운터관련인터럽트 10개 < 특이법 > 외부인터럽트 INT0 INT1을 S/W적으로인터럽트를발생시키는법 : ADC = ADC 변환완료 = 이들 pin을출력모드로설정하고, UART0 관련 = RS232(UART0) 수신완료, 외부인터럽트를 enable해놓으면됨!! 전송완료, 데이터레지스터빔 (ref= book p.129 맨위 ) SPI, STC = SPI 직렬전송완료 ANALOG COMP = 아날로그비교기 RESET = 외부리셋, 등.. -여기서, 인터럽트소스명 은해더파일에 (mega128.h) 에정의된소스명사용.(= 고유명사 ) < 예 > 외부인터럽트0 (INT0) 의경우 : interrupt [EXT_INT0] void ext_int0(void) < 예 > 인터럽트소스명 : 외부 int = EXT_INT0 EXT_INT7, 타이머 int = TIM0_COMP, ADC int = ADC_INT 등... 책 p EICRA : bit (1,0) = (INT0-INT3) 의트리거방식설정용 : (10) 값 = 하강에지에서인터럽트요구. (11) 값 = 상승에지에서..-//-.. EICRB : bit (1,0) = (INT4-INT7) 의트리거방식설정용 : (10) 값 = 하강에지에서인터럽트요구. (11) 값 = 상승에지에저..-//-.. " 에지트리거 " 의펄스폭 = 50[ns] 이용필요!! EIMSK : bit (7..0) = 각각 INT7..INT0의인에이블비트임 : 각 bit = 1 이면, 해당 INTx = enable시킴! SREG : bit 7 = 전역인터럽트 Enable bit. ( 인터럽트인에이블을위해서는 EIMSK, SREG 필요!) EIFR : bit (7..0) = 각각 INT7..INT0의인터럽트발생여부를나타낸다.(=EIFR= int. flag register!)

34 기능 : INT4 에연결된푸시버튼을누를때마다, 인터럽트가발생하여, C 포트의 LED 가순차적으로하나이동하여점멸하게함. -( 푸시버튼을누를때마다외부인터럽트핀 INT4(=PE4) 에인터럽트신호 ( 하강에지 ) 가발생함!!) -(INT4-7 = 포트 E 의 PE4-7 과공유임! -ATmega128 pin arrangement 참조 ) H/W 결선상태 : E 포트의 PE4 에푸시버튼 ( 스위치 ) 가부착되어있음! //===interrupt.c======================= #include <mega128.h> // io.h 설정시자동으로칩지정 #include <delay.h> //delay_ms(), delay_us() unsigned char led = 0x01; void main(void) //--- 포트초기화 ---- DDRC = 0xFF; DDRE = 0x00; PORTC = ~led; //C 포트모든핀을출력으로설정 //E 포트모든핀을입력으로설정 (PE4 = INT4) //C 포트 (LED 연결!) 에초기값출력, ~ = eacg bit NOT //--- 외부인터럽트 (INT4) 초기화 ---- EICRB = 0b ; //INT4 의트리거방식설정 : 하강에지 에서인터럽트요구. EIMSK = 0b ; //INT4 enable! ( 즉, 외부인터럽트 4 = '1' = enable!) SREG = 0x80; // 전역인터럽트 enable! ( 즉, 전역인터럽트인에이블비트셋 ) } while(1) ; // 무한루프 : 외부인터럽트기다리다가, 인터럽트가오면 인터럽트처리함수 를수행함! //---interrupt service routine interrupt [EXT_INT4] void external_int4(void) // 외부인터럽트 (INT4) 서비스루틴 (= 인터럽트처리함수 ) //---LED 순차점멸--- led <<= 1; if(led == 0x00) led = 0x01; PORTC= ~led; //~ = each bit NOT } p.10 의리포트 [ 문제 2] 를인터럽트를이용하여수행하는프로그램을설계, 시행하라. D/A 출력만들기 : 아래의입력에의해크기와주파수가변하는 sin 파를출력하기. (1) 가변저항에의한 A/D 입력에인가되는전압을변경하면 => sin 파의크기 ( 진폭 ) 가변경된다. (2) 1 푸시버튼 -1 을누를때마다 => sin 파의주파수가조금씩커진다. ( 외부인터럽트사용 ) 2 푸시버튼 -2 을누를때마다 => sin 파의주파수가조금씩작아진다.( 외부인터럽트사용 ) 이시점에서설계과제를내줌!! 내용예 = 모터제어 ( 푸시버튼 4 개의누름에의한모터의정회전 / 역회전 / 가속 / 감속제어 )!

35 2 개의 8- 비트타이머 / 카운터 = TIMER/COUNTER 0, 2 2 개의 16- 비트타이머 / 카운터 = TIMER/COUNTER 1, 3..TCNTn, OCRn = 레지스터이름. 카운트시사용하는클럭 = 내부클럭 (clk_cpu) 또는외부클럭! (TCNTn= TCNT0,TCNT3), (OCRn= OCR0,OCR3)..(TOP= 카운터의최대값!) (1) Normal 모드 : 타이머 / 카운터레지스터 (TCNTn) 값이증가하여 0xFF 값이되면이값은다시 0X00 이 되고, 이로부터다시카운팅을시작함. ( 이경우, TOP=0xFF) (2) CTC 모드 : 타이머 / 카운터레지스터 (TCNTn) 값이증가하여출력비교레지스터 (OCRn) 값과일치하면 TCNTn 값 =0x00 이되고, 다시카운팅을시작함. ( 이경우, TOP=OCRn)...(CTC = Clear Time on Compare Match) (3) 고속 PWM 모드 : TCNTn 값이 0 에서 0xFF 까지증가하고, 그후다시 0 부터 0xFF 까지증가하는 카운트동작을반복함. ( 용도 : 이는높은주파수의 PWM 발생에유용.) (4) PC PWM 모드 : TCNTn 값이 0x00 에서 0xFF 까지증가한후이 0xFF 에서다시역방향으로 0x00 으로 감소하고, 그후다시이러한카운트동작을반복함. ( 용도 : 이는높은분해능의 PWM 발생에유용.) (1) Normal 모드사용 : 카운터의 overflow 시마다타이머 / 카운터 0 의 overflow- 인터럽트가발생하는프로그램... 이의응용 = 0.5 초마다특정작업하는프로그램만듬. (2) CTC 모드사용 : 타이머 / 카운터 0 의출력비교에의해 (TCNT0 = OCR0) 일때 ( 내부클럭사용시 ) < 방법 > X-TAL 클럭의 1024 분주한클럭을타이머 / 카운터의클럭으로이용함. ( 예 ) X-TAL 클럭이 16MHz 인경우 : => 인터럽트가발생하는프로그램 가장긴 overflow- 인터럽트주기 = (1/16 us)x(1024 분주 )x(256 카운터주기 ) = ms! 이경우, overflow- 인터럽트가 31 회걸리면 : ms x 31 = 508 ms = 약 0.5 초! TCCR0 : 1 bit (6,3) = 동작모드설정 : (=read/write 가능!) 값 : (0,0) = Normal 모드, TOP=0xFF, OCR0 update 시점 = 설정즉시 (0,1) = CTC 모드, TOP=OCR0, OCR0 update 시점 = 설정즉시 (1,0) = PC PWM 모드, TOP=0xFF, OCR0 update 시점 =TOP (1,1) =fast PWM 모드, TOP=0xFF, OCR0 update 시점 =TOP 2 bit (2,1,0) = 클럭선택 ( 시스템클럭 / 분주비 ) -ex: 값 (1,1,1)= 16MHz/1024 값 : (0,0,0) = 클럭입력차단 (0,0,1) = Clk / 1 (0,1,0) = Clk / 8 : (1,1,1) = Clk / 1024 TCNT0 : bit 7-0 = 타이머 / 카운터 0 레지스터값. (=read/write 가능!) OCR0 : bit 7-0 = 출력비교레지스터값 (=read/write 가능!) 이 OCR0 값은 TCNT0 값과계속적으로비교됨... 이둘의값이일치하면 => 인터럽트가발생하거나, 또는 OC0 핀을통해설정된값이출력됨! TIMSK : bit (1,0) : bit 1 = OCIE0 = 출력비교인터럽트 enable bit (- 추가로, SREG bit 7 =1 필요!) bit 0 = TOIE0 = overflow- 인터럽트 enable bit (- 추가로, SREG bit 7 =1 필요!) SREG : bit 7 = 전역인터럽트 Enable bit. ( 인터럽트인에이블을위해서는 EIMSK, SREG 필요!)

36 참고 : 인터럽트서비스루틴 ( 인터럽트함수 ) 만드는법 타이머 / 카운터0 모드의경우 -여기서, 인터럽트소스명 은해더파일에 (mega128.h) 에정의된소스명사용. < 예 > 외부인터럽트0 (INT0) 의경우 : interrupt [EXT_INT0] void ext_int0(void) < 예 > 인터럽트소스명 : 외부 int=ext_int0 EXT_INT7, 타이머 int = TIM0_COMP, ADC int = ADC_INT 등... 기능 : 0.5 초마다타이머 / 카운터 0 의인터럽트가발생하여, C 포트의 LED 가깜박이게함. //===Timer_interrupt.c======================= #include <mega128.h> // io.h 설정시자동으로칩지정 #include <delay.h> //delay_ms(), delay_us() unsigned char led = 0x01; int count =0; void main(void) //---포트초기화---- DDRC = 0xFF; //C 포트모든핀을출력으로설정 PORTC = ~led; //C포트(LED 연결!) 에초기값출력. ( ~ = each bit NOT) //---타이머/ 카운터0 의설정및인터럽트초기화----: 관련인터럽트서비스루틴 = timer_comp0()! TIMSK = 0x02; //OCIE0=1 : 출력비교인터럽트 enable. TCCR0 = 0x0F; // 프리스케일 = CK/1024, CTC 모드. OCR0 = 255; // 출력비교레지스터값. --OCR0값은 TCNT0값과계속적으로비교됨. TCNT0 = 0x00; // 타이머 / 카운터0 레지스터초기값.--OCR0와 TCNT0값이일치하면 // => 인터럽트가발생, 또는 OC0 핀을통해설정된값이출력됨! SREG = 0x80; // 전역인터럽트인에이블비트셋. p.131 } while(1) ; // 무한루프 : 외부인터럽트기다리다가오면아래인터럽트함수수행함! //---interrupt service routine interrupt [TIM0_COMP] void timer_comp0(void) // 타이머 / 카운터 0 " 출력비교 " 서비스루틴. // 타이머 / 카운터 0 " 출력비교 " 하여, (TCNT0 = OCR0) 일때인터럽트발생함! } }//timer_comp0() // 인터럽트발생주기 = (1/16 us)x(1024 분주 )x(256 카운터주기 ) = [ms]! // => 따라서, 인터럽트가 31 회걸리면이는약 0.5 초! // ( 즉, ms x 31 = ms = 50.8 [ms]!) count++; //counting for 0.5 초검사. if(count == 31) //---LED 순차점멸 --- led <<= 1; if(led == 0x00) led = 0x01; PORTC = ~led; //~ = each bit NOT //--- count = 0; //reset!

37 PWM은직류모터의전압제어에사용되는방식이다. 직류모터와 PWM 직류모터의전압제어는모터의단자전압을가변시켜모터의속도를제어하는경우로서, 보편적으로손실도적고, 제어의폭이넓어서널리사용되는방법이다. 직류모터에인가하는직류전압을증가시키면모터의속도가증가하고, 직류전압을감소시키면속도는감소한다. ( 그이유는직류모터의속도는모터의역기전력에비례하기때문이다 ) 한편, 전압을조절하는방법으로는, 직류전압의크기를제어하기보다는전압의평균값을제어하는 PWM 방식이가장많이사용된다. 이란진폭변조방식 (Pulse Width Modulation) 의약자로서, 펄스의폭을가변시켜이파형의직류성분을가변시키는방법이다. 주기가 T 이고크기가 인구형파펄스가 High 인시간이 이라고하면, 이파형의평균값은다음과같이나타낼수있다. 여기서주기 T와크기 가일정하다고했을때출력전압의평균값은 시간에비례하게된다. 즉, 사용자가임의로 시간을가변시켜서출력전압의평균값을조절할수있게된다. 이출력전압의평균값이이파형의직류전압의성분에해당한다. 시간을가변시키는것을 제어라고한다. 직류모터의 PWM 제어법은출력전압의평균값을제어하는방식으로직류전압을가변시키는것과동일한효과를나타낸다. -이둘의용법은동일함, 단지레지스터만다름! -TNCTn= TNCT1,TNCT3), (OCRn= OCR1,OCR3)..(TOP= 카운터의최대값! -타이머및관련레지스터 more detail = 앞의 3.8절의 타이머해설 부분볼것! (1) 일반모드 : 타이머 / 카운터레지스터 (TNCTn) 값이증가하여 0xFF 값이되면 0x00부터다시시작함. ( 이경우, TOP=0x00) (2) CTC모드 : 타이머 / 카운터레지스터 (TNCTn) 값이증가하여출력비교레지스터 (OCRn) 값과일치하면 TNCTn값 =0x00이되고, 다시카운팅을시작함. (CTC = Clear Time on Compare Match) ( 이경우, TOP=OCRn) (3) 고속 PWM 모드 : TCNTn값이 0에서 0xFF까지증가하고, 그후다시 0부터 0xFF까지증가하는카운트동작을반복함. ( 용도 : 이는높은주파수의 PWM 발생에유용.) (4) PC PWM 모드 : TCNTn값이 0에서 0xFF까지증가한후이 0xFF에서 0으로감소하하고, 그후다시이러한카운트동작을반복함. ( 용도 : 이는높은분해능의 PWM 발생에유용.) 여기서는, PC PWM 모드를구현함!!

38 레지스터 : (TCNT1),(TCNT3) = 타이머 / 카운터1,3 레지스터. (TCCR1A,TCCR1B,TCCR1C),(TCCR3A,TCCR3B,TCCR3C) = 제어레지스터 (1,3각각의 A,B,C의 ). (OCR1A,OCR1B,OCR1C),(OCR3A,OCR3B,OCR3C) = 출력비교레지스터 (1,3각각의 A,B,C의 ). PWM 출력핀 = (OC1A,OC1B,OC1C),(OC3A,OC3B,OC3C) = 출력핀 (1,3각각의 A,B,C의 ). 동작 : TCNTn값이 0에서 TOP까지증가하다가다시 0으로감소하는카운트동작을반복함. 이때, 업카운트중에 TCNTn값과 OCRnx의값이일치하면 OCnx 핀을통해 0 이출력되고, 다운카운트중에 TCNTn값과 OCRnx의값이일치하면 OCnx 핀을통해 1 이출력된다. PWM 주기 = TOP값의설정에따라결정됨. PWM의펄스폭 (DUTY) = OCRnx 레지스터의값에따라결정됨. PWM 주파수 f = (f_s) / (2(N)(TOP)) -여기서, f_s= 시스템클럭주파수 [Hz], N= 분주비 =1,8,64,256,1024. 따라서, 주파수조정법 : TOP값이크면 주기 = 길어짐...TOP값 = TCCR1A,C( 제어레지스터 ) 에서설정함. DUTY 조정법 : OCRnx( 출력비교레지스터 ) 값이커지면 DUTY가커짐 ( 즉, 1 길이가길어짐 ) -fo 위의타이머 / 카운터1 의경우 ( 타이머 / 카운터1 및 3 내용 = 동일함!) 참고 : 파형발생모드설정 = TCCR1A의 bit(1,0) 과 TCCR1B의 bit(4,3) 의조합으로설정됨. TCCR1A : bit (1,0) = 파형발생모드설정용 : (11) 값 = PC PWM 10비트, TOP=0x03FF. bit (7,6)(5,4)(3,2) =A,B,C각각의동작모드설정용 : each (10) 값 = OCnx출력클리어. TCCR1B : bit (2,1,0) = 클럭소스선택설정용 : (101) 값 = CLK/1024. bit (4,3) = 파형발생모드설정용 : (00) 값 = PC PWM 10비트, TOP=0x03FF. TCCR1C : PWM모드에서는무효. TCNT1 : 타미머 / 카운터값 (=16비트데이터 ) OCR1A,OCR1B,OCR1C : A,B,C의출력비교값 (=16비트데이터 : H,L) 우리의경우, 파형의주기 T = 1/f =(2(N)(TOP))/(f_s) =(2x1024(TOP)x1024( 분주 )) x (1/16)[us] = 131[ms]!! ATmega C program routine

39 기능 : " 타이머 / 카운터 1" 을이용한 PWM 출력 (=PC PWM, 모드 3) - 목표 : OC1B pin(=pb6) 으로 PWM_B 신호출력. OC1C pin(=pb7) 으로 PWM_C 신호출력. H/W 정보 : OC1B, OC1C pin = PWM 출력 pin 임. ( 이두 pin 은 Port B 의 bit 6,7 pin 과겸용임 ) 실험시, 이두 pin 을오실로스코프에연결하여출력파형을확인할것! //===pwm.c======================= #include <mega128.h> unsigned int TOP = 0x03FF; //=Max 기준값 : 아래에서 TCCR1A 초기화시 TOP = 0x03FF 로설정되었음! unsigned int PWM_B = 0x100; //=OCR1B( 출력비교레지스터 ) 값 : 이값 = 아래의 TOP 값보다작아야함! unsigned int PWM_C = 0x030F; //=OCR1C( 출력비교레지스터 ) 값 = 이값 = 아래의 TOP 값보다작아야함! main() char tmpdata1, tmpdata2; //===IO Port 설정 =============== DDRB = 0xFF; //=0b ; //PWM출력핀 2개 = OC1B, OC1C (=PB6, PB7) 로설정. //---' 타이머 / 카운터1' 의 B,c 초기화 //TCCR1A = 0b ; //10비트 PC PCM, TOP=0x03FF(=10비트 all 1) 로지정. TCCR1A = 0b ; //10비트 PC PCM, TOP=0x03FF(=10비트 all 1), OC1B & OC1C출력클리어로지정. TCCR1B = 0b ; //prescaler= CK/1024 (= 클러소스지정 ) TCCR1C = 0x0; // 타이머 / 카운터1 인터럽트불용지정. TCNT1 = 0x0000; // 타이머 / 카운터1 레지스터초기값 = 0으로지정 (=16비트데이터임 ) //...B OCR1BH = (PWM_B & 0xFF00) >> 8;; //OCR1B의상위값 (H) 지정. (=2비트분량 ) OCR1BL = PWM_B & 0x00FF; //OCR1B의하위값 (L) 지정. (=8비트분량 ) = 총 10비트분량. //...C OCR1CH = (PWM_C & 0xFF00) >> 8;; //OCR1C의상위값 (H) 지정. (=2비트분량 ) OCR1CL = PWM_C & 0x00FF; //OCR1C의하위값 (L) 지정. (=8비트분량 ) = 총 10비트분량. //<!> 주 : // 만일, 제어시, 상황에따라 PWM DUTY를바꾸려면 // => 아래부분에서, 조건에따라이 OCR1CH,OCR1CL값만을바꾸어주면됨! // //---tmp TEST : B포트그냥출력 (not PWM) : B포트의 bit 4,5 tmpdata1 = 0b ; //bit 4 tmpdata2 = 0b ; //bit 5 PORTB = tmpdata1 tmpdata2; }//main()

40 = 직렬전송 (serial communication) 을위한규격. 1 사용전압 : logic '1' = -3 ~ -15V...(negative logic 채용 ) 따라서, 전압레벨변환 IC( MAX232 ) 사용필요! logic '0' = +3 ~ +15V 편리한전압이용 ( 통상 ±12V) 2 최대전송 line 길이 = 50 ft (=15 m). 3 전송속도 (bps) : 110, 300, , 2400, 4800, 9600, 19200[bps] 4 전송 Data 의 Format : bps=bits per second. 송신부는한개의데이터에약속된방식으로몇개의 bit 을추가로붙여 (=frame 을만들어 ) 전송하고, 수신부에서는 frame 한개를받으면추가된 bit 를제거하여데이터를뽑아낸다. ~ 이를위해사용되는추가 bit 들 : ( 이들은한개의순수 data 마다에추가됨 ) - start bit : data 의시작을알리는비트 - stop bit : data 의끝을알리는비트 - parity bit : 전송 error 검사용비트 - 종류 = even parity, odd parity < 에러의종류 > 1 overrun error = 이전 data 의해독이종료되지않은시점에서다음의 data 가들어와서처리불능이되는것. 2 framing error = 수신기가 noise 등을검지해서이를 start bit 로해석하여수신을개시하는일이있다. 이경우 stop bit 의해독 timing 으로 stop bit 이외의부분을읽어올바르게 data 를해독하지못하는것.

41 ATmega128 : USART 2개를내장. (PIN = TXD0,RXD0, TXD1,RXD1 <- p.60) - 동기모드 / 비동기모드, 전이중통신가능. - 3개의인터럽트소스 : 송신완료, 수신완료, 송신데이터레지스터빔 (empty). 송신부 = 송신버퍼, 쉬프트레지스터, 패리티발생기등으로구성 수신부 = 수신버퍼, 쉬프트레지스터, 패리티검사기등으로구성. 에러자동검사 = 패리티에러, 프레임에러, 데이터오버런에러. : 데이터레지스터 : UDRn (= 송신 / 수신겸용 ) n=0,1 (USART 번호!) 제어레지스터 (A,B,C) : UCSRnA, UCSRnB, UCSRnC. 보레이트레지스터 (H/L) : UBRRnH, UBRRnL.... 이하, n=0,1 : 즉, UDRn => UDR0,UDR1, UCSR0A, UBRR0H..etc UDRn : USARTn I/O Data Register ( 데이터레지스터 ) : 8-bit (= 책p.247) = 송신데이터버퍼 & 수신데이터버퍼겸용이름. 이름은동일하지만, 내부 (H/W) 적으로분리되어있음! 1. UDRn 레지스터에데이터를쓰면 => 송신데이터버퍼 TXBn에값이써진다. UDRn 레지스터를읽으면 => 수신데이터버퍼 RXBn에들어있는내용이읽혀진다. UDRE = Data Register Empty 2. 송신데이터버퍼 (UDRn) 에값을쓸수있는때 = UCSRnA 레지스터의 UDRE 비트가 1 일때 (only). (0 일때데이터를쓰면무시됨 ) => 송신이가능하고또한송신시프트레지스터가비어있으면, 송신버퍼에쓰여진데이터는송신시프트레지스터를통해 TXD0 핀으로출력됨. UCSRnA : USARTn Control and Status Register A ( 제어및상태레지스터 A) : 8-bit (= 책p.247) bit (7) = RXCn(=Receive Complete = 수신완료플레그비트 ) 값 1 : 수신버퍼 (UDRn) 에읽지않은데이터가들어있으면셋됨. ( 비어있으면 0 됨 ) 인터럽트관련 : 이비트는 " 수신완료인터럽트 " 를발생시킴. bit (6) = TXCn(=Transmit Complete = 송신완료플레그비트 ) 값 1 : 문자프레임이 TxD 핀으로송신이완료되어, 송신버퍼 (UDRn) 및송신시프트레지스터가비어있으면셋됨. 인터럽트관련 : 이비트는 " 송신완료인터럽트 " 를발생시킴. ( 송신완료인터럽트가발생되면 -> 이비트는자동으로클리어됨 ) bit (5) = UDREn(=Data Register Empty = 송신데이터레지스터준비완료플래그비트 ) 값 1 : 송신버퍼 (UDRn) 가비어있어서새데이터를받을준비가되면셋됨. 인터럽트관련 : 이비트는 " 송신데이터레지스터준비완료인터럽트 " 를발생시킴. bit (4,3,2) = Error 관련플레그비트들. -모두: 수신버퍼 (UDRn) 가읽혀질때까지유효함. UCSRnA 레지스터에값을쓰면클리어됨. - bit (4) =FEn(=Frame Error) - bit (3) =DORn(=Data OverRun Error) - bit (2) =PEn(=Parity Error) bit (1) =U2Xn(=Double Tx Speed = 송신속도 2배설정비트 ). 값 1 = 전송속도가 2배로됨. bit (0) =MPCMn(=Multi-processor Comm. mode = 멀티프로세서통신모드 ) : = omit! UCSRnB : USARTn Control and Status Register B ( 제어및상태레지스터 B) : 8-bit (= 책p.249) bit (7) =RxCIEn(=Rx Complete Interrupt Enable = " 수신완료인터럽트 " 인에이블비트 )..SREG 레지스터의 비트와이비트가 1 인상태에서, 수신이완료되면 ( 즉, UCSRnA 레지스터의 bit(7) 이 1이되면 ) => " 수신완료인터럽트 " 가발생된다. bit (6) =TxCIEn(=Tx Complete Interrupt Enable = " 송신완료인터럽트 " 인에이블비트 )..SREG 레지스터의 비트와이비트가 1 인상태에서, 송신이완료되면 ( 즉, UCSRnA 레지스터의 bit(6) 이 1이되면 ) => " 송신완료인터럽트 " 가발생된다.

42 bit (5) =UDRIEn(=Data Register Empty Interrupt Enable =" 송신버퍼준비완료인터럽트 " 인에이블비트 )..SREG 레지스터의 I 비트와이비트가 1 인상태에서, 송신버퍼가비면 ( 즉, UCSRnA 레지스터의 bit(5) 가 1이되면 ) => " 송신버퍼준비완료인터럽트 " 가발생된다. bit (4) =RxENn(=Receiver Enable = 수신기인에이블 ) 값 1 = 수신가능상태로만들고, H/W적으로 RxDn 핀이 ( 범용 I/O가아닌 ) 수신단자로동작하게됨. bit (3) =TxENn(=Transmitter Enable = 송신기인에이블 ) 값 1 = 송신가능상태로만들고, H/W적으로 TxDn 핀이 ( 범용 I/O가아닌 ) 송신단자로동작하게됨. bit (2) =UCSZn2(=Character Size = 전송데이터길이선택비트 ) -이비트는 UCSRnC 레지스터의 bit (2,1) 과함께사용됨! bit (1) =RxB8n(=Receive Data Bit 8 = 수신데이터비트 8) = 9비트전송모드관련 (omit!) bit (0) =TxB8n(=Transmit Data Bit 8 = 송신데이터비트 8) = 9비트전송모드관련 (omit!) UCSRnC : USARTn Control and Status Register C ( 제어및상태레지스터 C) : 8-bit (= 책p.251) bit (7) = 불용! bit (6) =UMSELn(=Mode Select = 모드설정비트 ) : 값 0 = 비동기모드, 1 = 동기모드. bit (5.4)=UPMn(=Parity Mode = 패리티모드설정비트 ) : 값 (0,0)= 불용, (1,0)= 짝수패리티, (1,1)= 홀수패리티. bit (3) =USBSn(=Stop Bit Select = 스톱비트선택비트 ) : 값 0 =1비트, 1 =2비트 bit (2,1)=UCSZn1,UCSZn0(=Character Size = 전송데이터길이선택비트 ) : -이비트는 USCRnB 레지스터의비트 (2)(=UCSZn2) 와함께사용됨! < 즉 > (UCSZn2,UCSZn1,UCSZn0) : 값 (0,1,1)=8비트, (0,1,0)=7비트,..,(0,0,0)=5비트. -기타 = 책 p.252 [ 표10-2] 참조. bit (0) =UCPOLn(=Clock Polarity = 클럭극성선택비트 ) -이비트는동기모드에서만사용 ( 상승에지, 하강에지선택용 ). (omit!) UBRRnH,UBRRnL : USARTn Baud Rate Register ( 보레이트레지스터 ) : each 8-bit (= 책p.253) = 총16비트중 12비트만사용됨.(H= 상위바이트, L= 하위바이트 ) < 주의 > 값쓰기 = 상위바이트 (H) 에먼저값을쓴후, 하위바이트 (L) 에써야함!! -책 p.253 [ 표10-4] = 전송속도및본 UBRRn용설정값을구하는공식 -책 p.254 [ 표10-5] = 16MHz 시스템에서, bps와 UBRRn 설정값의관계표!! < 설정값관계 >: (bps-ubrr) : ( ),( ),( ), (14.4K-68),(19.2K-51),(28.8K-34),(38.4K-25),..,(1M-0) [ 방법 1] CodeVisionAVR에내장된터미널창사용 : -by 툴바의 PC모양아이콘클릭! [ 방법 2] Windows OS 제공 " 하이퍼터미널 " 사용 : o모니터좌측하단의 < 시작 > => 모든프로그램 => 보조프로그램 => 통신 => 하이퍼터미널선택 -> TAPI오류 메시지박스가나타남 (= 무시 ) -> [ 확인 ] 버튼 -> 연결이름기입 메시지박스나타남 -> 임의이름기입 & [ 확인 ] 버튼 -> 또 TAPI오류 메시지박스가나타남 (= 무시 ) -> [ 확인 ] 버튼 -> 연결에사용할모뎀 설정용메시지박스나타남 -> 원하는 COM 포트선택 & [ 확인 ] 버튼 -> 포트설정 메시지박스나타남 -> 통신포트 (RS232) 초기화설정 : 즉,(bps,data,parity,stop bit 설정 )& 흐름제어 = 없음 으로설정! -> [ 확인 ] 버튼 ==> 그러면하이퍼터미널완성!! 이제외부에서이 PC의통신포트 (RS232) 로데이터가들어오면 이하이퍼터미널창에그데이터 (ASCII코드) 가표시되고, 이 PC의키보드를두드리면 해댱키데이터가이 PC의통신포트 (RS232) 를통해전송됨!! = [ 부록 5] 참조!!!

43 기능 : RS-232 포트로 PC 와직렬데이터송수신 ( 일반 & 인터럽트사용 ) H/W 결선 : ATmega128 과 PC 사이에 RS-232 serial cable 연결. //===Serial_COMM.c======================= #include <mega128.h> #include <delay.h> //delay_ms() RS-232 serial cable 제작법 (ATmega128 용 ) = 책 p.375. //---Job Functions ( 본프로그램의기능 : 3 종 ) source= book p void RS232_Tx(); //ATmega128 의 RS-232 포트 0 를통해문자열을송신. void RS232_TxRx(); //PC 에서키를치면 ATmega128 는이를수신하고이를다시 PC 에송신함. void RS232_TxRX_Interrupt(); //PC 에서키를치면 ATmega128 는이를수신하고이를다시 PC 에송신함. // ( 단, 인터럽트사용!) //---used functions void Tx_OneByte(char data); //1 byte 송신함수 : 송신가능상태가되기를기다린후, 준비가되면송신함.(RS-232) char Rx_OneByte(); //--- main() //1 byte 수신함수 : 데이터가수신되기를기다린후, 수신되면받아서리턴함.(RS-232) RS232_Tx(); //ATmega128 의 RS-232 포트 0 를통해문자열을송신. // RS232_TxRx(); //PC 에서키를치면 ATmega128 는이를수신하고이를다시 PC 에송신함. // RS232_TxRX_Interrupt();//PC 에서키를치면 ATmega128 는이를수신하고이를다시 PC 에송신함.( 인터럽트사용!) }//main() // void Tx_OneByte(char data) //1 byte 송신함수 : 송신가능상태가되기를기다린후, 준비가되면송신함.(RS-232) } while(!(ucsr0a & 0b )) ; //(USART-0) Tx Data Register Empty? ( 즉, UDRE0 =1?) UDR0 = data; //(USART-0) Tx Data Register 에데이터입력 (= 전송!) char Rx_OneByte() //1 byte 수신함수 : 데이터가수신되기를기다린후, 수신되면받아서리턴함.(RS-232) } char data; while(!(ucsr0a & 0b )) ; //(USART-0) Rx Complete? ( 즉, RxC0 =1?) = 수신완료되기를기다림 data = UDR0; //(USART-0) Rx Data Register 에수신되어있는데이터를가져옴. return(data); //===RS232_Tx(): USART0 송신프로그램 [ATmega128의 USART-0(RS232 포트 0) 사용 ]============ // JOB : 직렬통신으로, ATmega128에서 PC로, 문자열 "This is USART control program" 을전송하기. // -Spec: BAUD=9600, DataBit=8, StopBit=1, Parity=None. // H/W 연결상태 : ATmega128과 PC사이에 RS-232 serial cable 연결. //... // <PC측에서확인법 >= CodeVisionAVR에내장된터미널창사용! (by 툴바의 PC모양아이콘클릭!) // 또는, Windows OS 제공 " 하이퍼터미널 " 사용. // void RS232_Tx() //ATmega128의 RS-232 포트0를통해문자열을송신. char string[] = "This is USART control program!!!=="; // 전송할문자열 char *pstr; //===USART-0 초기화 ============ UCSR0A = 0x0; //(USART-0) 송수신관련 all Flag Bits = clear! UCSR0B = 0b ; //(USART-0) 송신 enable(txen0=1), 모든송수신인터럽트 =disable

44 UCSR0C = 0b ; //(USART-0) 비동기모드, Parity Bit= 불용, StopBit=1, Data=8 bit UBRR0H = 0; //(USART-0) 9600 bps (X-TAL=16MHz 일때 ) UBRR0L = 103; //=== 문자열송신 =============== < 문자열송신부분 ( 좌측 2줄 ) 의다른루틴예 > pstr = string; for(i=0; 1; i++) while(*pstr) Tx_OneByte(*pStr++); if(string[i] == '\0') break; while(1) ; // 무한루프 Tx_OneByte(String[i]); } }//RS232_Tx() //===RS232_TxRx(): USART0 송수신프로그램 [ATmega128의 USART-0(RS232 포트 0) 사용 ]======== // JOB : 직렬통신으로, PC에서키입력된문자를 ATmega128에전송하고, // ATmega128은수신된문자의다음문자를 PC에전송하는프로그램. // -Spec: BAUD=9600, DataBit=8, StopBit=1, Parity=None. // H/W: ATmega128과 PC사이에 RS-232 serial cable 연결. //... // <PC 확인법 >= CodeVisionAVR에내장된터미널창사용! (by 툴바의 PC모양아이콘클릭!) // 또는, Windows OS 제공 " 하이퍼터미널 " 사용. // void RS232_TxRx() //PC에서키를치면 ATmega128는이를수신하고이를다시 PC에송신함. char data; //===USART-0 초기화 ============ UCSR0A = 0x0; //(USART-0) 송수신관련 all Flag Bits = clear! UCSR0B = 0b ; //(USART-0) 수신 enable, 송신 enalbe (RxEN0=1,TxEN0=1), // 모든송수신인터럽트 =disable UCSR0C = 0b ; //(USART-0) 비동기모드, Parity Bit= 불용, StopBit=1, Data=8 bit UBRR0H = 0; //(USART-0) 9600 bps (X-TAL=16MHz 일때 ) UBRR0L = 103; //=== 송수신작업 =============== while(1) data = Rx_OneByte(); // 수신 (RS-232) data = data +1; // 다음문자만듬 Tx_OneByte(data); // 송신 (RS-232) } }//RS232_TxRx() //===RS232_TxRX_Interrupt(): USART0 송신프로그램 ( 인터럽트사용!)======================== // [ATmega128의 USART-0(RS232 포트 0) 사용 ] // JOB : 직렬통신으로, PC에서키입력된문자를 ATmega128에전송하고, // ATmega128은수신된문자의다음문자를 PC에전송하는프로그램. // -단, 이기능을 " 인터럽트 " 를사용하여구현함. // -인터럽트처리중이아닌시간에는 LED( 포트 C) 를점등시킨다. // -Spec: BAUD=9600, DataBit=8, StopBit=1, Parity=None. // < 인터럽트순서 > // 1. 처음에는 " 수신완료인터럽트 " 만허용하여, 외부에서문자가수신되면인터럽트가발생하게함. // 2. " 수신완료인터럽트 " 가발생하면 => 수신된데이터를저장한후, // " 송신버퍼준비완료인터럽트 " 를허용한다. // 3. " 송신버퍼준비완료인터럽트 " 가발생하면 => 수신된문자다음문자를 PC에전송하면서, // " 송신버퍼준비완료인터럽트 " 를금지한다. // 4. 이과정을반복! // // H/W: ATmega128과 PC사이에 RS-232 serial cable 연결. //... // <PC 확인법 >= CodeVisionAVR에내장된터미널창사용! (by 툴바의 PC모양아이콘클릭!) // 또는, Windows OS 제공 " 하이퍼터미널 " 사용.

45 // char RxData; //Rx data void RS232_TxRX_Interrupt() //PC에서키를치면 ATmega128는이를수신하고이를다시 PC에송신함.( 인터럽트사용!) unsigned char led = 0xFE; //LED init value DDRC = 0xFF; //set Port C =all output (for LED) //===USART-0 초기화 ============ UCSR0A = 0x0; //(USART-0) 송수신관련 all Flag Bits = clear! UCSR0B = 0b ; //(USART-0) 수신 enable, 송신 enalbe (RxEN0=1,TxEN0=1), // " 수신완료인터럽트 " enable(rxcie0=1) UCSR0C = 0b ; //(USART-0) 비동기모드, Parity Bit= 불용, StopBit=1, Data=8 bit UBRR0H = 0; //(USART-0) 9600 bps (X-TAL=16MHz 일때 ) UBRR0L = 103; //... SREG = 0x80; // 전역인터럽트플래그 bit I =1 //===LED 순차점멸 ( 그러다가인터럽트가발생하면인터럽트처리함수에서그것이처리될것임 )=== while(1) led <<= 1; led = 0x01; if(led == 0xFF) led = 0xFE; PORTC = led; //display delay_ms(500); } }//RS232_TxRX_Interrupt() //---인터럽트처리함수 interrupt [USART0_RXC] void usart0_rxc() // 직렬통신수신인터럽트처리함수 RxData = UDR0; // 직렬포트로수신된데이터를수신버퍼 (UDR0) 로부터읽음. UCSR0B = UCSR0B 0x20; //0x20=0b " 송신버퍼준비완료인터럽트 " 를 enable (UDRIE0=1) } interrupt [USART0_DRE] void usart0_dre() // 직렬통신송신인터럽트처리함수 UDR0 = RxData +1; // 수신된데이터 +1을송신버퍼 (UDR0) 에넣음.(= 직렬포트로송신함!) UCSR0B = UCSR0B & 0xDF; //0xDF=0b " 송신버퍼준비완료인터럽트 " 를 disable (UDRIE0=0) } //------END. 위의프로그램을일부수정하여다음의기능을구현하시오. 문 1. PC 에서어떤문자를누르면 ATmega 는 PC 에게이문자로시작하는단어를송신함. -ex: a' apple, 'b' banna,... 문 2. ATmega 에있는버튼 1 을누르면 ATmega 는 PC 에게문자열 Happy" 를송신함. ATmega 에있는버튼 2 를누르면 ATmega 는 PC 에게문자열 Year" 를송신함. PC 와 ATmega128 사이의 RS-232 통신. 즉, ATmega128 은 PC 에서하나의문자열을수신하고, 수신이완료되면이문자열을그대로 PC 에게다시송신하는프로그램. <hint> 문자열의끝은 NULL 문자 (='\0') 로끝남. 따라서, 문자열수신이란문자들을계속수신하여저장하다가수신된문자가 NULL 문자이면하나의문자열수신이완료된것으로판정하면됨. < 참고 > 본프로그램을위해서는 PC 에서 RS-232 통신하는프로그램을확실히작성할수있어야함. [next page] 참조!!

46 <TIP> 표준 -C 프로그램 [main( )] 에서의 RS-232 통신프로그램구현방법 = 먼저, 프로그램맨앞에헤더파일 windows.h 를인크루드시키고, - 즉, #include <windows.h> 그후, Windows API 함수를그대로사용하면됨!!! //=Program Source :DOS=============================================================== // // -ref = WinComm_Basic.c!!! // * 본프로그램 = DOS type의 RS232 통신프로그램!!! // < 유의 > - main() 함수사용! // - 헤더파일 <windows.h> 를 #include하고, // 통신작업을위해 WinAPI함수 (ReadFile(),WriteFile() 등 ) 을사용함! // // (0) 먼저, RS232 Comm. port로메시지 ( 문자열 ) 을송신한다. -메시지는키보드로입력함! // (1) 그후, RS232 Comm. port로부터메시지 ( 문자열 ) 를입력받아이를모니터에표시한다. // -송수신모두에서, 메시지 (= 문자열 ) 의끝표시는 NULL문자 ('\0') 를사용함! //... 이과정을반복한다. // (*) 종료법 : 상대방으로부터 " 종료 " 메시지를받으면통신을종료함! // //< 참고 > COMM Functions : // (1)WriteFile(hComm, OutBuff, nbytetowrite, &nbytewritten, NULL); // 함수성공시, non-zero값 return함. // ( 데이터송신함수 ) -parameters: hcomm = Comm 포트핸들 // OutBuff[] = 송신할 (= 송신버퍼에써넣을 ) 데이터가들어있는버퍼 ( 배열 ). // nbytetowrite = 송신할 (= 송신버퍼에써넣을 ) 데이터개수. // nbytewritten = 송신버퍼에실제로써넣어진데이터개수. // (2)ReadFile(hComm, InBuff, cs.cbinque, &nbytesread, NULL); //" 수신버퍼 " 에들어있는데이터를읽어온다. // ( 데이터수신함수 ) -parameters: hcomm = Comm 포트핸들 // InBuff[] = 수신된 (= 수신버퍼에서읽어온 ) 데이터를넣을버퍼 ( 배열 ). // cs.cbinque = 수신버퍼에서읽어올데이터개수. // nbyteread = 수신버퍼에실제로읽어온데이터개수. //========================================================================== // // o모니터좌측하단의 < 시작 > => 모든프로그램 => 보조프로그램 => 통신 => 하이퍼터미널선택 // -> TAPI오류 메시지박스가나타남 (= 무시 ) -> [ 확인 ] 버튼 -> 연결이름기입 메시지박스나타남 // -> 임의이름기입 & [ 확인 ] 버튼 -> 또 TAPI오류 메시지박스가나타남 (= 무시 ) -> [ 확인 ] 버튼 // -> 연결에사용할모뎀 설정용메시지박스나타남 -> 원하는 COM 포트선택 & [ 확인 ] 버튼 // -> 포트설정 메시지박스나타남 -> 통신포트 (RS232) 초기화설정 : 즉,(bps,data,parity,stop bit 설정 ) // & 흐름제어 = 없음 으로설정! // -> [ 확인 ] 버튼 ==> 그러면하이퍼터미널완성!! // 이제외부에서이 PC의통신포트 (RS232) 로데이터들어오면 // 이하이퍼터미널창에그데이터 (ASCII코드) 가표시되고, 이 PC의키보드를두드리면 // 해댱키데이터가이 PC의통신포트 (RS232) 를통해전송됨!! //================================================================================= //for 통신용 WinAPI 함수!!! (ReadFile(),WriteFile() 등 ) //////START===global variables for COMM (RS-232)========///////////// LPCSTR lpszcommname = "COM1"; // 사용포트 = COM1 COMMCONFIG cc; //COMMCONFIG 구조체 -포트설정용데이터 ( 대화상자법 ) DCB dcb; //DCB 구조체 -포트설정용데이터 COMMTIMEOUTS to; //COMMTIMEOUTS 구조체 -포트 " 타임아웃 " 데이터 COMMPROP cp; //COMMPROP 구조체 -현재포트의설정내용 HANDLE hcomm; //Comm 포트핸들 COMSTAT cs; //COMSTAT 구조체 : 현재의포트상태정보용 -ClearCommError() DWORD dwerrormask; //dwerrormask = 오류데이터 -ClearCommError() int Status; //result status of WriteFile() & ReadFile() //---variables for Comm. Transmit -WriteFile() BYTE OutBuff[200]; // 송신할 (= 송신버퍼에써넣을 ) 데이터가들어있는공간 ( 배열 ) -at WriteFile() LONG nbytetowrite; // 송신할 (= 송신버퍼에써넣을 ) 데이터개수 -at WriteFile() LONG nbytewritten; // 송신버퍼에실제로써넣어진데이터개수 -at WriteFile() //---variables for Comm. Receive -ReadFile() BYTE Rx_Data; //received data(=byte) BYTE InBuff[200]; //" 수신버퍼 " 로부터읽은바이트를넣을공간 ( 배열 ) -at ReadFile()

47 DWORD nbytesread; //nbytesread = " 수신버퍼 " 로부터실제로읽혀진바이트수 -at ReadFile() //////END===global variables for Comm.========//////////////////////// //>>>>===COMM. function===================================<<<<<<<<<<<<<<<<<<< void COMM_Port_Initialize(); //RS232-COMM-Port를열고, 초기화한다 void COMM_Port_Close(); //RS232-COMM-Port를닫는다 ///////////////////////////////////////////////////////////////////////////// int i,k; char Message[200], Buf[200]; printf(">>>>>>>>>> 채팅프로그램 <<<<<<<<<<<<<<<<\n"); printf(" [ 방법 ] RS-232 통신을통해상대방 PC와메시지를주고-받고-주고-받고..\n"); printf(" > 통신을끝내려면 : 상대방에게 ' 종료 ' 를보내면됨!!! \n"); ////===RS232-COMM-Port 를열고, 초기화한다!! COMM_Port_Initialize(); //RS232-COMM-Port 를열고, 초기화한다!! -cf. 종료 =COMM_Port_Close()! ////=== 통신수행시작!!!=====================///////////////////////////////// while(1) ///[1]=== 통신포트로메시지보내기 ==============/////////////////////// //---키보드로메시지입력 printf(" 나 : "); gets(outbuff); //OutBuff[] 에문자열입력...( 주의 : scanf() 사용금지!-이유 = 공백문자입력안됨!) //---통신포트로송신 nbytetowrite = strlen(outbuff); // 송신할 (= 송신버퍼에써넣을 ) 데이터개수 -at WriteFile() nbytetowrite = nbytetowrite +1; // 길이수정 (NULL문자포함시킴!) // ( 이유 : 본통신프로토콜 = 메시지문장끝 = NULL로구별함!) Status = WriteFile(hComm, OutBuff, nbytetowrite, &nbytewritten, NULL); //...WriteFile() 함수성공시, non-zero값 return함. //in WriteFile() : hcomm = Comm 포트핸들 // OutBuff[] = 송신할 (= 송신버퍼에써넣을 ) 데이터가들어있는버퍼 ( 배열 ). // nbytetowrite = 송신x할 (= 송신버퍼에써넣을 ) 데이터개수. // nbytewritten = 송신버퍼에실제로써넣어진데이터개수. if(status == 0) //WriteFile() 실패시 GetLastError(); //get last-error code ClearCommError(hComm, &dwerrormask, &cs); //... 쓰기 = 실패 : 모든통신에러 flag를 clear!! } // 필요시, 이곳에에러정보 (dwerrormask값참조 ) display & 처리루틴추가! ///[2]=== 통신포트에서메시지받기 ==============/////////////////////// //=== 읽기 Loop : " 수신버퍼 " 에데이터 (byte) 가도착할때마다이를읽는다!! // -주의 : 수신된데이터가 NULL문자 (='\0') 이면이읽기무한-Loop를탈출함!! k=0; //init count( 수신된문자열개수 ) while(1) ClearCommError(hComm, &dwerrormask, &cs); //Error clear & 수신정보 read if(cs.cbinque) // 만일, 문자가한개이상수신되어 " 수신버퍼 " 에들어갔다면 이를우리의배열에읽어넣음. // 여기서, cs.cbinque = " 수신버퍼 " 에남아있는데이터개수 [byte]. -cs = COMSTAT구조체. Status = ReadFile(hComm, InBuff, cs.cbinque, &nbytesread, NULL); //= " 수신버퍼 " 에들어있는데이터를읽어온다. //in ReadFile() : hcomm = Comm 포트핸들 // InBuff[] = 수신된 (= 수신버퍼에서읽어온 ) 데이터를넣을버퍼 ( 배열 ). // cs.cbinque = 수신버퍼에서읽어올데이터개수. // nbyteread = 수신버퍼에실제로읽어온데이터개수. //-----!!! if(status == 0) // 만일, ReadFile() 이읽기를실패했으면 에러를 clear시킴 GetLastError(); //get last-error code ClearCommError(hComm, &dwerrormask, &cs); //... 읽기실패면, Error clear! }//if else // 만일, ReadFile() 이읽기를성공했으면 " 수신버퍼 " 에서읽은데이터를표시 / 처리함. for(i=0; i<nbytesread; i++) Buf[k] = InBuff[i]; //copy!!!!! k++; if(inbuff[i] == '\0') goto AA;//break; //escape from loop //printf(" =>Rx_Data =%x(16진수 ) =%c( 문자 )\n", InBuff[i], InBuff[i]); }//for(i)

48 }//else //-----!!! }//if(cs.cbinque) }//while() : 읽기작업용 while END AA: //=== 수신된문자열을모니터에표시함! printf(" 너 : %s\n", Buf); // if(strcmp(buf, " 종료 ")==0) break; }//while() : 전체통신작업용 whild END printf(" 통신이끝났습니다!\n"); ATmega128 인터페이스프로그래밍 //=== 통신포트로송신 : 상대방도통신이끝나도록해줌! strcpy(outbuff, " 종료 "); nbytetowrite = strlen(outbuff); // 송신할 (= 송신버퍼에써넣을 ) 데이터개수 -at WriteFile() nbytetowrite = nbytetowrite +1; // 길이수정 (NULL 문자포함!) // ( 이유 : 본통신프로토콜 = 메시지문장끝 = NULL 로구별함!) Status = WriteFile(hComm, OutBuff, nbytetowrite, &nbytewritten, NULL); //...WriteFile() 함수성공시, non-zero 값 return 함. ////===RS232-COMM-Port 를닫는다!! COMM_Port_Close(); //RS232-COMM-Port 를닫는다!! -cf. 오픈 =COMM_Port_Initialize()! }//main() /////////////////////////////////////////////////////////////////////////////////////// /////===Functions for RS232-COMM.//////////////////////////////////////////// //////// Prepare Comm. Port=========================== printf("/////initalize RS232 Comm. Port/////\n"); //---직렬통신포트(COM port) 를연다 -for 통신읽기 / 쓰기 (reading and writing) if((hcomm = CreateFile(lpszCommName, GENERIC_READ GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL)) == INVALID_HANDLE_VALUE) printf("error opening COM port\n"); return; }//if //---직렬통신포트의디폴트초기화정보를얻는다.(COMMPROP구조체) cp.wpacketlength = sizeof(commprop); if(!getcommproperties(hcomm, &cp)) printf("error GetCommProperties()!\n"); //---직렬통신포트의초기화정보를지정한다.(DCB구조체) =my Method!! //...Cautiion : position of this routine = different from BOOK // (= at WM_COMMAND = Error! -I don't know WHY?). if(!getcommstate(hcomm, &dcb)) //get DCB data (COM port data) printf("error GetCommState()!\n"); dcb.baudrate = CBR_9600; //COM data : others=default value! dcb.bytesize = 8; dcb.parity = EVENPARITY; dcb.stopbits = ONESTOPBIT; if(!setcommstate(hcomm, &dcb)) //set COM port printf("error SetCommState() : COM 포트초기화실패!\n"); }//COMM_Port_Initialize() //////// Close Comm. Port=========================== printf("/////close RS232 Comm. Port/////\n"); //---COMM Port 를닫기전에, " 수신버퍼 " 에남아있는데이터 (bytes) 를제거한다 --- PurgeComm(hComm, PURGE_RXCLEAR); //---Comm END CloseHandle(hComm); // 직렬포트를닫는다. }//COMM_Port_Close()

49 위의 관계연산자 나 논리연산자 의연산결과값 = 수치 0 또는 1 이다!! 0= 거짓, 1= 참!

50 <LCD 출력회로 > 8-bit data 방식 <LCD 출력회로 > 4-bit data 방식

51

52 < 이하 4종구매처 : AVRmall 社 = M128 Board V2.2 + M128KN [=M128 Board V2.2 업보드 ] : ATmega128 모듈.. 이두개는 M128KN KIT" 이름으로함께판매되고있음!! 25000원 = ATmega128의 1열확장보드, 통신칩내장, 128K 플래시, 16MHz, 4.5~5.5V USBISP V3.0 : USB방식의 AVR 다운로더 = 38,500원 RS-232 씨리얼케이블 = 3,300원 < 이하 4종구매처 : IC114.com> 볼륨저항기 ( 가변저항 ), 10KΩ -큰덩어리형, 학부실험용 ( 가변전압발생용 ), model="rv24ynb10k" =3300원 LCD 모듈 (16 문자 2 라인 ), model="yms162-01l" =7000원 BreadBoard, model="eic-108, SIZE=210x240mm (=Terminal strips=4개, Distribution strip=7개 ) =25,500원 RS232 cable (PC to PC 통신용 )(PC통신학생실습용 ) 3m? -필요시, 다른구매처조사 < 이하 1종구매처 : USB to RS232 converter, -ex: 품명 = USB to Serial 1p,VSCOM =24000원 < 이하 all 구매처 : IC114.com> LED, model="bl-s5149a" (= 빨강, 2mm) =50원 LED, model="bl-s2149a" (= 녹색, 2mm) =50원 LED, model="bl-s3149s" (= 노랑, 2mm) =50원 저항, 470Ω (1/4W, 5%), model="470rj1/4w" = 5원 저항, 10kΩ (1/4W, 1% 정밀저항 ), model="10kf1/4w" = 20원 저항, 20kΩ (1/4W, 1% 정밀저항 ), model="20kf1/4w" = 20원 커패시터 (C) 0.1uF, 50V : model= "F104Z50V" (CC104K1H) = 20원 인덕터 (L) 10uH : model= "AL04TB-100K/10UH" = 30원 -정식명칭 =Axial inductor (= 저항모양임!) 택스위치 (Tact Switch, 4.3mm), model="st mm" = 50원 (= 푸시버튼스위치!) 케이블 (3 색, 단심 JUMPER Wire) : 품명 =3P-WIRE-1ROLL ( 굵기 =0.4mm) = 1 roll = 22,000 원 그림예 (

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729> 8주차중간고사 ( 인터럽트및 A/D 변환기문제및풀이 ) Next-Generation Networks Lab. 외부입력인터럽트예제 문제 1 포트 A 의 7-segment 에초시계를구현한다. Tact 스위치 SW3 을 CPU 보드의 PE4 에연결한다. 그리고, SW3 을누르면하강 에지에서초시계가 00 으로초기화된다. 동시에 Tact 스위치 SW4 를 CPU 보드의

More information

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D> 뻔뻔한 AVR 프로그래밍 The 4 th Lecture 유명환 ( yoo@netplug.co.kr) 1 시간 (Time) 에대한정의 INDEX 2 왜타이머 (Timer) 와카운터 (Counter) 인가? 3 ATmega128 타이머 / 카운터동작구조 4 ATmega128 타이머 / 카운터관련레지스터 5 뻔뻔한노하우 : 레지스터비트설정방법 6 ATmega128

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729> 7주차 AVR의 A/D 변환기제어레지스터및관련실습 Next-Generation Networks Lab. 3. 관련레지스터 표 9-4 레지스터 ADMUX ADCSRA ADCH ADCL 설명 ADC Multiplexer Selection Register ADC 의입력채널선택및기준전압선택외 ADC Control and Status Register A ADC 의동작을설정하거나동작상태를표시함

More information

슬라이드 1

슬라이드 1 마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***

More information

UART.h #ifndef _UART_H_ #define _UART_H_ #define DIR_TXD #define DIR_RXD sbi(portd,4) cbi(portd,4) #define CPU_CLOCK_HZ UL UART PORT1 void UAR

UART.h #ifndef _UART_H_ #define _UART_H_ #define DIR_TXD #define DIR_RXD sbi(portd,4) cbi(portd,4) #define CPU_CLOCK_HZ UL UART PORT1 void UAR IMC-V0.1 예제소스파일 1. UART 소스코드 (page 1-3) 2. Encoder 소스코드 (page 4-7) 3. ADC 소스코드 (page 8-10) UART.h #ifndef _UART_H_ #define _UART_H_ #define DIR_TXD #define DIR_RXD sbi(portd,4) cbi(portd,4) #define CPU_CLOCK_HZ

More information

정보보안 개론과 실습:네트워크

정보보안 개론과 실습:네트워크 ` 마이크로프로세서설계및실습 12-13 주차강의자료 학습목표 A/D 변환기의제어방법을이해한다 능숙하게 A/D 변환기를제어할수있도록반복실습한다 2/28 아날로그 - 디지털변환회로 아날로그 - 디지털변환회로 (A/D 변환회로 ) 는, 아날로그전기신호를디지털전기신호로변환하는전자회로이다 A/D 컨버터 (ADC: Analog-to-digital converter) 라고도불린다

More information

// 변수선언 unsigned char i; unsigned char FONT[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xD8, 0x80, 0x98}; //PORTA 를출력으로설정하고초기값은모두 0 PORTA = 0x00; DD

// 변수선언 unsigned char i; unsigned char FONT[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xD8, 0x80, 0x98}; //PORTA 를출력으로설정하고초기값은모두 0 PORTA = 0x00; DD Code Vison AVR C ATmega8535 ATmega8535 제어실습 Chapter 1 I / O 포트제어하기 FND 제어 FND에는 Vcc를이용하는애노드 (anode) 형과 Gnd를이용하는 cathode형이있다. LED가여러개모여있다생각하고 LED선택에따라문자와숫자를만들어낼수있다. 최대한많은영문자를만들기위해대문자와소문자를혼합한다. ( 표현가능한문자

More information

lecture4(6.범용IO).hwp

lecture4(6.범용IO).hwp 제 2 부 C-언어를 사용한 마이크로컨트롤러 활용기초 66 C-언어는 수학계산을 위해 개발된 FORTRAN 같은 고급언어들과는 달 리 Unix 운영체제를 개발하면서 같이 개발된 고급언어이다. 운영체제의 특성상 C-언어는 다른 고급언어에 비해 컴퓨터의 하드웨어를 직접 제어할 수 있는 능력이 탁월하여 마이크로프로세서의 프로그램에 있어서 어셈블 리와 더불어 가장

More information

[8051] 강의자료.PDF

[8051] 강의자료.PDF CY AC F0 RS1 RS0 OV - P 0xFF 0x80 0x7F 0x30 0x2F 0x20 0x1F 0x18 0x17 0x10 0x0F 0x08 0x07 0x00 0x0000 0x0FFF 0x1000 0xFFFF 0x0000 0xFFFF RAM SFR SMOD - - - GF1 GF0 PD IDL 31 19 18 9 12 13 14 15 1 2 3 4

More information

Microsoft PowerPoint - 08-MP-8-ADC

Microsoft PowerPoint - 08-MP-8-ADC 8. A/D 변환기 순천향대학교 컴퓨터학부 이 상 정 학습 내용 ATmega28 ADC ADC 개요 ADC 레지스터 ADC 프로그램 온도센서 프로그램 순천향대학교 컴퓨터학부 이 상 정 2 ATmega28 ADC 순천향대학교 컴퓨터학부 이 상 정 3 A/D 변환기 개요 물리적인 현상(전압, 전류,온도,속도,조도,습도,압력,속,,습,압력 )들은 아날로그 값이므로

More information

<4D F736F F D20BDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCADB0ADC1C2202D203420C7C1B7CEB1D7B7A1B9D62E646F63>

<4D F736F F D20BDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCADB0ADC1C2202D203420C7C1B7CEB1D7B7A1B9D62E646F63> 라인트레이서강좌 4. 프로그래밍 2005년 8월 1일류대우 (davidryu@newtc.co.kr) 1. 라인트레이서란? 라인트레이서는정해진주행선을따라움직이는자율이동로봇이다. 현재공장자동화부분에서이용되고있는무인반송차가라인트레이서이다. 라인트레이서의기본적인원리는주어진주행선을센서로검출하여이것에따라목적위치까지이동하는것이다. 라인트레이서는크게 3부분 - 컨트롤러부,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Text-LCD Device Control - Device driver Jo, Heeseung M3 모듈에장착되어있는 Tedxt LCD 장치를제어하는 App 을개발 TextLCD 는영문자와숫자일본어, 특수문자를표현하는데사용되는디바이스 HBE-SM5-S4210 의 TextLCD 는 16 문자 *2 라인을 Display 할수있으며, 이 TextLCD 를제어하기위하여

More information

<4D F736F F F696E74202D2037C0E55FC0CEC5CDB7B4C6AEC0C720B5BFC0DB2E707074>

<4D F736F F F696E74202D2037C0E55FC0CEC5CDB7B4C6AEC0C720B5BFC0DB2E707074> 7 장. 인터럽트의동작 한국산업기술대학교 이응혁교수 WWW.ROBOTICSLAB.CO.KR 1 7.1 인터럽트 (Interrupt) 개요 인터럽트개념 프로그램이수행되고있는동안에어떤조건이발생하여수행중인프로그램을일시적으로중지시키게만드는조건이나사건의발생 비동기적으로처리 다른프로그램이수행되는동안여러개의사건을처리할수있는메커니즘 인터럽트가발생하면마이크로컨트롤러는현재수행중인프로그램을일시중단하고,

More information

Microsoft PowerPoint - 제5장 인터럽트 (HBE-MCU-Multi AVR).ppt [호환 모드]

Microsoft PowerPoint - 제5장 인터럽트 (HBE-MCU-Multi AVR).ppt [호환 모드] Chapter. 5 인터럽트 HBE-MCU-Multi AVR Jaeheung, Lee 목차 1. 폴링과인터럽트그리고인터럽트서비스루틴 2. ATMega128 인터럽트 3. 인터럽트로 LED 점멸시키기 4. 인터럽트로스톱워치만들기 인터럽트 1. 폴링과인터럽트그리고인터럽트서비스루틴 2. ATMega128 인터럽트 3. 인터럽트로 LED 점멸시키기 4. 인터럽트로스톱워치만들기

More information

MAX232 MAXIM사에서생산되는 RS-232통신을가능토록해주는송수신 IC이다. 송수신드라이브를각각 2개씩가지고있다. AVR과컴퓨터가인식하는 0과 1의값이다르기때문에.. 마이컴컴퓨터 이차이를해결해주는것이다. 0 0V -10V 1 5V 10V TTL IC 의전원단자와다

MAX232 MAXIM사에서생산되는 RS-232통신을가능토록해주는송수신 IC이다. 송수신드라이브를각각 2개씩가지고있다. AVR과컴퓨터가인식하는 0과 1의값이다르기때문에.. 마이컴컴퓨터 이차이를해결해주는것이다. 0 0V -10V 1 5V 10V TTL IC 의전원단자와다 Code Vison AVR C ATmega 8535 RS232 시리얼통신 컨넥터와신호선 RS232 통신을위한컨넥터는 9핀과 25핀컨넥터가있으나, 최근에는 9핀컨넥터를많이사용한다. 실제데이터가송수신되는핀은 TXD(3) 와 RXD(2) 이고기능은다음과같다. 9 핀컨넥터의모습 TXD - Transmit Data 비동기식직렬통신장치가외부장치로데이터를보낼때, 직렬통신데이터가나오는신호선

More information

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp l Y ( X g, Y g ) r v L v v R L θ X ( X c, Yc) W (a) (b) DC 12V 9A Battery 전원부 DC-DC Converter +12V, -12V DC-DC Converter 5V DC-AC Inverter AC 220V DC-DC Converter 3.3V Motor Driver 80196kc,PWM Main

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된

More information

슬라이드 1

슬라이드 1 AVR(Atmega128) Interrupt 1 Interrupt Polling 사용자가명령어를사용하여입력핀의값을계속읽어서변화를알아냄 모든경우의입력또는값의변화에대응하여처리가가능 Interrupt MCU 자체가하드웨어적으로그변화를체크하여변화시에만일정한동작 하드웨어적으로지원되는몇개의입력또는값의변화에만대응처리가가능 처리속도는일반적인경우인터럽트가빠름 인터럽트발생시

More information

Microsoft PowerPoint - 08-MP-4-interrupt

Microsoft PowerPoint - 08-MP-4-interrupt 순천향대학교컴퓨터학부이상정 1 학습내용 인터럽트기본 ATmega128 인터럽트벡터외부인터럽트인터페이스외부인터럽트프로그램예 순천향대학교컴퓨터학부이상정 2 인터럽트기본 순천향대학교컴퓨터학부이상정 3 인터럽트개념 CPU 내부또는외부의요구에의해서정상적인프로그램의실행순서를변경하여보다시급한작업 ( 인터럽트서비스루틴 ) 을먼저수행한후에다시원래의프로그램으로복귀하는것 인터럽트는주변장치의서비스요청에

More information

시리얼통신 (USART) 범용동기및비동기시리얼수신기와송신기 (USART) 는매우유연한시리얼통신장치이다. 주요특징은다음과같다. w 송수신레지스터가독립적으로운용되는전이중방식. w 비동기또는동기동작. w 마스터또는슬레이브동기동작. w 고해상도전송속도생성기. w 5, 6, 7

시리얼통신 (USART) 범용동기및비동기시리얼수신기와송신기 (USART) 는매우유연한시리얼통신장치이다. 주요특징은다음과같다. w 송수신레지스터가독립적으로운용되는전이중방식. w 비동기또는동기동작. w 마스터또는슬레이브동기동작. w 고해상도전송속도생성기. w 5, 6, 7 CHAPTER 12 시리얼통신 가. 레지스터구조이해하기 나. 하이퍼터미널을이용하여로봇제어하기 시리얼통신 (USART) 범용동기및비동기시리얼수신기와송신기 (USART) 는매우유연한시리얼통신장치이다. 주요특징은다음과같다. w 송수신레지스터가독립적으로운용되는전이중방식. w 비동기또는동기동작. w 마스터또는슬레이브동기동작. w 고해상도전송속도생성기. w 5, 6,

More information

가. 도트매트릭스제어하기 단일 LED와는다르게도트매트릭스를구동시는구동전류가프로세서에서출력되는전류보다사용량을더많이필요하기때문에 TTL 계열의 IC로구동시키기에는무리가따른다. 이러한문제를해결하기위해서사용전압, 전류정격이높은달링턴트랜지스터가어레이형태로들어있는 ULN2803을

가. 도트매트릭스제어하기 단일 LED와는다르게도트매트릭스를구동시는구동전류가프로세서에서출력되는전류보다사용량을더많이필요하기때문에 TTL 계열의 IC로구동시키기에는무리가따른다. 이러한문제를해결하기위해서사용전압, 전류정격이높은달링턴트랜지스터가어레이형태로들어있는 ULN2803을 CHAPTER 5 도트매트릭스제어하기 가. 도트매트릭스제어하기 가. 도트매트릭스제어하기 단일 LED와는다르게도트매트릭스를구동시는구동전류가프로세서에서출력되는전류보다사용량을더많이필요하기때문에 TTL 계열의 IC로구동시키기에는무리가따른다. 이러한문제를해결하기위해서사용전압, 전류정격이높은달링턴트랜지스터가어레이형태로들어있는 ULN2803을이용한다. 이 IC에는 8개의

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED Controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

<4D F736F F D20C0DBC7B0C6ED5FBDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCAD20B0B3B9DF2E646F63>

<4D F736F F D20C0DBC7B0C6ED5FBDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCAD20B0B3B9DF2E646F63> 테핑라인트레이서개발하기 류대우 (davidryu@newtc.co.kr) 1. 센서보드 적외선센서 1. 적외선센서 (Photo Sensor) 라인트레이서나마이크로마우혹은다른마이크로로봇에서센서로사용하는것중가장많이사용하는것이 photo sensor입니다. 거리의측정에도사용되지만원거리는잘사용하지않고근거리를측정하고자할때사용되기도하며물체의유 / 무등많은곳에서사용되고있습니다.

More information

YD-3533.xls

YD-3533.xls Y D - 3 5 3 3 사 용 설 명 서 78, Daechun-Dong, Dalseo-gu, Daegu, KOREA TEL : +8-53-585-56(Main) FAX : +8-53-585-788 http://www.setech.co.kr e-mail : setech@setech.co.kr 페이지 . 특징 당사의 제품을 사용하여 주셨어 감사하며, 사용중 혹시라도

More information

목차 1. 개요... 3 2. USB 드라이버 설치 (FTDI DRIVER)... 4 2-1. FTDI DRIVER 실행파일... 4 2-2. USB 드라이버 확인방법... 5 3. DEVICE-PROGRAMMER 설치... 7 3-1. DEVICE-PROGRAMMER

목차 1. 개요... 3 2. USB 드라이버 설치 (FTDI DRIVER)... 4 2-1. FTDI DRIVER 실행파일... 4 2-2. USB 드라이버 확인방법... 5 3. DEVICE-PROGRAMMER 설치... 7 3-1. DEVICE-PROGRAMMER < Tool s Guide > 목차 1. 개요... 3 2. USB 드라이버 설치 (FTDI DRIVER)... 4 2-1. FTDI DRIVER 실행파일... 4 2-2. USB 드라이버 확인방법... 5 3. DEVICE-PROGRAMMER 설치... 7 3-1. DEVICE-PROGRAMMER 실행파일... 7 4. DEVICE-PROGRAMMER 사용하기...

More information

Microsoft Word - AVRISP mkII 장비 운용.doc

Microsoft Word - AVRISP mkII 장비 운용.doc AVRISP mkii 장비운용 기술연구소이진용대리 ( jylee@mamiel.com ) 1. AVRISP mkⅡ 개요 AVRISP mkⅡ 장비운용 1) AVRISP mkⅡ란? 기존의 AVRISP의단점을보충해서 Atmel에서새롭게출시된 ISP 장비이다기존에 AVRISP는전원을 Target System에서공급을받아야했기에사용하기에불편한점이많았지만이번에새롭게출시된

More information

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

Microsoft Word - FS_ZigBee_Manual_V1.3.docx FirmSYS Zigbee etworks Kit User Manual FS-ZK500 Rev. 2008/05 Page 1 of 26 Version 1.3 목 차 1. 제품구성... 3 2. 개요... 4 3. 네트워크 설명... 5 4. 호스트/노드 설명... 6 네트워크 구성... 6 5. 모바일 태그 설명... 8 6. 프로토콜 설명... 9 프로토콜 목록...

More information

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다 이장에서사용되는 MATLAB 명령어들은비교적복잡하므로 MATLAB 창에서명령어를직접입력하지않고확장자가 m 인 text 파일을작성하여실행을한다. 즉, test.m 과같은 text 파일을만들어서 MATLAB 프로그램을작성한후실행을한다. 이와같이하면길고복잡한 MATLAB 프로그램을작성하여실행할수있고, 오류가발생하거나수정이필요한경우손쉽게수정하여실행할수있는장점이있으며,

More information

Section 03 인터럽트활성화와인터럽트서비스루틴연결 34/82 장치에대한인터럽트설정과활성화 내부장치에대한특수레지스터존재 장치의특성을반영한동작설정용또는상태관찰용비트로구성 인터럽트사건의발생패턴을설정해야함 인터럽트활성화비트를 1 로셋하여, 인터럽트발생을허락» 전제, 전역

Section 03 인터럽트활성화와인터럽트서비스루틴연결 34/82 장치에대한인터럽트설정과활성화 내부장치에대한특수레지스터존재 장치의특성을반영한동작설정용또는상태관찰용비트로구성 인터럽트사건의발생패턴을설정해야함 인터럽트활성화비트를 1 로셋하여, 인터럽트발생을허락» 전제, 전역 Section 03 인터럽트활성화와인터럽트서비스루틴연결 33/82 Section 03 인터럽트활성화와인터럽트서비스루틴연결 34/82 장치에대한인터럽트설정과활성화 내부장치에대한특수레지스터존재 장치의특성을반영한동작설정용또는상태관찰용비트로구성 인터럽트사건의발생패턴을설정해야함 인터럽트활성화비트를 1 로셋하여, 인터럽트발생을허락» 전제, 전역인터럽트활성화비트가 1 로셋되었을때

More information

Chapter ...

Chapter ... Chapter 4 프로세서 (4.9절, 4.12절, 4.13절) Contents 4.1 소개 4.2 논리 설계 기초 4.3 데이터패스 설계 4.4 단순한 구현 방법 4.5 파이프라이닝 개요*** 4.6 파이프라이닝 데이터패스 및 제어*** 4.7 데이터 해저드: 포워딩 vs. 스톨링*** 4.8 제어 해저드*** 4.9 예외 처리*** 4.10 명령어 수준

More information

BMP 파일 처리

BMP 파일 처리 BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)

More information

2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다.

2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다. C 언어와 Assembly Language 을사용한 Programming 20011.9 경희대학교조원경 1. AVR Studio 에서사용하는 Assembler AVR Studio에서는 GCC Assembler와 AVR Assmbler를사용한다. A. GCC Assembler : GCC를사용하는경우 (WinAVR 등을사용하는경우 ) 사용할수있다. New Project

More information

2 PX-8000과 RM-8000/LM-8000등의 관련 제품은 시스템의 간편한 설치와 쉬운 운영에 대한 고급 기술을 제공합니다. 또한 뛰어난 확장성으로 사용자가 요구하는 시스템을 손쉽게 구현할 수 있습니다. 메인컨트롤러인 PX-8000의 BGM입력소스를 8개의 로컬지

2 PX-8000과 RM-8000/LM-8000등의 관련 제품은 시스템의 간편한 설치와 쉬운 운영에 대한 고급 기술을 제공합니다. 또한 뛰어난 확장성으로 사용자가 요구하는 시스템을 손쉽게 구현할 수 있습니다. 메인컨트롤러인 PX-8000의 BGM입력소스를 8개의 로컬지 PX-8000 SYSTEM 8 x 8 Audio Matrix with Local Control 2 PX-8000과 RM-8000/LM-8000등의 관련 제품은 시스템의 간편한 설치와 쉬운 운영에 대한 고급 기술을 제공합니다. 또한 뛰어난 확장성으로 사용자가 요구하는 시스템을 손쉽게 구현할 수 있습니다. 메인컨트롤러인 PX-8000의 BGM입력소스를 8개의 로컬지역에

More information

전자실습교육 프로그램

전자실습교육 프로그램 제 5 장 신호의 검출 측정하고자 하는 신호원에서 발생하는 신호를 검출(detect)하는 것은 물리측정의 시작이자 가장 중요한 일이라고 할 수가 있습니다. 그 이유로는 신호의 검출여부가 측정의 성패와 동의어가 될 정도로 밀접한 관계가 있기 때문입니다. 물론 신호를 검출한 경우라도 제대로 검출을 해야만 바른 측정을 할 수가 있습니다. 여기서 신호의 검출을 제대로

More information

airDACManualOnline_Kor.key

airDACManualOnline_Kor.key 5F InnoValley E Bldg., 255 Pangyo-ro, Bundang-gu, Seongnam-si, Gyeonggi-do, Korea (Zip 463-400) T 031 8018 7333 F 031 8018 7330 airdac AD200 F1/F2/F3 141x141x35 mm (xx) 350 g LED LED1/LED2/LED3 USB RCA

More information

DSP_MON 프로그램 메뉴얼

DSP_MON 프로그램 메뉴얼 UART_CAN Analyzer 윈도우 프로그램 사용자 메뉴얼 리얼시스 TEL : 031-420-4326 FAX : 031-420-4329 주소 : 경기도 안양시 동안구 관양동 799 안양메가밸리 319호 - 1 - UART_CAN Analyzer 제품을 구입해 주셔서 감사합니다. 본 제품을 구입하신 고객께서는 먼저 사용 설명서를 잘 읽어 보시고 제품을 사용하여

More information

1. 기본설정 목차 1-1. 설치해야할프로그램및파일 1-2. 프로그램올리기 1-3. MAKEFILE 2. 캐릭터 LCD(PORT) 3-1. 개요 3-2. 사용하는레지스터 3-3. Source Code 3-4. 실습사진 3. 타이머카운터및초음파센서활용 (PORT, TIM

1. 기본설정 목차 1-1. 설치해야할프로그램및파일 1-2. 프로그램올리기 1-3. MAKEFILE 2. 캐릭터 LCD(PORT) 3-1. 개요 3-2. 사용하는레지스터 3-3. Source Code 3-4. 실습사진 3. 타이머카운터및초음파센서활용 (PORT, TIM AVR (ATmega2560) 보고서 2013 년 6 월 14 일 스마트컨트롤러 2013 조유진 1. 기본설정 목차 1-1. 설치해야할프로그램및파일 1-2. 프로그램올리기 1-3. MAKEFILE 2. 캐릭터 LCD(PORT) 3-1. 개요 3-2. 사용하는레지스터 3-3. Source Code 3-4. 실습사진 3. 타이머카운터및초음파센서활용 (PORT,

More information

Microsoft PowerPoint - avr_lecture1.ppt

Microsoft PowerPoint - avr_lecture1.ppt 임베디드마이크로프로세서 프로그래밍실전 제작 : 네로테크 강의 : 김종형 AVR 개요및개발환경구축 1. AVR 개요및특징 2. AVR 개발환경구축 -2- 1-1 AVR 의개요 AVR [ Alf(Bogen) Vergard(Wollen) Risc ] 이란? ATMEL 사에서제작된 RISC(Reduced Instruction Set Computer) 구조의저전력 CMOS

More information

Microsoft Word - FunctionCall

Microsoft Word - FunctionCall Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack

More information

Siemens

Siemens SIEMENS () 2004 7 Updated 2004 DEC 09 1. 4 1.1 4 1.2 4 2. 5 2.1 5 2.2 6 2.3 6 2.4 7 3. 8 3.1 50/60 Hz DIP 8 4. 9 4.1 420 9 4.2 420 9 4.3 (CB) 10 5. / () 11 5.1 11 5.2 : P0003 12 6. 13 6.1 13 6.2 15 6.2.1

More information

% Rectangular Value 입력 t = -50 : 1 : 50; % 시간영역 for i = 1 : 101 if abs ( t ( i ) ) < 10 x ( i ) = 1; else x ( i ) = 0; % 화면을 2 열 1 행으로나눈후 % 2 열 1 행에 R

% Rectangular Value 입력 t = -50 : 1 : 50; % 시간영역 for i = 1 : 101 if abs ( t ( i ) ) < 10 x ( i ) = 1; else x ( i ) = 0; % 화면을 2 열 1 행으로나눈후 % 2 열 1 행에 R % sin 그래프계산및출력 t = -50 : 1 : 50; T = 10; f = 1/T; Nsin = sin ( ( 2 * pi * f * t ) ) % 시간영역 % 주기 % 주파수 % sin(2πft) % F(sin) 계산 Fsin = fftshift ( fft ( Nsin ) ); % 화면을 2 열 1 행으로나눈후 % 2 열 1 행에 Sin 그래프출력 subplot

More information

제품소개 MODBUS Tester 는 MODBUS 프로토콜을사용하는산업장비테스트및점검하기위해 PC 를휴대및설치할필요없이쉽고빠르게장비와연결하여원하는작업을진행할수있도록휴대성을강조한 MODBUS 프로토콜테스트장치입니다. MODBUS Tester 에는 3 가지의기능이지원되며,

제품소개 MODBUS Tester 는 MODBUS 프로토콜을사용하는산업장비테스트및점검하기위해 PC 를휴대및설치할필요없이쉽고빠르게장비와연결하여원하는작업을진행할수있도록휴대성을강조한 MODBUS 프로토콜테스트장치입니다. MODBUS Tester 에는 3 가지의기능이지원되며, MODBUS Tester ( 사용자메뉴얼 ) RealSYS V1.02 1 제품소개 MODBUS Tester 는 MODBUS 프로토콜을사용하는산업장비테스트및점검하기위해 PC 를휴대및설치할필요없이쉽고빠르게장비와연결하여원하는작업을진행할수있도록휴대성을강조한 MODBUS 프로토콜테스트장치입니다. MODBUS Tester 에는 3 가지의기능이지원되며, Master 모드기능을통해각종장비의데이터정보를읽어오거나제어및데이터쓰기를할수있으며,

More information

Slide 1

Slide 1 Clock Jitter Effect for Testing Data Converters Jin-Soo Ko Teradyne 2007. 6. 29. 1 Contents Noise Sources of Testing Converter Calculation of SNR with Clock Jitter Minimum Clock Jitter for Testing N bit

More information

(6)

(6) 5-6. EV 모듈의 PWM 출력예제목표 : 본예제에서는 EV(Event Manager) 모듈의 PWM 출력에대해학습한다. DSP8x에는 3상 AC 모터를구동할수있는 조의 PWM과엔코더입력회로가있다. 본예제에서는이 PWM 출력을사용하여 DC 모터의속도를조절해보고, RC 회로로 PWM 를필터링하여사인파형을출력시켜본다. 사용회로고찰 : 3.3V AR Kx4 3

More information

구성품 - UMD 2808 모듈 - JTAG 커넥터 - 젂원 케이블 주요 특징 모듈의 부품화 : 고신뢰성의 DSP 모듈을 최적화된 시스템에 적용 용이 TMS320F2808 ZGMS - 100MHz 탑재 : 확장된 온도규격 (-40 도 ~ 125 도) 적용 Ultralo

구성품 - UMD 2808 모듈 - JTAG 커넥터 - 젂원 케이블 주요 특징 모듈의 부품화 : 고신뢰성의 DSP 모듈을 최적화된 시스템에 적용 용이 TMS320F2808 ZGMS - 100MHz 탑재 : 확장된 온도규격 (-40 도 ~ 125 도) 적용 Ultralo TMS320F2808 UMD 모듈 Rev 1.0 (주) 싱크웍스 Korea Tel. 031-781-2810 Fax. 031-706-2834 E-mail. dsptools@syncworks.co.kr [1] page 구성품 - UMD 2808 모듈 - JTAG 커넥터 - 젂원 케이블 주요 특징 모듈의 부품화 : 고신뢰성의 DSP 모듈을 최적화된 시스템에 적용

More information

Microsoft Word - AM-2560PRO_V01 메뉴얼.doc

Microsoft Word - AM-2560PRO_V01 메뉴얼.doc ATMEGA 2560 모듈 ( Model : AM-2560PRO V01) 메뉴얼 ( 주 ) 뉴티씨 (NEWTC) 1 AM-2560Pro 소개 ATMega2560 16AU AVR 마이크로컨트롤러사용 256Kbit (32Kbyte) SRAM 내장 (ISSI IS62C256AL) 2줄짜리 2mm Header Pin이양쪽으로 50 핀씩배치되어있음. MAX3232 내장으로

More information

歯메뉴얼v2.04.doc

歯메뉴얼v2.04.doc 1 SV - ih.. 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 - - - 23 24 R S T G U V W P1 P2 N R S T G U V W P1 P2 N R S T G U V W P1 P2 N 25 26 DC REACTOR(OPTION) DB UNIT(OPTION) 3 φ 220/440 V 50/60

More information

USB Manager 1

USB Manager 1 V-USB 1.0 Firmware only USB Driver for AVR MicroController 사 용 설명서 (Rev 1.0) 2011.3 OrientNDT - 1 - 목차 Page 1.V-USB 란?... 3 2.Board 부품구성... 4 3.부품별 기능 요약 3.1 기능 요약... 5 3.2 Size 및 BOM... 6 3.3 Schematic...

More information

Dr.Kim ATmega128 Training Kit (SAT128-300).hwp

Dr.Kim ATmega128 Training Kit (SAT128-300).hwp < 그림 1> Dr.Kim ATmega128 Training Kit 전체 구성도 < 그림 2> Dr.Kim ATmega128 Training Kit -1- 차 례 제 1 장 Dr.Kim ATmega128 Training Kit (SAT128-300) 구성 1. 제품구성 2. ATmega128 특징및구조 제 2 장 Dr.Kim ATmega128 Training

More information

C 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12

More information

Microsoft Power Point 2002

Microsoft Power Point 2002 PLC전기공압제어 강의 노트 제 7 회차 PLC 하드웨어의 구조 - 1 - 학습목표 1. PLC 하드웨어의 4가지 구성요소를 설명할 수 있다. 2. PLC 형명을 보고 PLC를 구분할 수 있다. 3. PLC 배선형태에 따라 입력기기와 출력기기를 구분할 수 있다. Lesson. PLC 하드웨어의 구조 PLC 하드웨어에 대한 이해의 필요성 PLC 하드웨어의 구성

More information

키트전자 KE-RC-B 코드비젼

키트전자  KE-RC-B 코드비젼 -------------------------------------------------------- 키트전자 www.i8051.co.kr KE-RC-B01 2013.08-13 코드비젼 -------------------------------------------------------- 1. LED 점등 --------------------------------------------------------

More information

PowerPoint Presentation

PowerPoint Presentation 신호조절 (Signal Conditioning) 메카트로닉스 시스템의 구성 ECU 인터페이스 회로 (시그널 컨디셔닝) 마이컴 Model of 기계 시스템 인터페이스 회로 (드라이빙 회로) 센서 액츄에이터 (구동기) 기계 시스템 PN 접합 다이오드 [1] 다이오드의 DC 해석과 등가모델 [1] 다이오드의 DC 해석과 등가모델 [1] 다이오드 응용회로 [1] 다이오드

More information

사용자매뉴얼

사용자매뉴얼 AVRISP mkii 사용자매뉴얼 OL 마이크로웨이브 http://olmicrowaves.com 1 / 27 목차 1. AVRISP mkii 개요 1) 제품기능 2) 사용환경 3) 제품사양 4) 제품구조 2. AVRISP mkii 사용방법 1) Jungo USB Driver 설치 2) AVRISP mkii 셋업 3) 타겟보드셋업 4) AVR Studio 4로펌웨어프로그래밍

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 RecurDyn 의 Co-simulation 와 하드웨어인터페이스적용 2016.11.16 User day 김진수, 서준원 펑션베이솔루션그룹 Index 1. Co-simulation 이란? Interface 방식 Co-simulation 개념 2. RecurDyn 과 Co-simulation 이가능한분야별소프트웨어 Dynamics과 Control 1) RecurDyn

More information

Microsoft Word - DCMD-1000 사용자 메뉴얼.docx

Microsoft Word - DCMD-1000 사용자 메뉴얼.docx DCDM-1000(Ver.1.0 DC모터 드라이버 (DCMD-1000) 사용 설명서 V1.0 Last updated : March 6, 2014 1 / 10 DCDM-1000(Ver.1.0) 목차 1 소개 및 특징 1.1 소개 1.2 사양 1.3 특징 2 DC모터 드라이버(DCMD-1000) 사용법 2.1 전체결선도 2.2 Pin 설명 및 모드 설정 방법 2.3

More information

Formatvorlage für Arbeitsanweisungen

Formatvorlage für Arbeitsanweisungen Page 1 of 11 비접촉온도측정 근거리온도측정 Small Size High Accuracy 디지털인터페이스 (SPI 프로토콜 ) 제품설명 DTS-M300 은적외선온도센서를기반으로한접촉하지않고원하는대상에온도를정확히측정할수있는온도센서모듈입니다. DTS-M300 은접촉을하지않고원하는물체표면에온도를 1 초이내에정확하게측정할수있는온도센서모듈입니다. DTS-M300

More information

Microsoft Word - JAVS_UDT-1_상세_메뉴얼.doc

Microsoft Word - JAVS_UDT-1_상세_메뉴얼.doc UDT-1 TRANSPORTER 한글 상세 제품 설명서 SoundPrime. 저작권 본 저작권은 Soundprime 이 소유하고 있습니다. Soundprime 의 허가 없이 정보 검색 시스템상에서 복사, 수정, 전달, 번역, 저장을 금지하며, 컴퓨터언어나 다른 어떠한 언어로도 수정될 수 없습니다. 또한 다른 형식이나 전기적, 기계적, 자기적, 광학적, 화학적,

More information

COMFILE_VOL13_20140204.cdr

COMFILE_VOL13_20140204.cdr "다양한 산업현장에서 쓰이고 있는 컴파일 제품" 데이터 수집 데이터 수집용 필드 I/O 제품 "모드포트" 필드 I/O 전력 모니터링 로봇 제어 태양광 발전 트랙커 제어 CUPC-P80 CT1721C CB405 포장기 화력발전소-화력 감지 시스템 녹방지장치(용존산소제거장치) CT1721C CB280, CLCD-216 CUWIN3500 일회용 용기 성형기 항온항습기

More information

USBISP MK2 User Manual Page 2/15 Contents 1. Introduction 3 2. USB DRIVER INSTALL 4 3. CodeVisionAVR C Complier / AVR Studio 6 Programmer 설정하기 6 4. US

USBISP MK2 User Manual Page 2/15 Contents 1. Introduction 3 2. USB DRIVER INSTALL 4 3. CodeVisionAVR C Complier / AVR Studio 6 Programmer 설정하기 6 4. US USBISP MK2 User Manual AVRMALL http://www.avrmall.com/ AUGUST 30, 2012 Copyright (c) 2003-2012 AVRMALL All Rights Reserved. USBISP MK2 User Manual Page 2/15 Contents 1. Introduction 3 2. USB DRIVER INSTALL

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Verilog: Finite State Machines CSED311 Lab03 Joonsung Kim, joonsung90@postech.ac.kr Finite State Machines Digital system design 시간에배운것과같습니다. Moore / Mealy machines Verilog 를이용해서어떻게구현할까? 2 Finite State

More information

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate ALTIBASE HDB 6.1.1.5.6 Patch Notes 목차 BUG-39240 offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG-41443 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate 한뒤, hash partition

More information

특징 찾아보기 열쇠 없이 문을 열 수 있어요! 비밀번호 및 RF카드로도 문을 열 수 있습니다. 또한 비밀번호가 외부인에게 알려질 위험에 대비, 통제번호까지 입력해 둘 수 있어 더욱 안심하고 사용할 수 있습니다. 나만의 비밀번호 및 RF카드를 가질 수 있어요! 다수의 가

특징 찾아보기 열쇠 없이 문을 열 수 있어요! 비밀번호 및 RF카드로도 문을 열 수 있습니다. 또한 비밀번호가 외부인에게 알려질 위험에 대비, 통제번호까지 입력해 둘 수 있어 더욱 안심하고 사용할 수 있습니다. 나만의 비밀번호 및 RF카드를 가질 수 있어요! 다수의 가 www.kdnetwork.com 특징 찾아보기 열쇠 없이 문을 열 수 있어요! 비밀번호 및 RF카드로도 문을 열 수 있습니다. 또한 비밀번호가 외부인에게 알려질 위험에 대비, 통제번호까지 입력해 둘 수 있어 더욱 안심하고 사용할 수 있습니다. 나만의 비밀번호 및 RF카드를 가질 수 있어요! 다수의 가능할 삭제할 건전지 사용자를 위한 개별 비밀번호 및 RF카드

More information

LCD Display

LCD Display LCD Display SyncMaster 460DRn, 460DR VCR DVD DTV HDMI DVI to HDMI LAN USB (MDC: Multiple Display Control) PC. PC RS-232C. PC (Serial port) (Serial port) RS-232C.. > > Multiple Display

More information

<BDC7C7E83120B0E1B0FABAB8B0EDBCAD202832C1D6C2F7292E687770>

<BDC7C7E83120B0E1B0FABAB8B0EDBCAD202832C1D6C2F7292E687770> 제목 : 실험 #1 결과보고서 GPIO LED 제어 실험일 : 2013. 03. 12. (2 주차 ) 실험내용 - 예비과제 : ATmega126의 8개의핀에연결되어있는 LED 점멸하는프로그램 - 실험과제 : ATmega126의 8개의 LED를순차적으로켜고끄는프로그램 실험결과 - 예비과제 - 해결방법 : 점멸되는시간 (Delay) 를구현하기위해임의의변수 i를적당한지연시간이생길정도의크기만큼증가시킨후,

More information

SMT-1722-1922-Kor.indd

SMT-1722-1922-Kor.indd SMT-2231 사용 설명서 첨부물 포장상자 개봉 후 제품은 튼튼하고 평평한 곳이나 설치장소에 놓고, 다음 내용물이 전부 있는지 체크하세요. TFT LCD 모니터 리모컨&건전지 VGA 신호케이블 전원코드 모니터 설치안내서 사용설명 CD 조작부 설명 전면조작부 적외선 센서 리모컨 센서 수신부 / PIP 동작중인 기능의 레벨증가 및 OSD메뉴 선택합니다.

More information

I/O (GPIO) 제어 I/0 제어 ATmega128의 I/O 구성및특징 I/O PORT 구성 8비트 / 양방향 / 범용 / 병렬 I/O포트 (PORT A ~PORT F) 6개 5비트 / 양방향 / 범용 / 병렬 I/O포트 (PORT G) 1개 I/O PORT 특징

I/O (GPIO) 제어 I/0 제어 ATmega128의 I/O 구성및특징 I/O PORT 구성 8비트 / 양방향 / 범용 / 병렬 I/O포트 (PORT A ~PORT F) 6개 5비트 / 양방향 / 범용 / 병렬 I/O포트 (PORT G) 1개 I/O PORT 특징 AVR - Chapter 5 류대우 davidryu@ewtc.co.kr I/O (GPIO) 제어 I/0 제어 ATmega128의 I/O 구성및특징 I/O PORT 구성 8비트 / 양방향 / 범용 / 병렬 I/O포트 (PORT A ~PORT F) 6개 5비트 / 양방향 / 범용 / 병렬 I/O포트 (PORT G) 1개 I/O PORT 특징 Read-modify-Write

More information

설치 순서 Windows 98 SE/Me/2000/XP 1 PC를 켜고 Windows를 시작합니다. 아직 컴퓨터에 프린터를 연결하지 마십시오. 2 PC에 P-S100 CD-ROM(프 린터 드라이버)을 삽입합니다. 3 설치 프로그램을 시작합니다. q CD-ROM의 PS1

설치 순서 Windows 98 SE/Me/2000/XP 1 PC를 켜고 Windows를 시작합니다. 아직 컴퓨터에 프린터를 연결하지 마십시오. 2 PC에 P-S100 CD-ROM(프 린터 드라이버)을 삽입합니다. 3 설치 프로그램을 시작합니다. q CD-ROM의 PS1 디지털 사진 프린터 P-S100 프린터 드라이버 설치 가이드 사용하는 컴퓨터에 따라 제공된 프린터 드라이버를 설치합니다. 설치 절차 에 대한 자세한 내용은 CD-ROM의 Readme 파일을 참조하십시오. 작동 환경 Windows 호환 모델: IBM PC/AT 및 호환품 운영 체제: Windows 98 SE/Me/2000/XP (Windows 98 SE/Me/2000/XP

More information

Microsoft Word - CL5000,5500_KOR_UM_20110321_.doc

Microsoft Word - CL5000,5500_KOR_UM_20110321_.doc 2 차 례 1. 주의 사항... 8 1.1 취급주의... 8 2. Specification... 10 2.1 소개... 10 2.2 규격... 12 3. 명칭과 기능... 14 3.1 CL 5000 - P Type... 14 3.2 기본 설치... 18 3.3 표시부... 19 3.4 기능키... 20 3.5 라벨롤의 설치... 24 4. PROGRAMMING...

More information

Microsoft PowerPoint - clcd_128_64

Microsoft PowerPoint - clcd_128_64 MEGA128_ CLCD (Graphic-LCD 메뉴얼 ) CPUPLAZA wwwcpuplazacom 제품소개 MEGA128_CLCD 는 TEXT-LCD, Graphic-LCD( 흑백 ), Color TFT-LCD 를연결하여테스트할수있으며, 압전식터치컨틀롤러 (TSC2003) 가내장되어있어 LCD 모델에상관없이터치를별도헤더핀으로지원합니다 제품특징 - 전원 :

More information

10X56_NWG_KOR.indd

10X56_NWG_KOR.indd 디지털 프로젝터 X56 네트워크 가이드 이 제품을 구입해 주셔서 감사합니다. 본 설명서는 네트워크 기능 만을 설명하기 위한 것입니다. 본 제품을 올바르게 사 용하려면 이 취급절명저와 본 제품의 다른 취급절명저를 참조하시기 바랍니다. 중요한 주의사항 이 제품을 사용하기 전에 먼저 이 제품에 대한 모든 설명서를 잘 읽어 보십시오. 읽은 뒤에는 나중에 필요할 때

More information

Microsoft Word - Armjtag_문서1.doc

Microsoft Word - Armjtag_문서1.doc ARM JTAG (wiggler 호환 ) 사용방법 ( IAR EWARM 에서 ARM-JTAG 로 Debugging 하기 ) Test Board : AT91SAM7S256 IAR EWARM : Kickstart for ARM ARM-JTAG : ver 1.0 ( 씨링크테크 ) 1. IAR EWARM (Kickstart for ARM) 설치 2. Macraigor

More information

LCD Monitor

LCD Monitor LCD MONITOR quick start guide 2443BW 2443BWX ii 제품 설명 제품 구성 구성품이 모두 들어 있는지 확인한 후 누락된 제품이 있으면 구입한 대리점으로 연락해 주 세요. 구성품 이외의 별매품을 구입하려면 서비스 센터로 연락하세요. 구성품 선택 사양1 선택 사양2 모니터 & 심플 스탠드 모니터 & 심플 스탠드 심플 스탠드의 경우

More information

SBR-100S User Manual

SBR-100S User Manual ( 1 / 13 ) SBR-100S 모델에 대한 사용자 펌웨어 업그레이드 방법을 안내해 드립니다. SBR-100S 는 신규 펌웨어가 있을시 FOTA(자동업데이트) 기능을 통하여 자동 업그레이드가 되며, 필요시 사용자가 신규 펌웨어를 다운받아 수동으로 업그레이드 할 수 있습니다. 1. 준비하기 1.1 연결 장치 준비 펌웨어 업그레이드를 위해서는 SBR-100S

More information

컴파일러

컴파일러 YACC 응용예 Desktop Calculator 7/23 Lex 입력 수식문법을위한 lex 입력 : calc.l %{ #include calc.tab.h" %} %% [0-9]+ return(number) [ \t] \n return(0) \+ return('+') \* return('*'). { printf("'%c': illegal character\n",

More information

K&R2 Reference Manual 번역본

K&R2 Reference Manual 번역본 typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct

More information

歯설명서_020925_.PDF

歯설명서_020925_.PDF GMPC-III (Protocol Converter-III) USER S MANUAL 1 1 1 4 2 5 2.1 5 2.2 5 2.3 6 3 7 3.1 7 4 8 4.1 8 4.2 8 5 GMPC-III 9 5.1 9 5.2 I-NET 9 5.3 ( ) 9 5.4 ( ) ( ) 10 6 12 6.1 12 7 GMPC-III 13 7.1 CPU 13 7.2

More information

NERO_M128_V10.opj

NERO_M128_V10.opj SW 0 R 0R ISP Port REF 0.uF PE P R 0K 0.uF R 0R 0.uF JP HEER/X 0.uF X pf PF PF PF PF PF PF PF REF TK TMS TO TI PE PE PE PE PE PE PE P0 P P P P P P P Y MHz X pf JTG Port IR_FREQ IR_OUT 0 0 0 TK TO TMS TI

More information

Microsoft Word - Installation and User Manual_CMD V2.2_.doc

Microsoft Word - Installation and User Manual_CMD V2.2_.doc CARDMATIC CMD INSTALLATION MANUAL 씨앤에이씨스템(C&A SYSTEM Co., Ltd.) 본사 : 서울특별시 용산구 신계동 24-1(금양빌딩 2층) TEL. (02)718-2386( 代 ) FAX. (02) 701-2966 공장/연구소 : 경기도 고양시 일산동구 백석동 1141-2 유니테크빌 324호 TEL. (031)907-1386

More information

윈도우즈프로그래밍(1)

윈도우즈프로그래밍(1) 제어문 (2) For~Next 문 윈도우즈프로그래밍 (1) ( 신흥대학교컴퓨터정보계열 ) 2/17 Contents 학습목표 프로그램에서주어진특정문장을부분을일정횟수만큼반복해서실행하는문장으로 For~Next 문등의구조를이해하고활용할수있다. 내용 For~Next 문 다중 For 문 3/17 제어문 - FOR 문 반복문 : 프로그램에서주어진특정문장들을일정한횟수만큼반복해서실행하는문장

More information

vi 사용법

vi 사용법 네트워크프로그래밍 6 장과제샘플코드 - 1:1 채팅 (udp 버전 ) 과제 서버에서먼저 bind 하고그포트를다른사람에게알려줄것 클라이언트에서알려준포트로접속 서로간에키보드입력을받아상대방에게메시지전송 2 Makefile 1 SRC_DIR =../../common 2 COM_OBJS = $(SRC_DIR)/addressUtility.o $(SRC_DIR)/dieWithMessage.o

More information

untitled

untitled Step Motor Device Driver Embedded System Lab. II Step Motor Step Motor Step Motor source Embedded System Lab. II 2 open loop, : : Pulse, 1 Pulse,, -, 1 +5%, step Step Motor (2),, Embedded System Lab. II

More information

목차 1. 제품 소개... 4 1.1 특징... 4 1.2 개요... 4 1.3 Function table... 5 2. 기능 소개... 6 2.1 Copy... 6 2.2 Compare... 6 2.3 Copy & Compare... 6 2.4 Erase... 6 2

목차 1. 제품 소개... 4 1.1 특징... 4 1.2 개요... 4 1.3 Function table... 5 2. 기능 소개... 6 2.1 Copy... 6 2.2 Compare... 6 2.3 Copy & Compare... 6 2.4 Erase... 6 2 유영테크닉스( 주) 사용자 설명서 HDD014/034 IDE & SATA Hard Drive Duplicator 유 영 테 크 닉 스 ( 주) (032)670-7880 www.yooyoung-tech.com 목차 1. 제품 소개... 4 1.1 특징... 4 1.2 개요... 4 1.3 Function table... 5 2. 기능 소개... 6 2.1 Copy...

More information

슬라이드 1

슬라이드 1 사용 전에 사용자 주의 사항을 반드시 읽고 정확하게 지켜주시기 바랍니다. 사용설명서의 구성품 형상과 색상은 실제와 다를 수 있습니다. 사용설명서의 내용은 제품의 소프트웨어 버전이나 통신 사업자의 사정에 따라 다를 수 있습니다. 본 사용설명서는 저작권법에 의해 보호를 받고 있습니다. 본 사용설명서는 주식회사 블루버드소프트에서 제작한 것으로 편집 오류, 정보 누락

More information

untitled

untitled CAN BUS RS232 Line CAN H/W FIFO RS232 FIFO CAN S/W FIFO TERMINAL Emulator COMMAND Interpreter PROTOCOL Converter CAN2RS232 Converter Block Diagram > +- syntax

More information

Java ...

Java ... 컴퓨터언어 1 Java 제어문 조성일 조건문 : if, switch 어떠한조건을조사하여각기다른명령을실행 if 문, switch 문 if 문 if - else 문형식 if 문형식 if ( 조건식 ) { 명령문 1; 명령문 2;... if ( 조건식 ) { 명령문 1; 명령문 2;... else { 명령문 a; 명령문 b;... 예제 1 정수를입력받아짝수와홀수를판별하는프로그램을작성하시오.

More information

2. Deferred Interrupt Processing A. Binary Semaphores를이용한동기 (Synchronization) i. Binary Semaphores는 Interrupt가발생하였을때특정한 를 Unblock 하는데사용할수있다. 이러한기능은 In

2. Deferred Interrupt Processing A. Binary Semaphores를이용한동기 (Synchronization) i. Binary Semaphores는 Interrupt가발생하였을때특정한 를 Unblock 하는데사용할수있다. 이러한기능은 In AVR FreeRTOS : Interrupt Management 1. 이장의개요 Embedded Real Time 시스템은주변장치로부터발생하는 Event 에실시간으로응답하여야하는응용분야에많이이용된다. 응용분야에따라서는여러개의 Interrupt Source로부터발생하는 Event를실시간으로처리하여야하고, 각각의 Interrupt 처리는서로다른처리시간과속도를필요로하기때문에최적의

More information

untitled

untitled EZ-TFT700(T) : EZ-TFT700(T) : Rev.000 Rev No. Page 2007/08/03 Rev.000 Rev.000. 2007/12/12 Rev.001 1.6 Allstech,,. EZ-TFT700(T). Allstech EZ-TFT700(T),,. EZ-TFT700(T) Allstech. < > EZ-TFT Information(13h)

More information

?뗡뀶?믟뀱?솽꼶?듄꼮??

?뗡뀶?믟뀱?솽꼶?듄꼮?? ACB/ATS/SPD Air Circuit Breaker / Automatic Transfer Switch / Surge Protective Device Moving Forward into the World 02_03 World Class Brand ACB/ATS/SPD Air Circuit Breaker / Automatic Transfer Switch /

More information

목차 제 1 장 inexio Touch Driver소개... 3 1.1 소개 및 주요 기능... 3 1.2 제품사양... 4 제 2 장 설치 및 실행... 5 2.1 설치 시 주의사항... 5 2.2 설치 권고 사양... 5 2.3 프로그램 설치... 6 2.4 하드웨

목차 제 1 장 inexio Touch Driver소개... 3 1.1 소개 및 주요 기능... 3 1.2 제품사양... 4 제 2 장 설치 및 실행... 5 2.1 설치 시 주의사항... 5 2.2 설치 권고 사양... 5 2.3 프로그램 설치... 6 2.4 하드웨 최종 수정일: 2010.01.15 inexio 적외선 터치스크린 사용 설명서 [Notes] 본 매뉴얼의 정보는 예고 없이 변경될 수 있으며 사용된 이미지가 실제와 다를 수 있습니다. 1 목차 제 1 장 inexio Touch Driver소개... 3 1.1 소개 및 주요 기능... 3 1.2 제품사양... 4 제 2 장 설치 및 실행... 5 2.1 설치 시

More information

<BFB5BBF3C1A4BAB8C3B3B8AEBDC3BDBAC5DB20BFACB1B82E687770>

<BFB5BBF3C1A4BAB8C3B3B8AEBDC3BDBAC5DB20BFACB1B82E687770> Black Key Region Cr R Linear Key Region θ White Key Region Cb θ Table θ Table for Chroma Suppress 1 255 0 θc θ Table for Linear Key θs θw1 θs θw2 Radius Table R Table for Chroma Suppress 1 255 0 Rc R Table

More information

OPCTalk for Hitachi Ethernet 1 2. Path. DCOMwindow NT/2000 network server. Winsock update win95. . . 3 Excel CSV. Update Background Thread Client Command Queue Size Client Dynamic Scan Block Block

More information

학습목차 r 컴퓨터본체에서 CPU 의위치살펴보기 r CPU 의성능 r CPU 의기능 r CPU 의조직 r 레지스터의조직 r 명령어사이클 r 명령어파이프라이닝 컴퓨터구조 2 9. CPU 조직과기능

학습목차 r 컴퓨터본체에서 CPU 의위치살펴보기 r CPU 의성능 r CPU 의기능 r CPU 의조직 r 레지스터의조직 r 명령어사이클 r 명령어파이프라이닝 컴퓨터구조 2 9. CPU 조직과기능 컴퓨터구조 제 9 강 중앙처리장치의조직과기능 학습목차 r 컴퓨터본체에서 CPU 의위치살펴보기 r CPU 의성능 r CPU 의기능 r CPU 의조직 r 레지스터의조직 r 명령어사이클 r 명령어파이프라이닝 컴퓨터구조 2 9. CPU 조직과기능 학습목표 rcpu 의성능을향상시키는요인들을알아본다. rcpu 의기본적인기능을이해한다. rcpu 는 ALU, 제어장치, 레지스터집합,

More information

AN_0005B_UART

AN_0005B_UART CANTUS-CAN - UART - 32bits EISC Microprocessor CANTUS Ver 1.1 April 24, 213 Advanced Digital Chips Inc. Ver 1.1 CANTUS Application Note History 213-2-19 Released 213-4-24 Modified CANTUS-CAN CANTUS-CAN

More information

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어 개나리 연구소 C 언어 노트 (tyback.egloos.com) 프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어먹고 하더라구요. 그래서,

More information

기능 기본기능 AVR용 ISP(In System Programming) 임. STK500 표준프로토콜을정확히따라서만들어져있음. 타겟 AVR 시리즈마이크로컨트롤러의플래시 / EEPROM 메모리에펌웨어를다운로드하고, 테스트할수있다.( 플래시 /EEPROM 읽기 / 쓰기모두

기능 기본기능 AVR용 ISP(In System Programming) 임. STK500 표준프로토콜을정확히따라서만들어져있음. 타겟 AVR 시리즈마이크로컨트롤러의플래시 / EEPROM 메모리에펌웨어를다운로드하고, 테스트할수있다.( 플래시 /EEPROM 읽기 / 쓰기모두 AVR USBISP V6.0 사용자메뉴얼 류대우 뉴티씨 (NEWTC) 대표이사 davidryu@newtc.co.kr 기능 기본기능 AVR용 ISP(In System Programming) 임. STK500 표준프로토콜을정확히따라서만들어져있음. 타겟 AVR 시리즈마이크로컨트롤러의플래시 / EEPROM 메모리에펌웨어를다운로드하고, 테스트할수있다.( 플래시 /EEPROM

More information

Page 2 of 21 Absolute Maximum Ratings Absolute Maximum Rating 값을초과하는조건에서 DTPML을동작시킬경우치명적인손상을 가할수있습니다. Parameter Symbol Conditions min Typ Max Unit Sup

Page 2 of 21 Absolute Maximum Ratings Absolute Maximum Rating 값을초과하는조건에서 DTPML을동작시킬경우치명적인손상을 가할수있습니다. Parameter Symbol Conditions min Typ Max Unit Sup Page 1 of 21 비접촉온도측정 방사율조절가능 빠른온도업데이트 (50Hz) 원거리온도측정 High Accuracy Digital Interface : SPI 레이저포인터기본장착 제품설명 DTPML-SPI Series는접촉을하지않고원하는물체표면의온도를 20ms 이내에정확하게측정할수있는온도센서모듈입니다.

More information

Microsoft PowerPoint - ch02-1.ppt

Microsoft PowerPoint - ch02-1.ppt 2. Coodinte Sstems nd Tnsfomtion 20 20 2.2 Ctesin Coodintes (,, ) () (b) Figue 1.1 () Unit vectos,, nd, (b) components of long,, nd. 직각좌표계에서각변수 (,, ) 들의범위 < < < < < < (2.1) 직각좌표계에서임의의벡터 는,, 가그림 1.1 에서와같이,,

More information

manual pdfÃÖÁ¾

manual pdfÃÖÁ¾ www.oracom.co.kr 1 2 Plug & Play Windows 98SE Windows, Linux, Mac 3 4 5 6 Quick Guide Windows 2000 / ME / XP USB USB MP3, WMA HOLD Windows 98SE "Windows 98SE device driver 7 8 9 10 EQ FM LCD SCN(SCAN)

More information