Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 10233 | 답변완료STK500 error 문제 관련 | 박종균 | 2019-06-18 | 2,084 |
|
안녕하세요.
예전에 AD-USBISP V6.0 구입해서 사용을 이제서야 하는데요..
stk500 error entering programming mode <--- 해당 에러가 계속 뜨네요..
사용하고 있는 MCU는 ATMEGA128 입니다.
인터넷에서 엄청 알아보고 해결해 보려고 노력했는데 잘 안되네요..
이제 의심되는건 ISP 또는 MCU 보드인데
MCU 보드는 제가 대학생때 썼던거라 한 15년 정도됐습니다.
혹시 제가 현재 가지고 있는 MCU보드하구 ISP 구입한거 택배로 보내드리면
MCU보드 또는 ISP 중 문제가 있는지 확인해 주실 수 있을까요..?
택배비는 제가 부담하겠습니다.
관리자 답변
안녕하세요 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
선불로 저희 본사 주소로 보내주시면, 점검해드릴 수 있습니다.
보내주실 때 돌려받으실 주소, 연락처, 성명을 적어서 보내주시면 감사하겠습니다.
만약 망가져있는 부분이 있다면, A/S 비용이 청구될 수 있는 점 알려드립니다.
점검 이후 A/S를 진행해야 한다면 진행을 할지 A/S 비용은 얼마나 될지 견적 연락을 드리겠습니다.
그리고, stk500 error entering programming mode 에러의 경우 대체로 케이블 배선 접촉불량 문제인데
한번 확인해 보시고 안되시면 보내주시기 바랍니다.
감사합니다.
>
>
> 안녕하세요.
>
> 예전에 AD-USBISP V6.0 구입해서 사용을 이제서야 하는데요..
> stk500 error entering programming mode <--- 해당 에러가 계속 뜨네요..
> 사용하고 있는 MCU는 ATMEGA128 입니다.
>
> 인터넷에서 엄청 알아보고 해결해 보려고 노력했는데 잘 안되네요..
> 이제 의심되는건 ISP 또는 MCU 보드인데
> MCU 보드는 제가 대학생때 썼던거라 한 15년 정도됐습니다.
>
> 혹시 제가 현재 가지고 있는 MCU보드하구 ISP 구입한거 택배로 보내드리면
> MCU보드 또는 ISP 중 문제가 있는지 확인해 주실 수 있을까요..?
>
> 택배비는 제가 부담하겠습니다.
>
|
||||
| 10232 | 답변완료제어보드 사용온도 는? | 민지홍 | 2019-06-18 | 1,984 |
|
안녕하세요
엠티지 윤창환입니다.
제어보드 사용온도는 어떻게 되나요?
외부에서 사용할려고 하는데 외부 용으로 제작 가능한가요?
-25도 ~ 50도 사용 가능한제품 제작 가능한가요?
문의사항 있으시면 연락주세요
010-4606-4300
윤창환 드림
관리자 답변
안녕하세요 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
어떤 보드를 사용하시려는지 알려주시면 감사하겠습니다.
제품 파트넘버 불러주시면, 친절하게 답변 드리겠습니다.
감사합니다.
>
>
> 안녕하세요
> 엠티지 윤창환입니다.
> 제어보드 사용온도는 어떻게 되나요?
>
> 외부에서 사용할려고 하는데 외부 용으로 제작 가능한가요?
> -25도 ~ 50도 사용 가능한제품 제작 가능한가요?
>
> 문의사항 있으시면 연락주세요
> 010-4606-4300
> 윤창환 드림
>
|
||||
| 10231 | 답변완료방금 주문했습니다. | 박상언 | 2019-06-17 | 1,960 |
|
입금한줄알고 대기했는데 알고보니 안했더군요.
방금 입금했는데 혹시 언제쯤 받을 수 있을까요. 저희가 늦어도 목요일에는 받아야해서..
관리자 답변
안녕하세요 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
입금 바로 확인하여 제품 5시 40분경에 우체국 택배로 발송하였습니다.
고객님 주문상세내역페이지 보시면 운송장번호를 조회하실 수 있습니다.
홈페이지 상단 "DELIVERY"버튼 누르시면 조회가 가능합니다.
감사합니다.
>
>
> 입금한줄알고 대기했는데 알고보니 안했더군요.
>
> 방금 입금했는데 혹시 언제쯤 받을 수 있을까요. 저희가 늦어도 목요일에는 받아야해서..
>
|
||||
| 10230 | 답변완료ATmega로 공부해보려고 하는데 질문 있습니다 | 박건호 | 2019-06-17 | 1,868 |
|
AD-USBISP V03.6 은 가지고 있는데 AM-128PRO만 구입하면 브레드보드에 연결해서 기본적인 실습들을 해볼수 있나요?(led켜기 등)
그리고 AM-128PRO를 보니까 5V Vcc 전원을 입력하는 곳이 있는데 USBISP를 노트북에 연결했을 때 받는 전원? 외에도 또 전원을 입력해야 하나요? 그렇다면 전원 연결하려면 무엇을 더 사야되는지 궁금합니다
브레드보드, led, 저항, 점프선 같은것들은 있습니다
관리자 답변
안녕하세요 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
AM-128PRO는 핀이 2열로 배치되어있어서 브레드보드에 그대로 꽂으시면
VCC와 GND핀의 쇼트가 발생하여 모듈이 망가질 수 있습니다.
AB-E128 브레드보드용 확장보드를 구매하셔서 확장보드에 AM-128PRO 모듈을 꽂고,
AB-E128확장보드를 브레드보드에 꽂아서 사용하시면 됩니다.
판매페이지 : http://newtc.co.kr/dpshop/shop/item.php?it_id=1337349765
AD-USBISP V03.6의 스위치 기능으로 "타겟보드에 전원공급"을 사용하고 계시다면
추가로 전원을 투입하지 않으셔도 됩니다.
다만, 모터구동 등의 많은 전류를 소모하는 모듈이나 부품을 추가로 단다면
USB출력이 500mA가 한계인 탓에 AD-USBISP V03.6을 통해서는 전류가 부족할 수 있습니다.
이 때에는 AM-MP533등의 레귤레이터와 SE-2P2P 2핀 전원케이블로 연결해주시면 됩니다.
외부에서 전원을 가져올 때, 전압레벨을 주의해서 사용해주시기 바랍니다.
12V가 AM-128PRO 모듈에 그대로 들어가는 순간 IC가 타버릴 수 있기 때문에,
유상A/S가 발생할 수 있습니다.
AM-MP533 판매페이지 : http://newtc.co.kr/dpshop/shop/item.php?it_id=1314664518
SE-PW12V 판매페이지 : http://newtc.co.kr/dpshop/shop/item.php?it_id=1349388486
SE-2P2P 판매페이지 : http://newtc.co.kr/dpshop/shop/item.php?it_id=1348609185
감사합니다.
>
>
> AD-USBISP V03.6 은 가지고 있는데 AM-128PRO만 구입하면 브레드보드에 연결해서 기본적인 실습들을 해볼수 있나요?(led켜기 등)
> 그리고 AM-128PRO를 보니까 5V Vcc 전원을 입력하는 곳이 있는데 USBISP를 노트북에 연결했을 때 받는 전원? 외에도 또 전원을 입력해야 하나요? 그렇다면 전원 연결하려면 무엇을 더 사야되는지 궁금합니다
>
> 브레드보드, led, 저항, 점프선 같은것들은 있습니다
>
|
||||
| 10229 | 답변완료AVR USB-ISP V03.6 구매관련 | 박상현 | 2019-06-14 | 1,803 |
|
AVR USB-ISP V03.6 한개 전자세금계산서로 구매하고 싶은대 어디로 문의하면 될까요?
관리자 답변
안녕하세요 고객님,
뉴티씨 홈페이지에서 제품 구매시
카드결제시에는 세금계산서는 발행해드리지 않습니다.
결제시에 나오는 영수증을 사용하시면 됩니다.
무통장 입금 시에는 사업자등록증을 홈페이지 하단 메일주소로 송부하시고,
02-704-4774로 연락부탁드리겠습니다.
감사합니다.
>
>
> AVR USB-ISP V03.6 한개 전자세금계산서로 구매하고 싶은대 어디로 문의하면 될까요?
>
|
||||
| 10228 | 답변완료AVR MEGA128 모듈 (AM-128PRO) 전류소모에 관하여 문의드립니다. | 최규정 | 2019-06-07 | 2,029 |
|
안녕하세요
모듈에서 MEGA128을 제외한 추가로 전류가 사용되고 있는 부분에 관하여 알고싶습니다.
AM-128PRO 모듈을 사용하여 간단한 테스트를 진행중입니다.
저전력방식을 원하는 상황이기에 전류 소모값을 측정하면서 확인하고 있는데요
DATASHEET를 확인하면서 전원절감모드로 전환을 하는데도 약 15mA(13.1~13.2mA)를 소모하고 있습니다.
전원 절감모드에 들어가지 않은 상태로는 약 35mA(33mA내외)를 사용하고 있는것으로 측정이 되었습니다.
일반적으로 ATmega128A에서 일반동작이 약 17.5mA, 전원절감모드가 약 11uA를 사용하는것으로 확인되었는데 모듈에 연결하였더니 생각보다 많은 소모량이 확인되고 있어서 이부분에 대하여 문의드립니다.
모듈에서 추가로 소비하고 있는 전류가 약 10mA가량이 측정되고 있는데요 (11~12mA)
혹시 이 모듈에서 기타적으로 전류를 소비하는부분들이 어떤부분들인지 알수 있을까요.
(현재 제 육안으로 보이고 있는 부분은 붉은색 POWER LED 한개 뿐입니다.)
GPIO 3개 포트, SPI, SERIAL통신을 하는데 있어서 문제가 없어서 해당 전류를 계산식에서 제외해도 된다고 하면 제외하고 계산 측정하려고 합니다.
전원공급으로 사용중인것은 전압을 5V 보조배터리 혹은 PC-USB 단자를 사용하고 있습니다.
관리자 답변
안녕하세요 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
회로적으로 연결된 부분은, AM-128PRO 아랫면에 232통신을 위해 달려있는 ST3232 IC의 공급전원이 5V에서 1mA에서 최대 2mA까지 소모된다고 데이터시트에 나와있는데, 여기에 UART기능을 쓰신다면 더 많은 전류소모가 일어날 수 있습니다.
또한, 사용하지 않는 I/O핀의 처리도 해주셔야 합니다.
내부 풀업을 사용하지 않는 등 핀 모드들도 최대한 전류소모를 적게하는 쪽으로 변경해 주시고,
타이머 등의 기능은 최소로 하시는게 좋습니다.
추가로 퓨즈비트중에 JTAGEN 비트를 끄시는 것을 추천드립니다.
JTAG기능을 사용하지 않고 I/O로 제어하겠다는 뜻이라 전류소모가 작아질겁니다.
감사합니다.
>
>
> 안녕하세요
>
> 모듈에서 MEGA128을 제외한 추가로 전류가 사용되고 있는 부분에 관하여 알고싶습니다.
>
>
> AM-128PRO 모듈을 사용하여 간단한 테스트를 진행중입니다.
> 저전력방식을 원하는 상황이기에 전류 소모값을 측정하면서 확인하고 있는데요
> DATASHEET를 확인하면서 전원절감모드로 전환을 하는데도 약 15mA(13.1~13.2mA)를 소모하고 있습니다.
>
> 전원 절감모드에 들어가지 않은 상태로는 약 35mA(33mA내외)를 사용하고 있는것으로 측정이 되었습니다.
>
> 일반적으로 ATmega128A에서 일반동작이 약 17.5mA, 전원절감모드가 약 11uA를 사용하는것으로 확인되었는데 모듈에 연결하였더니 생각보다 많은 소모량이 확인되고 있어서 이부분에 대하여 문의드립니다.
>
> 모듈에서 추가로 소비하고 있는 전류가 약 10mA가량이 측정되고 있는데요 (11~12mA)
> 혹시 이 모듈에서 기타적으로 전류를 소비하는부분들이 어떤부분들인지 알수 있을까요.
> (현재 제 육안으로 보이고 있는 부분은 붉은색 POWER LED 한개 뿐입니다.)
>
> GPIO 3개 포트, SPI, SERIAL통신을 하는데 있어서 문제가 없어서 해당 전류를 계산식에서 제외해도 된다고 하면 제외하고 계산 측정하려고 합니다.
>
> 전원공급으로 사용중인것은 전압을 5V 보조배터리 혹은 PC-USB 단자를 사용하고 있습니다.
>
|
||||
| 10227 | 답변완료안녕하세요~ 입금 확인 부탁드립니다. | 배강호 | 2019-06-03 | 1,997 |
|
안녕하세요~
주문번호는 1906020004 이고
6월 2일 일요일 오후 4시경에 입금했습니다.
감사합니다~
관리자 답변
안녕하세요 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
입금 확인되었습니다.
주문해주신 제품 준비하여 오늘 오후에 출고될 예정이며,
19/06/05 (수요일) 내로 제품을 받아보실 수 있으실 겁니다.
(택배사의 사정에 따라 날짜는 달라질 수 있는 점 양해 부탁드립니다.)
감사합니다.
>
>
> 안녕하세요~
>
> 주문번호는 1906020004 이고
> 6월 2일 일요일 오후 4시경에 입금했습니다.
>
> 감사합니다~
>
|
||||
| 10226 | 답변완료tinacloud | 김성준 | 2019-06-03 | 1,893 |
|
Tina 설치후 TinaCloud 에 접속하려고 하는데, 아이디/비번 등이 나오지를 않아서, 어떻게 해야할지 모르겠습니다.
현재, TINA 12 - Design Suite Industrial version 의 PC설치와 라이선스 설치는 잘된 상태이고,
TinaCloud는 접속이 안되는 상황이므로,
TinaCloud에 대하여 어떻게 접속을 해야 하는지 확인을 부탁 드립니다. 참고로 One year 이용이 저희 구매에서 중요한 요소입니다
관리자 답변
안녕하세요 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
유선상으로 말씀드렸다시피,
저희 본사에서 구매하신게 아니라면, 지원드리기 어려운점 양해 부탁드립니다.
감사합니다.
>
>
> Tina 설치후 TinaCloud 에 접속하려고 하는데, 아이디/비번 등이 나오지를 않아서, 어떻게 해야할지 모르겠습니다.
>
> 현재, TINA 12 - Design Suite Industrial version 의 PC설치와 라이선스 설치는 잘된 상태이고,
>
> TinaCloud는 접속이 안되는 상황이므로,
>
> TinaCloud에 대하여 어떻게 접속을 해야 하는지 확인을 부탁 드립니다. 참고로 One year 이용이 저희 구매에서 중요한 요소입니다
>
|
||||
| 10225 | 답변완료제품 교환문의 절차 확인드립니다. | 남관우 | 2019-05-22 | 1,981 |
|
안녕하세요!
홈페이지에서 추가주문 및 결제완료하였고,
교환제품은 우체국 택배를 통해 본사(방배동 756-7 뉴티씨)로 발송완료하였습니다.
내일 도착예정입니다.
(등기번호 : 66715-0201-8434)
감사합니다. 좋은 하루 되세요.
안녕하세요 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
오주문하신 AM-DC-2D 제품을 본사로 보내주시길 바라며
제품소개 > 확장보드 > 모터구동 > "스테핑 모터 구동모듈 (남관우님 전용) AM-SPECIAL" 제품에서
스테핑 모터 구동모듈인 AM-CS2P OR AM-MS2 중 고르신 후
홈페이지 추가주문을 해주시길 바랍니다.
추가구매 제품은 결제 확인 후 교환제품을 받고 보내드리겠습니다.
감사합니다.
>
>
> 안녕하세요.
> 스태핑 모터 구동모듈을 구입해야 합니다만,
> 구매자 실수로 DC 모터 구동모듈을 구입했네요.
>
> 스태핑모터 구동모듈이 반드시 필요해서, 추가주문을 하고자 합니다만,
> 혹시 추가금을 지불하고, DC모터 구동모둘과 교환을 할 수 있을지.. 싶어서 문의드립니다.
>
> 주문번호는 1905190001이고, 카드결제하였습니다.
> 감사합니다.
>
관리자 답변
안녕하세요 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
추가구매 제품 결제를 확인 했습니다.
교환제품을 받은 후 보내드리겠습니다.
감사합니다.
>
>
> 안녕하세요!
>
> 홈페이지에서 추가주문 및 결제완료하였고,
> 교환제품은 우체국 택배를 통해 본사(방배동 756-7 뉴티씨)로 발송완료하였습니다.
> 내일 도착예정입니다.
> (등기번호 : 66715-0201-8434)
>
> 감사합니다. 좋은 하루 되세요.
>
>
>
>
>
>
>
>
> 안녕하세요 고객님,
> 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
>
> 오주문하신 AM-DC-2D 제품을 본사로 보내주시길 바라며
> 제품소개 > 확장보드 > 모터구동 > "스테핑 모터 구동모듈 (남관우님 전용) AM-SPECIAL" 제품에서
> 스테핑 모터 구동모듈인 AM-CS2P OR AM-MS2 중 고르신 후
> 홈페이지 추가주문을 해주시길 바랍니다.
>
> 추가구매 제품은 결제 확인 후 교환제품을 받고 보내드리겠습니다.
>
> 감사합니다.
>
> >
> >
> > 안녕하세요.
> > 스태핑 모터 구동모듈을 구입해야 합니다만,
> > 구매자 실수로 DC 모터 구동모듈을 구입했네요.
> >
> > 스태핑모터 구동모듈이 반드시 필요해서, 추가주문을 하고자 합니다만,
> > 혹시 추가금을 지불하고, DC모터 구동모둘과 교환을 할 수 있을지.. 싶어서 문의드립니다.
> >
> > 주문번호는 1905190001이고, 카드결제하였습니다.
> > 감사합니다.
> >
>
|
||||
| 10224 | 답변완료AVR용 USB-ISP 라이트 V03.5(AD-USBISP-L V03.5) 문의 | 최민호 | 2019-05-22 | 2,002 |
|
7.0 버전에 사용가능한가요?? 프로그램 구울려고 하는데 erasing device failed 라는 문구가 계속 떠서요..
관리자 답변
안녕하세요 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
현재 판매중인 AD-USBISP V03.6 제품은 Atmel Studio 7.0과 윈도우10도 지원합니다.
고객님이 가지고계신 AD-USBISP 버전이 3.5같으신데,
3.5버전은 32비트 운영체제만 지원하기 때문에 고객님 PC가 64비트시라면 문제가 생길 수 있습니다.
AD-USBISP 3.5버전은 본사로 택배비만 부담하셔서 보내주시면,
무료로 3.6버전으로 업그레이드를 진행해드리고 있습니다.
보내주실 때 돌려받으실 주소 및 핸드폰번호를 적어서 보내주세요.
감사합니다.
>
>
> 7.0 버전에 사용가능한가요?? 프로그램 구울려고 하는데 erasing device failed 라는 문구가 계속 떠서요..
>
|
||||
| 10223 | 답변완료스텝모터와 드라이버에 대하여 궁금한게있습니다 | 전운성 | 2019-05-22 | 1,934 |
|
졸업작품으로 메카넘휠+라인트레이서를 이용한
자동주차로봇을 만들고있습니다
스텝모터드라이버 : AM-MS2
스텝모터 : SE-SM9K
사용중에 있습니다
현재 차량의 중량이 15kg정도 되는데 저 부품들로
무게를 버틸수있을정도의 토크값이 나올까요??
관리자 답변
안녕하세요 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
현재 담당 기술자분이 외근으로 답변이 어려운 상황이라,
금일 5월 22일 내로 전달받아 답변 새로 달도록 하겠습니다.
이 점 양해해주시기 바랍니다.
감사합니다.
>
>
> 졸업작품으로 메카넘휠+라인트레이서를 이용한
>
> 자동주차로봇을 만들고있습니다
>
> 스텝모터드라이버 : AM-MS2
> 스텝모터 : SE-SM9K
>
> 사용중에 있습니다
>
> 현재 차량의 중량이 15kg정도 되는데 저 부품들로
>
> 무게를 버틸수있을정도의 토크값이 나올까요??
>
|
||||
| 10222 | 답변완료물건을 잘못 주문했습니다. | 남관우 | 2019-05-21 | 1,847 |
|
안녕하세요.
스태핑 모터 구동모듈을 구입해야 합니다만,
구매자 실수로 DC 모터 구동모듈을 구입했네요.
스태핑모터 구동모듈이 반드시 필요해서, 추가주문을 하고자 합니다만,
혹시 추가금을 지불하고, DC모터 구동모둘과 교환을 할 수 있을지.. 싶어서 문의드립니다.
주문번호는 1905190001이고, 카드결제하였습니다.
감사합니다.
관리자 답변
안녕하세요 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
오주문하신 AM-DC-2D 제품을 본사로 보내주시길 바라며
제품소개 > 확장보드 > 모터구동 > "스테핑 모터 구동모듈 (남관우님 전용) AM-SPECIAL" 제품에서
스테핑 모터 구동모듈인 AM-CS2P OR AM-MS2 중 고르신 후
홈페이지 추가주문을 해주시길 바랍니다.
추가구매 제품은 결제 확인 후 교환제품을 받고 보내드리겠습니다.
감사합니다.
>
>
> 안녕하세요.
> 스태핑 모터 구동모듈을 구입해야 합니다만,
> 구매자 실수로 DC 모터 구동모듈을 구입했네요.
>
> 스태핑모터 구동모듈이 반드시 필요해서, 추가주문을 하고자 합니다만,
> 혹시 추가금을 지불하고, DC모터 구동모둘과 교환을 할 수 있을지.. 싶어서 문의드립니다.
>
> 주문번호는 1905190001이고, 카드결제하였습니다.
> 감사합니다.
>
|
||||
| 10221 | 답변완료다시한번 질문드리겠습니다. | 전운성 | 2019-05-21 | 1,907 |
|
바쁘신데 죄송합니다.
말씀하신것처럼 프로그램을 변경하였습니다.
전체 프로그램
#include <avr/io.h>
#include <avr/interrupt.h>
#define MOTOR_PORTA PORTA
#define MOTOR_PORTA_DDR DDRA
#define MOTOR_PORTB PORTB
#define MOTOR_PORTB_DDR DDRB
void port_init(void)
{
PORTA = 0x00;
DDRA = 0xff;
PORTB = 0x00;
DDRB = 0xff;
}
//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
cli(); //disable all interrupts
XMCRA = 0x00; //external memory
XMCRB = 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
}
/* 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=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;
}
}
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=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;
}
}
return step;
}
void delay(int n)
{
volatile int i,j;
for(i=1;i<n;i++)
{
for(j=1;j<100;j++);
}
}
int main(void)
{
volatile unsigned char stepleft_A = 50, stepright_A = 50,
stepleft_B = 50, stepright_B = 50;
init_devices();
MOTOR_PORTA_DDR = 0xff;
MOTOR_PORTB_DDR = 0xff;
while(1){
stepleft_A = LEFTmotorOneClock(stepleft_A, 1);
stepright_A = RIGHTmotorOneClock(stepright_A, 1);
stepleft_B = LEFTmotorOneClock(stepleft_B, 1);
stepright_B = RIGHTmotorOneClock(stepright_B, 1);
delay(3);
MOTOR_PORTA = stepleft_A|stepright_A;
MOTOR_PORTB = stepleft_B|stepright_B;
}
}
=======================================================
여기서
volatile unsigned char stepleft_A = 50, stepright_A = 50,
stepleft_B = 50, stepright_B = 50;
init_devices();
MOTOR_PORTA_DDR = 0xff;
MOTOR_PORTB_DDR = 0xff;
while(1){
stepleft_A = LEFTmotorOneClock(stepleft_A, 1);
stepright_A = RIGHTmotorOneClock(stepright_A, 1);
stepleft_B = LEFTmotorOneClock(stepleft_B, 1);
stepright_B = RIGHTmotorOneClock(stepright_B, 1);
delay(3);
MOTOR_PORTA = stepleft_A|stepright_A;
MOTOR_PORTB = stepleft_B|stepright_B;
}
}
이 부분만 임의로 제가 수정을 하였지만 모터의 회전 방향이 변화가 없었습니다.
코딩이 잘못되었나요??
관리자 답변
안녕하세요 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
동그라미로 표기한 부분의 매개변수를 전부 똑같이 넘겨주기 때문에 그런 겁니다.
고객님이 원하시는대로 방향을 선택하시고 넘겨주셔야 따로 돌겠죠.
아래와 같이 매개변수를 약간씩 변경해서 돌려보시면 감이 오실겁니다.
> volatile unsigned char stepleft_A = 30, stepright_A = 50,
> stepleft_B = 30, stepright_B = 50;
> stepleft_A = LEFTmotorOneClock(stepleft_A, 0);
> stepright_A = RIGHTmotorOneClock(stepright_A, 1);
> stepleft_B = LEFTmotorOneClock(stepleft_B, 0);
> stepright_B = RIGHTmotorOneClock(stepright_B, 1);
감사합니다.
>
>
> 바쁘신데 죄송합니다.
>
> 말씀하신것처럼 프로그램을 변경하였습니다.
>
>
> 전체 프로그램
>
> #include <avr/io.h>
> #include <avr/interrupt.h>
>
> #define MOTOR_PORTA PORTA
> #define MOTOR_PORTA_DDR DDRA
> #define MOTOR_PORTB PORTB
> #define MOTOR_PORTB_DDR DDRB
>
>
> void port_init(void)
> {
> PORTA = 0x00;
> DDRA = 0xff;
> PORTB = 0x00;
> DDRB = 0xff;
>
> }
>
> //call this routine to initialize all peripherals
> void init_devices(void)
> {
> //stop errant interrupts until set up
> cli(); //disable all interrupts
> XMCRA = 0x00; //external memory
> XMCRB = 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
> }
>
> /* 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=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;
> }
> }
> 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=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;
> }
> }
> return step;
> }
>
>
> void delay(int n)
> {
> volatile int i,j;
> for(i=1;i<n;i++)
> {
> for(j=1;j<100;j++);
> }
> }
>
> int main(void)
> {
> volatile unsigned char stepleft_A = 50, stepright_A = 50,
> stepleft_B = 50, stepright_B = 50;
>
> init_devices();
>
> MOTOR_PORTA_DDR = 0xff;
> MOTOR_PORTB_DDR = 0xff;
>
> while(1){
>
> stepleft_A = LEFTmotorOneClock(stepleft_A, 1);
> stepright_A = RIGHTmotorOneClock(stepright_A, 1);
>
> stepleft_B = LEFTmotorOneClock(stepleft_B, 1);
> stepright_B = RIGHTmotorOneClock(stepright_B, 1);
>
> delay(3);
>
> MOTOR_PORTA = stepleft_A|stepright_A;
> MOTOR_PORTB = stepleft_B|stepright_B;
> }
> }
>
>
>
>
> =======================================================
>
> 여기서
>
> volatile unsigned char stepleft_A = 50, stepright_A = 50,
> stepleft_B = 50, stepright_B = 50;
>
> init_devices();
>
> MOTOR_PORTA_DDR = 0xff;
> MOTOR_PORTB_DDR = 0xff;
>
> while(1){
>
> stepleft_A = LEFTmotorOneClock(stepleft_A, 1);
> stepright_A = RIGHTmotorOneClock(stepright_A, 1);
>
> stepleft_B = LEFTmotorOneClock(stepleft_B, 1);
> stepright_B = RIGHTmotorOneClock(stepright_B, 1);
>
> delay(3);
>
> MOTOR_PORTA = stepleft_A|stepright_A;
> MOTOR_PORTB = stepleft_B|stepright_B;
> }
> }
>
> 이 부분만 임의로 제가 수정을 하였지만 모터의 회전 방향이 변화가 없었습니다.
>
> 코딩이 잘못되었나요??
>
|
||||
| 10220 | 답변완료다시 한번 프로그램에 대하여 질문드립니다. | 전운성 | 2019-05-20 | 1,949 |
|
답변해주셔서 감사합니다.
앞서 말씀해주신 부분을 수정하여 4개의 스텝모터의 동작을 완료하였습니다.
죄송하지만 프로그램에 대한 지식이 짧아 다시 한번 질문드립니다.
현재 모터 각각의 방향제어를 진행 중에 있습니다.(메카넘휠 사용하기 위하여)
프로그램상에서 모터의 방향을 바꿔주려면 어디를 건드려야될까요??
#include <avr/io.h>
#include <avr/interrupt.h>
#define MOTOR_PORTA PORTA
#define MOTOR_PORTA_DDR DDRA
#define MOTOR_PORTB PORTB
#define MOTOR_PORTB_DDR DDRB
void port_init(void)
{
PORTA = 0x00;
DDRA = 0xff;
PORTB = 0x00;
DDRB = 0xff;
}
//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
cli(); //disable all interrupts
XMCRA = 0x00; //external memory
XMCRB = 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
}
/* 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<100;j++);
}
}
int main(void)
{
volatile unsigned char stepleft=200, stepright=200;
init_devices();
MOTOR_PORTA_DDR = 0xff;
MOTOR_PORTB_DDR = 0xff;
while(1){
stepright = RIGHTmotorOneClock(stepright, 200);
stepleft = LEFTmotorOneClock(stepleft, 200);
delay(3);
MOTOR_PORTA = stepleft|stepright;
MOTOR_PORTB = stepleft|stepright;
}
return 0;
}
관리자 답변
안녕하세요 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
소스 하단부분의 이 부분을 수정해 주시면 됩니다.
MOTOR_PORTA = stepleft|stepright;
MOTOR_PORTB = stepleft|stepright;
MS2의 좌측 모터가 움직일 방향을 stepleft,
MS2의 우측 모터가 움직일 방향을 stepright라는 변수로 저장하는 것이기 때문에
해당 부분을 stepright_A, stepleft_A, stepright_B, stepleft_B 등으로 추가하여 돌려주면 되겠죠.
그리고 추가로, stepleft = LEFTmotorOneClock(stepleft, 200);
LEFTmotorOneClock함수의 인자를 이렇게 넘겨주셨는데, 함수내의 첫번째 인자는
스테핑 모터의 스텝수 이고, 두번째 인자는 0과 1로 모터의
회전방향을 시계방향이나 반시계방향으로 정해주는 것입니다.
도움이 되셨으면 좋겠습니다.
감사합니다.
>
>
> 답변해주셔서 감사합니다.
>
> 앞서 말씀해주신 부분을 수정하여 4개의 스텝모터의 동작을 완료하였습니다.
>
> 죄송하지만 프로그램에 대한 지식이 짧아 다시 한번 질문드립니다.
>
> 현재 모터 각각의 방향제어를 진행 중에 있습니다.(메카넘휠 사용하기 위하여)
>
> 프로그램상에서 모터의 방향을 바꿔주려면 어디를 건드려야될까요??
>
> #include <avr/io.h>
> #include <avr/interrupt.h>
>
> #define MOTOR_PORTA PORTA
> #define MOTOR_PORTA_DDR DDRA
> #define MOTOR_PORTB PORTB
> #define MOTOR_PORTB_DDR DDRB
>
> void port_init(void)
> {
> PORTA = 0x00;
> DDRA = 0xff;
> PORTB = 0x00;
> DDRB = 0xff;
>
> }
>
> //call this routine to initialize all peripherals
> void init_devices(void)
> {
> //stop errant interrupts until set up
> cli(); //disable all interrupts
> XMCRA = 0x00; //external memory
> XMCRB = 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
> }
>
> /* 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<100;j++);
> }
> }
>
> int main(void)
> {
> volatile unsigned char stepleft=200, stepright=200;
>
> init_devices();
>
> MOTOR_PORTA_DDR = 0xff;
> MOTOR_PORTB_DDR = 0xff;
> while(1){
>
> stepright = RIGHTmotorOneClock(stepright, 200);
> stepleft = LEFTmotorOneClock(stepleft, 200);
> delay(3);
> MOTOR_PORTA = stepleft|stepright;
> MOTOR_PORTB = stepleft|stepright;
> }
> return 0;
> }
>
|
||||
| 10219 | 답변완료안녕하세요 스테핑모터 코딩관련하여 질문드립니다. | 전운성 | 2019-05-17 | 1,920 |
|
- 스텝모터 : SE-SM9K
- 스텝모터드라이버 : AM-MS2
- mcu : ATmega128a-AU
- 사용 프로그램 : ATMEL STUDIO 7
현재 뉴티씨에서 얻은 코딩값으로 스텝모터 2개 까지는 테스트 성공했습니다.
혹시 4개의 스텝모터를 돌릴려면 코딩 값 어느 부분을 수정해야될까요?
#include <avr/io.h>
#include <avr/interrupt.h>
#define MOTOR_PORT PORTA
#define MOTOR_PORT_DDR DDRA
#define MOTOR_PORT PORTB
#define MOTOR_PORT_DDR DDRB
void port_init(void)
{
PORTA = 0xff;
DDRA = 0xff;
PORTB = 0xff;
DDRB = 0xff;
}
//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
cli(); //disable all interrupts
XMCRA = 0x00; //external memory
XMCRB = 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
}
/* 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<100;j++);
}
}
int main(void)
{
volatile unsigned char stepleft=0, stepright=0;
init_devices();
MOTOR_PORT_DDR = 0xff;
while(1){
stepright = RIGHTmotorOneClock(stepright, 50);
stepleft = LEFTmotorOneClock(stepleft, 50);
delay(3);
MOTOR_PORT = stepleft|stepright;
}
return 0;
}
관리자 답변
안녕하세요 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
AM-MS2 모터드라이버를 두개 사용하셔서 모터와 ATmega보드와 연결하신 다음
소스상에서 MOTOR_PORT부분을 새로 추가하셔서 사용하시면 됩니다.
소스 상단부분에 MOTOR_PORT Define된 부분이 있는데,
같은 이름으로 포트만 다르게 선언이 되어있네요. 중복선언이라 아래쪽에 있는 PORTB만 작동할겁니다.
이름을 다르게 선언해주셔서 해당 포트에 모터 드라이버를 연결하신 후 사용하시면 될 것 같습니다.
#define MOTOR_PORTA PORTA
#define MOTOR_PORTA_DDR DDRA
#define MOTOR_PORTC PORTC
#define MOTOR_PORTC_DDR DDRC
감사합니다.
>
>
> - 스텝모터 : SE-SM9K
> - 스텝모터드라이버 : AM-MS2
> - mcu : ATmega128a-AU
> - 사용 프로그램 : ATMEL STUDIO 7
>
> 현재 뉴티씨에서 얻은 코딩값으로 스텝모터 2개 까지는 테스트 성공했습니다.
>
> 혹시 4개의 스텝모터를 돌릴려면 코딩 값 어느 부분을 수정해야될까요?
>
> #include <avr/io.h>
> #include <avr/interrupt.h>
>
> #define MOTOR_PORT PORTA
> #define MOTOR_PORT_DDR DDRA
> #define MOTOR_PORT PORTB
> #define MOTOR_PORT_DDR DDRB
>
> void port_init(void)
> {
> PORTA = 0xff;
> DDRA = 0xff;
> PORTB = 0xff;
> DDRB = 0xff;
> }
>
> //call this routine to initialize all peripherals
> void init_devices(void)
> {
> //stop errant interrupts until set up
> cli(); //disable all interrupts
> XMCRA = 0x00; //external memory
> XMCRB = 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
> }
>
> /* 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<100;j++);
> }
> }
>
> int main(void)
> {
> volatile unsigned char stepleft=0, stepright=0;
>
> init_devices();
>
> MOTOR_PORT_DDR = 0xff;
> while(1){
>
> stepright = RIGHTmotorOneClock(stepright, 50);
> stepleft = LEFTmotorOneClock(stepleft, 50);
> delay(3);
> MOTOR_PORT = stepleft|stepright;
> }
> return 0;
> }
>
|
||||
