목록ATMega128 (13)
정보보안공부
====Serial Communication==== ***HyperTerminal에 문자열 전송하기 -> kit에서 “information Communication” 이라는 문자열을 PC에 전송 -> 전송속도 9600bps사용 -> UCSR1A, UCSR1B, UCSR1C -> Baud Rate 결정 : UBRR1H, UBRR1L @UCSR1A **Kit에서 PC로 송신 : putchar0() void putchar0(char data) { while(!(UCSR1A & (1 @송신 인터럽트 처리함수 ISR(USART1_UDRE_vect) { UDR1 = rx + 1; //수신된 rx를 송신버퍼에 저장 UCSR1B &= (0
==========================LCD========================== ***NAMSEOUL UNIVERSITY 문자 LCD에 출력하기 #define ALLCLR 0x01 #define CURSOR_HOME 0x02 #define ENTMODE 0x06 #define FUNSET 0x38 #define DISP_ON 0x0C #define DISP_OFF 0x08 #define CURSOR_ON 0x0E #define RIGHT 1 //LCD오른쪽으로 이동하는 헤더파일 #define LEFT 0 //LCD왼쪽으로 이동하는 헤더파일 void init_devices(void) { //초기화 함수 MCUCR = 0x80; EX_LED = 0x00; //모든 LED off FND_S..
=====================Fast PWM모드======================== -> 분주가 작아지면 주기가 짧아지고 분주가 커지면 주기가 길어진다. ***Fast PWM모드 128분주 ***Fast PWM모드 64분주 *** INT4를 클릭하면 OCR 값을 +2 INT7을 클릭하면 OCR 값을 -2 -> 주기가 일정한상태에서 파형을 INT에 따라 움직일 수 있다. ==================Phase Correct PWM모드==================== -> Fast PWM과 마찬가지로 주기는 일정 분주에 따라 주기가 변한다. ========================LCD=============================
*** 2ms마다 0번 FND의 숫자를 증가 -> Normal모드 Output compare interrupt사용 -> Normal 모드로 Output Interrupt 사용하게되면 2ms마다로 작동하지 않으므로 ISR(TIMER0_COMP_Vect)에 OCR0 += 124; 작성 *** Normal모드로 Output compare Interrupt사용시 -> 따라서 Normal모드는 overflow Interrupt를 주로사용한다. *** 2ms마다 0번 FND의 숫자를 증가 -> CTC모드 Output compare interrupt사용 *** CTC모드일때 Output compare match Interrupt사용 -> 오실로스코프로 파형확인 -> -5V를 오실로스코프에 GND에 연결 -> PORT..
Timer : 내부 클럭 사용, 내부 클럭의 수를 카운팅 Counter : 외부 클럭 사용 ***TCCR TCNT(Overflow의 경우) ***OCR TIMSK *** Timer Interrupt 종류 2가지 ***0.2초 간격으로 LED Shift 시키기 - Normal 모드 Overflow Interrupt 사용 ***0.5초 간격으로 LED Shift 시키기 - Normal 모드 Overflow Interrupt 사용 -> 0.2ms와 0.5ms 차이는 자료형이 char이면 255까지 int형이면 255이상으로 가능
*polling : 코딩같은 방식( 한가지 밖에 못함 ) ex) while( ); *interrupt : 함수 호출 없어도 발생( 호출문이 없다. ) *SREG = 0x80 = 1 7번비트를 활성화 -> sei() : 헤더파일에 #include가 선언되어 있다면 sei()로 가능하다. *EIMSK : 외부 interrupt ex) 3번 7번 interrupt사용할때 EIMSK = 1
*** 헤더파일 #include #include #include #define FND_S (*(volatile unsigned char*)0x8002) #define FND_D (*(volatile unsigned char*)0x8003) #define EX_LED (*(volatile unsigned char*)0x800c) #define DOT_R (*(volatile unsigned char*)0x8008) //빨강 #define DOT_G (*(volatile unsigned char*)0x8007) //초록 #define DOT_C (*(volatile unsigned char*)0x8009) //전원 *** 0번스위치 누르면 FND 0~9반복 1번스위치 누르면 STOP 2번스위치 누르면 0으로..
*** 참고자료 -> 트렌지스터가 PNP형 이므로 베이스가 0일때 FND가 동작한다. -> 버퍼를 이용해 FND의 값결정한다. -> #define FND_S(*(volatile unsigned char*)0x8002) FND_S는 전원으로 버퍼역할 -> #define FND_D(*(volatile unsigned char*)0x8003) FND_D는 숫자코드 버퍼역할 -> FND의 전원에 PNP의 트랜지스터 베이스에 연결되있으므로 트렌지스터의 베이스가 0일때 FND가 동작한다. *** FND를 6개 켜지도록 설정 *** FND를 3개 켜지도록 설정 *** 스위치를 이용해 0번 SW : 0번 FND 1번 SW : 1번 FND --- 5번까지 ***0번스위치 ***1번스위치 ***2번스위치 ***3번스위치 ..