로그인 | 회원가입 | 주문 조회
총 10,748개의 질문이 있습니다.
번호 제목 작성자 등록일 조회
488 답변완료IRS2007대회 참가소감 및 후기 장형남 2007-08-12 2,833
인터넷 서핑 도중 우연히 IRS2007이란 대회를 알게 되었다. 로봇에 흥미가 있었던 나는 친구 한명을 꼬셔서 이 대회에 출전하게 되었다. 이 대회는 소프트웨어를 중점적으로 보는 로봇대회로써, 이번해에 처음 열린 국제(??)대회 이다.(고등부8팀, 대학부10팀 밖에 출전안했지만) 먼저 무슨 로봇을 만들지를 결정해야 했는데, 우리는 시각장애인을 돕는 맹인안내견을 대체할 수 있는 로봇을 만들기로 했다. 그러기 위해서는 일단 모터를 사용해야 했는데, 우리는 좀더 정확한 제어를 위해 스테핑모터를 사용하기로 하였다. 그리고 장애물 탐지용으로 초음파센서를 이용키로 하였다. 이전에 uC/OS-II를 접해본 적이 있는 우리는 이 OS를 로봇에 적재시키기로 하고, 이에 알맞는 프로세서(??)를 찾던 중 ATMEL 사의 AT91SAM7S가 눈에 들어와 이를 사용하기로 하였다. 이 로봇의 프레임은 공장을 운영하시는 아버지께서 알루미늄으로 만들어 주셨다. 처음 로봇을 만드는 우리는 거의 맨땅에 헤딩하기 식으로 시작하게 되었는데, 아무것도 아는게 없는 우리는 인터넷을 샅샅이 뒤지고, 안나오면 여러 카페나 관련 회사에 질문을 하여 해결하기도 하였다. 다행이도 디시인사이드 프로그래밍게시판에서 알게된 최현성님과 NTC사장님이 많은 도움을 주셔서 수월하게 해 나갈 수 있었다. NTC사장님께서는 무턱대고 회사를 찾아온 우리들에게 점심도 사주시고, 우리가 사용하던 부품보다 더욱 나은 부품들을 빌려주시기도 하셨다. 이렇게 순조롭게 대회준비가 진행되던 중 대회전날 큰 일이 발생하였다. 대회전날 저녁 8시에 과전압인지 쇼트인지 확실치는 않지만 이로 인해 초음파 센서와 SAM7S보드가 나가버렸다. 시간이 시간인지라 다시 부품을 사러갈 형편도 안되어 절망하고 있는 찰나에 최현성님께서 보드를 가지고 있다고, 빌려줄 수 있다고 하셨다. 그래서 우리는 0시가 다되어 최현성님을 만나서 보드를 빌려왔다. 하지만 초음파센서는 구하지 못하였다. 대회 당일, 대회장에 도착했을 때, 몇몇 대학부 팀들은 입이 쩍 벌려질 정도의 로봇을 가지고 출전하기도 하였다. 우리가 출전한 고등부 같은 경우는 대부분 레고 닥타 혹은 마인드스톰 같은 조립형 로봇(??)으로 출전하였었다. 결국 우리조는 시연을 하지 못하였고, 발표 또한 내가 망쳐버렸다. 우리는 상을 못탈 거라 생각하고 있었는데, 어떻게 되었는지 동상을 받게 되었다. 하지만 우리 작품의 수준이나, 주제를 생각해보면 우리가 시연만 제대로 했다면 금상도 받을 수 있지 않았을까 아쉬움이 크다. 우리로봇의 프리젠테이션파일과 소스를 첨부합니다. 소스는 완벽하지 않으며 잘못된 부분이 존재할 수도 있습니다. **소스는 며칠 뒤에 업로드 합니다.
관리자 답변 관리자 · 2026-10-14
안녕하세요, 뉴티씨입니다. 문의 내용 확인하였습니다. 추가 문의사항은 [email protected] 또는 02-704-4774로 연락 주시기 바랍니다. 감사합니다.
487 답변완료ad_jtag 관련 문의드립니다. 김종완 2007-08-10 2,535
오늘 전화드렸던 사람입니다. 1. usb to serial 케이블을 쓰러면 ad-jtag과 크로스 케이블로 연결하라고 하셔서 가지고 있는 시리얼케이블(9핀)을 잘라서 말씀해주신대로 다른건 다 그대로 놔두고 2번을 3번에 3번을 2번에 연결했습니다. 확인차 여쭤보는데 그렇게만 하면 되나요? 혹시나해서 케이블 연결이 잘됐는지 다 확인해봤습니다. 2. 제가 구입한 제품은 ad-jtag 빨간색 보드에 isp 커넥터 없는 제품입니다. 메뉴얼은 예전모델인것같은 파란색보드가 그려진 것이 들어있더군요 eleparts에서도 업그레이드가 안된 제품이라고 했습니다. 제가 avr studio 4.13을 쓰는데 connect조차도 안되네요. 업그레이드를 하지 않으면 원래 connect조차도 안되나요? 업그레이드를 해야합니까? 3. 6핀구멍은 있는데 핀은안달려있더군요 만들어서 하면 되는건가요?
관리자 답변 N.T.C · 2007-08-11
안녕하세요? 저희 뉴테크놀로지 컴패니 제품을 이용해 주셔서 감사드립니다. 버전이 맞지 않으면, 연결이 안됩니다. 업그레이드 후에 사용하시기 바랍니다. 6핀에 만들어서 다시거나, 그냥 컨텍하신채로 살짝 미시면 꼭 땜하지 않으셔도 잠깐동안 접촉된 상태로 쓰실 수 있습니다. 감사합니다.
486 답변완료UART0 통신이 안되네요..... 임종훈 2007-08-10 2,894
자꾸 질문드려서 죄송하지만 저번에 A/S를 맡기고 나서 소스코드를 입혔는데요. 예제 프로그램에 보면 ex_printf 프로그램을 입히는데 UART0에 케이블이 꼽혀있으면 cannot program flash 라고 뜨고요 UART0에 케이블을 뽑으면 프로그램에 입혀지는데.. 뭐가 잘못되어서 그러는 걸까요?? 그래서 다른 프로그램도 다 위와 같은 방식으로 했는데 UART0에 연결되어 있으면 프로그램이 입혀지지 않더군요. 다른컴퓨터에서도 해보았는데 여전히 증상은 같았습니다. 무슨문제인걸까요?
관리자 답변 N.T.C · 2007-08-11
안녕하세요? 저희 뉴테크놀로지 컴패니 제품을 이용해 주셔서 감사드립니다. 우선, UART0 TTL Level 통신을 하시려는 게 맞나요? 그 경우, 모듈 뒷편에 있는 MAX3232 칩의 데이터와 충돌하는 것 같습니다. 이미 PC level로 쓰실 수 있도록 MAX3232 칩이 붙어 있어서 생기는 현상이므로, MAX3232 칩과 AVR의 MOSI 핀이 연결된 곳을 떼시고, 사이에 1k옴 정도를 살짝 달아 놓으시면 둘 다 잘 동작할 겁니다. 감사합니다.
485 답변완료rs232 케이블... 박찬호 2007-08-10 3,137
답변 감사드립니다. TX, RX 랑 전원만 잘 연결하면 프린트 포트도 되는지 알았는데... PCB에 "AM 128PRO V01" 이라구 적혀있구요... 케이블 구입가능한지 답변 부탁드립니다. >전에 ATMega128 CPU 모듈을 구입하였는데, >rs232 통신을 해야되서 통신케이블을 직접 제작해서 프린트 포트에 연결했더니 서로 인식을 못하더군요. > >ATMega128 CPU 모듈에 사용되는 케이블을 판매하면 구입하려고 합니다. > >ps. 사진에 보니까 제가 구입한 모듈이랑 다른데 그럴수도 있나요? > 제가 구입한거에는 max232a 칩이 없는 것 같습니다.
관리자 답변 N.T.C · 2007-08-10
안녕하세요? 저희 뉴테크놀로지 컴패니를 방문해 주셔서 감사합니다. AM-128PRO에 있는 UART0, UART1을 이용하시려면, 3T9 케이블을 이용하시면 되구요. 구입 가능하십니다. 이 케이블을 이용하시면 PC랑 직접 시리얼 통신 가능합니다. 프린터 포트와 연결해 I/O로 쓰시려면, 방법이 있습니다. 저희 AM-128PRO의 포트와 연결해 쓰시면 됩니다. 감사합니다.
484 답변완료초음파센서srf04 질문입니다. 임종훈 2007-08-08 2,683
KD-128 pro 키트에 srf-04를 연결해서 실험해 보고있습니다. 자료실에 보면 소스가 있는데 있는그대로 키트에 넣게되면 7세그먼트에서 숫자가 출력되는걸로 알고있는데 숫자는 출력되지 않고 중간중간끊긴 숫자들이 나오는데요. 소스에서 수정해야하는 부분이 있는지 묻고싶고요. 초보자라서 그러는데 상세하게 설명을 쫌 해주세요. 어떻게 하면 제대로 나오는가에 대해서요. 아 그리고 보드 A/S맡긴거 잘받았습니다.
관리자 답변 N.T.C · 2007-08-09
안녕하세요? 저희 뉴테크놀로지 컴패니 제품을 이용해 주셔서 감사드립니다. 타이밍을 잘 보시면 되구요. 타이밍이 잘 맞지 않으면, 착시 현상을 이용하는 세븐 세그먼트 숫자 변하게 하기가 끊겨서 보이게 됩니다. 그 부분을 수정하셔야 할 겁니다. 감사합니다.
483 답변완료AT-Mega128로 text LCD 확장보드에 관하여 김진한 2007-08-08 2,563
AT-Mega128 pro를 이용하여 16*2 text LCD확장보드를 만들었는데 데이터 port로 port C(0~7) 까지 제어 port로 port G(0~2, G0-RS, G1-R/W, G2-E)로 연결하였습니다. 이렇게 연결하여도 textLCD가 구동됩니까?? (저렇게 연결한건 자료실 61번 그래픽/텍스트 LCD 회로 보고 만들었습니다.) 여기 자료실에 ICC-AVR은 port B와 port D로 되어있던데.... 프로그램은 위 port들에 맞게(제어는 port G, 데이터는 port C) 고친다 가정하에..
관리자 답변 N.T.C · 2007-08-09
안녕하세요? 저희 뉴테크놀로지 컴패니를 방문해 주셔서 감사드립니다. 고객님이 위에서 말씀하신대로 연결만 제대로 하셨다면, 제대로 동작 할 것으로 기대됩니다. 감사합니다.
482 답변완료SAM7S 스테핑모터 구동에 관해(AM-CS2P) 장형남 2007-08-08 2,742
안녕하세요? SAM7S에 AM-CS2P구동모듈을 달아서 스테핑모터를 구동하려고 하는데, 프로그램을 작성하여 보드에 올려도 모터쪽에는 아무런 반응도 없네요.ㅜㅜ 모터 구동부분 소스를 올려드릴테니, 틀린부분좀 찾아주세요. #define MotorLA 13 #define MotorL_A 14 #define MotorLB 27 #define MotorL_B 28 #define MotorRA 15 #define MotorR_A 16 #define MotorRB 29 #define MotorR_B 30 void Motor_Init (void) { AT91F_PIO_CfgOutput( AT91C_BASE_PIOA, MotorLA|MotorL_A|MotorLB|MotorL_B|MotorRA|MotorR_A|MotorRB|MotorR_B ) ; AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, MotorLA|MotorL_A|MotorLB|MotorL_B|MotorRA|MotorR_A|MotorRB|MotorR_B ) ; } unsigned char motorClock(unsigned char step, unsigned char dir) { step = step & 0x0f; if(dir) { switch(step) { case 0x03 : step=0x06; break; case 0x06 : step=0x0c; break; case 0x0c : step=0x09; break; case 0x09 : step=0x03; break; default : step=0x03; break; } } else { switch(step) { case 0x03 : step=0x09; break; case 0x06 : step=0x03; break; case 0x0c : step=0x06; break; case 0x09 : step=0x0c; break; default : step=0x0c; break; } } return step; } void Motor (unsigned char dir) { char stepL,stepR; int i; if(dir=='F')//직진 { for(i=0;i<10000;++i) { stepL=motorClock(stepL,1); stepR=motorClock(stepR,0); AT91C_BASE_PIOA->PIO_SODR =(stepL&0x08)<<MotorLA; AT91C_BASE_PIOA->PIO_SODR =(stepL&0x04)<<MotorL_A; AT91C_BASE_PIOA->PIO_SODR =(stepL&0x02)<<MotorLB; AT91C_BASE_PIOA->PIO_SODR =(stepL&0x01)<<MotorL_B; AT91C_BASE_PIOA->PIO_SODR =(stepR&0x08)<<MotorRA; AT91C_BASE_PIOA->PIO_SODR =(stepR&0x04)<<MotorR_A; AT91C_BASE_PIOA->PIO_SODR =(stepR&0x02)<<MotorRB; AT91C_BASE_PIOA->PIO_SODR =(stepR&0x01)<<MotorR_B; OSTimeDly(10); } } else if(dir=='B')//후진 { for(i=0;i<10000;++i) { stepL=motorClock(stepL,0); stepR=motorClock(stepR,1); AT91C_BASE_PIOA->PIO_SODR =(stepL&0x08)<<MotorLA; AT91C_BASE_PIOA->PIO_SODR =(stepL&0x04)<<MotorL_A; AT91C_BASE_PIOA->PIO_SODR =(stepL&0x02)<<MotorLB; AT91C_BASE_PIOA->PIO_SODR =(stepL&0x01)<<MotorL_B; AT91C_BASE_PIOA->PIO_SODR =(stepR&0x08)<<MotorRA; AT91C_BASE_PIOA->PIO_SODR =(stepR&0x04)<<MotorR_A; AT91C_BASE_PIOA->PIO_SODR =(stepR&0x02)<<MotorRB; AT91C_BASE_PIOA->PIO_SODR =(stepR&0x01)<<MotorR_B; OSTimeDly(10); } } else if(dir=='R')//우회전 { for(i=0;i<10000;++i) { stepL=motorClock(stepL,1); stepR=motorClock(stepR,1); AT91C_BASE_PIOA->PIO_SODR =(stepL&0x08)<<MotorLA; AT91C_BASE_PIOA->PIO_SODR =(stepL&0x04)<<MotorL_A; AT91C_BASE_PIOA->PIO_SODR =(stepL&0x02)<<MotorLB; AT91C_BASE_PIOA->PIO_SODR =(stepL&0x01)<<MotorL_B; AT91C_BASE_PIOA->PIO_SODR =(stepR&0x08)<<MotorRA; AT91C_BASE_PIOA->PIO_SODR =(stepR&0x04)<<MotorR_A; AT91C_BASE_PIOA->PIO_SODR =(stepR&0x02)<<MotorRB; AT91C_BASE_PIOA->PIO_SODR =(stepR&0x01)<<MotorR_B; OSTimeDly(10); } } else if(dir=='L') { for(i=0;i<10000;++i)//좌회전 { stepL=motorClock(stepL,0); stepR=motorClock(stepR,0); AT91C_BASE_PIOA->PIO_SODR =(stepL&0x08)<<MotorLA; AT91C_BASE_PIOA->PIO_SODR =(stepL&0x04)<<MotorL_A; AT91C_BASE_PIOA->PIO_SODR =(stepL&0x02)<<MotorLB; AT91C_BASE_PIOA->PIO_SODR =(stepL&0x01)<<MotorL_B; AT91C_BASE_PIOA->PIO_SODR =(stepR&0x08)<<MotorRA; AT91C_BASE_PIOA->PIO_SODR =(stepR&0x04)<<MotorR_A; AT91C_BASE_PIOA->PIO_SODR =(stepR&0x02)<<MotorRB; AT91C_BASE_PIOA->PIO_SODR =(stepR&0x01)<<MotorR_B; OSTimeDly(10); } } }
관리자 답변 N.T.C · 2007-08-08
안녕하세요? 저희 뉴테크놀로지 컴패니 제품을 이용해 주셔서 감사드립니다. 저희 회사에서는 죄송하지만, 고객님의 소스 코딩디버깅까지 지원해 드리고 있지는 않습니다. 저희 회사에서 제공하고 있는 예제 소스를 참고하셔서, 코딩을 하셔야 할 것 같습니다. 하시면서, 문제점 파악이 되시면 Q&A 상에서 그걸 수정하여 나가는 방식으로 진행해 주시기 바랍니다. 감사합니다.
481 답변완료ATMega128 CPU 모듈에 사용되는 rs232용 serial cable 구입할 수 있나요? 박찬호 2007-08-08 2,832
전에 ATMega128 CPU 모듈을 구입하였는데, rs232 통신을 해야되서 통신케이블을 직접 제작해서 프린트 포트에 연결했더니 서로 인식을 못하더군요. ATMega128 CPU 모듈에 사용되는 케이블을 판매하면 구입하려고 합니다. ps. 사진에 보니까 제가 구입한 모듈이랑 다른데 그럴수도 있나요? 제가 구입한거에는 max232a 칩이 없는 것 같습니다.
관리자 답변 N.T.C · 2007-08-08
안녕하세요? 저희 뉴테크놀로지 컴패니 제품을 이용해 주셔서 감사드립니다. 구체적으로 가지고 계신 제품 번호가 어떤 것인지 궁금합니다. 저희 회사에는 AM-128 모듈과 AM-128PRO 의 두가지 모듈이 있습니다. PCB 상에 작게 흰 글씨로 써 있으니 확인 바랍니다. AM-128PRO의 경우 J204, J205 각각 UART0~1번입니다. 그리고, RS232 통신 중 시리얼 포트로 연결하셔야 하구요. 프린트 포트에 연결하실 수도 없겠지만, 연결하시면 동작하지 않습니다. 감사합니다.
480 답변완료질문입니다. 심정수 2007-08-08 2,479
ATMega128 Pro 개발키트 KD-128Pro 로 인터럽트신호를 받을 때 스텝모터를 돌리고자하는 프로그램을 만들고자하는데 가능한지요?? 그리고 인터럽트포트는 어느것인지좀...^^
관리자 답변 N.T.C · 2007-08-08
안녕하세요? 저희 뉴테크놀로지 컴패니를 방문해 주셔서 감사드립니다. 말씀하신 인터럽트 포트는 external interrupt 를 이용하시려는 것 같은데요, PORTD의 0, 1, 2, 3번과 PORTE의 4, 5, 6, 7번핀을 이용하시면 됩니다 감사합니다.
479 답변완료atmega128pro..... 강용구 2007-08-07 2,470
이번에 atmega128pro킷트를 구해서 공부해보려고하는 초보입니다. 혹시 이 킷트를 기본으로 해서 함께 공부할수 있도록 나와있는 서적은 없나요????
관리자 답변 N.T.C · 2007-08-08
안녕하세요? 저희 뉴테크놀로지 컴패니 제품을 이용해 주셔서 감사드립니다. 우선, KT-M128 kit를 구매하시면, CD 내에 AVR 강좌가 자세히 들어 있습니다. 그것을 인쇄해서 보시면 되구요. 왠만한 책만큼 내용이 들어 있습니다. 그리고, 저희 회사 제품은 강좌로 진행이 되므로, 필요하신 강좌를 Q&A 상에 요청하시거나, 싸이트에 있는 공개된 강좌를 이용하시기 바랍니다. 그리고, KD-128PRO와 같은 저렴한 킷트로 공부해 보실 수도 있는 데, 모듈을 각각 따로 구매하시거나 따로 만들어 가시면서 하셔야 합니다. 아직, 책으로 만든 것은 없지만, 인쇄해 보시면, 책처럼 보실 수 있는 간단한 강좌는 싸이트에 올려두었습니다. 하나씩 따라가면서 하시면 됩니다. 감사합니다.
478 답변완료죄송하지만 한가지 더 질문드립니다. 박준석 2007-08-07 2,505
이 소스로는 횟수를 정해서 돌리는 방법은 없는 것 입니까?? 소스 설명은 잘 이해 했습니다. 하지만 마지막 부분의 while문에서 변형 방법 좀 부탁드립니다. for나 if 문을 사용해보았지만 모터에서 인식이 안됩니다. 죄송하지만 사용 방법을 좀 자세히 설명 해주셨으면 합니다. 부탁드립니다.
관리자 답변 N.T.C · 2007-08-08
안녕하세요? 뉴테크놀로지 컴패니입니다. for 문 if 등에서도 사용이 가능합니다. 하지만, 모터를 너무 빨리 돌리신다거나, 너무 느리게 신호를 줘서 돌린다거나 하면 돌아가지 않습니다. 신호를 너무 빨리 줘도, 모터가 돌아갈 수 있는 속도를 넘어서 버리므로, 돌지않고, 탈진하여 웅 거리고 있게 되구요. 반대로 너무 느리게 주면, 힘이 없어서 돌아가지 않습니다. 감사합니다.
477 답변완료가속도 센서 관련 질문 입이다 장동은 2007-08-06 4,924
안녕하세요 귀사의 3축 가속도 센서를 이용 하던 도중 질문 사항이 있어 글을 올립니다. Application은 아주 단순 합니다. 센서로 부터 아날로글 입력을 받아 ADC( 10비트 사용 )하여 값을 시리얼로 프로토콜에 맞추어 내보내 주기만 하면 됩니다. 그런데 Test해본결과 실제 오차가 많이 나오는것을 발생 하는 것을 볼수가 있었습니다. 제가 계산해 본결과, -90도 : 264 , 0도 : 512 , 90 : 760 의 값에서 나와야 됩니다. ( 3.3V일때 2^10승 값으로 나누워 계산 하였습니다. ) 자료실에 있는 자료도 검토 하였습니다. 하지만 이 허용 범위에서 넘어서는 경우를 많이 볼수 있는데, 예를들어 800 이 나오 던지 아니면 200 이런값들이 나오고 있습니다. 어쩌다 튀는 정도가 아니라 많이 심하다 싶을 정도로 이러한 값들이 나오고 있는데, 이런 경우가 발생 하는 이유가 있는지요? 아니면, 이런것들을 소프트웨어적으로 보상 할 수 있는 방법이 있는지요? 제가 잘못 이해 하고 있다던가 아니면 모르는 잘못 알고 있는 부분이 있는지 체크 부탁 드립니다. 관련하여, 조언 부탁드립니다. 또한 소스코드는 아래에 첨부드렸으며, 딴친구가 가속도 센서 모듈을 구매 하였고 F/W는 제가 하고 있습니다. CD를 분실 하여, 소스 코드는 참고를 못 하고 있습니다. ( CD를 받을 수 있는 방법 일을 지요? 아니면 다시 구매를 해야 되는 지요? ) 만약, 이번주까지 이문제를 해결 하지 못한다면 VTI사의 I2C나 SPI의 인테페이스가 제공되는 가속도 센서로 교체를 해야 될지도 모릅니다. 도움 될만한 내용 있으면 조언 부탁 드립니다. 참 MCU는 atmega88을 사용 하였습니다. 혹시 전화 드리고 싶으면 어떤 번호로 전화 드려야 될지요 ? 프로토콜은 첨부 드렸습니다. /***************************************************** This program was produced by the CodeWizardAVR V1.24.8c Professional Automatic Program Generator ?Copyright 1998-2006 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 2007-07-24 Author : F4CG Company : F4CG Comments: Chip type : ATmega48 Clock frequency : 8.000000 MHz Memory model : Small External SRAM size : 0 Data Stack size : 128 *****************************************************/ #include <mega88.h> #include <stdio.h> #include <string.h> #include <delay.h> void InitMCU(void); void SendStr( char *, int Len ); #define RXB8 1 #define TXB8 0 #define UPE 2 #define OVR 3 #define FE 4 #define UDRE 5 #define RXC 7 #define FRAMING_ERROR (1<<FE) #define PARITY_ERROR (1<<UPE) #define DATA_OVERRUN (1<<OVR) #define DATA_REGISTER_EMPTY (1<<UDRE) #define RX_COMPLETE (1<<RXC) // USART Receiver buffer #define RX_BUFFER_SIZE0 64 char rx_buffer0[RX_BUFFER_SIZE0]; unsigned char TxBuf[100]; #if RX_BUFFER_SIZE0<256 unsigned char rx_wr_index0,rx_rd_index0,rx_counter0; #else unsigned int rx_wr_index0,rx_rd_index0,rx_counter0; #endif // This flag is set on USART Receiver buffer overflow bit rx_buffer_overflow0; // USART Receiver interrupt service routine interrupt [USART_RXC] void usart_rx_isr(void) { char status,data; status=UCSR0A; data=UDR0; if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0) { rx_buffer0[rx_wr_index0]=data; if (++rx_wr_index0 == RX_BUFFER_SIZE0) rx_wr_index0=0; if (++rx_counter0 == RX_BUFFER_SIZE0) { rx_counter0=0; rx_buffer_overflow0=1; }; }; } #ifndef _DEBUG_TERMINAL_IO_ // Get a character from the USART Receiver buffer #define _ALTERNATE_GETCHAR_ #pragma used+ char getchar(void) { char data; while (rx_counter0==0); data=rx_buffer0[rx_rd_index0]; if (++rx_rd_index0 == RX_BUFFER_SIZE0) rx_rd_index0=0; #asm("cli") --rx_counter0; #asm("sei") return data; } #pragma used- #endif //#define ADC_VREF_TYPE 0x40 #define ADC_VREF_TYPE 0x00 // Read the AD conversion result unsigned int read_adc(unsigned char adc_input) { ADMUX=adc_input|ADC_VREF_TYPE; // Start the AD conversion ADCSRA|=0x40; // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCW; } // Declare your global variables here void main(void) { unsigned int Temp[6]; char i,j; // Crystal Oscillator division factor: 1 #pragma optsize- CLKPR=0x80; CLKPR=0x00; #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif InitMCU(); // Global enable interrupts #asm("sei") while (1) { memset( Temp ,0x00, sizeof(Temp)); for ( j=0; j<2; j++) { for( i=0; i<3; i++ ) { Temp[i] = read_adc(i); delay_ms(2); } } memset(TxBuf,0x00,sizeof(TxBuf)); sprintf(TxBuf,"@,1,%d,%d,%d,&\\r\\n",Temp[0],Temp[1],Temp[2]); SendStr( TxBuf , strlen(TxBuf)); delay_ms(100); for ( j=0; j<2; j++) { for( i=3; i<6; i++ ) { Temp[i] = read_adc(i); delay_ms(2); } } memset(TxBuf,0x00,sizeof(TxBuf)); sprintf(TxBuf,"@,2,%d,%d,%d,&\\r\\n",Temp[3],Temp[4],Temp[5]); SendStr( TxBuf , strlen(TxBuf)); delay_ms(96); } } void SendStr( char* ch , int Len ) { int i; for( i=0; i<Len; i++) { putchar(ch[i]); } } void InitMCU(void) { // Input/Output Ports initialization // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0x00; // Port C initialization // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0x00; // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x00; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0A output: Disconnected // OC0B output: Disconnected TCCR0A=0x00; TCCR0B=0x00; TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2A output: Disconnected // OC2B output: Disconnected ASSR=0x00; TCCR2A=0x00; TCCR2B=0x00; TCNT2=0x00; OCR2A=0x00; OCR2B=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off // Interrupt on any change on pins PCINT0-7: Off // Interrupt on any change on pins PCINT8-14: Off // Interrupt on any change on pins PCINT16-23: Off EICRA=0x00; EIMSK=0x00; PCICR=0x00; // Timer/Counter 0 Interrupt(s) initialization TIMSK0=0x00; // Timer/Counter 1 Interrupt(s) initialization TIMSK1=0x00; // Timer/Counter 2 Interrupt(s) initialization TIMSK2=0x00; // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART0 Mode: Asynchronous // USART Baud rate: 9600 UCSR0A=0x00; UCSR0B=0x98; UCSR0C=0x06; UBRR0H=0x00; UBRR0L=0x33; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; ADCSRB=0x00; // ADC initialization // ADC Clock frequency: 500.000 kHz // ADC Voltage Reference: AVCC pin // ADC Auto Trigger Source: None // Digital input buffers on ADC0: On, ADC1: On, ADC2: On, ADC3: On // ADC4: On, ADC5: On DIDR0=0x00; ADMUX=ADC_VREF_TYPE; ADCSRA=0x84; }
관리자 답변 N.T.C · 2007-08-07
안녕하세요? 저희 뉴테크놀로지 컴패니 제품을 이용해 주셔서 감사드립니다. 답변과 일부 파일은 이메일로 보내드렸습니다. 언제든 질문 있으시면 이용해 주시기 바랍니다. 감사합니다.
476 답변완료모터모듈 관련 질문 최수영 2007-08-06 2,361
전 질문에 대한 답변감사드립니다...회로도를 보니 간단하게 해결되더라구요..... 또 다른 질문이 있습니다. 저희 팀이 현재 차체에 ARM9보드와 웹캠,그리고 베터리 팩을 도 올려야 하는 테스트결과 너무 무거워서 나가질 않더라구요.... DC Motor Control Board (AM-CD2M VO1) 제어모듈은 몇 암페어 정도가 인가되어도 안전한지 알고싶습니다
관리자 답변 N.T.C · 2007-08-08
안녕하세요? 저희 뉴테크놀로지 컴패니 제품을 이용해 주셔서 감사드립니다. 우선, CD2M 제어 모듈은 2A 까지 제어 가능한 모듈입니다. 인가해 주는 전류의 아답타는 몇 암페아를 쓰셔도 상관이 없지만, 2A 정도의 로드까지만 제어가 가능합니다. 그 이상의 전류가 필요한 정도로 모터가 회전하고, 부하가 걸린다면 보드 이상이 염려되므로, 다른 모듈을 사용하셔야 합니다. 감사합니다.
475 답변완료스테핑모터 구동에 대한 문의 드립니다. 박준석 2007-08-06 2,497
저희가 이번에 AM-MS2 모듈을 구입해서 모터구동을 연습하고 있는데요 홈페이지에 있는 강좌와 자료실 및 Q&A를 활용하여 스테핑 모터를 구현해보려고 하였지만, 처음인지라 무척 어렵습니다. 소스도 받아서 돌려보았지만 무한루프만 되고 다른 방법에 대한 기술이 없습니다. 소스 해석을 좀 자세히 부탁드리고 모듈의 두포트를 따로 구동하는 방법 및 횟수를 정해서 구동하는 법 좀 알려주셨음 합니다. 처음이라 너무 힘듭니다. 제발 부탁드립니다. 유_유 저희가 보고 있는 소스 올립니다.
관리자 답변 N.T.C · 2007-08-07
안녕하세요? 저희 뉴테크놀로지 컴패니 제품을 이용해 주셔서 감사드립니다. 우선, AM-MS2 데이터시트를 참조하시는 것이 좋을 것 같구요. 간단하게 소스 사용법을 말씀 드리죠. 우선, 소스 상에서 #define MOTOR_PORT PORTA와 같이 모터를 컨트롤 할 포트를 정하시구요. DDRA = 0xff;이와 같이 하셔서 출력 포트로 지정하세요. 그런 후에, MOTOR_ENABLE; 라고 하시면 모터를 켜는 겁니다. MOTOR_DISABLE; 하시면 모터를 끄는 거구요. 그러구선 모터 모드를 설정하세요. MOTOR_STEP_M0; 이렇게 하면 M0 모드로 설정됩니다.(클럭당 도는 각도 같은 겁니다. 얼마나 정밀하게 돌릴 건지 등등을 정해 줍니다.M0~M3까지 정하실 수 있습니다.) 모듈 하나당 두개의 모터를 돌릴 수 있는 데요. 각각 도는 방향을 정합니다. MOTOR_LEFT_CW; 이렇게 하면 왼쪽 모터가 시계 방향으로 돌구요. MOTOR_LEFT_CCW; 이렇게 하면 왼쪽 모터가 반시계 방향으로 돕니다. 그리고서는 MOTOR_LEFT_CLK; 이걸 한 번 쓸 때마다 모드에서 설정한데로 방금 설정한 방향으로 한클럭당 도는 각도만큼만 돌아갑니다. 많은 도움 되었기를 바랍니다. 감사합니다. >저희가 이번에 AM-MS2 모듈을 구입해서 >모터구동을 연습하고 있는데요 >홈페이지에 있는 강좌와 자료실 및 Q&A를 활용하여 스테핑 모터를 구현해보려고 하였지만, 처음인지라 무척 어렵습니다. >소스도 받아서 돌려보았지만 무한루프만 되고 다른 방법에 대한 기술이 없습니다. >소스 해석을 좀 자세히 부탁드리고 모듈의 두포트를 따로 구동하는 방법 및 횟수를 정해서 구동하는 법 좀 알려주셨음 합니다. >처음이라 너무 힘듭니다. 제발 부탁드립니다. 유_유 >저희가 보고 있는 소스 올립니다.
474 답변완료ATmega128pro 키트 A/S 부탁드립니다. 임종훈 2007-08-03 2,400
몇일전에 전화했었는데요. 오늘 우체국 택배로 보낼꼐요.
관리자 답변 N.T.C · 2007-08-04
네, 연락처와 받으실 주소도 함께 넣어 주세요. 감사합니다.