include 액션

include 지시자와 유사. 파라미터 전송가능

 

1
2
3
<%jsp:include page = "jsp name"%>
<jsp:param value="paramiter" name ="key">
</jsp:include>
cs


forward 액션

다른 페이지로 전환시 사용. 현재 페이지가 나오지 않고 다른 페이지만 나옴

 

1
2
3
<%jsp:forward page = "jsp name"%>
<jsp:param value="paramiter" name ="key">
</jsp:forward>
cs


plugin 액션

웹 브라우저에서 자바 플로그인을 사용하여 자바 애플릿이나 자바 빈즈 컴포넌트를 실행할 수 있게 하는 것.

잘 사용되지 않음.


useBean 액션

특정한 일을 독립적으로 수행하는 자바 컴포넌트.

 

1
2
3
<jsp:useBean id="name" class ="beans class name"/>
<jsp:setProperty name="name" property="attibute name"/>
<jsp:getProperty name="name" property="attibute name"/>
cs


주석
1
<%-- --%>
 


지시어

Page 지시어

 

1
<%@ page 속성="속성" %>
cs

 

Page 속성들

 

  • language : 스크립트 언어의 유형을 선택
  • import : 외부 자바 패키지, 클래스 사용시 선언
  • session : 세션 사용 유무 결정
  • buffer : 버퍼의 크기 설정
  • autoFlush : 버퍼의 내용을 자동으로 비울지 결정
  • isThreadSafe : 단일 스레드 모델을 사용함으로써 동시성 제어 여부 선택
  • info : 해당 페이지 설명
  • errorPage : 페이지에서 오류 발생시 호출될 페이지 설정
  • isErrorPage : 오류만 처리하는 페이지로 선택
  • contentType : MIME 형식 지정 및 케릭터셋 설정
  • pageEncoding : contentType과 동일
  • extends : 클래스 상속시 사용


 

include 지시어

현재 jsp 파일에 다른 html이나 jsp 문서를 포함하기 위한 기능을 제공

 

1
<%@ include file = "file name"%>
cs

taglib 지시어

jsp기능 확장을 위해 커스텀 태그 라이브러리를 사용하기위한 지시어

 

1
<%@ taglib = "librarie name" prefix="custom name"%>
cs

 


'프로그래밍 > JSP, Spring, HTML5' 카테고리의 다른 글

(jsp) 선언, 표현식, 스크립트릿  (1) 2016.07.10
(JSP) 액션  (0) 2016.07.10
(JSP) MAC에서 JSP 개발환경 구축하기  (0) 2016.07.10
(jQuery) 이벤트  (0) 2016.07.10
(jQuery) 선택자  (0) 2016.07.10

MAC은 서버나 자바 등의 경로 설정같은 것이 필요없음.


웹 서버에 사용될 JDK 깔기

http://www.oracle.com/technetwork/java/javase/downloads/index.html




웹 서버에 사용될 Apache Tomcat 깔기

http://tomcat.apache.org/index.html


tar.gz로 다운로드

특정 공간에 압축풀기

해당 폴더공간/bin 폴더에 들어간 후 startup.sh 시작

인터넷 주소창에 http://localhost:8080 검색


▲ Apache Tomcat 실행된 상황


'프로그래밍 > JSP, Spring, HTML5' 카테고리의 다른 글

(JSP) 액션  (0) 2016.07.10
(JSP) 기본 문법 - 주석과 지시어  (0) 2016.07.10
(jQuery) 이벤트  (0) 2016.07.10
(jQuery) 선택자  (0) 2016.07.10
(이클립스) Dynamic Web Project 만들기  (0) 2016.07.10

기본 이벤트들

Mouse Events

Keyboard Events

Form Events

Document/Window Events

click

keypress

submit

load 

dblclick

keydown

change

resize

mouseenter

keyup

focus

scroll

mouseleave


blur

unload

 


<p> 객체를 클릭했을 때 이벤트를 발생하고 싶다면

$("p").click() 처럼 쓰는데 다음 행동을 정의하고 싶을땐 아래와 같이 코딩하면 된다.


