Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 1208 | 답변완료usbisp 관련 에러 질문 | 워리님 | 2008-06-25 | 1,368 |
|
isp 를 사용시 에러가 발생합니다.
게시판을 위져 동일한 질문을 QnA 에서 찾았는데..
답변이 귀사로 보내달라는 내용이었습니다.
http://newtc.co.kr/board/view.php?id=qna&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=usbisp&select_arrange=headnum&desc=asc&no=3197
펌웨어에 문제가 있는 것으로 보이는데..
펌웨어 업그레이드 만으로 문제가 해결되는 것이라면..
펌웨어 소스를 보내주셨으면 합니다.
직접 펌웨어 업그레이드를 하겠습니다.
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사드립니다.
예전 버전은 AVR Studio 4.13 svc1에서면 사용이 가능하였습니다.
하지만, 최근 베타 업데이트를 통하여, 최신판도 연결이 가능해 졌습니다.
펌웨어 업그레이드 만으로 해결이 가능한 것은 맞습니다만,
펌웨어를 공개해 드리지는 않고 있습니다.
불편하시더라도 본사에 보내주시거나, 내방해 주시면 업그레이드 비용은 무료로 진행해 드리고 있으니,
그렇게 진행해 주셔야 합니다. 그냥 쓰시려면, 4.13 svc1로 다운그래이딩하시면 문제없이 사용이 가능합니다.
감사합니다.
>isp 를 사용시 에러가 발생합니다.
>
>게시판을 위져 동일한 질문을 QnA 에서 찾았는데..
>답변이 귀사로 보내달라는 내용이었습니다.
>
>
>http://newtc.co.kr/board/view.php?id=qna&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=usbisp&select_arrange=headnum&desc=asc&no=3197
>
>펌웨어에 문제가 있는 것으로 보이는데..
>펌웨어 업그레이드 만으로 문제가 해결되는 것이라면..
>펌웨어 소스를 보내주셨으면 합니다.
>
>직접 펌웨어 업그레이드를 하겠습니다.
>
>
>
>
>
>
|
||||
| 1207 | 답변완료AVR JTAG 보드 관련 | 김상현 | 2008-06-25 | 1,428 |
|
안녕하세요.
AVR JTAG 보드를 구매해서 사용하고 있는 사용자입니다.
AVR을 처음 사용하는지라 모르는 부분이 많은데 몇가지 문제가 해결되지 않아서 질문을 드리고자 합니다.
제가 사용하고 있는 환경은 AVR JTAG 보드와 USB to Serial cable을 연결해서 Atmega16이 적용된 보드의 JTAG pin에 연결을 하였고, AVR Studio(v4.13 sp2)에서 compile(WinAVR-20080512)한 후 생성된 hex file을 target board에 program 하거나 emulation 하고자 합니다.
헌데 문제가 fuse bit 설정 tab에만 들어가면 "JTAG Mode Error" 라는 팝업창이 뜨면서 fuse bit의 read/write를 할 수가 없습니다. 그리고 flash에 program을 할 때에도 다음과 같은 error message가 나타 납니다.
" Get isp parameters: Command of no use for AVR JTAG! FAILED! OK "
connection도 잘 수행되고 signature도 제대로 읽어지는 걸로 봐서는 정상적으로 동작하는것처럼 보이는데 왜 이 위와 같은 문제가 발생되는지 알수가 없네요.. ^^;;
혹시 제가 사용하고 있는 환경이 문제가 있는 건가요? 아니면 제가 빠트린 부분이 있는건가요??
꼭 회신 부탁드리겠습니다.
감사합니다.
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사드립니다.
저희가 테스트해 본 결과로는 이상이 없는데요, 고객님의 환경이 어딘가 잘못되었거나, JTAG장비 고장 또는 그 쪽 보드 문제 같습니다.
본사에서 테스트 해봐야 알 것 같네요.
본사 A/S 절차에 따라, 점검받아 보세요. 가까운 곳이라면 방문해 주시면, 택배비를 아낄 수가 있겠습니다.
감사합니다.
>안녕하세요.
>
>AVR JTAG 보드를 구매해서 사용하고 있는 사용자입니다.
>AVR을 처음 사용하는지라 모르는 부분이 많은데 몇가지 문제가 해결되지 않아서 질문을 드리고자 합니다.
>
>제가 사용하고 있는 환경은 AVR JTAG 보드와 USB to Serial cable을 연결해서 Atmega16이 적용된 보드의 JTAG pin에 연결을 하였고, AVR Studio(v4.13 sp2)에서 compile(WinAVR-20080512)한 후 생성된 hex file을 target board에 program 하거나 emulation 하고자 합니다.
>헌데 문제가 fuse bit 설정 tab에만 들어가면 "JTAG Mode Error" 라는 팝업창이 뜨면서 fuse bit의 read/write를 할 수가 없습니다. 그리고 flash에 program을 할 때에도 다음과 같은 error message가 나타 납니다.
>" Get isp parameters: Command of no use for AVR JTAG! FAILED! OK "
>
>connection도 잘 수행되고 signature도 제대로 읽어지는 걸로 봐서는 정상적으로 동작하는것처럼 보이는데 왜 이 위와 같은 문제가 발생되는지 알수가 없네요.. ^^;;
>
>혹시 제가 사용하고 있는 환경이 문제가 있는 건가요? 아니면 제가 빠트린 부분이 있는건가요??
>
>꼭 회신 부탁드리겠습니다.
>
>감사합니다.
|
||||
| 1206 | 답변완료다운이 안됩니다..ㅜㅜ | 백승민 | 2008-06-25 | 1,403 |
|
안녕하세요..
저도 열심히 AVR공부하고있는 공학도 입니다..^^
자료를 다운받으려고 하는데..
다운이 안됩니다...ㅜㅜ
어떻게 받는 방법이 없나요??
관리자 답변
안녕하세요? 고객님,
저희 N.T.C를 이용하여 주셔서 감사드립니다.
저희 N.T.C 자료 다운이 가끔 안된다는 분이 계십니다.
여러가지 사정상 네트웍으로 막혀 있는 경우인데,
그런 분들을 위해서 두가지 루트를 뚫어 놓았습니다.
1. 직접 다운로드
==>FAQ에 가시면 자료실 다운로드가 잘 안되네요? 라는 질문을 보세요.
2. 네이버 까페 가입 후 다운로드
==> http://cafe.naver.com/newtc.cafe
감사합니다.
>안녕하세요..
>저도 열심히 AVR공부하고있는 공학도 입니다..^^
>자료를 다운받으려고 하는데..
>다운이 안됩니다...ㅜㅜ
>어떻게 받는 방법이 없나요??
|
||||
| 1205 | 답변완료3축 가속도 센서 문의 | 최국진 | 2008-06-24 | 1,449 |
|
수고하십니다.
귀사의 3축 가속도 센서를 구입하여 테스트 중입니다.
그런데 x축과 y축은 정지시 1.65v 근처에서 전압이 출력되고 움직임이 있을 시 그 값이 변화하는데 z축은 2.5v 근처에서 정지 전압이 출력되고 동작시 값의 변화가 발생하는군요.
이 것이 정상정인 출력인지 아니면 센서나 다른 부분의 문제인지 알고 싶습니다.
감사합니다.
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사드립니다.
저희 3축 가속도 센서는 Static 가속도와 Dynamic 가속도 두가지 데이터를 모두 가지고 있습니다.
X,Y, Z축의 기본 값은 메인칩의 데이터 시트를 보시면 잘 나와 있지만
Static 가속도의 경우 Z 축의 경우 기본이 +1g입니다.
따라서, 2.45V를 기본으로 출력되게 됩니다.
자세한 사항은 첨부해 드리는 데이터 시트상의 그림을 참고해 주세요.
감사합니다.
>수고하십니다.
>귀사의 3축 가속도 센서를 구입하여 테스트 중입니다.
>그런데 x축과 y축은 정지시 1.65v 근처에서 전압이 출력되고 움직임이 있을 시 그 값이 변화하는데 z축은 2.5v 근처에서 정지 전압이 출력되고 동작시 값의 변화가 발생하는군요.
>
>이 것이 정상정인 출력인지 아니면 센서나 다른 부분의 문제인지 알고 싶습니다.
>
>감사합니다.
|
||||
| 1204 | 답변완료서보 모터 로 6족로봇 만들어 보신분 나요. --관리자님 양해 부탁드립니다. | 김형욱 | 2008-06-24 | 1,430 |
|
관리자님 답답한 부분잉있어서 그러니 양해 부탁드립니다.
며칠 안에 삭제하겟습니다.
안녕하세요.
이번에 구입한 제품은 avr메가128 뉴테크놀로지 소형보드입니다.
서보모터를 이용해서 6족로봇을 대략 서보16정도 사용됨
만드려고 하는데..
너무 어렵네요..
혹시 뉴테크놀로지 AVR MEGA 128 개발보드(소형) 보드를 이용해서
서보모터 16~20정도 스피드라던지..펄스값등
약간은 자유롭게 조절해서 콘트롤 해보신분이시라면..
연락주시겠습니까...016-9662-1411
AVR MEGA 128 개발보드(소형) 프로그램은 icc-avr 사용해본 분이신면
좋겠습니다.
관리자 답변
사용해보신분은 연락처좀남겨주세요.
강의료 드립니다
급해서 그렀습니다.
좀 다뤄보신분은 연락주세요
|
||||
| 1203 | 답변완료회원가입문제 | 이경수 | 2008-06-24 | 1,435 |
|
회원 가입을 하고 싶은데 가입하기를 클릭하면 페이지 오류가 나네요 확인 부탁드립니다.
관리자 답변
안녕하세요? 고객님,
저희 N.T.C를 방문하여 주셔서 감사합니다.
Q&A에서 회원가입을 하시면 됩니다.
또한, 뉴테크놀로지 컴패니 네이버 까페에 가입하여 활동하셔도 됩니다.
http://cafe.naver.com/newtc.cafe
감사합니다.
>회원 가입을 하고 싶은데 가입하기를 클릭하면 페이지 오류가 나네요 확인 부탁드립니다.
|
||||
| 1202 | 답변완료AD-JTAG ver1.1 동작이 안됨 | 정성훈 | 2008-06-23 | 1,393 |
|
안녕하세요
문제점이 발생하여 문제점에 대한 해결방안을 문의합니다.
AVR JTAG 보드(모델:AD-JTAG ver1.1)을 구매하여 사용 중 문제점 발생
- 처음 10번 정도는 atmega16l에 sw 다운이 잘되었습니다.
- 그러나 지금은 atmega 16l 과 연결되지 않습니다.
제가 SW 부분에 대해는 잘모르기 때문에 어떻게 조치해야 되는지 궁금합니다.
관리자 답변
안녕하세요? 고객님,
보드가 망가진 것 같은데요.
본사에서 A/S를 하셔야 할 것 같습니다.
제품 테스트는 무료이구요. 이상시 A/S는 본사의 A/S 규정을 따릅니다.
감사합니다.
>안녕하세요
>문제점이 발생하여 문제점에 대한 해결방안을 문의합니다.
>AVR JTAG 보드(모델:AD-JTAG ver1.1)을 구매하여 사용 중 문제점 발생
> - 처음 10번 정도는 atmega16l에 sw 다운이 잘되었습니다.
> - 그러나 지금은 atmega 16l 과 연결되지 않습니다.
> 제가 SW 부분에 대해는 잘모르기 때문에 어떻게 조치해야 되는지 궁금합니다.
>
|
||||
| 1201 | 답변완료am-ms2 스텝모터 제어 문의드립니다. | 김성민 | 2008-06-23 | 1,451 |
|
안녕하세요. 한양대학교 미디어통신 다니고 있는 김성민이라고 합니다.
am-ms2 스텝모터 제어 모듈 관련해서 질문드립니다.
void main(void)
{
volatile unsigned char step=0;
init_devices();
//insert your functional code here...
printf(" \\n\\n\\rStepping Motor test program...\\n\\r");
MOTOR_PORT_DDR = 0xff;
MOTOR_ENABLE;
MOTOR_STEP_M0;
MOTOR_LEFT_CCW;
MOTOR_RIGHT_CW;
PORTG=0x01;
/* 딜레이로 마이크로 스텝 드라이버 구동 */
while(1){
PORTG = ~PORTG;
delay(100);
}
}
위에는 소스는 newtc에서 제공하고 있는 스텝모터 정방향 주행 예제 소스인데
정방향 주행 중에 좌회전 을 시켜보려하는데 일단은
MOTOR_LEFT_CW;
MOTOR_RIGHT_CW;
이부분의 모터의 주행 방향을 바꿔서 움직이는 형태를 쓰려하는데 ,
그럼 소스를
MOTOR_LEFT_CCW;
MOTOR_RIGHT_CW; 돌렸다가
MOTOR_LEFT_CW;
MOTOR_RIGHT_CW;
이런식으로 구동을 해야하는데 어떤 식으로 연결 시키면 좋을까요?참고할만한
책이라도 추천해주시면 감사하겠습니다.
아직 초보라서 질문드립니다.
관리자 답변
안녕하세요? 고객님,
저희 제품을 이용하여 주셔서 감사드립니다.
고객님이 하시는 대로 하면, 제자리에서 회전을 할 것 같네요.
움직이면서는 그렇게 하면 너무 빨리 돌게 되서, 무게가 없으면 흔들리게 되어 방향을 잃을 수도 있습니다.
한쪽 바퀴는 멈춘 상태에서 한쪽 바퀴만 돌리는 방법으로 일단 해서 회전을 시킨 후, 다시 직진하는 것이 좋겠습니다.
영풍문고나 교보문고 같은 곳에 가면 관련된 책들은 많이 팔던데요.
1년 전 쯤 본 책은 Embedded Linux 기반의 로봇 설계 & 제작 이라는 책이 있더군요. 영진닷컴에서 판매중이던데요.
우선은 강좌->로봇강좌 스테핑모터편을 참고하시기 바랍니다.
감사합니다.
>
>안녕하세요. 한양대학교 미디어통신 다니고 있는 김성민이라고 합니다.
>am-ms2 스텝모터 제어 모듈 관련해서 질문드립니다.
>void main(void)
>{
> volatile unsigned char step=0;
>
> init_devices();
> //insert your functional code here...
> printf(" \\n\\n\\rStepping Motor test program...\\n\\r");
>
> MOTOR_PORT_DDR = 0xff;
>
> MOTOR_ENABLE;
> MOTOR_STEP_M0;
>
> MOTOR_LEFT_CCW;
> MOTOR_RIGHT_CW;
>
> PORTG=0x01;
> /* 딜레이로 마이크로 스텝 드라이버 구동 */
> while(1){
> PORTG = ~PORTG;
> delay(100);
> }
>
>}
>
>위에는 소스는 newtc에서 제공하고 있는 스텝모터 정방향 주행 예제 소스인데
>
>정방향 주행 중에 좌회전 을 시켜보려하는데 일단은
>
> MOTOR_LEFT_CW;
> MOTOR_RIGHT_CW;
>
>이부분의 모터의 주행 방향을 바꿔서 움직이는 형태를 쓰려하는데 ,
>그럼 소스를
>
> MOTOR_LEFT_CCW;
> MOTOR_RIGHT_CW; 돌렸다가
>
> MOTOR_LEFT_CW;
> MOTOR_RIGHT_CW;
>
>이런식으로 구동을 해야하는데 어떤 식으로 연결 시키면 좋을까요?참고할만한
>책이라도 추천해주시면 감사하겠습니다.
>아직 초보라서 질문드립니다.
>
|
||||
| 1200 | 답변완료[긴급] 가속도센서 질문입니다. | 소금쟁이 | 2008-06-23 | 1,446 |
|
안녕하세요, 학생입니다.
제가 AM-3AXIS 가속도센서보드를 구입했습니다. 질문이 있어 전화를 드리고 통화를 하지못해 홈페이지에 글을 남깁니다.
질문은 아래와 같습니다.
1) 이 센서보드가 마이크로마우스같은 작은 이동로봇의 가속도를 측정하는데 사용될 수 있습니까 ?
2) 가속도 분해능이 1.5g인것같은데, 그럼 1.5g*9.8m/ss=14.7m/ss의 가속도가 센서 자체에서 얻을 수 있는 최저 가속도값이라는 뜻인가요?
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사드리구요. 긴급하게 답변해 드립니다.^^
1) 가능합니다. 미세한 움직임도 감지되므로, 가능합니다.
2) 데이터 시트 일부를 발췌하여 올렸는 데, 1.5g에서는 800mV/g 단위로 변화한다는 얘기입니다. 몇비트로 A/D 하냐에 따라서, 측정되는 가속도의 정밀도는 달라지겠지요.
수고하세용.
>안녕하세요, 학생입니다.
>
>제가 AM-3AXIS 가속도센서보드를 구입했습니다. 질문이 있어 전화를 드리고 통화를 하지못해 홈페이지에 글을 남깁니다.
>질문은 아래와 같습니다.
>
>1) 이 센서보드가 마이크로마우스같은 작은 이동로봇의 가속도를 측정하는데 사용될 수 있습니까 ?
>
>2) 가속도 분해능이 1.5g인것같은데, 그럼 1.5g*9.8m/ss=14.7m/ss의 가속도가 센서 자체에서 얻을 수 있는 최저 가속도값이라는 뜻인가요?
>
>
|
||||
| 1199 | 답변완료베타버전 테스트 중이라면 | usbisp사용자 | 2008-06-22 | 1,388 |
|
7월 중에 나온다는 말씀인데..그럼
개인이 펌웨어를 업글할 수 있는건지요..
아님 NTC로 usbisp를 보내야 되는 겁니까..
개인이 업글 할 수 있게 해주시면 좋겠는데..
왔다갔다 하는 시간 낭비가 넘 심할 것 같네요...
수고 하십시요.
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용해 주셔서 감사합니다.
고객님의 말씀에도 일리가 있습니다마는, 개인 업그레이드는 허용하지 않을 예정입니다. N.T.C로 보내야 업그레이드를 가능하도록 정책을 정했습니다.
직접 왔다 갔다 할 수도 있지만, 택배로도 가능하도록 할 예정입니다.
물론 택배비는 소비자가 부담해야 하겠지만, 업그레이드 자체는 무료로 행사할 예정입니다. 이 질문란은 여러사람이 이용하는 곳이므로, 공지한 바와 같이 다음에 질문할 때는, 본명을 사용 부탁드립니다.
감사합니다.
>7월 중에 나온다는 말씀인데..그럼
>개인이 펌웨어를 업글할 수 있는건지요..
>아님 NTC로 usbisp를 보내야 되는 겁니까..
>
>개인이 업글 할 수 있게 해주시면 좋겠는데..
>왔다갔다 하는 시간 낭비가 넘 심할 것 같네요...
>
>수고 하십시요.
|
||||
| 1198 | 답변완료AVRStudio4.14 언제 지원 됩니까. | usbisp 사용자 | 2008-06-21 | 1,286 |
|
usbisp-l을 구입해서 사용중에 있는데..
최신 버전의 avrstudio를 아직까지 지원하지 않고 있네요..
지원 된다고 이야기만 하고 ...빠른 시간에 지원 되게 해주세요.
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사드립니다.
현재 베타버전 테스트 기간입니다만, 베타버전도 꽤 안정적입니다.
베타버전 업그레이드를 받으시면, 이상없이 최신 버전의 AVR Studio도 지원 가능합니다. 다음달 초 정도에 정식버전 릴리즈를 할 예정입니다.
감사합니다.
>usbisp-l을 구입해서 사용중에 있는데..
>최신 버전의 avrstudio를 아직까지 지원하지 않고 있네요..
>지원 된다고 이야기만 하고 ...빠른 시간에 지원 되게 해주세요.
>
|
||||
| 1197 | 답변완료질문입니다. | 알람 | 2008-06-20 | 1,435 |
|
* 구입한 제품
- AVR MEGA 128 개발보드
(소형)
AB-M128-B
- Text LCD 플러스 모듈
AM-TLCD-P
- 스테핑 모터 구동 모듈
AM-CS2
* 질문사항 (아무것도 모르는 상태여서 도움주시면 감사하겠습니다.)
1. LCD와 스테핑 모터 모듈은 아무 포트에 끼워도 되는것입니까?
2. LCD 모듈을 홈페이지 제품 사진에 나와있는데로 연결을 하고서
컴파일까지 다 했는데 글씨가 나타나지를 않습니다. 왜 그런건가요?
(ATMega128트레이닝 풀키트,KT-M128 에는 글씨가 나타남.)
3. 스테핑 모터도 자료실에 있는 소스로 컴파일까지는 되는데 구동이 되질
않습니다. 왜 그런건가요?
4. ATmega128로 알람시계를 만들려고 하는데 소스는 없는건가요?
없다면 죄송하지만 짜주실수는 없는건가요?
5. 저희가 제품을 보내면 완성시켜주실순 없는건가요?
(시간이 촉박해서 하나하나 공부해가면서 할 시간이 부족해서요)
관리자 답변
안녕하세요? 알람님,
저희 N.T.C 제품을 이용하여 주셔서 감사드립니다.
그런데, 저희는 소스를 짜드리지는 않습니다.
예제나 메뉴얼, 일부 회로도 등은 자료실 등에서 제공하고 있지만,
직접 원하시는 코드대로 합쳐 드리거나, 짜드리거나 하지는 않고 있습니다.
그건, 직접 공부하셔서 고객님이 하셔야 할 일 같네요.
누군가의 후배일 수도 있고, 제 후배일 수도 있고, 한데 많지 않은 시간 중, 특히 중요한 졸업 논문 같은 일이라면, 더더욱 그렇겠지요. 잠시라도 집중하셔서, 열심히 하시면, 반짝 힘들긴 하겠지만, 젊은 나이에 흡수가 빨라서 금방 하실 수 있을 겁니다. 노력하시기 바랍니다.
스테핑 모터는 자료실의 소스로 반드시 구동이 됩니다. 안된다면, 가변저항으로 토크를 돌려 보시거나, 전원(12V ~ 24V)을 2핀 커넥터에 입력하셨는 지 확인해 보시거나, 모터가 저희 회사것이 아니라면, 선 배치가 제대로 되어 있는 지 등등을 확인해 보시거나, AVR 퓨즈비트를 확인해 보세요.
그리고, 반드시 본명으로 질문해 주세요. 본명이 아니면, 답변드리지 않을 수도 있고, 질문 자체가 삭제 될 수도 있습니다.
감사합니다.
>* 구입한 제품
> - AVR MEGA 128 개발보드
> (소형)
> AB-M128-B
>
> - Text LCD 플러스 모듈
> AM-TLCD-P
>
> - 스테핑 모터 구동 모듈
> AM-CS2
>
>* 질문사항 (아무것도 모르는 상태여서 도움주시면 감사하겠습니다.)
>
> 1. LCD와 스테핑 모터 모듈은 아무 포트에 끼워도 되는것입니까?
>
> 2. LCD 모듈을 홈페이지 제품 사진에 나와있는데로 연결을 하고서
> 컴파일까지 다 했는데 글씨가 나타나지를 않습니다. 왜 그런건가요?
> (ATMega128트레이닝 풀키트,KT-M128 에는 글씨가 나타남.)
>
> 3. 스테핑 모터도 자료실에 있는 소스로 컴파일까지는 되는데 구동이 되질
> 않습니다. 왜 그런건가요?
>
> 4. ATmega128로 알람시계를 만들려고 하는데 소스는 없는건가요?
> 없다면 죄송하지만 짜주실수는 없는건가요?
>
> 5. 저희가 제품을 보내면 완성시켜주실순 없는건가요?
> (시간이 촉박해서 하나하나 공부해가면서 할 시간이 부족해서요)
>
>
>
|
||||
| 1196 | 답변완료as 보내는곳을 어디로 해야되나요? | 이성광 | 2008-06-20 | 1,398 |
|
제가 산 키트 ac전원입력부분에 전원은 들어오는데 레귤레이터로 전원이 안들어가네요.. 아는사람한테 물어서 연결해보니 그렇다고 하는데
as보낼려고하는데 주소좀 부탁드립니다...
또 택배비는 착불로 하나요? 어떤식으로 해야될지 알려주세요.
관리자 답변
안녕하세요? 고객님,
본사로 보내 주시구요. 주소는 맨 아래에 나와 있습니다.
전화번호, 주소, 성함을 함께 보내주시면 테스트 후에, 전화 드릴겁니다.
저희 회사 제품 이상이라면 당연히 저희가 택배비 모두 부담하구요.
아닐 경우, 고객님이 부담하셔야 합니다.
감사합니다.
>제가 산 키트 ac전원입력부분에 전원은 들어오는데 레귤레이터로 전원이 안들어가네요.. 아는사람한테 물어서 연결해보니 그렇다고 하는데
>
>as보낼려고하는데 주소좀 부탁드립니다...
>또 택배비는 착불로 하나요? 어떤식으로 해야될지 알려주세요.
>
>
|
||||
| 1195 | 답변완료자료실에 있는 소스에서요... | 유원설 | 2008-06-19 | 1,495 |
|
DC모터 제어와 서보모터 제어소스를 합쳐 봤는데
컴파일이 안되네요. 에러가 있는거 같은데
못 찾겠네요...죄송하지만 도와주실수 있으신가요?
//ICC-AVR application builder : 2007-07-04 오전 11:10:30
// Target : M128
// Crystal: 16.000Mhz
#include <iom128v.h>
#include <macros.h>
#define SERVO_PORT1 PORTA
#define SERVO_PORT2 PORTF
#define MOTOR_PORT PORTB
#define MOTOR_DDR DDRB
#define LED_PORT PORTG
#define PWM1_IN (MOTOR_PORT&0x01)//DC모터
#define PWM1_ON (MOTOR_PORT|=0x01)
#define PWM1_OFF (MOTOR_PORT&=0xFE)
#define DIR1_ON (MOTOR_PORT|=0x02)
#define DIR1_OFF (MOTOR_PORT&=0xFD)
#define ENABLE1_OFF (MOTOR_PORT|=0x04)
#define ENABLE1_ON (MOTOR_PORT&=0xFB)
#define BREAK1_ON (MOTOR_PORT|=0x08)
#define BREAK1_OFF (MOTOR_PORT&=0xF7)
#define PWM2_IN (MOTOR_PORT&0x10)
#define PWM2_ON (MOTOR_PORT|=0x10)
#define PWM2_OFF (MOTOR_PORT&=0xEF)
#define DIR2_ON (MOTOR_PORT|=0x20)
#define DIR2_OFF (MOTOR_PORT&=0xDF)
#define ENABLE2_ON (MOTOR_PORT|=0x40)
#define ENABLE2_OFF (MOTOR_PORT&=0xBF)
#define t20ms 130//서보모터
#define t20mstimer_expired 0
#define ON 1
#define OFF 0
#define MAX_SERVO 16
volatile int t100ustimer=0, servo[MAX_SERVO], servo_num;
void port_init(void)
{
PORTA = 0x00;
DDRA = 0xFF;
PORTB = 0x00;
DDRB = 0xFF;
PORTC = 0x00; //m103 output only
DDRC = 0x00;
PORTD = 0x00;
DDRD = 0x00;
PORTE = 0x00;
DDRE = 0x00;
PORTF = 0x00;
DDRF = 0xFF;
PORTG = 0x00;
DDRG = 0xFF;
}
//TIMER0 initialize - prescale:8
// WGM: Normal
// desired value: 1uSec
// actual value: 1.000uSec (0.0%)
void timer0_init(void)//서보모터부분
{
TCCR0 = 0x00; //stop
ASSR = 0x00; //set async mode
TCNT0 = 0xFE; //set count
OCR0 = 0x02;
TCCR0 = 0x02; //start timer
}
#pragma interrupt_handler timer0_ovf_isr:17
void timer0_ovf_isr(void)
{
TCNT0 = 0xFE; //reload counter value
t100ustimer++;
if(t100ustimer > t20ms){
t100ustimer = t20mstimer_expired;
}
for(servo_num=0;servo_num<8;servo_num++){
if(servo[servo_num] > t100ustimer){
SERVO_PORT1 = SERVO_PORT1|(0x01<<servo_num);
}else{
SERVO_PORT1 = SERVO_PORT1&(~(0x01<<servo_num));
}
}
for(servo_num=0;servo_num<8;servo_num++){
if(servo[servo_num+8] > t100ustimer){
SERVO_PORT2 = SERVO_PORT2|(0x01<<servo_num);
}else{
SERVO_PORT2 = SERVO_PORT2&(~(0x01<<servo_num));
}
}
}
//TIMER2 initialize - prescale:8
// WGM: Normal
// desired value: 10KHz
// actual value: 10.000KHz (0.0%)
void timer2_init(void)//DC모터부분
{
TCCR2 = 0x00; //stop
ASSR = 0x00; //set async mode
TCNT2 = 0x38; //set count
OCR0 = 0xC8;
TCCR2 = 0x02; //start timer
}
volatile int motor_control = 0;
#pragma interrupt_handler timer2_ovf_isr:17
void timer2_ovf_isr(void)
{
int motor_speed;
unsigned char motor_dir, motor_pwm, timer_value;
if(motor_control < 0){
motor_dir = 0;
motor_speed = motor_control * -1;
}else{
motor_dir = 1;
motor_speed = motor_control;
}
if(motor_speed > 30) motor_speed = 50;
if(motor_speed == 0){
// PWM = 0
motor_pwm=0;
timer_value = 0xff-50;
}else{
if(PWM1_IN){
timer_value = 0xff - 100 + motor_speed;
// PWM = 0;
motor_pwm=0;
}else{
timer_value = 0xff-motor_speed;
// PWM = 1;
motor_pwm=1;
}
}
TCNT2 = timer_value; //reload counter value
if(motor_pwm == 1){
PWM1_ON;
}else{
PWM1_OFF;
}
if(motor_dir == 1){
DIR1_ON;
}else{
DIR1_OFF;
}
}
//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();
timer0_init();
timer2_init();
MCUCR = 0x00;
EICRA = 0x00; //extended ext ints
EICRB = 0x00; //extended ext ints
EIMSK = 0x00;
TIMSK = 0x01; //timer interrupt sources
ETIMSK = 0x00; //extended timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
void delay(int delaytime){
int i,j;
for(i=0;i<100;i++){
for(j=0;j<delaytime;j++){
}
}
}
//
void main(void)
{
int i;
init_devices();
for(i=0;i<MAX_SERVO;i++){
servo[i]=0;
}
//insert your functional code here...
while(1){
servo[13] = 5;//오른쪽 집게 움직임
servo[14] = 5;//왼쪽 집게 움직임
servo[1] = 5;//오른쪽 고관절 움직임 값
servo[2] = 5;
servo[3] = 5;
servo[4] = 5;//오른쪽다리 드는 값
servo[5] = 5;
servo[6] = 5;
servo[4] = 1;//오른쪽다리 내리는 동작
servo[5] = 1;
servo[6] = 1;
servo[13] = 1;//오른쪽 집게 움직임
servo[14] = 1;//왼쪽 집게 움직임
delay(20);
servo[13] = 5;//오른쪽 집게 움직임
servo[14] = 5;//왼쪽 집게 움직임
servo[1] = 1;//오른쪽 고관절 초기 값(제로)
servo[2] = 1;
servo[3] = 1;
servo[7] = 5;//왼쪽서보모터의 값
servo[8] = 5;
servo[9] = 5;
servo[10] = 5;//왼쪽다리 드는 값
servo[11] = 5;
servo[12] = 5;
servo[10] = 1;//왼쪽다리 내리는 동작
servo[11] = 1;
servo[12] = 1;
servo[13] = 1;//오른쪽 집게 움직임
servo[14] = 1;//왼쪽 집게 움직임
delay(20);
}
{
delay(1000);
delay(1000);
MOTOR_DDR = 0xff; // 모터포트 초기화
ENABLE1_ON;
while(1){
//printf(" %d 정방향 회전\\n\\r", count++);
LED_PORT = 0x01;
for(i=0; i<100; i++){
if(i<=100)
motor_control = i;
else
motor_control = 200-i;
delay(300);
}
//printf(" %d 역방향 회전\\n\\r", count++);
LED_PORT = 0x02;
for(i=0; i<200; i++){
if(i<=100)
motor_control = i * -1;
else
motor_control = (200-i) * -1;
delay(300);
}
}
}
}
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사합니다.
죄송하지만, 소스코드 수정까지 도와드리진 않고 있습니다.
열심히 해서, 꼭 성공하시기 바랍니다.
감사합니다.
>DC모터 제어와 서보모터 제어소스를 합쳐 봤는데
>컴파일이 안되네요. 에러가 있는거 같은데
>못 찾겠네요...죄송하지만 도와주실수 있으신가요?
>
>//ICC-AVR application builder : 2007-07-04 오전 11:10:30
>// Target : M128
>// Crystal: 16.000Mhz
>
>#include <iom128v.h>
>#include <macros.h>
>
>#define SERVO_PORT1 PORTA
>#define SERVO_PORT2 PORTF
>#define MOTOR_PORT PORTB
>#define MOTOR_DDR DDRB
>#define LED_PORT PORTG
>
>
>#define PWM1_IN (MOTOR_PORT&0x01)//DC모터
>#define PWM1_ON (MOTOR_PORT|=0x01)
>#define PWM1_OFF (MOTOR_PORT&=0xFE)
>#define DIR1_ON (MOTOR_PORT|=0x02)
>#define DIR1_OFF (MOTOR_PORT&=0xFD)
>#define ENABLE1_OFF (MOTOR_PORT|=0x04)
>#define ENABLE1_ON (MOTOR_PORT&=0xFB)
>#define BREAK1_ON (MOTOR_PORT|=0x08)
>#define BREAK1_OFF (MOTOR_PORT&=0xF7)
>#define PWM2_IN (MOTOR_PORT&0x10)
>#define PWM2_ON (MOTOR_PORT|=0x10)
>#define PWM2_OFF (MOTOR_PORT&=0xEF)
>#define DIR2_ON (MOTOR_PORT|=0x20)
>#define DIR2_OFF (MOTOR_PORT&=0xDF)
>#define ENABLE2_ON (MOTOR_PORT|=0x40)
>#define ENABLE2_OFF (MOTOR_PORT&=0xBF)
>
>
>#define t20ms 130//서보모터
>#define t20mstimer_expired 0
>#define ON 1
>#define OFF 0
>#define MAX_SERVO 16
>
>volatile int t100ustimer=0, servo[MAX_SERVO], servo_num;
>
>void port_init(void)
>{
> PORTA = 0x00;
> DDRA = 0xFF;
> PORTB = 0x00;
> DDRB = 0xFF;
> PORTC = 0x00; //m103 output only
> DDRC = 0x00;
> PORTD = 0x00;
> DDRD = 0x00;
> PORTE = 0x00;
> DDRE = 0x00;
> PORTF = 0x00;
> DDRF = 0xFF;
> PORTG = 0x00;
> DDRG = 0xFF;
>}
>
>//TIMER0 initialize - prescale:8
>// WGM: Normal
>// desired value: 1uSec
>// actual value: 1.000uSec (0.0%)
>void timer0_init(void)//서보모터부분
>{
> TCCR0 = 0x00; //stop
> ASSR = 0x00; //set async mode
> TCNT0 = 0xFE; //set count
> OCR0 = 0x02;
> TCCR0 = 0x02; //start timer
>}
>
>
>#pragma interrupt_handler timer0_ovf_isr:17
>void timer0_ovf_isr(void)
>{
> TCNT0 = 0xFE; //reload counter value
> t100ustimer++;
> if(t100ustimer > t20ms){
> t100ustimer = t20mstimer_expired;
> }
> for(servo_num=0;servo_num<8;servo_num++){
> if(servo[servo_num] > t100ustimer){
> SERVO_PORT1 = SERVO_PORT1|(0x01<<servo_num);
> }else{
> SERVO_PORT1 = SERVO_PORT1&(~(0x01<<servo_num));
> }
> }
> for(servo_num=0;servo_num<8;servo_num++){
> if(servo[servo_num+8] > t100ustimer){
> SERVO_PORT2 = SERVO_PORT2|(0x01<<servo_num);
> }else{
> SERVO_PORT2 = SERVO_PORT2&(~(0x01<<servo_num));
> }
>
>
> }
>}
>
>
>//TIMER2 initialize - prescale:8
>// WGM: Normal
>// desired value: 10KHz
>// actual value: 10.000KHz (0.0%)
>void timer2_init(void)//DC모터부분
>{
> TCCR2 = 0x00; //stop
> ASSR = 0x00; //set async mode
> TCNT2 = 0x38; //set count
> OCR0 = 0xC8;
> TCCR2 = 0x02; //start timer
>}
>
>volatile int motor_control = 0;
>
>
>#pragma interrupt_handler timer2_ovf_isr:17
>void timer2_ovf_isr(void)
>{
> int motor_speed;
> unsigned char motor_dir, motor_pwm, timer_value;
>
> if(motor_control < 0){
> motor_dir = 0;
> motor_speed = motor_control * -1;
> }else{
> motor_dir = 1;
> motor_speed = motor_control;
> }
> if(motor_speed > 30) motor_speed = 50;
>
>
> if(motor_speed == 0){
> // PWM = 0
> motor_pwm=0;
> timer_value = 0xff-50;
> }else{
> if(PWM1_IN){
> timer_value = 0xff - 100 + motor_speed;
> // PWM = 0;
> motor_pwm=0;
> }else{
> timer_value = 0xff-motor_speed;
> // PWM = 1;
> motor_pwm=1;
> }
> }
> TCNT2 = timer_value; //reload counter value
>
> if(motor_pwm == 1){
> PWM1_ON;
> }else{
> PWM1_OFF;
> }
> if(motor_dir == 1){
> DIR1_ON;
> }else{
> DIR1_OFF;
> }
>}
>
>
>
>
>//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();
> timer0_init();
> timer2_init();
>
> MCUCR = 0x00;
> EICRA = 0x00; //extended ext ints
> EICRB = 0x00; //extended ext ints
> EIMSK = 0x00;
> TIMSK = 0x01; //timer interrupt sources
> ETIMSK = 0x00; //extended timer interrupt sources
> SEI(); //re-enable interrupts
> //all peripherals are now initialized
>}
>
>void delay(int delaytime){
> int i,j;
> for(i=0;i<100;i++){
> for(j=0;j<delaytime;j++){
> }
> }
>}
>
>//
>void main(void)
>{
> int i;
> init_devices();
>
> for(i=0;i<MAX_SERVO;i++){
> servo[i]=0;
> }
> //insert your functional code here...
>
> while(1){
> servo[13] = 5;//오른쪽 집게 움직임
> servo[14] = 5;//왼쪽 집게 움직임
> servo[1] = 5;//오른쪽 고관절 움직임 값
> servo[2] = 5;
> servo[3] = 5;
> servo[4] = 5;//오른쪽다리 드는 값
> servo[5] = 5;
> servo[6] = 5;
> servo[4] = 1;//오른쪽다리 내리는 동작
> servo[5] = 1;
> servo[6] = 1;
> servo[13] = 1;//오른쪽 집게 움직임
> servo[14] = 1;//왼쪽 집게 움직임
> delay(20);
> servo[13] = 5;//오른쪽 집게 움직임
> servo[14] = 5;//왼쪽 집게 움직임
> servo[1] = 1;//오른쪽 고관절 초기 값(제로)
> servo[2] = 1;
> servo[3] = 1;
> servo[7] = 5;//왼쪽서보모터의 값
> servo[8] = 5;
> servo[9] = 5;
> servo[10] = 5;//왼쪽다리 드는 값
> servo[11] = 5;
> servo[12] = 5;
> servo[10] = 1;//왼쪽다리 내리는 동작
> servo[11] = 1;
> servo[12] = 1;
> servo[13] = 1;//오른쪽 집게 움직임
> servo[14] = 1;//왼쪽 집게 움직임
> delay(20);
> }
>{
> delay(1000);
> delay(1000);
>
> MOTOR_DDR = 0xff; // 모터포트 초기화
> ENABLE1_ON;
>
> while(1){
> //printf(" %d 정방향 회전\\n\\r", count++);
> LED_PORT = 0x01;
> for(i=0; i<100; i++){
> if(i<=100)
> motor_control = i;
> else
> motor_control = 200-i;
> delay(300);
> }
> //printf(" %d 역방향 회전\\n\\r", count++);
> LED_PORT = 0x02;
> for(i=0; i<200; i++){
> if(i<=100)
> motor_control = i * -1;
> else
> motor_control = (200-i) * -1;
> delay(300);
> }
>}
>
>}
>
>}
>
|
||||
| 1194 | 답변완료스테핑모터 구동하려고 하는데 잘안되네요.... | 이건창 | 2008-06-19 | 1,503 |
|
atmaga128pro-c와 se-sm스테핑모터 모듈은 AM-CS2P를 쓰구요
모두 완제품이고 AVR을 처음 접해 봅니다.
스테핑모터를 구동시켜볼려고하고 있구요
CD안의 예제로 돌려보려고 하는데 돌아가지가 않네요....
완전 초보라 자세한 답변 부탁드립니다.
예제는 밑에....
#include <iom128v.h>
#include <macros.h>
#define MOTOR_PORT PORTC
#define MOTOR_PORT_DDR DDRC
void port_init(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 = 0x33;
PORTG = 0x00;
DDRG = 0x03;
}
//UART0 initialize
// desired baud rate: 9600
// actual: baud rate:9615 (0.2%)
// char size: 8 bit
// parity: Disabled
void uart0_init(void)
{
UCSR0B = 0x00; //disable while setting baud rate
UCSR0A = 0x00;
UCSR0C = 0x06;
UBRR0L = 0x67; //set baud rate lo
UBRR0H = 0x00; //set baud rate hi
UCSR0B = 0x18;
}
//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();
uart0_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
}
/* Stepping Motor derive---------------------------*/
unsigned char LEFTmotorOneClock(unsigned char step, char dir)
{
step = step & 0x0f;
if(dir){
switch(step){
case 0x09: step=0x01; break;
case 0x01: step=0x03; break;
case 0x03: step=0x02; break;
case 0x02: step=0x06; break;
case 0x06: step=0x04; break;
case 0x04: step=0x0c; break;
case 0x0c: step=0x08; break;
case 0x08: step=0x09; break;
default: step=0x0c; break;
}
}else{
switch(step){
case 0x09: step=0x08; break;
case 0x01: step=0x09; break;
case 0x03: step=0x01; break;
case 0x02: step=0x03; break;
case 0x06: step=0x02; break;
case 0x04: step=0x06; break;
case 0x0c: step=0x04; break;
case 0x08: step=0x0c; break;
default: step=0x0c; break;
}
}
return step;
}
/* Stepping Motor derive---------------------------*/
unsigned char RIGHTmotorOneClock(unsigned char step, char dir)
{
step = step & 0xf0;
if(dir){
switch(step){
case 0x90: step=0x10; break;
case 0x10: step=0x30; break;
case 0x30: step=0x20; break;
case 0x20: step=0x60; break;
case 0x60: step=0x40; break;
case 0x40: step=0xc0; break;
case 0xc0: step=0x80; break;
case 0x80: step=0x90; break;
default: step=0xc0; break;
}
}else{
switch(step){
case 0x90: step=0x80; break;
case 0x10: step=0x90; break;
case 0x30: step=0x10; break;
case 0x20: step=0x30; break;
case 0x60: step=0x20; break;
case 0x40: step=0x60; break;
case 0xc0: step=0x40; break;
case 0x80: step=0xc0; break;
default: step=0xc0; break;
}
}
return step;
}
void delay(int n)
{
volatile int i,j;
for(i=1;i<n;i++)
{
for(j=1;j<600;j++);
}
}
//
void main(void)
{
volatile unsigned char stepleft=0, stepright=0;
init_devices();
//insert your functional code here...
printf(" \\n\\n\\rStepping Motor test program...\\n\\r");
MOTOR_PORT_DDR = 0xff;
while(1){
stepright = RIGHTmotorOneClock(stepright, 1);
stepleft = LEFTmotorOneClock(stepleft, 0);
delay(3);
MOTOR_PORT = stepleft|stepright;
}
}
관리자 답변
안녕하세요? 저희 N.T.C 제품을 이용하여 주셔서 감사드립니다.
좀 더 자세히 질문하여 주셔야 답변이 가능하겠네요.
예를 들면, 컴파일이 안되는 지, 컴파일까지하고 다운로드가 안되는 것인지,
다운로드까지 완료하고 모터가 구동을 안 된다는 것인지, 전압은 얼마를 가했는 지 등등을 자세히 질문해 주세요.
또한, 질문하는 방법에 대한 공지가 있습니다. 한번 정독후에
자세한 질문을 부탁 드립니다. 자세히 질문하셔야 빠르게 답변이 가능합니다.
감사합니다.
>atmaga128pro-c와 se-sm스테핑모터 모듈은 AM-CS2P를 쓰구요
>모두 완제품이고 AVR을 처음 접해 봅니다.
>스테핑모터를 구동시켜볼려고하고 있구요
>CD안의 예제로 돌려보려고 하는데 돌아가지가 않네요....
>완전 초보라 자세한 답변 부탁드립니다.
>
>예제는 밑에....
>
>#include <iom128v.h>
>#include <macros.h>
>
>#define MOTOR_PORT PORTC
>#define MOTOR_PORT_DDR DDRC
>
>void port_init(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 = 0x33;
> PORTG = 0x00;
> DDRG = 0x03;
>}
>
>//UART0 initialize
>// desired baud rate: 9600
>// actual: baud rate:9615 (0.2%)
>// char size: 8 bit
>// parity: Disabled
>void uart0_init(void)
>{
> UCSR0B = 0x00; //disable while setting baud rate
> UCSR0A = 0x00;
> UCSR0C = 0x06;
> UBRR0L = 0x67; //set baud rate lo
> UBRR0H = 0x00; //set baud rate hi
> UCSR0B = 0x18;
>}
>
>//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();
> uart0_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
>}
>
>/* Stepping Motor derive---------------------------*/
>unsigned char LEFTmotorOneClock(unsigned char step, char dir)
>{
> step = step & 0x0f;
> if(dir){
> switch(step){
> case 0x09: step=0x01; break;
> case 0x01: step=0x03; break;
> case 0x03: step=0x02; break;
> case 0x02: step=0x06; break;
> case 0x06: step=0x04; break;
> case 0x04: step=0x0c; break;
> case 0x0c: step=0x08; break;
> case 0x08: step=0x09; break;
> default: step=0x0c; break;
> }
> }else{
> switch(step){
> case 0x09: step=0x08; break;
> case 0x01: step=0x09; break;
> case 0x03: step=0x01; break;
> case 0x02: step=0x03; break;
> case 0x06: step=0x02; break;
> case 0x04: step=0x06; break;
> case 0x0c: step=0x04; break;
> case 0x08: step=0x0c; break;
> default: step=0x0c; break;
> }
> }
> return step;
>
>}
>
>/* Stepping Motor derive---------------------------*/
>unsigned char RIGHTmotorOneClock(unsigned char step, char dir)
>{
> step = step & 0xf0;
> if(dir){
> switch(step){
> case 0x90: step=0x10; break;
> case 0x10: step=0x30; break;
> case 0x30: step=0x20; break;
> case 0x20: step=0x60; break;
> case 0x60: step=0x40; break;
> case 0x40: step=0xc0; break;
> case 0xc0: step=0x80; break;
> case 0x80: step=0x90; break;
> default: step=0xc0; break;
> }
> }else{
> switch(step){
> case 0x90: step=0x80; break;
> case 0x10: step=0x90; break;
> case 0x30: step=0x10; break;
> case 0x20: step=0x30; break;
> case 0x60: step=0x20; break;
> case 0x40: step=0x60; break;
> case 0xc0: step=0x40; break;
> case 0x80: step=0xc0; break;
> default: step=0xc0; break;
> }
> }
> return step;
>}
>
>
>void delay(int n)
>{
> volatile int i,j;
> for(i=1;i<n;i++)
> {
> for(j=1;j<600;j++);
> }
>}
>
>//
>void main(void)
>{
> volatile unsigned char stepleft=0, stepright=0;
>
> init_devices();
> //insert your functional code here...
>
> printf(" \\n\\n\\rStepping Motor test program...\\n\\r");
>
> MOTOR_PORT_DDR = 0xff;
> while(1){
> stepright = RIGHTmotorOneClock(stepright, 1);
> stepleft = LEFTmotorOneClock(stepleft, 0);
> delay(3);
> MOTOR_PORT = stepleft|stepright;
> }
>}
>
>
|
||||
