Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 1118 | 답변완료질문이 있습니다. 광센서 관련 질문이예요 | 강희승 | 2008-05-29 | 1,424 |
|
AB-M128-A 키트에 광센서를 달아 빛의 세기를 구별하려고 하고 있습니다.
광센서를 작동시키고 작동이 잘되어 주파수 값이 나오는것을 확인하였는데
avr에 그 주파수 값을 입력 받고 주파수값을 시리얼 통신을 통해
주파수값을 표시하려 합니다.
그런데 아무리 해도 주파수값이 입력으로 들어오질 않습니다.
주파수 카운터도 어떻게 하는지 모르겠구요
포트B에 다 출력으로 설정하고 PORTB 핀6번만 입력으로 사용하였습니다.
초보라 지식이 부족하여 도움 요청합니다.
관리자 답변
안녕하세요? 고객님,
어떤 광센서인데 무슨 주파수가 나오는 지 잘 모르겠네요.
자세히 좀 질문 부탁합니다.
감사합니다.
>AB-M128-A 키트에 광센서를 달아 빛의 세기를 구별하려고 하고 있습니다.
>
>광센서를 작동시키고 작동이 잘되어 주파수 값이 나오는것을 확인하였는데
>
>avr에 그 주파수 값을 입력 받고 주파수값을 시리얼 통신을 통해
>
>주파수값을 표시하려 합니다.
>
>그런데 아무리 해도 주파수값이 입력으로 들어오질 않습니다.
>
>주파수 카운터도 어떻게 하는지 모르겠구요
>
>포트B에 다 출력으로 설정하고 PORTB 핀6번만 입력으로 사용하였습니다.
>
>초보라 지식이 부족하여 도움 요청합니다.
>
>
>
>
>
>
|
||||
| 1117 | 답변완료usb isp 와 usb uart 의 차이점 좀 알고 싶어요 | 김영규 | 2008-05-29 | 1,472 |
|
좀 공부좀 해보려는데요
이걸잘 모르겠네요
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 를 방문해 주셔서 감사드립니다.
USBISP는 AVR에 프로그램을 다운로드 하는 장비이구요.
USB 포트를 통해서 AVR에는 ISP로 다운로드 하게 합니다.
USBUART는 USB를 통해서, 시리얼 통신을 하는 보드입니다.
TTL로 출력이 되구요. TTL 쪽을 바로 MCU에 붙이실 수 있습니다.
더 자세한 것은 자료실의 메뉴얼을 참고하세요.
감사합니다.
>좀 공부좀 해보려는데요
>
>이걸잘 모르겠네요
|
||||
| 1116 | 답변완료scanf 질문 입니다. | 오제영 | 2008-05-29 | 1,439 |
|
atmega128pro 를 사용하여
하이퍼 터미널을 통해서
키보드의 입력값을 받아서 구문을 실행하는 프로그램입니다.
무한 루프안에
scanf를 사용하면 키보드 입력이 없을시
무한루프가 멈춰버리고 계속 키보드 입력을 대기해버립니다.
제가 짜려는 프로그램은 키보드 입력이 없으면
scanf를 무시하고 다음 구문을 실행해야 합니다.
이를 해결하려고 kbhit() 함수를 사용해 봤는데
kbhit()함수가 conio.h 라는 헤더파일에 포함되있더군요.
그런데 아무리 찾아봐도 conio.h 파일은 없고 제가 임의로
conio.h 찾아서 해봤는데도 에러가 뜹니다.
아래 글중에서 검색해서 읽어보니 iccavr홈페이지 가서 검색하면
사용할수 있는 함수를 찾을수 있다 그래서 찾아봤는데 kbhit는 없었습니다.
이 문제를 어떻해야하죠??
좀 도와주세요.
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사드립니다.
좋은 질문입니다.
항상 그런 어려움에 봉착하기 마련이지요. 저도 예전에 그런일이 있어서, 몇가지 방법을 썻었는 데, 그 중 한가지 지금 기억나는 게 이런 방법은 어떨까요?
인터럽트 방식으로 RS-232C를 프로그램짜서,
데이터가 수신되면 인터럽트 루틴으로 가서, 데이터를 받고, 글로벌 변수에 넣고, volatile 글로벌 변수로 상태를 표시하는 변수를 수신 받았다고 변경하고, 메인에서 상태변수를 읽어서 읽었으면 그 값으로 활용하는 방법을 쓰면 되겠지요?
더 좋은 아이디어 있으면, 올려 주세요.
감사합니다.
>atmega128pro 를 사용하여
>
>하이퍼 터미널을 통해서
>
>키보드의 입력값을 받아서 구문을 실행하는 프로그램입니다.
>
>무한 루프안에
>
>scanf를 사용하면 키보드 입력이 없을시
>
>무한루프가 멈춰버리고 계속 키보드 입력을 대기해버립니다.
>
>제가 짜려는 프로그램은 키보드 입력이 없으면
>
>scanf를 무시하고 다음 구문을 실행해야 합니다.
>
>이를 해결하려고 kbhit() 함수를 사용해 봤는데
>
>kbhit()함수가 conio.h 라는 헤더파일에 포함되있더군요.
>
>그런데 아무리 찾아봐도 conio.h 파일은 없고 제가 임의로
>
>conio.h 찾아서 해봤는데도 에러가 뜹니다.
>
>아래 글중에서 검색해서 읽어보니 iccavr홈페이지 가서 검색하면
>
>사용할수 있는 함수를 찾을수 있다 그래서 찾아봤는데 kbhit는 없었습니다.
>
>이 문제를 어떻해야하죠??
>
>좀 도와주세요.
|
||||
| 1115 | 답변완료스테핑 모터 구동 모듈 AM-MS2 질문있습니다. | 김진택 | 2008-05-29 | 1,445 |
|
AM-MS2 매뉴얼을 보면
step mode가 있어서
hlaf, quater, eighth, sixteenth setp이렇게 선택할 수 있는데요
각 모드마다 바퀴가 몇도씩 돌아가는 건가요?
매뉴얼에는 최대 0.1125' 라고 적혀있는데 16 setp일때 0.1125초 인건가요?
그럼 8 setp일때는 2250초 인건가요?
관리자 답변
안녕하세요? 고객님,
초가 아니구요. 단위는 도입니다.
클럭당 그렇게 돈다는 것이구요.
8step이면 0.2250도 이겠지요?
감사합니다.
>AM-MS2 매뉴얼을 보면
>
>step mode가 있어서
>
>hlaf, quater, eighth, sixteenth setp이렇게 선택할 수 있는데요
>
>각 모드마다 바퀴가 몇도씩 돌아가는 건가요?
>
>매뉴얼에는 최대 0.1125' 라고 적혀있는데 16 setp일때 0.1125초 인건가요?
>
>그럼 8 setp일때는 2250초 인건가요?
|
||||
| 1114 | 답변완료[입금완료] 안녕하세요 | 김정 | 2008-05-29 | 1,294 |
|
=================================================================
안녕하세요
김정입니다
우선 오전에 전화드리고 상담해 주셔서 감사합니다 (꾸뻑)
보내 주신 견적서 대루 입금했습니다
입금자 : 에이xxx
입금은행 : 산업은행
입금금액 : 155100원
입금시간 : 오후 1시전후
받을 주소 : 133-791, 서울시 성동구 행당동 한양대학교 한양종합연구소(HIT) 408호
김정
꼭 세금계산서, 거래명세서 포함 보내주시면 감사하겠습니다
(한달전쯤 직접 찾아 갔을때 사업자등록증 드리고 왔습니다,
혹시 없으시다면 전화주세요. 팩스로 보내드릴께요)
수고하세요
===================================================================
USBISP 수리받으로 가야하는데............
게을러서 ㅠㅠ 담에 또 찾아뵙겠습니다..........
(저번 같을땐 일본 출장가셨더라구요 ㅎㅎ)
관리자 답변
네 알겠습니다. 언제든지 와서 A/S 받으세요.
감사합니다.
금일 발송됩니다.
>=================================================================
>안녕하세요
>
>김정입니다
>
>우선 오전에 전화드리고 상담해 주셔서 감사합니다 (꾸뻑)
>
>보내 주신 견적서 대루 입금했습니다
>
>입금자 : 에이xxx
>입금은행 : 산업은행
>입금금액 : 155100원
>
>입금시간 : 오후 1시전후
>
>받을 주소 : 133-791, 서울시 성동구 행당동 한양대학교 한양종합연구소(HIT) 408호
> 김정
>
>꼭 세금계산서, 거래명세서 포함 보내주시면 감사하겠습니다
>(한달전쯤 직접 찾아 갔을때 사업자등록증 드리고 왔습니다,
>혹시 없으시다면 전화주세요. 팩스로 보내드릴께요)
>
>수고하세요
>===================================================================
>
>USBISP 수리받으로 가야하는데............
>
>게을러서 ㅠㅠ 담에 또 찾아뵙겠습니다..........
>
>(저번 같을땐 일본 출장가셨더라구요 ㅎㅎ)
|
||||
| 1113 | 답변완료ISP 다운로더에 대한 질문입니다. | 유원설 | 2008-05-29 | 1,487 |
|
귀사의 USB로된 ISP로 AVR MEGA 128 개발보드 (+빵판)에 다운로드를
AVR Studio로 받았습니다. 그러다가 한번되다가 안되더라고요
그이후로 USB를 인식을 못하더라고요
그래서 페레럴포트로된 ISPPRO를 구입해서
ponyprog로 다운로드를 받으려고 세팅을 다해놓고 일단 보드에있는 내용을 지우려고 erase를 하는데 보드를 인식을 하지못하더라고요.
어떻게 해야하는지 좀 가르쳐주세요.
관리자 답변
안녕하세요? 고객님,
MCU가 망가진 것 같은데요.
주변 환경이 어떤 환경에서 사용된 것인지 궁금하네요.
어딘가 밑에 쪽에서 쇼트가 되었거나, 무리하게 MCU가 전류를 소모했다거나
그럴 수도 있고, 아님 정전기가 많은 곳이거나 그럴 수도 있겠지요?
저희 회사로 가지고 오실 수 있다면, 방문하시면 자세한 테스트를 해 드리겠구요.
본사 A/S 규정에 따라 A/S가 가능합니다.
감사합니다.
>귀사의 USB로된 ISP로 AVR MEGA 128 개발보드 (+빵판)에 다운로드를
>AVR Studio로 받았습니다. 그러다가 한번되다가 안되더라고요
>그이후로 USB를 인식을 못하더라고요
>그래서 페레럴포트로된 ISPPRO를 구입해서
>ponyprog로 다운로드를 받으려고 세팅을 다해놓고 일단 보드에있는 내용을 지우려고 erase를 하는데 보드를 인식을 하지못하더라고요.
>어떻게 해야하는지 좀 가르쳐주세요.
|
||||
| 1112 | 답변완료AVR 128PL모듈관련요... | 한성철 | 2008-05-28 | 1,443 |
|
얼마전에 AVR 128PL모듈을 구매했습니다.
제가 초보다 보니 아무것도 모르고 덤비는데요 ㅎㅎ
제가 미니로봇사( http://www.minirobot.co.kr/ )에서 만든 MR-RM01을 이용해서
간단하게 모터 정역회전을 구동해보려고 합니다.
근데 시리얼 통신 포트는 두개고 각각 입출력단자가 있는데요
두개다 출력을 낼순 없는건가요??
또 소스를 작성할 때 A~G포트중에 어느 포트의 신호가 들어가게 고려해서 작성해야 하는건가요?
그리고 MR-RM01을 살펴보면 MCU와 연결되는 VCC, GRN는 하나고
나머지 네개 포트에서 전부 입력을 받아야되는데,
(그러니깐 128에서는 네개의 포트로 출력을 보내야한단거죠^^)
어떤 식으로 소스를 작성해야 할까요??
답변부탁드립니다.^^
관리자 답변
안녕하세요? 고객님,
저희, N.T.C 제품을 이용하여 주셔서 감사드립니다.
우선, 구입하신 모듈에는 TTL 레벨(5V 레벨) 시리얼 통신 포트가 두개 있습니다.
둘 다 출력 입력 가능합니다. 예제는 자료실->기존자료실이나 아래 질문에 보셔도 되구요. Q&A와 자료실에서 검색해 보시면 보실 수 있습니다.
그리고, A-G 포트 중 어디로도 원하시는 기능이 가능합니다.
어느 포트로 쓰시던 관계 없습니다. 소스 작성은 구입하신 회사의 메뉴얼을 참고하셔서 입력시켜야 하는 데이터를 확인하시고, 하셔야 할 듯 싶네요.
저희 자료실에 가시면, 저희 DC 구동 모듈인 AM-DCxx-xx 모듈에 관한 예제소스가 있구요. 또한, 소형 DC모터 모듈인 AM-CD2L도 있으니, 예제 소스를 참고 바랍니다.
감사합니다.
>얼마전에 AVR 128PL모듈을 구매했습니다.
>
>제가 초보다 보니 아무것도 모르고 덤비는데요 ㅎㅎ
>
>제가 미니로봇사( http://www.minirobot.co.kr/ )에서 만든 MR-RM01을 이용해서
>
>간단하게 모터 정역회전을 구동해보려고 합니다.
>
>근데 시리얼 통신 포트는 두개고 각각 입출력단자가 있는데요
>
>두개다 출력을 낼순 없는건가요??
>
>또 소스를 작성할 때 A~G포트중에 어느 포트의 신호가 들어가게 고려해서 작성해야 하는건가요?
>
>그리고 MR-RM01을 살펴보면 MCU와 연결되는 VCC, GRN는 하나고
>
>나머지 네개 포트에서 전부 입력을 받아야되는데,
>
>(그러니깐 128에서는 네개의 포트로 출력을 보내야한단거죠^^)
>
>어떤 식으로 소스를 작성해야 할까요??
>
>답변부탁드립니다.^^
>
>
|
||||
| 1111 | 답변완료scanf관련 질문입니다. | 설경환 | 2008-05-28 | 1,441 |
|
scanf와 printf를 사용하고 있는데요..
printf는 "com3"(uart0)를 모니터로 겨냥하여 출력됩니다..
기본 출력 파일이 데스크탑 컴퓨터에서는 모니터인 반면, ACCAVR의 출력 포트는 com3인 셈이죠..
반면 scanf는 일반적인 데스크탑에서의 입력과 같이 키보드 입력을 받고 있는듯 합니다.
이 scanf가 com3로 writefile을 이용해 쓰여진 문자를 인식하지 못하고 있는듯 한데요. 기본 인풋을 키보드가 아닌 com3로 바꿔줄수 있는 방법이 있는지요?
아니면 제가 com3에 신호보내는 방식을 writefile로 오해한건가요??
if(!WriteABuffer(&bufscan, 1)) 이런 방식으로 'A'를 보냈거등요.. 보내지고 있는 과정에서 에러가 없음은 if~else로 걸러내었기 때문에 보내지고 있음은 확실한데 인식하지 못하고 있네요.. 다른 방식을 사용해야하는건지요?
지금 printf처럼 기본 출력 파일을 모니터가 아닌 com3인것처럼
scanf도 기본 입력 파일을 키보드가 아닌 com3로 말입니다..
뭔가 추가적으로 설정해줘야 하는 게 있는건 아닌지요??
업로드한 설정그림에 ASCII 트렌스퍼 프로토콜의 기능이 뭔가요??
어떻게 설정해줘야하나요???
관리자 답변
안녕하세요? 고객님,
저희 N.T.C를 방문해 주셔서 감사합니다.
우선, scanf와 printf에 대해 쓰셨는 데요.
둘다 UART를 통하여 수신을 받고, 송신하고 하는 것입니다.
기본은 AVR의 UART0로 되어 있구요.
PC에서 터미널을 띄워서 AVR과 연결된 PC의 시리얼 포트로 연결하게 되구요.
고객님의 경우 그게 COM3라면 COM3로 연결되었겠지요.
scanf가 키보드로 연결된 것이 아니라 COM3에 연결되어 있는 데,
터미널 자체가 키보드를 치면 연결된 COM 포트로 그 데이터를 송신하기 때문에,
착각하신 것 같습니다.
printf도 마찬가지로 AVR 쪽에서 PC 쪽으로 데이터를 송신하게 됩니다.
아래 강좌와 예제도 참고하세요.
- printf 및 scanf 예제 -
http://www.newtc.co.kr/board/view.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=238
- UART0 과 UART1에서 번갈아가며 scanf와 printf를 쓰는 법 -
http://www.newtc.co.kr/board/view.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=231
감사합니다.
>scanf와 printf를 사용하고 있는데요..
>printf는 "com3"(uart0)를 모니터로 겨냥하여 출력됩니다..
>기본 출력 파일이 데스크탑 컴퓨터에서는 모니터인 반면, ACCAVR의 출력 포트는 com3인 셈이죠..
>반면 scanf는 일반적인 데스크탑에서의 입력과 같이 키보드 입력을 받고 있는듯 합니다.
>이 scanf가 com3로 writefile을 이용해 쓰여진 문자를 인식하지 못하고 있는듯 한데요. 기본 인풋을 키보드가 아닌 com3로 바꿔줄수 있는 방법이 있는지요?
>아니면 제가 com3에 신호보내는 방식을 writefile로 오해한건가요??
>if(!WriteABuffer(&bufscan, 1)) 이런 방식으로 'A'를 보냈거등요.. 보내지고 있는 과정에서 에러가 없음은 if~else로 걸러내었기 때문에 보내지고 있음은 확실한데 인식하지 못하고 있네요.. 다른 방식을 사용해야하는건지요?
>
>지금 printf처럼 기본 출력 파일을 모니터가 아닌 com3인것처럼
>scanf도 기본 입력 파일을 키보드가 아닌 com3로 말입니다..
>
>뭔가 추가적으로 설정해줘야 하는 게 있는건 아닌지요??
>
>업로드한 설정그림에 ASCII 트렌스퍼 프로토콜의 기능이 뭔가요??
>어떻게 설정해줘야하나요???
>
|
||||
| 1110 | 답변완료질문드립니다.led 테스터 소스 | 김석빈 | 2008-05-28 | 1,484 |
|
kd 128 모듈을 구매해서 아트메가 128 모듈을 이용해서 도트매트릭스를 연결해서 전광판을 만들고 있습니다. .. 자료실의 led 테스트 코드가 열려고 하니 안되던데 프로그램이 icc avr 프로그램으로 작성된것입니까???
저는 코드비젼과 avredit 로 사용중입니다 혹시 다른 led 테스트 코드가 있으시다면 보내주시면 감사하겠습니다.
관리자 답변
안녕하세요? 고객님,
저희 제품을 이용하여 주셔서 감사드립니다.
저희 회사는 ICCAVR을 이용한 예제 소스만 현재는 제공하고 있습니다.
코드비전이나 avredit로 작업하실 때에는 헤더 파일을 변경해 주시고,
일부 함수나 레지스터 이름이 변경되게 됩니다.
즉, led 켜는 정도라면 헤더 파일 몇개와 sei()와 같은 함수 몇개만 변경하면 됩니다.
죄송하지만, 다른 컴파일러용 소스로 변환은 현재 제공해 드리고 있지 않습니다.
약간 변경하여 쓰시기 바랍니다.
감사합니다.
>kd 128 모듈을 구매해서 아트메가 128 모듈을 이용해서 도트매트릭스를 연결해서 전광판을 만들고 있습니다. .. 자료실의 led 테스트 코드가 열려고 하니 안되던데 프로그램이 icc avr 프로그램으로 작성된것입니까???
>
>저는 코드비젼과 avredit 로 사용중입니다 혹시 다른 led 테스트 코드가 있으시다면 보내주시면 감사하겠습니다.
|
||||
| 1109 | 답변완료PLC | 전기섭 | 2008-05-28 | 1,434 |
|
안녕하세요
서보모터 DS-401을 PLC로 컨트롤 하고자하는데
모터가 오픈 컬렉터 타입인지 라인타입인지 알고져 합니다.
답변부탁드립니다.
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사드립니다.
제조사에 확인하였는 데, 오픈 컬렉터 타입은 아니라고 합니다.
컬렉터 쪽을 오픈하면 동작이 제대로 안된다고 하네요.
감사합니다.
>안녕하세요
>서보모터 DS-401을 PLC로 컨트롤 하고자하는데
>모터가 오픈 컬렉터 타입인지 라인타입인지 알고져 합니다.
>답변부탁드립니다.
|
||||
| 1108 | 답변완료DC모터 구동 모듈 AM- DC2-4AC 를 테스트 할려는데 | 전병주 | 2008-05-28 | 1,525 |
|
안녕하세요.
DC모터 구동 모듈 AM-DC2-4AC를 구매 하였는데,
구동 테스트 중에 문제가 있어서 질문을 드림니다.
일단 구동 여부를 확인 하기 위해 자료실의 예제 소스를 사용 하였습니다.
소스는 아래 적어 두었습니다.
PORTG에 해당하는 LED는 차례 대로 깜박이는데
정작 PORTC에 연결한 DC모터 모듈은 아무런 반응이 없습니다.
DC모터 전원은 KTM128보드에서 5V out에서 연결해서 DC input에
넣어 주었습니다.
모터는 ch1A와 ch2B에 연결해 주었습니다.
DC모터는 과학상자 부속품으로 4.5V에 동작하는 모터로
5V 직접 인가시 잘 돌아갑니다.
문제점을 모르겠는데, 작은 의견이라도 적어 주시면
큰 도움이 될 것입니다.
답변 부탁 드리겠습니다.
//ICC-AVR application builder : 2007-11-19 오후 5:41:05
// Target : M128
// Crystal: 16.000Mhz
#include <iom128v.h>
#include <macros.h>
#define MOTOR_PORT PORTC
#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)
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 = 0x00;
PORTG = 0x00;
DDRG = 0x1F;
}
//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
}
void delay(int delaytime){
int i,j;
for(i=0;i<1000;i++){
for(j=0;j<delaytime;j++){
}
}
}
//
void main(void)
{
init_devices();
//insert your functional code here...
ENABLE1_ON;
PWM1_ON;
BREAK1_OFF;
printf("Motor Control V01W\\r\\n");
while(1){
DIR1_ON;
delay(5000);
PORTG = 0x01;
printf("CW\\r\\n");
DIR1_OFF;
delay(5000);
PORTG = 0x02;
printf("CCW\\r\\n");
}
}
관리자 답변
안녕하세요? 고객님,
저희 제품을 이용하여 주셔서 감사드립니다.
KT-M128의 경우 외부 포트 중 PORTF만 뽑혀 있습니다.
아래 소스는 PORTF로 변경하였구요.
그리고, MCUCR=0x80으로 변경하여야 외부 메모리 방식으로 나머지 포트들의 억세스가 가능합니다. 이 부분은 굳이 안해 주셔서 되지만, 다른 디바이스 들도 쓰시려면, KT-M128에선 반드시 해 주셔야 하는 부분입니다.
아래 소스는 위에 말씀드린 사안을 감안하여 프로그램 해 두었으니, 사용하시면 될겁니다. 테스트 해보니 잘되네요.
감사합니다.
//ICC-AVR application builder : 2007-11-19 오후 5:41:05
// Target : M128
// Crystal: 16.000Mhz
#include <iom128v.h>
#include <macros.h>
#define MOTOR_PORT PORTF
#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)
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 = 0xFF;
PORTG = 0x00;
DDRG = 0x1F;
}
//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 = 0x80;
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 delay(int delaytime){
int i,j;
for(i=0;i<1000;i++){
for(j=0;j<delaytime;j++){
}
}
}
//
void main(void)
{
init_devices();
//insert your functional code here...
ENABLE1_ON;
PWM1_ON;
BREAK1_OFF;
printf("Motor Control V01W\\r\\n");
while(1){
DIR1_ON;
delay(5000);
PORTG = 0x01;
printf("CW\\r\\n");
DIR1_OFF;
delay(5000);
PORTG = 0x02;
printf("CCW\\r\\n");
}
}
>안녕하세요.
>
>DC모터 구동 모듈 AM-DC2-4AC를 구매 하였는데,
>
>구동 테스트 중에 문제가 있어서 질문을 드림니다.
>
>일단 구동 여부를 확인 하기 위해 자료실의 예제 소스를 사용 하였습니다.
>
>소스는 아래 적어 두었습니다.
>
>PORTG에 해당하는 LED는 차례 대로 깜박이는데
>
>정작 PORTC에 연결한 DC모터 모듈은 아무런 반응이 없습니다.
>
>DC모터 전원은 KTM128보드에서 5V out에서 연결해서 DC input에
>
>넣어 주었습니다.
>
>모터는 ch1A와 ch2B에 연결해 주었습니다.
>
>DC모터는 과학상자 부속품으로 4.5V에 동작하는 모터로
>
>5V 직접 인가시 잘 돌아갑니다.
>
>문제점을 모르겠는데, 작은 의견이라도 적어 주시면
>
>큰 도움이 될 것입니다.
>
>답변 부탁 드리겠습니다.
>
>
>//ICC-AVR application builder : 2007-11-19 오후 5:41:05
>// Target : M128
>// Crystal: 16.000Mhz
>
>#include <iom128v.h>
>#include <macros.h>
>
>#define MOTOR_PORT PORTC
>#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)
>
>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 = 0x00;
> PORTG = 0x00;
> DDRG = 0x1F;
>}
>
>//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
>}
>
>void delay(int delaytime){
> int i,j;
> for(i=0;i<1000;i++){
> for(j=0;j<delaytime;j++){
> }
> }
>}
>
>//
>void main(void)
>{
> init_devices();
> //insert your functional code here...
> ENABLE1_ON;
> PWM1_ON;
> BREAK1_OFF;
> printf("Motor Control V01W\\r\\n");
>
> while(1){
> DIR1_ON;
> delay(5000);
> PORTG = 0x01;
> printf("CW\\r\\n");
> DIR1_OFF;
> delay(5000);
> PORTG = 0x02;
> printf("CCW\\r\\n");
> }
>}
>
|
||||
| 1107 | 답변완료ICCAVR 데모 버젼에 관하여 | 박효근 | 2008-05-28 | 1,567 |
|
컴파일을 하는데 계속 위와같은 에러가 나네요...
함수하나를 빼면 다시 에러가 안나지만 함수가 너무 중요한 함수인지라 뺄수가 없습니다.
제가 사용하는 다른 컴퓨터에는 처음으로 ICCAVR을 깔고 같은 파일을 컴파일했는데
위와같은 에러가 뜨지 않았습니다.
혹시나 위와같은 에러가 계속나는것이 fully funtional version 에서
사용기간이 초과되서 4k evaluation 버젼으로 바뀌어서 큰 용량을 처리하지 못해서 그런것 같은데요,
새롭게 ICCAVR을 설치하는 방법을 알려주시면 감사하겠습니다.. ^^
혹시 위와같은 에러가 위와 다른 이유로 발생한 에러라면, 알려주시면 감사하겠습니다.
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사드립니다.
짐작하신 것처럼, 사용기간 초과로 4k 버전으로 바뀌어서 그런 에러가 난 것입니다.
포맷하고 다시 까시면 사용이 가능하겠지요? 정품을 구매해서, 사용하는 것이 좋겠지만, 비용이 문제겠지요.
저두 별다른 방법은 없어서, 구매하시는 게 좋다는 것과 포맷하고 다시 까시면 또 쓰실 수 있다는 것만 말씀드릴 수가 있겠네요.
수고하세요.
>컴파일을 하는데 계속 위와같은 에러가 나네요...
>함수하나를 빼면 다시 에러가 안나지만 함수가 너무 중요한 함수인지라 뺄수가 없습니다.
>
>
>
>제가 사용하는 다른 컴퓨터에는 처음으로 ICCAVR을 깔고 같은 파일을 컴파일했는데
>
>위와같은 에러가 뜨지 않았습니다.
>
>혹시나 위와같은 에러가 계속나는것이 fully funtional version 에서
>
>사용기간이 초과되서 4k evaluation 버젼으로 바뀌어서 큰 용량을 처리하지 못해서 그런것 같은데요,
>
>
>새롭게 ICCAVR을 설치하는 방법을 알려주시면 감사하겠습니다.. ^^
>
>
>
>혹시 위와같은 에러가 위와 다른 이유로 발생한 에러라면, 알려주시면 감사하겠습니다.
|
||||
| 1106 | 답변완료거리측정센서 측정값이 이상해서요... | 권혁민 | 2008-05-28 | 1,479 |
|
Atmega128pro 키트를 이용했구요... 샤프에서 나오는 아날로그 거리측정센서를
portF에 물려서 ADC소스(자료실에 있는것)를 돌려서 Uart로 확인해 봤는데
값이 이상하게 나오네요... 거리를 멀리두어도 가까우두어도 값이 거의 변하지가 않습니다... ㅜㅜ 이게 무슨 문제일까요
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사드립니다.
센서로부터 오는 선이 떨어지지 않았나 싶구요. 선이 중간에서 단선이 났을 수도 있으니 찍어 보시구요. 간혹 테스트 중에 과도 전압 등 때문에 칩이 망가지기도 합니다.
확인해 보세요.
감사합니다.
>Atmega128pro 키트를 이용했구요... 샤프에서 나오는 아날로그 거리측정센서를
>portF에 물려서 ADC소스(자료실에 있는것)를 돌려서 Uart로 확인해 봤는데
>값이 이상하게 나오네요... 거리를 멀리두어도 가까우두어도 값이 거의 변하지가 않습니다... ㅜㅜ 이게 무슨 문제일까요
|
||||
| 1105 | 답변완료[3축 가속도 센서 모듈 Ver.2]에 대한 질문입니다. | 전우철 | 2008-05-27 | 1,607 |
|
얼마전에 [3축 가속도 센서 모듈 Ver.2] 센서 모듈을 구입해서 지금 테스트를 해보고 있는데요 y축 과 z축은 정상적인거 같은데 이상하게 X축만 오실로스 스코프로 찍서어 확인해보니 어떻게 하던 계속 5v 만 출력을 하는데 센서가 이상한건가요??
아니면 저의 실수인가요??
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사드립니다.
저희 회사 플러스 모듈이라면 X,Y,Z가 각각 아마 0번, 2번, 4번에 연결되어 있을 겁니다. 그리고, 3.3V를 가속도 센서의 전원에 인가하셔야 합니다. 5V에 연결하시면 망가지실 수 있습니다.
전원에 3.3V를 가하시고 다시 해보시기 바랍니다.
감사합니다.
>얼마전에 [3축 가속도 센서 모듈 Ver.2] 센서 모듈을 구입해서 지금 테스트를 해보고 있는데요 y축 과 z축은 정상적인거 같은데 이상하게 X축만 오실로스 스코프로 찍서어 확인해보니 어떻게 하던 계속 5v 만 출력을 하는데 센서가 이상한건가요??
>아니면 저의 실수인가요??
>
>
|
||||
| 1104 | 답변완료한 번 더 질문드릴께요... | 정현성 | 2008-05-27 | 1,432 |
|
led에 불이 들어오게하는 소스가 자료실에 있어서 넣어봤는데
불이 하나씩 두 개가 번갈아가며 깜빡깜빡 거리거든요
혹시 이 소스에서 불이 하나만 그냥 계속 들어오게 할 수 있는 명령의 소스는 어떻게 만드는지 알 수 있을까요...
관리자 답변
안녕하세요? 고객님,
소스상에서 보면,
예를 들어서,
while(1){
.......
PORTC = 0x01;
delay(100);
PORTC = 0x02;
delay(100);
......
}
이렇게 되어 있었을 겁니다.
이것을 아래와 같이 하면, D0만 켜져 있겠지요.
while(1){
.......
PORTC = 0x01;
delay(100);
......
}
C언어를 조금만 더 공부하시면 쉽게 아시게 될겁니다.
수고하세요.
>led에 불이 들어오게하는 소스가 자료실에 있어서 넣어봤는데
>불이 하나씩 두 개가 번갈아가며 깜빡깜빡 거리거든요
>혹시 이 소스에서 불이 하나만 그냥 계속 들어오게 할 수 있는 명령의 소스는 어떻게 만드는지 알 수 있을까요...
|
||||