$("p").click(function (){

다음에 할 행동들

});


흔히 사용되는 jQuery 이벤트 메소드들

$(document).ready() 

문서가 전부 불러왔을 때 발생하는 이벤트


click() 

HTML 객체를 클릭했을 때 발생하는 이벤트


dblclick()

HTML 객체를 더블클릭 했을 때 발생하는 이벤트


mouseenter()

HTML 객체에 마우스를 올렸을 때 발생하는 이벤트


mouseleave()

HTML 객체에 마우스를 올렸다가 땔떼 발생하는 이벤트


mousedown()

HTML 객체를 마우스 왼쪽,중간(휠),오른쪽로 눌렀을 했을 때 발생하는 이벤트


mouseup()

HTML 객체를 마우스 왼쪽,중간(휠),오른쪽로 땠을 때 발생하는 이벤트 (다른 곳을 누른 상태로 객체에 마우스 올려도 발생)


hover()

mouseenter() 와 mouseleave() 메소드를 사용하는 메소드

순서는 mouseenter() -> mouseleave() 순이다.


focus()

HTML 폼 영역이 포커싱 될때 발생하는 이벤트


blur()

HTML 폼 영역이 포커싱을 잃었을 때 발생하는 이벤트


on() 메소드

선택된 객체에 하나 이상의 이벤트 핸들러들을 붙일 때 사용한다.

$(선택자).on({

이벤트: function(){

},

이벤트1: function(){

},

...

});

'프로그래밍 > JSP, Spring, HTML5' 카테고리의 다른 글

(JSP) 액션  (0) 2016.07.10
(JSP) 기본 문법 - 주석과 지시어  (0) 2016.07.10
(JSP) MAC에서 JSP 개발환경 구축하기  (0) 2016.07.10
(jQuery) 선택자  (0) 2016.07.10
(이클립스) Dynamic Web Project 만들기  (0) 2016.07.10

$("p").hide() <p> 태그가 붙은 객체를 전부 숨김

$("#test").hide() id가 test인 객체를 모두 숨김

$(".test").hide() class가 test인 객체를 모두 숨김

$(this).hide() HTML 객체 자신을 숨김


$("*") 객체 전체를 선택

$("p.intro") <p> 태그의 intro class 선택

$("p:first") <p> 태그의 첫번째 객체

$("ul li:first") <li> 객체의 첫번째 객체에 첫번째 <ul>

$("ul li:first-child") <li> 첫번째 객체에 모든 <ul>

$("[href]") 모든 객체에 href 속성이 있는 모든 객체 선택

$("a[target ='_blank']") target 속성 값이 _blank인 <a> 객체 모두 선택

$("a[target !='_blank']") target 속성 값이 _blank가 아닌 <a> 객체 모두 선택

$(":button") 모든 <button> 객체와 type="button"인 <input> 객체 선택

$("tr:even") <tr> 객체의 짝수번째 선택

$("tr:odd") <tr> 객체의 홀수번째 선택


출처 : http://www.w3schools.com/jquery/jquery_selectors.asp


'프로그래밍 > JSP, Spring, HTML5' 카테고리의 다른 글

(JSP) 액션  (0) 2016.07.10
(JSP) 기본 문법 - 주석과 지시어  (0) 2016.07.10
(JSP) MAC에서 JSP 개발환경 구축하기  (0) 2016.07.10
(jQuery) 이벤트  (0) 2016.07.10
(이클립스) Dynamic Web Project 만들기  (0) 2016.07.10

1. File -> New -> Dynamic Web Project 클릭


2.프로젝트 명과 웹를 어떤것으로 돌릴지 설정 처음 생성한다면 New Runtime 클릭


3.서버 환경 선택 만들기. Apache Tomcat을 받아서 사용함.


3-1.이름과 설치된 위치를 넣고 finish를 누르면 끝



완성된 프로젝트에 HTML추가하는 방법


1. 프로젝트 오른쪽클릭 -> New -> HTML File


2. HTML이름과 프로젝트 내에 위치 지정


3.HTML 버전 고른 후 Finish

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML5, CSS3, JSP</title>
<script>
</script>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
cs


