로그인 | 회원가입 | 주문 조회
총 10,748개의 질문이 있습니다.
번호 제목 작성자 등록일 조회
1043 답변완료serialCom 자료좀 받을수 있을까요? 김호민 2008-05-20 2,017
CD에 자료중에 SerialCom이라는 실행파일이 있는데요 이걸 조금 수정해서 사용할려고 하는데 소스파일까지 같이해서 받아볼수있을까요?
관리자 답변 N.T.C · 2008-05-20
안녕하세요? 고객님, 예전에 한세대 강의할 때 학생이 짯던 소스인데, 현재 소스는 없네요. 하지만, 그걸 기반으로 만들었던 비슷한 툴은 아직 소스가 남아 있어서, 올려 드립니다. 참고하세요. 감사합니다. >CD에 자료중에 SerialCom이라는 실행파일이 있는데요 > >이걸 조금 수정해서 사용할려고 하는데 > >소스파일까지 같이해서 받아볼수있을까요?
1042 답변완료안녕하세요 질문있습니다. 김동수 2008-05-20 1,969
안녕하세요 8535를 이용해서 공학설계작품을 만들어보려고 합니다. DC 모터 구동모듈 (Dual 2A) 모델 AM-DC2-2D 제조사 N.T.C 가격 22,000원 이 모델을 8535보드와 연결해서 선풍기를 제작하고자 하는데요, 온도센서를 이용해서 일정온도 이상이면 돌아가고 일정온도 사이에 도달하면 멈추도록 만들고 싶습니다. 위의 DC구동모듈의 경우 L298이 사용되는데 이는 듀얼모델로 2개의 모터를 작동시키는데 필요한거라고 알고 있습니다. 하지만 하나만 사용해도 가능한건가요? 만약 안된다면 모터를 2개를 연결해서 사용할 수 밖에 없겠죠; 일반적으로 8535를 가지고 DC를 제어할때는 BA6208을 많이 사용한다고 들었습니다. BA6208에서 2,3번핀과 PD4,7을 연결하고 7,8번핀을 모터로 연결하며, 5,6번핀을 VCC로 연결한다는 자료를 보았는데요, 만약 단지 선풍기가 돌아가고 안돌아가는것만 한다면 굳이 PWM제어가 필요 없을가요? 공부하는 겸해서 PWM제어를 활용해 보려고 하는데요, 단지 회로는 위에 적은 것처럼 8535와 BA6208 - DC모터 3개를 연결만 하면 되는지 궁금합니다. 노이즈제거도 전혀 필요 없는건지도 궁금하구요... 추가 질문으로는 BA6208에서 5,6번핀을 저항이나 C없이 바로 VCC로 연결한다면 어떤 영향이 있을지도 궁금합니다. 그리고 귀사의 AM-CD2L이나 아니면 DC모터제어모듈을 가지고 제작을 한다면 8535보드와 어떻게 연결이 가능한지 궁금하며, 만약에 구입한다면 회로도도 볼 수 있을지 궁금합니다. 혹 다른방법으로 8535->DC모터 제어로 선풍기를 만들 방법이 있다면 조언 부탁드리겠습니다. 귀사의 번영을 진심으로 기원합니다.
관리자 답변 N.T.C · 2008-05-20
안녕하세요? 고객님, 선풍기를 만들고자 하는 의도는 좋은 접근 같습니다. 점점 더워지고 있는 데, 시원한 프로젝트가 될 것 같네요.^^ 우선, 모터의 용량에 따라 모터 드라이버를 선택하시는 것이 좋습니다. 모터가 소형이라 적은 전류(200mA) 이내 정도를 사용하신다면 당연히 BA6208을 이용한 AM-CD2L 같은 드라이버를 사용하시는 것이 좋겠지만, 모터가 조금만 커져도 전류를 1A나 2A 정도씩 많이 먹게 됩니다. 그럴 경우, L298을 이용한 모터 드라이버(예:AM-DC2-2D)나 FET 등을 써서 만들어 주셔야 하구요. 모터를 이용한 경우 당연히 주변에 아날로그가 있을 경우 노이즈 문제가 발생할 수 있으므로, 특히 브러시모터의 경우 브러시 마찰로 인한 불꽃이 원인이 될 수도 있고, 갑작스런 로드 변화가 원인이 되어 임피던스 변화로 인한 노이즈가 될 수도 있습니다. 따라서, 노이즈가 중요한 원인이라면, 제거를 해 주셔야 겠구요. 또한, PWM은 속도를 서서히 줄이고 서서히 빠르게 하는 데 좋을 것 같네요. 하지만, 학부의 졸업논문 수준에서는 하등의 문제가 되지 않을 것이라 생각됩니다. BA6208로 하실 경우, 너무 작은 모터를 쓰게 되지 않을까요? 저희 드라이버인 L298을 이용한 드라이버의 경우 회로 공개는 되지 않구요. L298 칩 데이터시트를 보시면 참고 회로도가 나와 있으니 참고하시기 바랍니다. 그리고, 저희 모터 드라이버의 경우, 사용할 수 있는 예제 소스가 자료실->공개자료실에 공개되어 있습니다. 참고하세요. 감사합니다. >안녕하세요 > >8535를 이용해서 공학설계작품을 만들어보려고 합니다. > >DC 모터 구동모듈 (Dual 2A) >모델 AM-DC2-2D >제조사 N.T.C >가격 22,000원 > >이 모델을 8535보드와 연결해서 > >선풍기를 제작하고자 하는데요, > >온도센서를 이용해서 일정온도 이상이면 돌아가고 > >일정온도 사이에 도달하면 멈추도록 만들고 싶습니다. > >위의 DC구동모듈의 경우 L298이 사용되는데 이는 듀얼모델로 > >2개의 모터를 작동시키는데 필요한거라고 알고 있습니다. > >하지만 하나만 사용해도 가능한건가요? > >만약 안된다면 모터를 2개를 연결해서 사용할 수 밖에 없겠죠; > >일반적으로 8535를 가지고 DC를 제어할때는 > >BA6208을 많이 사용한다고 들었습니다. > >BA6208에서 2,3번핀과 PD4,7을 연결하고 > >7,8번핀을 모터로 연결하며, > >5,6번핀을 VCC로 연결한다는 자료를 보았는데요, > >만약 단지 선풍기가 돌아가고 안돌아가는것만 한다면 > >굳이 PWM제어가 필요 없을가요? > >공부하는 겸해서 PWM제어를 활용해 보려고 하는데요, > >단지 회로는 위에 적은 것처럼 8535와 BA6208 - DC모터 3개를 > >연결만 하면 되는지 궁금합니다. > >노이즈제거도 전혀 필요 없는건지도 궁금하구요... > > > >추가 질문으로는 BA6208에서 5,6번핀을 저항이나 C없이 바로 VCC로 연결한다면 어떤 영향이 있을지도 궁금합니다. > >그리고 귀사의 AM-CD2L이나 아니면 DC모터제어모듈을 가지고 제작을 한다면 > >8535보드와 어떻게 연결이 가능한지 궁금하며, 만약에 구입한다면 회로도도 > >볼 수 있을지 궁금합니다. > >혹 다른방법으로 8535->DC모터 제어로 선풍기를 만들 방법이 있다면 조언 > >부탁드리겠습니다. > > >귀사의 번영을 진심으로 기원합니다. > >
1041 답변완료atmega128 pro 완제품은요.. 이병헌 2008-05-19 1,755
LCD 연결을 어떻게 해야 하나요?? 완전히 초보인데다가 사용방법을 잘 몰라서 다른 분들이 써 놓은 질문, 답변들을 봐도 잘 모르겠네요;; 참... 자료실에 lcd관련 자료들이 다운이 되지 않아요 ㅠㅠ
관리자 답변 N.T.C · 2008-05-19
안녕하세요? 고객님, 텍스트 LCD 보드를 말씀하시는 것 같네요. 기존 자료실의 예제 소스에 보시거나, 킷트 구매시 들어 있던 CD의 KD-128PRO 킷트 폴더의 example을 보시면 LCD 관련 소스가 있구요. 참고하시면 됩니다. 그리고, 강좌는 본 홈페이지의 HOME에 보시면 왼쪽 중간쯤에 NEWS가 있습니다. 거기 보시면 강좌 다운직접 받는 링크가 공개되어 있으니 참고하시기 바랍니다. 감사합니다. >LCD 연결을 어떻게 해야 하나요?? >완전히 초보인데다가 사용방법을 잘 몰라서 >다른 분들이 써 놓은 질문, 답변들을 봐도 잘 모르겠네요;; > >참... 자료실에 lcd관련 자료들이 다운이 되지 않아요 ㅠㅠ
1040 답변완료KD-128-pro 타이머 1 인터럽트 질문 입니다. 최성욱 2008-05-19 1,978
제가 초음파 센서를 구동하려고 하는데요. 거리를 최대한 정밀하게 측정하기 위해 srf-04 대신에 다른 센서를 사용하고 있습니다. 그 센서의 스펙은 40Hz의 입력 펄스가 들어가면 rising edge에서 초음파를 송신하고 수신 시 5V의 출력 전압이 나옵니다. 저는 PORTD의 6번 핀(0번 부터 시작) T1 과 위의 수신 출력 핀을 연결하여, 5V 신호의 rising edge를 검출하여 타이머 1 인터럽트를 쓰려 합니다. 소스는 전에 8535로 srf-04를 사용해본적이 있어서 그걸 변형해서 만든 겁니다. #include <mega128.h> #include <delay.h> #include <stdio.h> void bit_clock(void); // bit_clock 함수 선언 int cnt=0; float d; void main(void) // main 함수 정의 { DDRD=0xbf; PORTD=0x40; UCSR0A=0x00; // USART 초기화 UCSR0B=0x08; // 송신 enable UCSR0C=0x86; // 전송 방식 정의 UBRR0H=0x00; UBRR0L=0x33; // Baud rate : 19.2k TCCR0 = 0x01; // 1분주 : 16MHz TCCR1B = 0x00; // Timer1 정지 TIMSK = 0x05; // Timer 0,1 overflow interrupt Enable #asm("sei") // 전역 interrupt Enable while(1) { // 무한 반복 bit_clock(); // bit_clock 함수 호출 (clock 발생) TCNT0 = 0x00; // 0xff 을 넘으면 overflow 발생 cnt=0; TCNT1H = 0xff; // 2 clock 마다 1씩 증가 TCNT1L = -8; /*8번의 수신 신호 감지 시 타이머 1 오버 플로우 인터럽트(정확성을 위해)*/ TCCR1B = 0x07; // 외부클럭 사용 Rising Edge delay_ms(500); // 0.5초 delay } } interrupt [TIM0_OVF] void timer0_ovf_isr(void) // Timer0 ISR { cnt++; } interrupt [TIM1_OVF] void timer1_ovf_isr(void) { (float)d = (((256*(float)cnt+TCNT0)/16000000)*34000)/2; printf("\\r distace = %.3f Cm \\n", (float)d); TCCR1A=0X00; TCCR1B=0x00; } void bit_clock(void) { int m; for(m=0;m<8;m++) //8번 송신 { PORTD.4=1; delay_ms(3); PORTD.4=0; delay_ms(30); } } 소스는 코드비전으로 코딩한 것 입니다. 맨 처음에 포트 설정 부분에서 PORD=0x00 을 하면 포트 D의 6번 핀(T1) 출력이 1.6V 정도 나오게 되서 외부 클럭의 rising edge 검출 시 오류가 뜨는 것을 확인했습니다. (예를 들면 수신 신호가 없는데도 인터럽트가 걸리는 등) 그래서 위에 처럼 PORD=0x40 으로 설정하니 T1 포트에서 5V가 출력되어 외부 클럭을 인식하지 못하는 것 같았습니다. 타이머 1 또한 외부 클럭을 받으려면 외부 인터럽트 처럼 active low로 동작 시켜야 하는 건가요? 그러면 외부 회로를 따로 설계해야 되는 건지 궁금합니다. 그리고 혹시 외부 인터럽트를 대기 시 0V로 있다가 active high로 쓸 수 있는 방법은 없나요? 제가 128을 처음 사용해 보는거라 모르는게 너무 많네요. 답변 부탁드리겠습니다.
관리자 답변 N.T.C · 2008-05-20
안녕하세요? 고객님, 저희 제품을 이용하여 주셔서 감사드립니다. 고객님은 KD-128PRO 킷트의 메인보드 즉, AVR MEGA 128 개발보드(AB-M128Pro-A)를 이용하고 계신 것 같네요. 그 보드의 경우, R104(텍트스위치용 저항)가 4.7k로 풀다운 되어 있어서 전압이 약간 떠 있는 것 같네요. 그 저항을 끊으시고 사용하시면 이상 없을 것 같구요. AVR MEGA 128 개발보드(소형)AB-M128-B 보드를 이용하시게 되면, 전 포트 풀다운이나 풀업이 전혀 걸려 있지 않아서, 그런 용도로 편리하게 이용하실 수 있습니다. 참고하시기 바랍니다. 감사합니다. >제가 초음파 센서를 구동하려고 하는데요. >거리를 최대한 정밀하게 측정하기 위해 srf-04 대신에 다른 센서를 사용하고 있습니다. 그 센서의 스펙은 40Hz의 입력 펄스가 들어가면 rising edge에서 초음파를 송신하고 수신 시 5V의 출력 전압이 나옵니다. >저는 PORTD의 6번 핀(0번 부터 시작) T1 과 위의 수신 출력 핀을 연결하여, 5V 신호의 rising edge를 검출하여 타이머 1 인터럽트를 쓰려 합니다. >소스는 전에 8535로 srf-04를 사용해본적이 있어서 그걸 변형해서 만든 겁니다. > >#include <mega128.h> >#include <delay.h> >#include <stdio.h> > >void bit_clock(void); // bit_clock 함수 선언 >int cnt=0; >float d; > >void main(void) // main 함수 정의 >{ > DDRD=0xbf; > PORTD=0x40; > > UCSR0A=0x00; // USART 초기화 > UCSR0B=0x08; // 송신 enable > UCSR0C=0x86; // 전송 방식 정의 > UBRR0H=0x00; > UBRR0L=0x33; // Baud rate : 19.2k > > TCCR0 = 0x01; // 1분주 : 16MHz > TCCR1B = 0x00; // Timer1 정지 > TIMSK = 0x05; // Timer 0,1 overflow interrupt Enable > #asm("sei") // 전역 interrupt Enable > > > > while(1) > { // 무한 반복 > bit_clock(); // bit_clock 함수 호출 (clock 발생) > > TCNT0 = 0x00; // 0xff 을 넘으면 overflow 발생 > cnt=0; > TCNT1H = 0xff; // 2 clock 마다 1씩 증가 > TCNT1L = -8; /*8번의 수신 신호 감지 시 타이머 1 > 오버 플로우 인터럽트(정확성을 위해)*/ > TCCR1B = 0x07; // 외부클럭 사용 Rising Edge > delay_ms(500); // 0.5초 delay > } >} > >interrupt [TIM0_OVF] void timer0_ovf_isr(void) // Timer0 ISR >{ > cnt++; >} > >interrupt [TIM1_OVF] void timer1_ovf_isr(void) >{ > (float)d = (((256*(float)cnt+TCNT0)/16000000)*34000)/2; > printf("\\r distace = %.3f Cm \\n", (float)d); > TCCR1A=0X00; > TCCR1B=0x00; >} > >void bit_clock(void) >{ > int m; > for(m=0;m<8;m++) //8번 송신 > { > PORTD.4=1; > delay_ms(3); > PORTD.4=0; > delay_ms(30); > } >} > >소스는 코드비전으로 코딩한 것 입니다. >맨 처음에 포트 설정 부분에서 PORD=0x00 을 하면 포트 D의 6번 핀(T1) 출력이 1.6V 정도 나오게 되서 외부 클럭의 rising edge 검출 시 오류가 뜨는 것을 확인했습니다. (예를 들면 수신 신호가 없는데도 인터럽트가 걸리는 등) >그래서 위에 처럼 PORD=0x40 으로 설정하니 T1 포트에서 5V가 출력되어 외부 클럭을 인식하지 못하는 것 같았습니다. >타이머 1 또한 외부 클럭을 받으려면 외부 인터럽트 처럼 active low로 동작 시켜야 하는 건가요? 그러면 외부 회로를 따로 설계해야 되는 건지 궁금합니다. >그리고 혹시 외부 인터럽트를 대기 시 0V로 있다가 active high로 쓸 수 있는 방법은 없나요? >제가 128을 처음 사용해 보는거라 모르는게 너무 많네요. >답변 부탁드리겠습니다. >
1039 답변완료usbisp 사용질문입니다. tiny2313은 지원이 안되는 것인가요? 서권명 2008-05-19 1,705
안녕하세요. 질문이 있어 글을 씁니다. 이번에 usbisp을 이용해서, tiny2313을 사용하게 되었는데요. 메뉴얼에 나와있는 방법을 모두 따라 했습니다. 하지만 모두, 게시글과 같은 avr studio에 1번과 같은 에러메세지(1/4 clock)가 발생되어 이렇게 글을 올립니다. 혹시나 해서 똑같이 mega128로 test를 해보았는데 이상없이 동작이 가능합니다. 왜 그런지 알수가 없어서 이렇게 질문드립니다.
관리자 답변 N.T.C · 2008-05-20
안녕하세요? 고객님, 고객님의 질문을 받고서 저희가 안될리가 없지만, Tiny2313으로 테스트 보드를 제작을 직접 해 보았습니다. 테스트 해보았는 데 이상 없이 잘 됩니다. 고객님의 보드가 잘못 된 거 같네요. 다음부터는 저희 제품 아닌 경우 일단, 직접 제작하신 보드나 다른 보드가 이상할 수 있음을 먼저 생각해 주시기 바랍니다. 많은 테스트 끝에 만든 제품이라 손때가 많이 묻은 제품입니다. 아껴주세용. 감사합니다. >안녕하세요. >질문이 있어 글을 씁니다. >이번에 usbisp을 이용해서, tiny2313을 사용하게 되었는데요. >메뉴얼에 나와있는 방법을 모두 따라 했습니다. 하지만 모두, 게시글과 같은 avr studio에 1번과 같은 에러메세지(1/4 clock)가 발생되어 이렇게 글을 올립니다. > >혹시나 해서 똑같이 mega128로 test를 해보았는데 이상없이 동작이 가능합니다. >왜 그런지 알수가 없어서 이렇게 질문드립니다. >
1038 답변완료KD-128Pro-c에 대해 물어볼께 있는데요... 배성욱 2008-05-19 1,700
안녕하세요~~이번에 킷트를 구입하게 됐는데요~~ 프로그램 작업할때 코드비전으로 작업을 할수 있는지 궁금해서 글을 씁니다..
관리자 답변 N.T.C · 2008-05-19
안녕하세요? 고객님, 저희 제품을 이용하여 주셔서 감사드립니다. 코드 비전으로도 작업이 가능하구요. 구입하시려고 하는 킷트는 프린터 포트 방식(LPT) AD-ISPPRO를 포함하고 있습니다. 가장 호환성이 뛰어난 방식이지요. 하지만, 노트북의 경우에는 프린터 포트가 없는 노트북이 많아서, USBISP를 많이 찾으시는 데, 사용하시는 컴파일러에 따라서 USBISP를 지원하지 않는 경우도 있습니다. 예를 들어서, 코드비전 같은 경우에는 v1.24 이상을 지원하구요. 코드비전 자체가 USBISP용 프로토콜인 STK500에 대해서, 예전버전에서 지원되지 않는 부분이 코드비전 컴파일러 제조사인 HPINFOTECH에서 밝히고 있습니다. 아래 링크를 참고하시구요. 따라서, V1.24.6 Commercial Release 이상 버전에서 STK500 프로토콜을 이용하여 USBISP로 프로그램 라이트가 가능하시구요. 링크를 찾아보면, V1.24.7F는 주파수가 일부 셋팅되지 않는 버그가 있는 것으로 확인하실 수 있구요. 그래서, V1.24.7F 도 지원되지 않습니다. 그 버전을 제외한 V1.24.6 버전 이상을 구하셔서 사용하셔야 할 것 같습니다. - 아래 - http://www.hpinfotech.ro/html/cvavr_history.htm USBISP는 STK500이라는 프로토콜을 사용합니다. 따라서, STK500을 지원하는 컴파일러나 다운로더가 사용 가능합니다. 예를들어서, AVR Studio, ICCAVR, IARC, Code Vision 등입니다. AVR Studio, ICCAVR, IARC, Code Vision(v1.24 이상) 등을 이용해 주시기 바랍니다. 사용법은 자료실의 메뉴얼에 나와 있습니다. >안녕하세요~~이번에 킷트를 구입하게 됐는데요~~ >프로그램 작업할때 코드비전으로 작업을 할수 있는지 궁금해서 글을 씁니다..
1037 답변완료Comport관련 ATmega 제어 관련 질문입니다 설경환 2008-05-19 1,771
안녕하세요.. 스텝모터를 메인PC의 조작에따라 양방향 회전 또는 정지 하고자 하는데요. 서보모터 같은 경우 메인 PC에서 각도값을 입력하면 그각도로 회전 하는것으로 알고있습니다. 이것은 곧 ATmega에 들어가있는 Source에 comport를 활용하여 변수를 보내줄수있는 것으로 보이는데요. 지금 저는 USB-uart를 활용해서 ATmega로 부터 값을 전해받을수는 있으나, 메인PC에서 ATmega로는 값을 보내지는 못하고 있어서 제어는 불가능하고 초기코딩시의 while문 만 무한 반복 하고 있어요.. 메인PC에서 ATmega로 comport를 통해 신호를 보낼수 있는지요? 있다면 어떤장비를 활용해야 하는지요?
관리자 답변 설경환 · 2008-05-19
아 방금 자료실서 Scanf자료를 보았는데요.. 제가 방금 질문한 내용이 있네요.. 그걸 USB-uart장비로 할수 있을것 같아보이는데 맞는지요?? 그리고 uart0번으로 RX,TX역할을 같이 하고, 동시 타이밍에 할수도 있는건지요?? >안녕하세요.. >스텝모터를 메인PC의 조작에따라 양방향 회전 또는 정지 하고자 하는데요. > >서보모터 같은 경우 메인 PC에서 각도값을 입력하면 그각도로 회전 하는것으로 알고있습니다. >이것은 곧 ATmega에 들어가있는 Source에 comport를 활용하여 변수를 보내줄수있는 것으로 보이는데요. >지금 저는 USB-uart를 활용해서 ATmega로 부터 값을 전해받을수는 있으나, 메인PC에서 ATmega로는 값을 보내지는 못하고 있어서 제어는 불가능하고 초기코딩시의 while문 만 무한 반복 하고 있어요.. 메인PC에서 ATmega로 comport를 통해 신호를 보낼수 있는지요? >있다면 어떤장비를 활용해야 하는지요? >
1036 답변완료소스좀 봐주세요^^; 강희근 2008-05-19 1,813
안녕하세요 얼마전에 소스 문의 한번 드렸었는데요 adc를한번 넣어봤는데 제가 이해를 못해서 이상하게 소스를 짠거 같더라구요 틀린 부분 지적좀 부탁드립니다 기한은 다가오고 실력도 없으면서 마음만 앞서네요^^;; 죄송합니다 ㅠㅠ // ----------- Include Header files -------------- // #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> // ---------------- Define Macro ----------------- // #define ON 1 #define OFF 0 #define HIGH 1 #define LOW 0 // ------------ Global Variables ----------------- // unsigned char pulse_count; unsigned char pulse; int ten_ms; int ten_sec; // ----------- Declare Fuctions ----------------- // void MCU_init(void); void INTERRUPT_init(void); void UART_init(void); void TIMER0_init(void); void adc_init(void); void adc_start(void); void adc_stop(void); void adc_data (unsigned char mux); void TX_char (unsigned char data); void TX_string (unsigned char *string); unsigned char RX_char(void); void delay_us(unsigned char time_us); void delay_ms(unsigned int time_ms); // ---- EXTERNAL INTERRUPT 4 SERVICE ROUTINE ---- // SIGNAL (SIG_INTERRUPT2) { cli(); //if ( pulse == HIGH ) //{ if (ten_sec == OFF) { pulse_count++; } //pulse = LOW; //} //else if ( pulse == LOW ) //{ // pulse = HIGH; delay_ms(10); //} sei(); } // ------ TIMER0 COMPARE INTERRUPT SERVICE ROUTINE ------ // SIGNAL (SIG_OVERFLOW0) // It occurs every 1/100 second. { if (ten_sec == OFF) { ten_ms++; } if ( ten_ms == 1000 ) { ten_sec = ON; } TCNT0=0xff-0x9c+1; } // --------------- MAIN -------------------------- // int main (void) { // Local variables unsigned char led = 0xff; unsigned char data = 0x00; unsigned char data1 =0x00; cli(); // disable interrupt // initialize registers MCU_init(); INTERRUPT_init(); UART_init(); TIMER0_init(); // initialize Global variables pulse = LOW; pulse_count = 0; ten_ms = 0; ten_sec = OFF; sei(); // enable interrupt // Infinite loop while(1) { //TX_char('a'); if ( ten_sec == ON) { cli(); // disable interrupt // Display LED if ( pulse_count < 10 ) led = 0x01; else if ( pulse_count >= 10 && pulse_count <=20) led = 0x02; else if ( pulse_count > 20 ) led = 0x03; // Send pulse_count to UART TX_char(pulse_count); ten_ms = 0; pulse_count = 0; ten_sec = OFF; sei(); // enable interrupt } PORTC = (~led); delay_ms(300); PORTC = 0xff; delay_ms(300); } return 0; } // ----------------- Fuctions --------------------- // // ------------- Initialize Fuctions -------------- // void MCU_init (void) { // For Interrupt PORTD DDRD = 0x00; PORTD = 0xff; // LED DDRC = 0xff; PORTC = 0xff; } void INTERRUPT_init(void) { // Initialize Interrupt registers //EICRA = 0x00; EICRA = 0x30; //EICRB = 0x01; EICRB = 0x00; //EIMSK = 0x10; //EIMSK = 0x01; EIMSK = 0x04; EIFR = 0x00; } void UART_init(void) { // Initialize UART UBRR0H = 0; // UBRR0L = 51; UCSR0A = 0x00; // Asynchronous Normal Mode UCSR0B = 0x18; // Rx/Tx Enable UCSR0C = 0x06; // Parity: none, Stop Bit: 1, Data Bit: 8 } void TIMER0_init(void) { MCUCR=0x00 TCCR0=0x07; // 1024 prescaler TCNT0=0xff-0x9c+1; //10ms TIMSK=0x01; TIFR=0x00; } // ----------------- adc --------------------------- void adc_init(void) { ADCSRA = 0x00; //disable adc ADMUX = 0x00; //select adc input 0 } void adc_start(void) { ADMUX = 0x00; ADCSRA = 0x07; //Adc disable } void adc_data(unsigned char mux) { unsigned int value = 0x0000; ADCSRA &=0x3f; //Adc_disable, ADSC:0 ADMUX |=mux; ADCSRA |=0xC7; //Adc_Enable delay(1); value = (ADCL)&0x00ff; value |= (ADCH<<8); value &= 0x03ff; delay(4); return value; } // ----------------- Transmit charater function ----------------- // void TX_char (unsigned char data) { while((UCSR0A & 0x20) == 0x00); UDR0 = data; } // ----------------- Transmit String funtion ---------------------- // void TX_string (unsigned char *string) { while(*string != '\\0') { TX_char(*string); string++; } } // --------------- Recieve character fuction ---------------------- // unsigned char RX_char(void) { while ((UCSR0A & 0x08) == 0x00); return UDR0; } // --------------- Delay fuctions -------------------------------- // void delay_us(unsigned char time_us) // Time delay for 1us (1MHz) { register unsigned char i; for(i=0; i<time_us; i++) // 4 cycle + { asm volatile(" PUSH R0 "); // 2 cycle + asm volatile(" POP R0 "); // 2 cycle + asm volatile(" PUSH R0 "); // 2 cycle + asm volatile(" POP R0 "); // 2 cycle + asm volatile(" PUSH R0 "); // 2 cycle + asm volatile(" POP R0 "); // 2 cycle = 16cycle = 1us } // for 16MHz } void delay_ms(unsigned int time_ms) // Time delay for 1ms { register unsigned int i; for(i=0; i<time_ms; i++) { delay_us(250); // 250us + delay_us(250); // 250us + delay_us(250); // 250us + delay_us(250); // 250us = 1ms } } // ----------------------- END OF ALL SOURCE --------------------- //
관리자 답변 N.T.C · 2008-05-19
안녕하세요? 고객님, 저희 제품을 사용해 주셔서 감사드립니다. 그런데, 저희가 제공하는 소스나 제품 외의 문의까지는 해 드리기 어렵겠습니다. 저희 회사가 소스 수정까지 모두 해드릴 수는 없습니다. 저희 회사에서 제공하고 있는 자료실->기존자료실의 ICCAVR을 이용한 ADC 소스를 참고해 주시기 바랍니다. 감사합니다. >안녕하세요 얼마전에 소스 문의 한번 드렸었는데요 >adc를한번 넣어봤는데 제가 이해를 못해서 이상하게 소스를 짠거 같더라구요 >틀린 부분 지적좀 부탁드립니다 기한은 다가오고 실력도 없으면서 마음만 >앞서네요^^;; 죄송합니다 ㅠㅠ > >// ----------- Include Header files -------------- // >#include <avr/io.h> >#include <avr/interrupt.h> >#include <avr/signal.h> > >// ---------------- Define Macro ----------------- // >#define ON 1 >#define OFF 0 >#define HIGH 1 >#define LOW 0 > >// ------------ Global Variables ----------------- // >unsigned char pulse_count; >unsigned char pulse; >int ten_ms; >int ten_sec; > >// ----------- Declare Fuctions ----------------- // > >void MCU_init(void); >void INTERRUPT_init(void); >void UART_init(void); >void TIMER0_init(void); > >void adc_init(void); >void adc_start(void); >void adc_stop(void); >void adc_data (unsigned char mux); > >void TX_char (unsigned char data); >void TX_string (unsigned char *string); >unsigned char RX_char(void); >void delay_us(unsigned char time_us); >void delay_ms(unsigned int time_ms); > > > > >// ---- EXTERNAL INTERRUPT 4 SERVICE ROUTINE ---- // > >SIGNAL (SIG_INTERRUPT2) >{ > cli(); > //if ( pulse == HIGH ) > //{ > if (ten_sec == OFF) > { > pulse_count++; > } > //pulse = LOW; > //} > //else if ( pulse == LOW ) > //{ > // pulse = HIGH; > delay_ms(10); > //} > sei(); >} > > > >// ------ TIMER0 COMPARE INTERRUPT SERVICE ROUTINE ------ // > >SIGNAL (SIG_OVERFLOW0) // It occurs every 1/100 second. >{ > if (ten_sec == OFF) > { > ten_ms++; > } > > if ( ten_ms == 1000 ) > { > ten_sec = ON; > } > TCNT0=0xff-0x9c+1; >} > >// --------------- MAIN -------------------------- // > >int main (void) >{ > // Local variables > unsigned char led = 0xff; > unsigned char data = 0x00; > unsigned char data1 =0x00; > > cli(); // disable interrupt > > // initialize registers > MCU_init(); > INTERRUPT_init(); > UART_init(); > TIMER0_init(); > > // initialize Global variables > pulse = LOW; > pulse_count = 0; > ten_ms = 0; > ten_sec = OFF; > > sei(); // enable interrupt > > // Infinite loop > while(1) > { > //TX_char('a'); > > if ( ten_sec == ON) > { > cli(); // disable interrupt > > // Display LED > if ( pulse_count < 10 ) > led = 0x01; > else if ( pulse_count >= 10 && pulse_count <=20) > led = 0x02; > else if ( pulse_count > 20 ) > led = 0x03; > > // Send pulse_count to UART > TX_char(pulse_count); > > ten_ms = 0; > pulse_count = 0; > ten_sec = OFF; > > > sei(); // enable interrupt > } > > PORTC = (~led); > delay_ms(300); > PORTC = 0xff; > delay_ms(300); > > } > > return 0; >} > > > >// ----------------- Fuctions --------------------- // > > >// ------------- Initialize Fuctions -------------- // > >void MCU_init (void) >{ > // For Interrupt PORTD > DDRD = 0x00; > PORTD = 0xff; > > // LED > DDRC = 0xff; > PORTC = 0xff; >} > >void INTERRUPT_init(void) >{ > > // Initialize Interrupt registers > //EICRA = 0x00; > EICRA = 0x30; > //EICRB = 0x01; > EICRB = 0x00; > //EIMSK = 0x10; > //EIMSK = 0x01; > EIMSK = 0x04; > EIFR = 0x00; >} > >void UART_init(void) >{ > // Initialize UART > > UBRR0H = 0; // > UBRR0L = 51; > UCSR0A = 0x00; // Asynchronous Normal Mode > UCSR0B = 0x18; // Rx/Tx Enable > UCSR0C = 0x06; // Parity: none, Stop Bit: 1, Data Bit: 8 >} > >void TIMER0_init(void) >{ > MCUCR=0x00 > TCCR0=0x07; // 1024 prescaler > TCNT0=0xff-0x9c+1; //10ms > TIMSK=0x01; > TIFR=0x00; >} > >// ----------------- adc --------------------------- > >void adc_init(void) >{ > ADCSRA = 0x00; //disable adc > ADMUX = 0x00; //select adc input 0 >} > >void adc_start(void) >{ > ADMUX = 0x00; > ADCSRA = 0x07; //Adc disable >} > >void adc_data(unsigned char mux) >{ > unsigned int value = 0x0000; > ADCSRA &=0x3f; //Adc_disable, ADSC:0 > ADMUX |=mux; > ADCSRA |=0xC7; //Adc_Enable > delay(1); > > value = (ADCL)&0x00ff; > value |= (ADCH<<8); > value &= 0x03ff; > delay(4); > return value; >} >// ----------------- Transmit charater function ----------------- // > >void TX_char (unsigned char data) >{ > while((UCSR0A & 0x20) == 0x00); > UDR0 = data; >} > > >// ----------------- Transmit String funtion ---------------------- // > >void TX_string (unsigned char *string) >{ > while(*string != '\\0') > { > TX_char(*string); > string++; > } >} > > >// --------------- Recieve character fuction ---------------------- // > >unsigned char RX_char(void) >{ > while ((UCSR0A & 0x08) == 0x00); > return UDR0; >} > > >// --------------- Delay fuctions -------------------------------- // > >void delay_us(unsigned char time_us) // Time delay for 1us (1MHz) >{ > register unsigned char i; > > for(i=0; i<time_us; i++) // 4 cycle + > { > asm volatile(" PUSH R0 "); // 2 cycle + > asm volatile(" POP R0 "); // 2 cycle + > asm volatile(" PUSH R0 "); // 2 cycle + > asm volatile(" POP R0 "); // 2 cycle + > asm volatile(" PUSH R0 "); // 2 cycle + > asm volatile(" POP R0 "); // 2 cycle = 16cycle = 1us > } // for 16MHz >} > >void delay_ms(unsigned int time_ms) // Time delay for 1ms >{ > register unsigned int i; > > for(i=0; i<time_ms; i++) > { > delay_us(250); // 250us + > delay_us(250); // 250us + > delay_us(250); // 250us + > delay_us(250); // 250us = 1ms > } >} > > > >// ----------------------- END OF ALL SOURCE --------------------- // > > > >
1035 답변완료스테핑 모터 관련 질문입니다. 설경환 2008-05-19 1,759
스테핑 모터 예제 소스 일부분입니다. while(1){ PORTG++; delay(100); MOTOR_PORT = 0x03; delay(100); MOTOR_PORT = 0x06; delay(100); MOTOR_PORT = 0x0c; delay(100); MOTOR_PORT = 0x09;} 이렇게 구성되어 있는데요. while이 무한 루프라 회전을 계속 적으로 하게 됩니다. 이때 while 문 1회당 stepping 모터는 몇도 회전하게 되나요? 저희 stepping 모터는 산요103H546-0440으로 1스텝당 1.8도로 지정되어 있습니다. 이렇게 되면 while문 1회당 1.8도 씩 회전 하는건지요?? 각도값을 참조 하기 위해 1회의 while문당 회전하는 각도 값이 필요하게 되었습니다. 설명 부탁드립니다.
관리자 답변 N.T.C · 2008-05-19
안녕하세요? 고객님, 요청하신 소스는 2상 여자 소스 중일부이네요. 2상 여자는 스텝당 1.8도씩 회전합니다. 감사합니다. >스테핑 모터 예제 소스 일부분입니다. >while(1){ > PORTG++; > delay(100); > MOTOR_PORT = 0x03; > delay(100); > MOTOR_PORT = 0x06; > delay(100); > MOTOR_PORT = 0x0c; > delay(100); > MOTOR_PORT = 0x09;} >이렇게 구성되어 있는데요. >while이 무한 루프라 회전을 계속 적으로 하게 됩니다. >이때 while 문 1회당 stepping 모터는 몇도 회전하게 되나요? >저희 stepping 모터는 산요103H546-0440으로 1스텝당 1.8도로 지정되어 있습니다. >이렇게 되면 while문 1회당 1.8도 씩 회전 하는건지요?? >각도값을 참조 하기 위해 1회의 while문당 회전하는 각도 값이 필요하게 되었습니다. 설명 부탁드립니다.
1034 답변완료printf에서 %2d를 처리할 수 있는 방법? 한결같이 2008-05-19 1,692
현재 ICC7 를 쓰고 있는데요.. printf 문에서 %d 를 처리할때 자리수를 지정하기 위해 %2d라고 할경우 명령어가 인식하지 않네요 여기저기 찾아봐도 이런얘기는 아무도 문의가 없네요.. 답변바랍니다
관리자 답변 N.T.C · 2008-05-19
안녕하세요? 고객님, ICCAVR에 보면, proect->Option에 보면 target탭에 보면 PRINTF 버전이라고 있습니다. long이나 float로 변경하시고, advanced 쪽에 return stack size를 32이상 (저는 보통 64로 둡니다.) 으로 두시면 사용이 가능할 것 같네요. 풀 펑션을 다 쓰게 되면, 코드 사이즈가 길어지기 때문에 옵션에 따라 사용하고 있습니다. 참고하세요. 감사합니다. >현재 ICC7 를 쓰고 있는데요.. printf 문에서 %d 를 처리할때 자리수를 지정하기 위해 %2d라고 할경우 명령어가 인식하지 않네요 > >여기저기 찾아봐도 이런얘기는 아무도 문의가 없네요.. > >답변바랍니다
1033 답변완료isp 연결조차 안됩니다. am-128pl 김형대 2008-05-19 1,782
AM-128PL 모델을 구입 했는데요.. 전원 을 연결하니까.. powe led 에 불이 들어오고... d201(paq? pao) 여기 led에도 불이 깜빡 깜빡 이더군요.. isp를 연결 하니까.. isp 에서 장치 연결이 잘못되었다는 메세지만 나오는데요.. 제품에 문제 가 있는 게 아닌가요..? 프로그램을 심기도 전에 연결 조차 안되니 황당할 뿐입니다. avr studio에서 frequency 변경 같은것은 다 해봤구요... 빠른 답변 부탁 드려요
관리자 답변 N.T.C · 2008-05-19
안녕하세요? 고객님, 저희 N.T.C 제품을 이용해 주셔서 감사드립니다. 제품에 전원을 꽂으면 전원 LED 켜지고, D201에 깜빡깜빡이는 것은 정상입니다. 제품을 100% 전수검사 하여 내보내기 때문에, 테스트 코드가 들어 있어서, 깜빡이는 것이구요. ISP 연결할 때, 어느 ISP를 쓰셨는 지, 다운로더는 어떤 환경이신지 궁금합니다. 제품 이상은 아닐 것으로 생각되구요. 제품은 테스트 다 되서 나간 것이라, 깜빡인다고 하시니까 연결을 잘 하시면 될 것 같은데, 어떤 환경인지 상세하게 올려 주시면 보다 빠르고 정확하게 도와드릴 수 있을 것 같습니다. 감사합니다. >AM-128PL 모델을 구입 했는데요.. > >전원 을 연결하니까.. powe led 에 불이 들어오고... > >d201(paq? pao) 여기 led에도 불이 깜빡 깜빡 이더군요.. > >isp를 연결 하니까.. isp 에서 장치 연결이 잘못되었다는 메세지만 > >나오는데요.. > >제품에 문제 가 있는 게 아닌가요..? > >프로그램을 심기도 전에 연결 조차 안되니 황당할 뿐입니다. > >avr studio에서 frequency 변경 같은것은 다 해봤구요... > >빠른 답변 부탁 드려요 >
1032 답변완료스텝모터 가감속 방법을 알려주세요 한우용 2008-05-18 2,960
AM-CS2P 사용하고 있습니다. 스텝모터의 가감속을 하고자 하는데 조언 좀 부탁드려요. 완전 초보라서.. 혹시 구동가능한 소스 올려주시면 좋겠습니다. 프로그램으로 가감속 테이블을 작성해야 한다고 들었습니다.
관리자 답변 N.T.C · 2008-05-19
안녕하세요? 고객님, 모터마다 가감속 테이블은 다 다를 수 있습니다. 가감속 테이블을 만들 때 가장 좋은 방법 중 하나는, AM-MS2를 가지고 Function Generator를 물려서 주파수를 조정해 보는 것입니다. 가장 쉽고 빠르게 해 볼 수 있을 겁니다. 일반적으로는 360도 회전한 후에, 속도를 더블로 올려주고 하는 식으로 가속하기도 합니다. 참고하시기 바랍니다. 감사합니다. >AM-CS2P 사용하고 있습니다. >스텝모터의 가감속을 하고자 하는데 조언 좀 부탁드려요. 완전 초보라서.. >혹시 구동가능한 소스 올려주시면 좋겠습니다. >프로그램으로 가감속 테이블을 작성해야 한다고 들었습니다.
1031 답변완료AVR USBISP와 AM-128PRO 연결하는 방법(avr studio)? 김춘년 2008-05-17 2,434
Q&A에서 AVR USBISP 에러와 같이 나타났습니닫.. 그래서..AVR STUDIO 4.13 + sp1 설치하고, 시리얼포트도 장치관리자에 나타나는 포트로 avrstudio에 설정함. 드라이버가 두개가 중복으로 설치되어있는 것입니다.. 그래서 제거하고 다시 부팅해서 드라이버를 설치해도 2개가 설치가 됩니다.. 드라이버 설치시에는 AVR USBISP를 노트북에 연결하고 했습니다. 이번에는 두개가 중복되어 있어도 그냥 해보자고 icc avr 에서 강좌에 있는 것처럼 해도 되지지 않습니다.. avr studio에서는 serial program downing(SPI) 에서 ? 가 있습니다.. 드라이버가 두개가 설치되는 것이 맞지 않나요? 두개중에 하나를 지우면..하드웨어 인식이 안되다고 나오고 합니다.. 사진에 에러화면과 드라이버설치된 목록입니다..
관리자 답변 N.T.C · 2008-05-18
안녕하세요? 고객님, 저희 제품을 이용하여 주셔서 감사드립니다. 두개의 드라이버를 다 제거하신 후에, 다시 해 보시는 것이 좋겠습니다. 잘 안되면 안전모드에서 둘 다 제거한 후에 다시 연결할 때, 자동으로 잡히거나, 아니면, 안잡히면 다시 잡으셔야 할 겁니다. 감사합니다. >Q&A에서 AVR USBISP 에러와 같이 나타났습니닫.. >그래서..AVR STUDIO 4.13 + sp1 설치하고, >시리얼포트도 장치관리자에 나타나는 포트로 avrstudio에 설정함. > >드라이버가 두개가 중복으로 설치되어있는 것입니다.. >그래서 제거하고 다시 부팅해서 드라이버를 설치해도 2개가 설치가 됩니다.. >드라이버 설치시에는 AVR USBISP를 노트북에 연결하고 했습니다. > >이번에는 두개가 중복되어 있어도 그냥 해보자고 >icc avr 에서 강좌에 있는 것처럼 해도 되지지 않습니다.. > >avr studio에서는 serial program downing(SPI) 에서 ? 가 있습니다.. > >드라이버가 두개가 설치되는 것이 맞지 않나요? >두개중에 하나를 지우면..하드웨어 인식이 안되다고 나오고 합니다.. > >사진에 에러화면과 드라이버설치된 목록입니다.. > >
1030 답변완료거리측정기 LCD에 관한 질문입니다. 오창화 2008-05-17 2,227
http://www.newtc.co.kr/board/view.php?id=qna&page=1&sn1=on&divpage=1&sn=on&ss=off&sc=off&keyword=이진한&select_arrange=headnum&desc=asc&no=2217 여기에 있는 소스로 ATMEGA128과 SRF04센서로 거리측정기를 만들었는데 이건 세그먼트에 결과값이 나타나는 소스잖아요... 근데 LCD에 결과값을 나타내고 싶은데 위에 소스에 세그먼트 부분을 없애고 http://www.newtc.co.kr/board/view.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=227 여기에 있는 소스를 그냥 붙여 넣으면 되나요?... 근데 해보았는데 잘 안되네요?... LCD는 lc1621을 사용했습니다. 두 소스를 어떻게 조합해서 ICCAVR에 적어 넣어야 할까요? ICCAVR에 대해 잘 몰라서요... 좋은 답변 부탁드립니다... 그리고 portF에는 SRF04센서를 잘 연결했는데 lc1621의 1번핀을 ATMEGA128의 53번핀, 2번핀-52번핀, 4번핀(RS)-49번핀, 5번핀(R/W)-48번핀, 6번핀(E)-46번핀, 7,8,9,10,11,12,13,14번핀- 61,60,59,58,57,56,55,54번핀에 연결하면 맞는건가요?... 질문이 좀 기네요... 죄송하지만 좋은 답변 부탁드립니다...
관리자 답변 N.T.C · 2008-05-18
안녕하세요? 고객님, segment_data[] 배열을 잘 활용하시면 될 것 같습니다. 거리 데이터가 여기에 최종 들어가게 되므로, distance = segment_data[3]*1000+segment_data[2]*100+segment_data[1]*10+segment_data[0]; 이런 식으로 하셔서, distance 값을 textlcd 쪽으로 뿌려 주시면 될 것 같네요. 감사합니다. >http://www.newtc.co.kr/board/view.php?id=qna&page=1&sn1=on&divpage=1&sn=on&ss=off&sc=off&keyword=이진한&select_arrange=headnum&desc=asc&no=2217 >여기에 있는 소스로 ATMEGA128과 SRF04센서로 거리측정기를 만들었는데 이건 세그먼트에 결과값이 나타나는 소스잖아요... 근데 LCD에 결과값을 나타내고 싶은데 위에 소스에 세그먼트 부분을 없애고 http://www.newtc.co.kr/board/view.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=227 >여기에 있는 소스를 그냥 붙여 넣으면 되나요?... >근데 해보았는데 잘 안되네요?... LCD는 lc1621을 사용했습니다. >두 소스를 어떻게 조합해서 ICCAVR에 적어 넣어야 할까요? >ICCAVR에 대해 잘 몰라서요... 좋은 답변 부탁드립니다... >그리고 portF에는 SRF04센서를 잘 연결했는데 >lc1621의 1번핀을 ATMEGA128의 53번핀, 2번핀-52번핀, 4번핀(RS)-49번핀, 5번핀(R/W)-48번핀, 6번핀(E)-46번핀, 7,8,9,10,11,12,13,14번핀- 61,60,59,58,57,56,55,54번핀에 연결하면 맞는건가요?... 질문이 좀 기네요... >죄송하지만 좋은 답변 부탁드립니다...
1029 답변완료128pro-A 관련 문의 최원석 2008-05-16 1,720
안녕하세요 제가 128pro-A board를 구매했는데, GLCD를 구동하는 중, isp connector (AVR ISP Pro) 가 연결되어있을 경우에는 잘 동작하다가, connector를 동작 중, 혹은 off 상태에서 disconnect 하고 전원을 인가하면 GLCD가 오동작 (켜지기는 하지만 잘못된 영상을 표시) 하게 됩니다. 또 오동작 중 (전원 on 상태) 에서 isp를 다시 연결하면 정상 동작 합니다. 왜 이런 문제가 발생하는지요. 답변 부탁드리겠습니다. 감사합니다.
관리자 답변 N.T.C · 2008-05-16
안녕하세요? 고객님, 간혹 그런 고객님들 문의가 있었습니다만, 저희 회사로 가져와서 하면 아무 문제없이 잘 동작하더군요. 근데, 고객님들 마다 뭔가 한가지씩 빼 먹고 계시는 데, 그게 뭔지는 직접 가져와 보셔야 설명이 가능합니다. 언제 킷트를 가지고 직접 회사로 방문해 주시는 것이 좋겠네요. 감사합니다. >안녕하세요 > >제가 128pro-A board를 구매했는데, >GLCD를 구동하는 중, isp connector (AVR ISP Pro) 가 연결되어있을 경우에는 >잘 동작하다가, connector를 동작 중, 혹은 off 상태에서 disconnect 하고 전원을 인가하면 GLCD가 오동작 (켜지기는 하지만 잘못된 영상을 표시) 하게 됩니다. >또 오동작 중 (전원 on 상태) 에서 isp를 다시 연결하면 정상 동작 합니다. >왜 이런 문제가 발생하는지요. 답변 부탁드리겠습니다. >감사합니다.