160 likes | 426 Views
- 유비쿼터스 9 조 -. DSP 를 이용한 디지털 신호 발생기 - 유비쿼터스 응용설계 -. 김도윤 (2003731105) 박종국 (2003731084) 이현승 (2003731088) 김숙희 (2005730134). Contents. 설계 목표 달성. 구 현 방 법. Hardware 구 성. 출력파형사진. Trouble Shooting. 조원 및 역할 분담. 설계목표 달성. 1) 3 가지 이상의 파형을 발생시킨다 . 정현파 , 삼각파 , 톱니파
E N D
-유비쿼터스9조- DSP를 이용한 디지털 신호 발생기 - 유비쿼터스 응용설계 - 김도윤(2003731105) 박종국(2003731084) 이현승(2003731088) 김숙희(2005730134)
Contents 설계 목표 달성 구 현 방 법 Hardware 구 성 출력파형사진 Trouble Shooting 조원 및 역할 분담
설계목표 달성 1) 3가지 이상의 파형을 발생시킨다. 정현파, 삼각파, 톱니파 2)출력 전압과 주파수 범위를 디지털로 가변 가능 키보드로 일정치 가변 3)원격에서 조정 가능 RS232 통신을 사용한 원격 조정
구현 방법 ◎정현파 파형 interrupt void cpu_timer0_isr(void) if(wave==1) {if(++idx >= ARRAY_LEN) idx = 0; sv[idx] =sin(freq*PI*idx/(ARRAY_LEN-1)) * amp + offset; out_dac(0,sv[idx]);}
구현 방법 ◎정현파 파형 void main(void) if(rd=='1') {freq = freq + 2;wave=1; if(freq>=100) {freq = 100;} if(rd=='2') {freq = freq - 2;wave=1;} if(freq>=100) {freq = 100;} if(rd=='3') {amp = amp +100;wave=1;} if(amp>=2047) {amp = 2047;} if(amp<=1000) {amp = 1000;} if(rd=='4') {amp = amp -100;wave=1;} if(amp>=2047) {amp = 2047;} if(amp<=1000) {amp = 1000;} if(rd=='5') {offset=offset+100;wave=1;} if(offset>=2048) {offset = 2048;} if(offset<=1000) {offset = 1000;} if(rd=='6') {offset = offset 100;wave=1;} if(offset>=2048) {offset = 2048;} if(offset<=1000) {offset = 1000;} if(wave==1){time0=1000;}
구현 방법 ◎삼각파 interrupt void cpu_timer0_isr(void) else if(wave==3) {if(up_down==0) {tcnt0++; if(tcnt0==4096){up_down=1;}} if(up_down==1) {tcnt0--; if(tcnt0==0){up_down=0;}} out_dac(0,tcnt0); void main(void) time0=time + duty; if(time0==0){time0=1500;} ConfigCpuTimer(&CpuTimer0, 150,time0); if(rd=='a'){wave=3;time=1000;duty=0;} if(rd=='s'){duty = duty + 50; wave=3; } if(rd=='d'){duty = duty - 50; wave=3; }
구현 방법 • 톱니파 출력 • mcnt를 이용하여 구현. • interrupt void cpu_timer0_isr(void) • st = mcnt * i • else if(wave==2) • {out_dac(0,st);} • void main(void) • {if(rd=='q'){wave=2;time=1000;duty=0;} • if(rd=='w'){wave=2;i = i + 1;} • if(rd=='e'){wave=2;i = i - 1;}}
구현 방법 • LCD 출력 • void main(void) • while(1) • { mcnt++; • if(wave==1){ • lcd_gotoxy(0,0); • lcd_putc('s'); • lcd_putc('i'); • lcd_putc('n'); • lcd_putc('e'); • lcd_putc('w'); • lcd_putc('a'); • lcd_putc('v'); • lcd_putc('e');} if(wave==2) {lcd_gotoxy(0,0); lcd_putc('s'); lcd_putc('t'); lcd_putc('w'); lcd_putc('a'); lcd_putc('v'); lcd_putc('e'); lcd_putc('.'); lcd_putc('.');} if(wave==3) {lcd_gotoxy(0,0); lcd_putc('t'); lcd_putc('r'); lcd_putc('i'); lcd_putc('a'); lcd_putc('n'); lcd_putc('g'); lcd_putc('l'); lcd_putc('e');}
구현 방법 • 정현파 출력 변경 범위
구현 방법 • 삼각파 톱니파 주파수 변경 범위
출력 파형 ◎
Hardware 구성 ◎ 컴퓨터 키보드로 원격 제어(RS-232)
Trouble Shooting ◎ 변수 값의 지정 §rd 값으로 파형의 종류와 값들을 바꿔주려고 했음 값들을 바꿔 줄 때 파형의 종류도 바뀌는 문제점 발생 wave 값을 따로 지정해 주어 rd 값을바꾸어 주어도 파형이 유지 {else if(wave==2} if(rd=='w'){wave=2;i = i + 10;} {out_dac(0,st);} if(rd=='e'){wave=2;i = i - 10;}
Trouble Shooting ◎ 변수 변경값 변수 변경 값을 정할 때 적당한 값을 구하기가 어려움 아날로그 값의 출력 한계 4.095V 를 염두 하여 계산 오실로 스코프로 측정을 해보면서 적당한 값을 산출해냄