서버 작동법

1.프로젝트 오른쪽클릭 -> Run As -> Run on Server


2.만든 서버 클릭


3. Available에 있는 프로젝트 클릭후 add한뒤 finish


'프로그래밍 > JSP, Spring, HTML5' 카테고리의 다른 글

(JSP) 액션  (0) 2016.07.10
(JSP) 기본 문법 - 주석과 지시어  (0) 2016.07.10
(JSP) MAC에서 JSP 개발환경 구축하기  (0) 2016.07.10
(jQuery) 이벤트  (0) 2016.07.10
(jQuery) 선택자  (0) 2016.07.10

1. 마이크로 컨트롤러의 정의

 - 마이크로 프로세서 : 프로세서를 하나의 칩안에 집적하여 넣어 소형화한 형태

 - 마이크로컨트롤러(MCU: Micro Controller Unit) : 지능화와 소형화를 위하여 마이크로 프로세서에 메모리와 각종

  주변장치들을 함께 집적하여 넣은 

2. AVR 마이크로 컨트롤러 개요

 - 1997 처음 발표한 8비트 제어용 마이크로프로세서로서 RICS 기술을 기반으로 만들어 

 - 대부분의 명령이 단일 클럭으로 실행되어 동작 속도를 혁신적으로 개선

 - 임베디드 환경에 적합한 저전력 소모의 

 - AVR 데이터 메모리와 프로그램 메모리가 분리된 하버드 아키텍처를 따름 CPU 데이터 처리 속도를 높일  있음

 -  내에 프로그램 코드용으로 플래시 메모리를 내장하고사용자가 프로그램을 쉽게 다운로드   있는 isp 방식 적용

 - 많은 장점 때문에 상대적으로 늦게 출시되었음에도 불구하고 8051이나 PIC 능가하는 인기를 단시간 내에 얻게 되었음

3. AVR 마이크로 컨트롤러 특징

 - 하버드 아키텍쳐 : 명령어와 데이터 통로를 저장공간과 물리적으로 분리한 컴퓨터 아키텍처를 말함.

   CPU 없는 병렬식 컴퓨터 구조데이터와 명령어가 다른 버스를 사용

   - 장점 : 명령어를 읽을  데이터를 읽거나   있어 성능이 뛰어나다

   - 단점 : 버스 시스템이 복잡하여 설계가 복잡하다

 - 폰노이만 아키텍쳐 : 데이터는 메모리에서 읽거나 메모리에 쓰기도 하는 방면에 명령어는 메모리에서 읽기만 하는 구조

   CPU 중심의 컴퓨터데이터와 명령어가 같은 버스를 공유

   - 장점 : 범용성이 좋고 여러 목적으로 이용이 가능하기 때문에 현재 컴퓨터에 많이 사용된다

   - 단점 : 명령어를 읽을  데이터를 읽거나   없다

4. ATMega128 리셋 모드

 - Power-on Reset : 전원전압 VCC 전압 레벨에 따른 리셋

 - External Reset : /RESET 핀에 의한 외부 리셋

 - Watchdog Reset : 워치독 타이머에 의한 리셋

 - Brown-out Reset : Brown-out Detector 의한 리셋

 - JTAG AVR Reset : JTAG 시스템에 의한 리셋

