로그인 | 회원가입 | 주문 조회
총 10,743개의 질문이 있습니다.
번호 제목 작성자 등록일 조회
2553 답변완료 Relay 전원 공급 보드 (4 Ch) 관련 질문입니다. 이준학 2009-04-01 1,444
기존 문의 드렸던 프린트포트 실험키트로 포트 신호 제어 가능하여 이 보드에 적용하여 테스트를 해 보았으나 실행이 안되네요. 외부 220V AC 연결하고 1CH에 전구하나 연결하여 해보았으나, 출력이 되지 않습니다. 혹 제가 하드웨어적인 연결이 안되어서 그런건지 싶어 실행파일 첨부해 봅니다. 죄송합니다만, 테스트 한 번 만 부탁드립니다. 외부입력을 하였을 때, 컨트롤 신호 핀 중 9번 전원 5V 인입여부는 어차피 제품의 점퍼를 사용하지 않으니, 외부전원이 있다면 회로에 별 다른 의미가 없을 것 같은데, 맞는 지요? 그리고 좌측 하단 스위치는 어떤 역할을 하는 것인가요?? 테스트 한 번 부탁드립니다. 혹시 작동된다면 전화 부탁 좀 드려도 될까요? 작동되면 제품 구매를 해야 해서요... 011-9567-3652
관리자 답변 N.T.C · 2009-04-01
안녕하세요...고객님.. 저는 프린트포트 제어를 PORTIO라는 프로그램을 쓰는데 잘 동작합니다. 그리고 제 컴퓨터 특성상 다른 프로그램을 설치하는데는 많은 어려움이 있습니다. 제 컴퓨터는 바이러스 등으로 하루만 다운되어도 업무 마비가 옵니다. 그래서 100% 검정되지 않은 프로그램은 절대 설치하지를 않습니다. 이점 이해해 주시기 바랍니다. 외부 전원을 연결할 경우 9번 핀은 따로 연결하지 않으셔도 됩니다. 좌측 하단 스위치는 외부 전원 입력시 외부전원 ON/OFF 스위치 입니다. 조금 뒤 전화 한번 드리겠습니다. 감사합니다. >기존 문의 드렸던 프린트포트 실험키트로 포트 신호 제어 가능하여 >이 보드에 적용하여 테스트를 해 보았으나 실행이 안되네요. > >외부 220V AC 연결하고 1CH에 전구하나 연결하여 해보았으나, 출력이 되지 않습니다. > >혹 제가 하드웨어적인 연결이 안되어서 그런건지 싶어 실행파일 첨부해 봅니다. > >죄송합니다만, 테스트 한 번 만 부탁드립니다. > >외부입력을 하였을 때, 컨트롤 신호 핀 중 9번 전원 5V 인입여부는 어차피 >제품의 점퍼를 사용하지 않으니, 외부전원이 있다면 회로에 별 다른 의미가 없을 것 같은데, 맞는 지요? > > >그리고 좌측 하단 스위치는 어떤 역할을 하는 것인가요?? > >테스트 한 번 부탁드립니다. > >혹시 작동된다면 전화 부탁 좀 드려도 될까요? 작동되면 제품 구매를 해야 해서요... > >011-9567-3652
2552 답변완료while문에러요 남승수 2009-04-01 1,385
매번 질문에 답해주셔서 감사합니다. 메인함수에서 while(1){ .... .... .... } 이렇게 하면 무한으로 반복이 되서. break;를 걸어서 빠져 나올려 고 합니다. 그런데 while문 안에 빠져나올 while(1){ .... .... if(i==2) { printf("작동을 정지 합니다. ") break; } } return 0;을 넣었는데.. error code 1 : extraneous return value 라는 에러만 뜹니다. 인터넷에서 강제로 종료하는 법을 찾아도 이렇게 나오는데 다른 방법이 있나요?? 예제문을 봐도.. 무한 루프로 돌아가는것 밖에 안보여서요.. 알려줏에ㅛ
관리자 답변 N.T.C · 2009-04-01
안녕하세요..고객님... 작은 실수를 하셨네요. return 0;을 메인문에 넣으실려면 int main()으로 해주시고 return 0;을 넣지 않을 경우 그냥 void main()으로 해주시면 됩니다. 하시다가 궁금한점 있으면 언제라도 질문주세요. 감사합니다. >매번 질문에 답해주셔서 감사합니다. > >메인함수에서 > >while(1){ >.... >.... >.... >} 이렇게 하면 무한으로 반복이 되서. > >break;를 걸어서 빠져 나올려 고 합니다. > >그런데 while문 안에 빠져나올 >while(1){ >.... >.... >if(i==2) >{ > printf("작동을 정지 합니다. ") > break; >} >} >return 0;을 넣었는데.. >error code 1 : extraneous return value >라는 에러만 뜹니다. 인터넷에서 강제로 종료하는 >법을 찾아도 이렇게 나오는데 다른 방법이 있나요?? >예제문을 봐도.. 무한 루프로 돌아가는것 밖에 안보여서요.. > >알려줏에ㅛ > >
2551 답변완료코드비전 버퍼 박철민 2009-04-01 1,448
안녕하세요 코드비전에서 버퍼설정이 궁금해서 글올립니다 감사합니다. *위의에러메시지가 뜰경우 프로그램 ALL을누르고 다시 리셋을 누름다음 라이팅하면됨....
관리자 답변 N.T.C · 2009-04-01
안녕하세요...고객님... 코드비젼에서 버퍼 설정이라 함은 정확히 어떤 설정을 이야기 하는지요? http://www.newtc.co.kr/board/download.php?id=qna&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=CODE&select_arrange=headnum&desc=asc&no=5981&filenum=1 http://www.newtc.co.kr/board/download.php?id=qna&page=2&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=CODE&select_arrange=headnum&desc=asc&no=3397&filenum=1 플래시만 라이트 하실 경우, Program All을 누르지 마시구요. 링크된 그림과 같이 program flash로 하셔야 합니다. 질문하신 내용이 다를 경우 구체적으로 질문해 주시면 다시 답변 드리겠습니다. 감사합니다 >안녕하세요 >코드비전에서 버퍼설정이 궁금해서 >글올립니다 감사합니다.
2550 답변완료질문입니다. 김재만 2009-03-31 1,457
안녕하세요~ NTC제품을 구매하고 문의드립니다. 제가 AVR을 처음 접하게 되어 잘 모르는게 많아서 문의드립니다. 1. AVR MEGA 128 개발보드(+빵판) AB-M128-A, 2. 스테핑 모터 클럭 구동모듈AM-MS2(3A용) 3. 스테핑모터 NK243 SE-NK243 4. AVR용 USB-ISP 라이트 AD-USBISP-L 그리고 각종 케이블과 어댑터를 구매하였는데요... AVR Studio로 제어를 하려고 하는데 잘 안되네요... AVR Studio에서 사용가능한 스텝모터 예제소스좀 구할수 있을까요?.. 제 메일 주소입니다. iloverss@naver.com 꼭 부탁드립니다.!!!!!!
관리자 답변 N.T.C · 2009-03-31
안녕하세요...고객님.. 저희 회사 방침상 소스를 짜드리거나 수정해 드리지는 않습니다. 저희 회사 자료실에는 ICCAVR로 주로 소스를 짜고 있지만 WINAVR이나 CODEVISION과 크게 틀리진 안습니다. 입출력만 쓸 경우 포트레지스트 이름도 거의 비슷합니다. 따라서 ICCAVR용 소스를 WINAVR이나 CODEVISION으로 바꾸실 경우 헤드파일을 바꾸시고 기타 최소한의 변경만으로도 충분히 소스 동작이 가능합니다. 도움을 드리지 못해 죄송합니다. 하시다가 어려운점 있으면 또 질문 주세요. 감사합니다. >안녕하세요~ NTC제품을 구매하고 문의드립니다. >제가 AVR을 처음 접하게 되어 잘 모르는게 많아서 문의드립니다. > >1. AVR MEGA 128 개발보드(+빵판) AB-M128-A, >2. 스테핑 모터 클럭 구동모듈AM-MS2(3A용) >3. 스테핑모터 NK243 SE-NK243 >4. AVR용 USB-ISP 라이트 AD-USBISP-L > >그리고 각종 케이블과 어댑터를 구매하였는데요... > >AVR Studio로 제어를 하려고 하는데 잘 안되네요... > >AVR Studio에서 사용가능한 스텝모터 예제소스좀 구할수 있을까요?.. > >제 메일 주소입니다. iloverss@naver.com > >꼭 부탁드립니다.!!!!!! > >
2549 답변완료uart통신 하이퍼 터미널 소수점 문제 남승수 2009-03-31 1,329
stdio.h해더 함수를 불러서 통신을 통해서 소수점 둘째자리 까지 나오게 할려고 했는데 안돼네요.. printf(" %.2f \\n\\r",변수명); 이런 식으로 하면 안돼나요? integer only printf, select Project->Options-> Target,"FP printf" to print floating point numbers> 이런 글이 있어서 설정창에 가서 float로 바꿀려고 하니깐 Return Stack Size should be at least 30 bytes when using large/float printf! 라는 금지창이 나오네요.. 어떻게 해야 하는지 알려 주시면 감사해요. 그리고 변수는 float으로 주었습니다.
관리자 답변 N.T.C · 2009-03-31
안녕하세요...고객님... 설정창에 가서 float형으로 바꾸시고 return stack size 에 64정도 주시면 에러없이 사용가능합니다. 물론 스택 사이즈는 32이상이면 컴파일 되지만 64정도를 권장합니다. 하시다가 의문점이 있으면 언제라도 질문주세요. 감사합니다. >stdio.h해더 함수를 불러서 > >통신을 통해서 소수점 둘째자리 까지 나오게 할려고 했는데 안돼네요.. > >printf(" %.2f \\n\\r",변수명); > >이런 식으로 하면 안돼나요? > >integer only printf, select Project->Options-> >Target,"FP printf" to print floating point numbers> > >이런 글이 있어서 설정창에 가서 float로 바꿀려고 하니깐 > >Return Stack Size should be at least 30 bytes when using >large/float printf! > >라는 금지창이 나오네요.. > >어떻게 해야 하는지 알려 주시면 감사해요. > >그리고 변수는 float으로 주었습니다. > > > > > >
2548 답변완료라이팅 질문드립니다 박철민 2009-03-31 1,317
안녕하세요 우선감사드립니다. 다름이아니라 헥사파일을 라이팅하면 led 가 깜빡거리지 안나요 먹통이여서요.
관리자 답변 N.T.C · 2009-03-31
안녕하세요...고객님.. 어떤 LED를 말씀 하시는건가요? 고객님의 소스 파일이 어떤 동작을 목적으로 하는지 저희는 알수 없습니다. 시간이 되신다면 직접 한번 오시면 자세하게 알려드리겠습니다. 감사합니다. > 안녕하세요 우선감사드립니다. >다름이아니라 헥사파일을 라이팅하면 >led 가 깜빡거리지 안나요 먹통이여서요.
2547 답변완료ICC-AVR컴파일 관련 문의 권은조 2009-03-31 1,436
안녕하세요. 저는 권은조라고 합니다. 저는 귀사의 KD-128pro를 사용하여 컴파일을 하려고 하는데 문제가 발생하여 문의 드립니다. 혹 알고 계신점이 계시면 알려 주시면 감사 하겠습니다. 귀사로 부터 제공 받은 KD-128pro용 LED제어 소스(해당 소스는 최 하단에 있습니다)를 컴파일 하려고 하는데 되질 않습니다. print,scanf는 사용하지 않기 때문에 문제 가 없을 거라고 생각했는데 되지 않습니다 <stdio.h>도 인클루드 해 보았지만 해결 되지 않습니다. 에러 메시지는 이하와 같습니다. #참조 1.윈도우 버젼은 비스타 입니다. 2.KD-128pro의 ISP연결시 페러럴 포트가 없어서 usb젠더를 사용하고 있습니다(컴파일과 상관은 없으리라고 생각됩니다만 혹 영향이 있을까 하는 마음에 적습니다. 그리고 젠더를 사용하신 경험이 있으신지요? 컴파일 후 다운로드 시키려면 ICCAVR에서 사용 usb포트를 지정 해야할 것 같은데 설정 방법알고 계신지요?) _______________________________________________________________________ C:\\iccv7avr\\bin\\imakew -f TESTLED.mak iccavr -c -e -D__ICC_VERSION="7.18A" -DATMega128 -l -g -MLongJump -MHasMul -MEnhanced -Wf-use_elpm TestLed.c iccavr: can't execute `C:\\iccv7avr\\bin\\iccomavr.exe' C:\\iccv7avr\\bin\\imakew.exe: Error code 100 Done: there are error(s). Exit code: 100. Tue Mar 31 13:03:36 2009 ______________________________________________________________________ ____________________________________________________________________ //##이하는 소스입니다## //ICC-AVR application builder : 2009/03/31 11:51:17 // Target : M128 // Crystal: 16.000Mhz #include <iom128v.h> #include <macros.h> void port_init(void) { PORTA = 0x00; DDRA = 0x00; PORTB = 0x00; DDRB = 0x00; PORTC = 0x00; //m103 output only DDRC = 0x00; PORTD = 0x00; DDRD = 0x00; PORTE = 0x00; DDRE = 0x00; PORTF = 0x00; DDRF = 0x00; PORTG = 0x00; DDRG = 0x00; } //call this routine to initialize all peripherals void init_devices(void) { //stop errant interrupts until set up CLI(); //disable all interrupts XDIV = 0x00; //xtal divider XMCRA = 0x00; //external memory port_init(); MCUCR = 0x00; EICRA = 0x00; //extended ext ints EICRB = 0x00; //extended ext ints EIMSK = 0x00; TIMSK = 0x00; //timer interrupt sources ETIMSK = 0x00; //extended timer interrupt sources SEI(); //re-enable interrupts //all peripherals are now initialized } // void main(void) { init_devices(); //insert your functional code here... while(1) { EX_LED = 0xFF; } } ______________________________________________________________
관리자 답변 N.T.C · 2009-03-31
안녕하세요...고객님.. 저희 NewTC제품을 이용해 주셔서 감사합니다. 소스의 EX_LED의 정의 부분이 없네요. 컴파일에서도 에러가 날것으로 보입니다. 그리고 정상적익 USB-패러럴 젠더라면 그냥 프린트 포트사용하듯이 사용가능합니다. USB젠더의 드라이브는 제대로 설치되었는지 확인하시고 컴퓨터의 장치관리자에서 포트 인식이 제대로 되어 있는지도 확인해주세요. scanf(), printf()문을 사용하지 않으면 stdio.h 파일을 인크루드 할 필요없습니다. 설정사항들 다시 한번 확인해 주시고 제대로 된 소스를 컴파일해보세요. 소스는 자료실에서 led치시면 나옵니다. 하시다가 궁금한 점 있으면 언제라도 주저마시고 질문 주시기 바랍니다. 감사합니다. >안녕하세요. 저는 권은조라고 합니다. > >저는 귀사의 KD-128pro를 사용하여 컴파일을 하려고 하는데 문제가 발생하여 >문의 드립니다. 혹 알고 계신점이 계시면 알려 주시면 감사 하겠습니다. > >귀사로 부터 제공 받은 KD-128pro용 LED제어 소스(해당 소스는 최 하단에 있습니다)를 컴파일 하려고 하는데 되질 않습니다. print,scanf는 사용하지 않기 때문에 문제 가 없을 거라고 생각했는데 되지 않습니다 <stdio.h>도 인클루드 해 보았지만 해결 되지 않습니다. 에러 메시지는 이하와 같습니다. >#참조 1.윈도우 버젼은 비스타 입니다. > 2.KD-128pro의 ISP연결시 페러럴 포트가 없어서 usb젠더를 사용하고 있습니다(컴파일과 상관은 없으리라고 생각됩니다만 혹 영향이 있을까 하는 마음에 적습니다. 그리고 젠더를 사용하신 경험이 있으신지요? 컴파일 후 다운로드 시키려면 ICCAVR에서 사용 usb포트를 지정 해야할 것 같은데 설정 방법알고 계신지요?) >_______________________________________________________________________ >C:\\iccv7avr\\bin\\imakew -f TESTLED.mak > iccavr -c -e -D__ICC_VERSION="7.18A" -DATMega128 -l -g -MLongJump -MHasMul -MEnhanced -Wf-use_elpm TestLed.c >iccavr: can't execute `C:\\iccv7avr\\bin\\iccomavr.exe' >C:\\iccv7avr\\bin\\imakew.exe: Error code 100 >Done: there are error(s). Exit code: 100. Tue Mar 31 13:03:36 2009 >______________________________________________________________________ >____________________________________________________________________ >//##이하는 소스입니다## >//ICC-AVR application builder : 2009/03/31 11:51:17 >// Target : M128 >// Crystal: 16.000Mhz > >#include <iom128v.h> >#include <macros.h> > >void port_init(void) >{ > PORTA = 0x00; > DDRA = 0x00; > PORTB = 0x00; > DDRB = 0x00; > PORTC = 0x00; //m103 output only > DDRC = 0x00; > PORTD = 0x00; > DDRD = 0x00; > PORTE = 0x00; > DDRE = 0x00; > PORTF = 0x00; > DDRF = 0x00; > PORTG = 0x00; > DDRG = 0x00; >} > >//call this routine to initialize all peripherals >void init_devices(void) >{ > //stop errant interrupts until set up > CLI(); //disable all interrupts > XDIV = 0x00; //xtal divider > XMCRA = 0x00; //external memory > port_init(); > > MCUCR = 0x00; > EICRA = 0x00; //extended ext ints > EICRB = 0x00; //extended ext ints > EIMSK = 0x00; > TIMSK = 0x00; //timer interrupt sources > ETIMSK = 0x00; //extended timer interrupt sources > SEI(); //re-enable interrupts > //all peripherals are now initialized >} > >// >void main(void) >{ > init_devices(); > //insert your functional code here... > > while(1) > { > EX_LED = 0xFF; > } >} >______________________________________________________________
2546 답변완료외부인터럽트 관련 전은철 2009-03-31 1,317
ICCAVR에서 외부 인터럽트 관련 소스 를 수정했습니다. Atmega128 KD-128Pro 를 쓰고있구요 1. KD-128PRO 킷트를 이용하실 경우 ==> RTC(DS1307 리얼타임클럭)에 물려 있는 R123, R124를 제거 하시고 쓰시는 것이 좋겠습니다. 라는 말에 R123, R124 부분을 제거했습니다. 소스를 아래와 같이만 수정하고 void main ( void ) { init_devices( ); while( 1 ) { if ( i%2 ) { PORTD = 0x80; PORTG = 0x01; }else{ PORTD = 0x40; PORTG = 0x02; } } } 이런식으로 해보니 불이 PG1 부분만 켜지는걸 보니 외부 인터럽트가 안걸리고 있는것 같네요 제가 R123, R124 부분의 저항을 그냥 윗부분만 잘라냈는데 그래서 그럴 수도 있나요??
관리자 답변 N.T.C · 2009-03-31
안녕하세요...고객님.. 저희 회사 사정상 소스는 봐드리지 않습니다. 그리고 외부 인트럽트를 사용하실려면 다른 소스 부분은 제외시키고 외부 인트럽트 부분만 코딩하시는게 도움이 될것 같습니다. 외부 인트럽트는 특정포트 ((예)INT0=PD0)와 연결되어 있으며 연결하시고자 하는 핀을 입력으로 설정하시고 사용하시면 됩니다. 저희 홈페이지 자료실에 보면 기본 소스가 제공되어 있으니 참고하시기 바랍니다. 감사합니다. >ICCAVR에서 외부 인터럽트 관련 소스 >를 수정했습니다. >Atmega128 KD-128Pro 를 쓰고있구요 > >1. KD-128PRO 킷트를 이용하실 경우 > ==> RTC(DS1307 리얼타임클럭)에 물려 있는 R123, R124를 제거 하시고 쓰시는 것이 좋겠습니다. > >라는 말에 R123, R124 부분을 제거했습니다. > >소스를 아래와 같이만 수정하고 > >void main ( void ) >{ > init_devices( ); > > while( 1 ) > { > if ( i%2 ) > { > PORTD = 0x80; > PORTG = 0x01; > }else{ > PORTD = 0x40; > PORTG = 0x02; > } > } >} > >이런식으로 해보니 >불이 PG1 부분만 켜지는걸 보니 외부 인터럽트가 안걸리고 있는것 같네요 > >제가 R123, R124 부분의 저항을 그냥 윗부분만 잘라냈는데 >그래서 그럴 수도 있나요??
2545 답변완료외부인터럽트 관련. 전은철 2009-03-30 1,492
atmega128을 가지고 작업중에 있습니다. 모터의 엔코더 쪽에서 오는 신호를 가지고 외부 인터럽트를 걸려고 합니다. 모터는 PORTD에 연결해 두었구요 모터는 http://dnj.co.kr/_data/2_dcgm/ecig_spec_ig42e2c0102.htm Hall Sensor Vcc 는 PortD 의 9번 Hall Sensor GND 는 PortD 의 10번 Hall Sensor B Vout 은 PottD의 1번 Hall Sensor A Vout 은 PortD의 2번에 연결했습니다. 인터럽트 관련해서 EICRA = 0x02; EIMSK = 0x01; 로 두고 ISR( INT0_vect ) { if(LED_PORT==0x01) { LED_PORT = 0x02; }else{ LED_PORT= 0x01; } } 이런 식으로 LED를 모터가 한바퀴 돌때마다 왔다갔다 켜지게 하려고 하는데 인터럽트가 걸리질 않네요 ㅎㅎ 전체소스는 다음과 같습니다 #define F_CPU 16.000E6 #define baud 9600 #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <stdio.h> #include <stdlib.h> #define LED_PORT PORTG #define MOTOR_PORT1 PORTC #define MOTOR_PORT2 PORTF #define PWM1_ON (MOTOR_PORT1 |= 0x01) #define PWM1_OFF (MOTOR_PORT1 &= 0xFE) #define DIR1_ON (MOTOR_PORT1|=0x02) #define DIR1_OFF (MOTOR_PORT1&=0xFD) #define PWM2_ON (MOTOR_PORT2 |= 0x01) #define PWM2_OFF (MOTOR_PORT2 &= 0xFE) #define DIR2_ON (MOTOR_PORT2|=0x02) #define DIR2_OFF (MOTOR_PORT2&=0xFD) void parse(void); void init_port(void) { PORTA = 0x00; DDRA = 0x00; PORTB = 0x00; DDRB = 0x00; PORTC = 0x00; //m103 output only DDRC = 0xFF; PORTD = 0x00; DDRD = 0x00; PORTE = 0x00; DDRE = 0x00; PORTF = 0x00; DDRF = 0xFF; PORTG = 0x00; DDRG = 0x03; } void init_usart( void ) { unsigned int ubrr = (unsigned int)((F_CPU)/16/baud); // Set baud rate UBRR0H = ( unsigned char ) (ubrr >> 8); UBRR0L = ( unsigned char ) (ubrr ); // Enable receiver and transmitter UCSR0B = (1<<RXEN) | (1 <<TXEN) | (1<<RXCIE); // Set frame format : 8data, 2stop bit UCSR0C = (1<<USBS) | (3<<UCSZ0); } int USART_Transmit( char data, FILE *stream ) { if(data == '\\n') { USART_Transmit('\\r', stream); } while(!(UCSR0A & (1<<UDRE0))){ } UDR0 = data; return 0; } int USART_Receive( FILE * stream ) { while( !(UCSR0A & (1<<RXC))){ } return (int) UDR0; } void USART_Flush( void) { unsigned char dummy; while(!(UCSR0A & (1 << RXC) ) ){ dummy = UDR0; } } static FILE __stdout = \\ FDEV_SETUP_STREAM( USART_Transmit, NULL, _FDEV_SETUP_WRITE ); static FILE __stdin = \\ FDEV_SETUP_STREAM( NULL, USART_Receive, _FDEV_SETUP_READ); static void init_stdout( void) { stdout = &__stdout; stdin = &__stdin; stderr = &__stdout; } void init_timer0(void) { TCNT0 = 0; TCCR0 = _BV( CS01 ); TIMSK = _BV( TOIE0 ); } #define MAX_CMD_INDEX 8 static volatile int cmd_index =0; static volatile char cmd_buf[MAX_CMD_INDEX] = {0,}; ISR( USART0_RX_vect ) { do{ char c = UDR0; if( c== '\\r' || c == '\\n'){ continue; } switch(c){ case '[': cmd_index = 0; break; case ']': cmd_buf[cmd_index]='\\0'; cmd_index =0; break; default : cmd_buf[cmd_index++] = c; break; } }while(UCSR0A & (1<<RXC)); parse(); } static volatile int timerIndex = 0; static volatile int velocity1 = 0; static volatile int velocity2 = 0; void parse(void) { char *cmd = (char *)cmd_buf; char temp; if(*cmd=='R') { cmd++; if(*cmd=='0') { DIR1_ON; }else if(*cmd=='1') { DIR1_OFF; } cmd++; cmd++; temp = *cmd; velocity1 = temp-48; }else if(*cmd =='L') { cmd++; if(*cmd=='0') { DIR2_ON; }else if(*cmd=='1') { DIR2_OFF; } cmd++; cmd++; temp = *cmd; velocity2 = temp-48; } } ISR( INT0_vect ) { if(LED_PORT==0x01) { LED_PORT = 0x02; }else{ LED_PORT= 0x01; } } ISR( TIMER0_OVF_vect ) { if(timerIndex%5 < velocity1) { PWM1_ON; }else { PWM1_OFF; } if(timerIndex%5 < velocity2) { PWM2_ON; }else { PWM2_OFF; } timerIndex++; if(timerIndex >5) { timerIndex=0; } } void init_devices(void) { cli(); init_port(); init_usart(); init_stdout(); init_timer0(); EICRA = 0x02; EIMSK = 0x01; sei(); } int main (void) { int i; init_devices(); DIR1_ON; while(1){ _delay_ms(10000); } return 1; } 감사합니다.
관리자 답변 N.T.C · 2009-03-31
안녕하세요? 고객님, 저희 NewTC를 이용하여 주셔서 감사합니다. 본사에서 소스를 수정하여 주진 못하고 있습니다. 안타깝지만, 거기까지는 서비스를 하지 못함을 양해 바랍니다. 하지만, 많은 예제를 자료실 및 기존자료실에서 서비스 하여 제공하고 있으므로, 참고하실 수가 있습니다. 그리고, 고객님의 소스에 보면, MCUCR과 같은 기본 레지스터 셋팅하는 부분이 빠져 있는 것 같습니다. 참고 바라구요. 그리고, 포트 D의 1번 2번은 각각 INT0, INT1에 연결한 것인데, INT1 부분은 빠져 있는 것 같네요. 물론, 한바퀴 두바퀴 이런식으로 감지하는 데는 관계 없지만, 도는 방향을 감지하려면, 필요할 것 같습니다. ICCAVR에서 외부 인터럽트 관련 소스 - 아래 - http://www.newtc.co.kr/board/view.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=외부&select_arrange=headnum&desc=asc&no=232 AVR Studio에서 타이머 인터럽트를 이용하는 예제입니다. - 아래 - http://www.newtc.co.kr/board/view.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=AVR Studio&select_arrange=headnum&desc=asc&no=259 감사합니다. > >atmega128을 가지고 작업중에 있습니다. > >모터의 엔코더 쪽에서 오는 신호를 가지고 >외부 인터럽트를 걸려고 합니다. >모터는 PORTD에 연결해 두었구요 >모터는 http://dnj.co.kr/_data/2_dcgm/ecig_spec_ig42e2c0102.htm >Hall Sensor Vcc 는 PortD 의 9번 >Hall Sensor GND 는 PortD 의 10번 >Hall Sensor B Vout 은 PottD의 1번 >Hall Sensor A Vout 은 PortD의 2번에 연결했습니다. > >인터럽트 관련해서 > >EICRA = 0x02; >EIMSK = 0x01; >로 두고 > >ISR( INT0_vect ) >{ > if(LED_PORT==0x01) > { > LED_PORT = 0x02; > > }else{ > LED_PORT= 0x01; > } >} > >이런 식으로 LED를 모터가 한바퀴 돌때마다 >왔다갔다 켜지게 하려고 하는데 인터럽트가 걸리질 않네요 ㅎㅎ > >전체소스는 다음과 같습니다 > >#define F_CPU 16.000E6 >#define baud 9600 > >#include <avr/io.h> >#include <avr/interrupt.h> >#include <util/delay.h> >#include <stdio.h> >#include <stdlib.h> > >#define LED_PORT PORTG >#define MOTOR_PORT1 PORTC >#define MOTOR_PORT2 PORTF > >#define PWM1_ON (MOTOR_PORT1 |= 0x01) >#define PWM1_OFF (MOTOR_PORT1 &= 0xFE) >#define DIR1_ON (MOTOR_PORT1|=0x02) >#define DIR1_OFF (MOTOR_PORT1&=0xFD) > >#define PWM2_ON (MOTOR_PORT2 |= 0x01) >#define PWM2_OFF (MOTOR_PORT2 &= 0xFE) >#define DIR2_ON (MOTOR_PORT2|=0x02) >#define DIR2_OFF (MOTOR_PORT2&=0xFD) > > >void parse(void); > >void init_port(void) >{ > PORTA = 0x00; > DDRA = 0x00; > PORTB = 0x00; > DDRB = 0x00; > PORTC = 0x00; //m103 output only > DDRC = 0xFF; > PORTD = 0x00; > DDRD = 0x00; > PORTE = 0x00; > DDRE = 0x00; > PORTF = 0x00; > DDRF = 0xFF; > PORTG = 0x00; > DDRG = 0x03; >} > >void init_usart( void ) >{ > unsigned int ubrr = (unsigned int)((F_CPU)/16/baud); > > // Set baud rate > UBRR0H = ( unsigned char ) (ubrr >> 8); > UBRR0L = ( unsigned char ) (ubrr ); > > // Enable receiver and transmitter > UCSR0B = (1<<RXEN) | (1 <<TXEN) | (1<<RXCIE); > > // Set frame format : 8data, 2stop bit > UCSR0C = (1<<USBS) | (3<<UCSZ0); > >} > >int USART_Transmit( char data, FILE *stream ) >{ > if(data == '\\n') > { > USART_Transmit('\\r', stream); > > } > > while(!(UCSR0A & (1<<UDRE0))){ > } > > UDR0 = data; > return 0; > >} > >int USART_Receive( FILE * stream ) >{ > while( !(UCSR0A & (1<<RXC))){ > } > > return (int) UDR0; > >} > >void USART_Flush( void) >{ > unsigned char dummy; > > while(!(UCSR0A & (1 << RXC) ) ){ > dummy = UDR0; > } >} > >static FILE __stdout = \\ > FDEV_SETUP_STREAM( USART_Transmit, NULL, _FDEV_SETUP_WRITE ); > >static FILE __stdin = \\ > FDEV_SETUP_STREAM( NULL, USART_Receive, _FDEV_SETUP_READ); > >static void init_stdout( void) >{ > stdout = &__stdout; > stdin = &__stdin; > stderr = &__stdout; >} > >void init_timer0(void) >{ > TCNT0 = 0; > TCCR0 = _BV( CS01 ); > TIMSK = _BV( TOIE0 ); >} > >#define MAX_CMD_INDEX 8 > >static volatile int cmd_index =0; >static volatile char cmd_buf[MAX_CMD_INDEX] = {0,}; > >ISR( USART0_RX_vect ) >{ > do{ > char c = UDR0; > > if( c== '\\r' || c == '\\n'){ > continue; > } > > switch(c){ > case '[': > cmd_index = 0; > break; > case ']': > cmd_buf[cmd_index]='\\0'; > cmd_index =0; > break; > default : > cmd_buf[cmd_index++] = c; > break; > } > > }while(UCSR0A & (1<<RXC)); > > parse(); > >} > >static volatile int timerIndex = 0; >static volatile int velocity1 = 0; >static volatile int velocity2 = 0; > >void parse(void) >{ > char *cmd = (char *)cmd_buf; > char temp; > > if(*cmd=='R') > { > cmd++; > > if(*cmd=='0') > { > DIR1_ON; > }else if(*cmd=='1') > { > DIR1_OFF; > } > cmd++; > cmd++; > > temp = *cmd; > velocity1 = temp-48; > > }else if(*cmd =='L') > { > cmd++; > > if(*cmd=='0') > { > DIR2_ON; > }else if(*cmd=='1') > { > DIR2_OFF; > } > cmd++; > cmd++; > > temp = *cmd; > velocity2 = temp-48; > > } > > > >} > > >ISR( INT0_vect ) >{ > if(LED_PORT==0x01) > { > LED_PORT = 0x02; > > }else{ > LED_PORT= 0x01; > > } > > >} > > > >ISR( TIMER0_OVF_vect ) >{ > if(timerIndex%5 < velocity1) > { > PWM1_ON; > }else > { > PWM1_OFF; > } > > if(timerIndex%5 < velocity2) > { > PWM2_ON; > }else > { > PWM2_OFF; > } > > timerIndex++; > > if(timerIndex >5) > { > timerIndex=0; > } > >} > > > > >void init_devices(void) >{ > cli(); > init_port(); > init_usart(); > init_stdout(); > init_timer0(); > > EICRA = 0x02; > EIMSK = 0x01; > > > sei(); >} > >int main (void) >{ > int i; > > init_devices(); > DIR1_ON; > > while(1){ > _delay_ms(10000); > } > > return 1; >} > >감사합니다. >
2544 답변완료3축가속도 센서 각도 계산에 대해 궁금합니다. 유재광 2009-03-30 1,623
안녕하세요? 3축가속도 센서를 사용하려는데 각도 측정에 의문점이 생겨서 이렇게 글을 쓰게 되었습니다. 저희는 정밀한 각도를 원해서 각도 계산을 하게 되었습니다. 그래서 자료를 보니 중력에 따라 각을 측정이 다르다고 하였습니다. 하지만 여기에 적혀있는 +1~-1 경우 각도가 +90도~-90도 로 각도를 보면 된다고 하였는데 +90도~-90도 사이의 각도를 어떻게 읽혀 지는 건가요? 다시 말해서 +90를 1g라고 한다면 1도는 중력(g)값이 바껴서 되는 겁니까? 아니면 1g으로 한다면 0도~+90도 사이의 값 다 읽을 수 있는것입니까? 사이의 각도를 다 읽는 있다면 몇 도 각도로 읽을 수 있나요? 답변 기다리겠습니다.^^
관리자 답변 N.T.C · 2009-03-31
안녕하세요? 고객님, 저희 NewTC 제품을 이용하여 주셔서 감사합니다. 좋은 질문입니다. 1g라고 할 때, g는 gravity의 약자이구요. 중력 가속도를 의미합니다. 첨부한 그림은 모듈의 핵심 IC인 MMA7260Q 데이터 시트에서 발췌한 부분입니다. 그림을 잘 보면, 이해가 가능하실 겁니다. 우선, 가속도 = static 가속도 + Dynamic 가속도 로 구성된다는 것을 아셔야 합니다. 고객님이 각도 측정만 하려 한다면, Dynamic 가속도같은 것은 심하게 발생하지 않는 다는 것을 가정해야 합니다. 본 모듈에서 static 가속도만 따로 뽑아 내기는 어려우니까요. 즉, 매우 천천히 움직이면, 매우 작은 Dynamic 가속도만 발생될 것이고, 그렇다면 전체 값이 static 가속도에 가까운 값이 나오게 되어, 고객님이 원하는 것처럼, 각도 측정에 사용할 수 있을 겁니다. -90도 ~ +90도 를 -1g ~ +1g로 대응시켜 보시는 것도 그림과 같이 무리가 아닙니다. 아래를 참고하면, 기울기로 변환시키는 방법도 나와 있으니, 참고 바랍니다. - 아래 - http://www.newtc.co.kr/board/view.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=계산식&select_arrange=headnum&desc=asc&no=121 즉, X, Y, Z 축 각각에서 전압값이 나오게 되구요. 0g 일 때, 1.65V 가 나오구요. 1.5g 모드에서 1g당 출력 전압값이 800mV 정도 변하게 됩니다. 수고하세요. >안녕하세요? > >3축가속도 센서를 사용하려는데 각도 측정에 의문점이 생겨서 > >이렇게 글을 쓰게 되었습니다. > >저희는 정밀한 각도를 원해서 각도 계산을 하게 되었습니다. > >그래서 자료를 보니 중력에 따라 각을 측정이 다르다고 하였습니다. > >하지만 여기에 적혀있는 +1~-1 경우 각도가 +90도~-90도 로 각도를 > >보면 된다고 하였는데 +90도~-90도 사이의 각도를 어떻게 읽혀 지는 건가요? > >다시 말해서 +90를 1g라고 한다면 1도는 중력(g)값이 바껴서 되는 겁니까? > >아니면 1g으로 한다면 0도~+90도 사이의 값 다 읽을 수 있는것입니까? > >사이의 각도를 다 읽는 있다면 몇 도 각도로 읽을 수 있나요? > >답변 기다리겠습니다.^^
2543 답변완료AD-USBUART(AD-USBUART) 와 AB-M16-B 보드 연결시 최장식 2009-03-30 1,170
개발보드와 USART 연결시 개발 보드 전원(D706)과 PB1의 LED 에 불이 들어 오는 이유는 무엇인가요?
관리자 답변 N.T.C · 2009-03-30
안녕하세요...고객님.. 전원(D706) LED가 ON되는 이유는 USBUART에서 전원을 공급하기 때문입니다. 전원 공급을 원하지 않는 경우 DIODE를 제거해 주시면 됩니다. PB1의 LED가 ON되는 이유는 현재의 PB1이 ON으로 프로그램되어 있기 때문일 겁니다. 감사합니다. >개발보드와 USART 연결시 개발 보드 전원(D706)과 PB1의 LED 에 불이 들어 오는 이유는 무엇인가요?
2542 답변완료3축가속도센서 질문입니다. 권혁진 2009-03-30 1,239
저희가 이번에 귀사(3축 가속도 센서 모듈 Ver.2 AM-3AXIS ver.2) 제품을 이용하여졸업작품으로 진동분석 시스템을 만들고자 합니다. 시스템 구성도 가속도 센서 모듈에서 진동 측정 -> atmega128로 출력 -> 컴퓨터로 데이터 전송(rs232) -> 데이터 분석 -> 그래프로 진동을 나타냄 이렇게 전체적으로 구상을 하고 있습니다. 가능은 한 것 같은데... 보드매뉴얼이나 가속도 측정법을 보아도 도무지 감이 안 잡히네요 1) 맨 나중에 보여질 그래프가 x축:시간축 y축:진동주파수 이런 식으로 x축,y축,z축 3가지 그래프로 나타낼수 있을까요?? 2) 센서 모듈에서 진동 측정시 사용되는 가속도 계산식은 어떤 식을 써야 하나요? 3) 저희가 구상한 시스템의 가능여부와 가능시 조언과 팁 좀 부탁드려요^^;; 질문이 좀 많을 수도 있겠지만 답변 꼭 부탁드려요 감사하겠습니다~
관리자 답변 N.T.C · 2009-03-30
안녕하세요...고객님.. 저희 NewTC제품을 이용해 주셔서 감사합니다. 1) 맨 나중에 보여질 그래프가 x축:시간축 y축:진동주파수 이런 식으로 x축,y축,z축 3가지 그래프로 나타낼수 있을까요?? >> X축은 시간의 경과이니까 3축 가속도랑은 상관없이 구현하면 될것이고, Y축에 진동 주파수를 구하신다고 했는데 진동의 크기가 어느정도 인지 상하 진동만 측정할 것인지 별 언급이 없네요. 아주 세밀한 진동(예를 들어 지진의 진동)를 측정하기엔 3축 가속도가 적당하지 않을 수도 있습니다. 물론 많은 보정을 통해 오차 범위를 줄인다면 가능은 합니다. 2) 센서 모듈에서 진동 측정시 사용되는 가속도 계산식은 어떤 식을 써야 하나요? >> 3축 가속도 센서의 값은 X, Y, Z축의 정적 가속도와 동적 가속도 값이 전압값으로 나옵니다. 따라서 전압값을 디지털화 할수 있는 코딩작업이(ATMega128의 경우 ADC포트는 F 포트입니다.) 필요합니다. 저희 홈페이지 자료실에 가시면 가속도에 대한 메뉴얼과 소스들이 많이 있습니다. 참고하시기 바랍니다. 3) 저희가 구상한 시스템의 가능여부와 가능시 조언과 팁 좀 부탁드려요^^;; >>가능 여부는 항상 열려 있습니다. 기본적인 프로그램 코딩과 개념에 대한 준비를 먼저 하시고 하시다가 조언이 필요할 경우 언제라도 질문 올려 주시면 최대한 서포트 해 드리겠습니다. 열심히 하세요.^_^ 감사합니다. >저희가 이번에 귀사(3축 가속도 센서 모듈 Ver.2 AM-3AXIS ver.2) 제품을 이용하여졸업작품으로 진동분석 시스템을 만들고자 합니다. > >시스템 구성도 >가속도 센서 모듈에서 진동 측정 -> atmega128로 출력 -> 컴퓨터로 데이터 전송(rs232) -> 데이터 분석 -> 그래프로 진동을 나타냄 > >이렇게 전체적으로 구상을 하고 있습니다. > >가능은 한 것 같은데... > >보드매뉴얼이나 가속도 측정법을 보아도 도무지 감이 안 잡히네요 > >1) 맨 나중에 보여질 그래프가 x축:시간축 y축:진동주파수 이런 식으로 > >x축,y축,z축 3가지 그래프로 나타낼수 있을까요?? > >2) 센서 모듈에서 진동 측정시 사용되는 가속도 계산식은 어떤 식을 써야 하나요? > >3) 저희가 구상한 시스템의 가능여부와 가능시 조언과 팁 좀 부탁드려요^^;; > >질문이 좀 많을 수도 있겠지만 답변 꼭 부탁드려요 >감사하겠습니다~
2541 답변완료RF모듈 사용에 대해서 질문입니다.... 배동희 2009-03-30 1,148
현재 구성된 상태가 1) AVR MEGA 128 개발보드 - RF모듈 2) 컴퓨터 - USB UART 보드- RF모듈 이렇게 되어있는데요... 1)에서 2)로 데이터를 보내서 컴퓨터의 하이퍼터미널을 이용해서 값을 출력하고자하는데요 구성1)의 경우 CR1에 빨간색 led가 깜빡깜빡하구요 구성2)의 경우 아무 LED도 켜지지않는데 왜그런건가요?? 질문글들을 몇개 찾다보니 RF모듈에 5V전압을 연결해주어야한다는데 이방법으로 해결이 되는건가요?? (해결이 된다면 어디서 5V를 끌어와야되는건가요?)
관리자 답변 배동희 · 2009-03-30
구성1)의 경우 RF모듈과는 UART 로 연결되어있습니다.
2540 답변완료라인트레이서 UART Function과 시리얼포트 명영진 2009-03-30 1,286
무선 조정을 하기 위해 지그비라는 장비를 좀 이용하려고 하는데요.. 그러기 위해서는 무선조정을 위한 UART Function을 알아야 하고... 지그비와 연결하기 위한 시리얼포트가 어느것인지 알아야 한다고 하던데... 좀 알려주시겠습니까?
관리자 답변 N.T.C · 2009-03-30
안녕하세요...고객님.. 라인트레이서에 보시면 4Pin짜리 TTL 레벨 UART통신용 커넥터가 있습니다. PCB판에 보시면 SERIAL PORT라고 적혀있습니다. 하시다가 궁금한점 있으면 언제라도 질문주세요.. 감사합니다. >무선 조정을 하기 위해 지그비라는 장비를 좀 이용하려고 하는데요.. > >그러기 위해서는 무선조정을 위한 UART Function을 알아야 하고... > >지그비와 연결하기 위한 시리얼포트가 어느것인지 알아야 한다고 하던데... > >좀 알려주시겠습니까?
2539 답변완료출력이 반대로나와요 진환 2009-03-28 1,435
128pro 키트를 쓰는데요 제가 너무 초보라서 -ㅁ-;; led점등테스트를 하다가 실수로 mcu에 12v를 넣었어요 그랬더니 PORTB(2번3번핀) PORTD(1번핀)이 반대로 작동해서 1일때 혼자 0이 들어가고 확실히 꺼지지도않고 희미하게 켜져있어요 ; mcu가 맞이간건가요 -_-??
관리자 답변 N.T.C · 2009-03-28
안녕하세요? 고객님, 저희 NewTC 제품을 이용하여 주셔서 감사합니다. 좀 이상이 생긴 것 같은데요. 본사에 방문하셔서 A/S를 받는 것이 좋겠습니다. 비용은 9,900원이 들것 같습니다. 감사합니다. >128pro 키트를 쓰는데요 제가 너무 초보라서 -ㅁ-;; > >led점등테스트를 하다가 실수로 mcu에 12v를 넣었어요 > >그랬더니 PORTB(2번3번핀) PORTD(1번핀)이 반대로 작동해서 1일때 > >혼자 0이 들어가고 확실히 꺼지지도않고 희미하게 켜져있어요 ; > >mcu가 맞이간건가요 -_-?? >