5. 마이크로 컨트롤러와 GPIO

 - GPIO(General Purpose Input Output)

   - 개념 : 범용으로 사용되는 입출력 포트설계자가 마음대로 변형하면서 제어할  있도록 제공해 주는 I/O(입출력포트

   - 개요 : 

      - 입력과 출력을 마음대로 선택할  있고, 0 1 출력 신호를 임의로 만들어줄  있는 구조를 가짐

      - 입력으로 사용할 때는 외부 인터럽트를 처리할  있도록 하는 경우가 많음

      - 입출력 방향 전환용 레지스터와 출력용/입력용 데이터 레지스터 등이 필요

      - 마이크로 컨트롤러에서는 대부분의 핀들을 GPIO 설정하는 경우가 많음

6. DDRx 레지스터

 -  입출력의 방향설정을 하기 위한 레지스터.

 - DDRA~DDRG레지스터의 해당 비트에 ‘1 쓰면 출력, ‘0’ 쓰면 입력으로 설정. 0xFF : 출력  0x00 : 입력

7. PORTx 레지스터

 -  데이터를 출력하기 위한 레지스터이다

 -  출력을 원하는 데이터값을 PORTx 레지스터에 넣어주면 된다

8. PINx 레지스터

 -  데이터 입력용 레지스터이다

 -  PINx 레지스터에 해당하는 값을 읽으면 해당 핀의 값이 읽어진다.


3-1 LED

// 1)

#include<avr/io.h>

#include<util/delay.h>

int main(){

 char i;

 unsigned char LED_Data=0x0;

// 2)

 DDRE = 0xFF;

// 3)               

 while(1){

  PORTE = LED_Data;

  LED_Data++;

  for(i=0;i<100;i++)

   _delay_ms(10); //ms단위의 딜레이함수

 }         

 return 0;

}

1) AVR 입출력에 대한 헤더 파일과 delay 함수사용을 위한 헤더파일을 선언한다.

2) 포트 출력포트로 설정한다.

3) 포트E 변수 LED_Data 있는 데이타를 출력한다그리고 값을 1 더해주며, 1 딜레이를 가진 다음 루프를

   반복한다. _delay_us()함수는 104 us 까지 , _delay_ms()함수는 35ms 까지 지원한다.

3-2 switch

// 1)

#include<avr/io.h>

int main(){

// 2)

 DDRE = 0xFF;

 DDRB = 0x00;

// 3)

while(1){

 PORTE = PINB;

 }

 return 0;

}

 1) AVR 입출력에 대한 헤더 파일을 선언한다.

 2) 포트 출력포트로 설정한다포트 입력포트로 설정한다.

 3) 포트B 연결된 버튼의 값이 포트E LED 출력되고루프를 반복한다.

3-3 FND

// 1)

#include<avr/io.h>

#include<util/delay.h>

int main(){

// 2)

 unsigned char FND_DATA_TBL[]={0x3F,0X06,0X5B,0X4F,0X66,0X6D,0X7C,0X07,0X7F,0X67,0X77,0X7C,0X39,0X5E,0X79,0X71,0X08,0X80};

 unsigned char cnt=0 , i ;

// 3)

 DDRD = 0xFF; 

// 4)

 while(1){

  PORTD = FND_DATA_TBL[cnt];

  cnt++;

  if(cnt>17) cnt=0;  //테이블 크기를 초과하는 경우 방지.

  for(i=0;i<50;i++)

   _delay_ms(10);

 }

 return 0;

}

1) AVR 입에 대한 헤더 파일과 delay 함수사용을 위한 헤더파일을 선언한다.

 

2) 0~9, A~F 그리고 ,밑줄  FND 맞추어 정리해둔 테이블을 선언한다.

3) 포트 출력포트로 설정한다.

4) 포트D FND_DATA_TBL배열에 저장된 값을 500ms 단위로 하나씩 출력한다.

  _delay_us()함수는 104 us 까지 , _delay_ms()함수는 35 ms 까지 지원한다.

5-1 interrupt_led

#include<avr/io.h>

#include<avr/interrupt.h>

#include<util/delay.h>

unsigned char Time_STOP = 0;

// 2)

SIGNAL(SIG_INTERRUPT0);

int main(){

                unsigned  char LED_Data = 0x01,i;

// 3)

                DDRD = 0xFE;  

                DDRE = 0xFF;  

// 4)

                EICRA = 0x0F; 

                EICRB = 0x00;

                EIMSK = 0x01;  

                EIFR = 0x01;  

// 5)

                sei();

                while(1){

// 6)

                PORTE = LED_Data;

                                if(Time_STOP == 0) {

                                if(LED_Data == 0x80)  LED_Data = 0x01;

                                else LED_Data <<= 1;

                                }

                for(i=0;i<10;i++)

   _delay_ms(10);  

                }

                return 0;

}

SIGNAL(SIG_INTERRUPT0){     

                cli();

                if(Time_STOP == 0)

                Time_STOP = 1;

                else

                Time_STOP = 0;

                sei();

 

}

 

1) AVR 입출력에 대한 헤더 파일과 인터럽트를 사용하기 위한 헤더delay 함수사용을 위한 헤더파일을 선언한다.

2) 인터럽트 서비스 루틴을 선언한다인터럽트 0

3) 포트 PD0 입력포트로 설정한다포트E 출력으로 선언한다.

4) 인터럽트 0 상승엣지에서 동작하도록 설정한다.

5) 모든 인터럽트를 허용하는 함수.

6) 100ms마다 LED 좌측으로 쉬프트되면서 켜진다. Time_Stop 0인경우에만 계속 쉬프트된다. Time_Stop 1 되면

   LED_Data 변하지 않게 되고, LED 멈춘다.

7) 한번 누르면 스톱한번더 누르면 재개한다. cli() 함수는 전체인터럽트 금지하는 함수이다인터럽트중에 인터럽트발생을 방지하기 위한 처리이다처리가 모두 끝나면 sei()함수로 인터럽트를 다시 허용한다.

5-2 Interrupt_stopwatch

// 1)

#include<avr/io.h>

#include<avr/interrupt.h>

#include<util/delay.h>

 

unsigned char time_10ms=0,time_100ms=0,time_1s=0,time_10s=0;

 

char Time_STOP = 1;

// 2)

SIGNAL(SIG_INTERRUPT0);

SIGNAL(SIG_INTERRUPT1);

 

int main(){

 unsigned char FND_DATA_TBL[]={0x3F,0X06,0X5B,0X4F,0X66,0X6D,0X7C,0X07,0X7F,0X67,0X77,0X7C,

                                                                  0X39,0X5E,0X79,0X71,0X08,0X80};

// 3)

 DDRD = 0xFC;

 DDRG = 0x0F;

 DDRE = 0xFF;

// 4)

 EICRA = 0x0F;

 EICRB = 0x00;

 EIMSK = 0x03;

 

// 5)

 sei();

 Time_STOP = 1;

 while(1){

// 6) 

  PORTG = 0x07;                                                  // C3 선택한다

  PORTE = FND_DATA_TBL[time_10ms];  //FND_DATA_TBL배열에서 time_10ms만큼의 FND데이타를 출력한다.

  _delay_ms(2);                                                  //잔상을 남게하기 위한 딜레이

 

  PORTG = 0x0B;

  PORTE = FND_DATA_TBL[time_100ms];

  _delay_ms(2);

 

  PORTG = 0x0D;

  PORTE = FND_DATA_TBL[time_1s]|0x80;

  _delay_ms(3);

 

  PORTG = 0x0E;

  PORTE = FND_DATA_TBL[time_10s];

  _delay_ms(3);

 

  if(Time_STOP==1) continue;                  //인터럽트에 의한 Stop/Resume 처리 

  //여기까기 사용된 딜레이 함수가  10ms이므로 time_10ms 10ms마다 증가된다.

 

  time_10ms++;

 

  if(time_10ms == 10){

   time_10ms = 0;

   time_100ms++ ;

  }

  if(time_100ms == 10){

   time_100ms = 0;

   time_1s++ ;

  }

  if(time_1s == 10){

   time_1s = 0;

   time_10s++ ;

  }

  if(time_10s == 10){

   time_10s = 0;

  }

 }

 return 0;

}

// 7)

SIGNAL(SIG_INTERRUPT0){ // Stop/Resume 처리

 cli();

  if(Time_STOP==0)

   Time_STOP=1;

  else

   Time_STOP=0;

 sei();

}

// 8)

SIGNAL(SIG_INTERRUPT1){ //리셋

  cli();

  time_10ms=0;

  time_100ms=0;

  time_1s=0;

  time_10s=0;

  sei();

}

 1) AVR 입출력에 대한 헤더 파일과 인터럽트  사용하기 위한 헤더delay 함수사용을 위한 헤더파일을 선언한다.

 2) 인터럽트 서비스 루틴을 선언한다인터럽트 0,1

 3) 포트 PD0, PD1 입력포트로 설정한다포트E,포트G 출력으로 선언한다.

 4) 인터럽트 0,1 상승엣지에서 동작하도록 설정한다.

 5) 모든 인터럽트를 허용하는 함수.

 6) 10ms단위부터 10초단위까지의 스톱워치가 동작하면서 인터럽트에 의해 리셋스톱을 FND 출력한다.

 7) 한번 누르면 스톱한번더 누르면 재개한다. cli() 함수는 전체인터럽트 금지하는 함수이다인터럽트중에 인터럽트발생을

   방지하기 위한 처리이다처리가 모두 끝나면 sei()함수로 인터럽트를 다시 허용한다.

 8) 시간을 리셋한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/********************************************************************
 파일명 : UART_Echo.c
 
 동작  
 PC에서 보내는 데이타를 그대로 MCU에서 돌려보낸다.
 포트연결
 UART모듈의 RX에는 PE0를 TX에는 PE1를 연결한뒤 UART모듈을 컴퓨터 포트에 연결한다.
 소스 설명
 1) UART0로 한 문자를 전송한다.
 2) UART0로 한 문자를 받아온다.
 3) 출력할 문자열을 선언한다.
 4) UART0 통신을 선언한다.
 송수신 사용선언,No parity bit, 1 Stop bit, 115200bps
 5) 문자열의 끝을 의미하는 '\0' 가 올때까지 한문자씩 전송한다.
 6) 한문자씩 받아와서 다시 전송한다. 이때 '1'일 경우 특정 문자열을 출력한다.
********************************************************************/
#include<avr/io.h>
//1)
void putch(unsigned char data)
{
 while((UCSR0A & 0x20== 0);  //전송준비가 될때까지 대기 
 UDR0 = data;
 UCSR0A |= 0x20;      //UCSR0A 레지스터 중에서 5번째 비트(UDREn)를 세트하여 UDRE0를 클리어 함.
}
//2)
unsigned char getch()
{
 unsigned char data;
 while((UCSR0A & 0x80== 0);        //데이터를 받을 때까지 대기 
 data = UDR0;
 UCSR0A |= 0x80;      //UCSR0A 레지스터 중에서 7번째 비트를 세트하여 RXC0를 클리어 함.
 return data;
}
int main()
{
//3)
 unsigned char text[] = "\r\nWelcome! HONGGI TESTER!!!!!\r\n";
 unsigned char echo[]="ECHO >> ";
 unsigned char text1[]="blog.naver.com/ghdrl95 신홍기\n";
 unsigned char i=0;
//4)
 DDRE=0XFE;       //Rx(입력 0),Tx(출력,1)
 UCSR0A=0X00;
 UCSR0B=0X18;      //Rx, Tx enable
 UCSR0C=0X06;      //비동기 방식, No Parity bit, 1 Stop bit
 UBRR0H=0X00;
 UBRR0L=0X03;      //7.3728 MHz 에서 115200bps
//5)     
 while(text[i]!='\0')
  putch(text[i++]);
 i=0;
 while(echo[i]!='\0')
  putch(echo[i++]);
//6)
 while(1){
  unsigned char data=getch();
  if(data=='1')
  {
   i=0;
   while(text1[i]!='\0')
    putch(text1[i++]);
  }
  else
  {
   putch(data);
  }
 }
 return 0;
}
cs



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/********************************************************************
 파일명 : Timer_led.c
 
 동 작 : 
 타이머0을 이용하여 LED를 1초간격으로 킨다.
       
 포트연결 :
1) 포트E 8핀을 LED에 연결
 
 소스 설명 :
 1) AVR 입출력에 대한 헤더 파일과 인터럽트를 사용하기 위한 헤더를 선언한다.
 2) 타이머 0 오버플로우 인터럽트 서비스 루틴을 선언한다.
 3) LED 모듈에 데이터를 보내기 위해 PORT E를 출력으로 설정한다.
 4) 타이머0 에 대해 1024분주, Normal모드로 설정한다. TCNT0은 내부클럭/분주기의 역수 * TCNT가카운트하는 수 = 인터럽트에 걸리는 시간
 5) 전체 인터럽트를 허용하는 함수
 6) LED_DATA를 PortE로 보내 LED를 킨다.
 7) 타이머0이 오버플로우가 발생되면 호출되는 함수로 TCNT0을 0으로 초기화하지않고 지정한값으로 초기화하고 time0Cnt 변수를 사용함으로 써 더 긴시간을 잴 수 있다.
********************************************************************/
// 1)
#include<avr/io.h>
#include<avr/interrupt.h>
 
 
unsigned char LED_Data = 0x00;
unsigned cchar timer0Cnt=0;
// 2)
SIGNAL(SIG_OVERFLOW0);  //Timper0 Overflow0 ISP
 
 
int main(){
// 3)
    DDRE = 0xFF;  //PORTE를 모두 출력으로 사용
// 4)
    TCCR0 = 0x07;//0000 0111 Timer/Count0을 1024분주기, Normal Mode로 설정
    TCNT0 = 0xff - 72; (1/ (내부 클럭 7.3728 Mhz / 분주기1024 prescaler)) * 72 => 0.01 s
    TIMSK |= 1 << TOIE0;     // 오버플로우 인터럽트 허용
    TIFR |= 1 << TOV0;    //TOV0 Timer/Counter0 overflow flag 클리어
// 5)
    sei();
// 6)
    while(1){
        PORTE = LED_DATA;
    }
    return 0;
}
// 7)
SIGNAL(SIG_OVERFLOW0)
{
    cli();
    TCNT0=0xff-72;    //0으로 초기화되는것이 아닌 0xff-72로 초기화
    timer0Cnt++;
    if(timer0Cnt == 100) {  //0.01s * 100 = 1s
        LED_Data++;
        timer0Cnt = 0;
    }
}
cs


'프로그래밍 > ATMega128' 카테고리의 다른 글

(ATMega128) 정리  (0) 2016.07.10
(ATMega128) PC와의 UART통신  (0) 2016.07.10
(ATMega128) PWM 사용하기  (0) 2016.07.10
(ATMega128) 인터럽트를 이용한 LED동작 멈춤/재생  (0) 2016.07.10
(ATMega128) FND값 올리기  (0) 2016.07.10
사용한 툴 : avr studio 4

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include<avr/io.h>
#include<avr/interrupt.h>
#include<util/delay.h>
 
int main()
{
    unsigned char Light = 0 ;
    DDRB=0x10;
    TCCR0=0x71;
    TCNT0=0;
    while(1)
    {
        for(Light=0;Light<255;Light++)
        {
            OCR0=Light;
            _delay_ms(10);
        }
        for(Light=255;Light>0;Light--)
        {
            OCR0=Light;
            _delay_ms(10);
        }
    }
    return 0;
}
 
cs

8 PWM 출력값을 받기위해 PORTB의 4번핀을 출력으로 사용

9 TCCR : 7번비트 부터 0번비트까지  FOC, WGM0, COM1, COM0, WGM1, CS2, CS1, CS0 을 설정 할 수 있는데 CS는 분주기 WGM은 모드를 설정 하는 것이다.

8비트 타이머(0,2)의 설정

 WGM1

WGM0 

 Mode Name

설명 

 0

 0

 Normal mode

 TCNT값을 조정하여 TCNT가 255일때 인터럽트가 발생

 0

 1

CTC mode 

 TCNT가 특정 값에 도달하면 인터럽트 발생

 1

 0

 Fast PWM mode

 특정 값, 255일때 인터럽트 발생

 1

 1

 PC PWM mode

 0->255 업카운팅 255->0 다운카운팅 COM1,0에 따라 OCR가 업카운팅 or 다운카운팅일때 값이 일치하면 인터럽트

 

따라서 지금은 PC PWM mode를 사용하고 있으며 COM1,0도 1 1 이여서 업카운팅일때 인터럽트가 발생한다.


10 카운트 되는 것을 0으로 초기화

15,20 OCR의 값을 변경함에 따라 PWM값을 조정한다.

+ Recent posts