Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 738 | 답변완료스텝핑모터 질문입니다. | 최용석 | 2008-02-05 | 2,822 |
|
얼마전에 찾아가서 스테핑모터와 모터구동모듈을 구입했던 대학후배입니다^^;;
소스를 입력해서 돌려보았더니 정회전 역회전이 잘되었습니다.
그리고 저희가 원하는 각도로 조절하기위해서
while 문을 for문으로 바꾸어서 조절하였는데
for(i=0 ; i<100 ; i++)
이함수를 쓰면 1.8도 씩 100번이니까 180도 회전이 맞는건가요??
그리고 컴파일 되면서 한 두번정도, 조금씩 회전하던데 그건 원래 그런건가요
소스를 잘못 짠건가요?
저희가 정확한 각도로 회전을 시켜야하기때문에 중요합니다.
관리자 답변
안녕하세요?
컴파일 되면서 돈다는 게 무슨 말인지 잘 모르겠네요.
그리고, 1상 여자 2상 여자인 소스의 경우는 180도 회전이 맞구요. 1-2상 여자 소스는 90도만 돌겠지요?
열심히 하세요.
|
||||
| 737 | 답변완료[예제] ADC 가변저항을 이용해서 서보 제어하기. | 정재환 | 2008-02-05 | 3,358 |
|
071230 소스는 인터럽트를 사용하지 않고 delay 함수를 이용해서
가변저항을 돌리면 ad컨버팅해서 현재값을 FND와 UART0로 보냅니다.
현재값은 각도값으로 정확한 수치는 아니지만 거의 비슷합니다.
0~174도까지 가변저항과 서보의 실제회전각도를 비슷하게 맞췄습니다.
080204 폴더에있는 소스는 타이머 인터럽트를 사용함으로 delay 함수가
필요없게 되었습니다. 결과적으로 FND의 숫자가 깜빡임없이 정확하게 출력됩니다.
여러개의 서보를 제어할때는 인터럽트가 필수라서 만들어봤습니다.
관리자 답변
안녕하세요, 뉴티씨입니다. 문의 내용 확인하였습니다. 추가 문의사항은 newtc@newtc.co.kr 또는 02-704-4774로 연락 주시기 바랍니다. 감사합니다.
|
||||
| 736 | 답변완료퓨즈비트.. | 김영인 | 2008-02-04 | 2,760 |
|
푸즈비트를 read 해보라고 하셨는데 ICCAVR의 경우
ATMega128의 경우 퓨즈비트를 write할수 없는 문제가 있다고
메뉴얼에 있어서 생략하고 사용하고 있었습니다.
그리고 verify flash/eeprom 을 실행하면 can not verify flash
라는 팝업창이 뜨게 되네요.
ICCAVR을 실행하면 fully functional demo 라는 글이 뜨는데 혹시
이것 때문인지 궁금합니다.
또한 buiding project 하게 되면 device 4% full 이라고 떴었는데
지금은 0% 로 표시됩니다. 해결할 방법은 없을까요?
관리자 답변
안녕하세요?
AVR studio에서 STK500으로 설정해서 한 번 해보시겠어요?
설정법은 USBISP 메뉴얼에 나옵니다.
감사합니다.
|
||||
| 735 | 답변완료ATmega128을 사용하는데 질문 있습니다. | 김영인 | 2008-02-02 | 2,396 |
|
iccavr 을 이용해서 코딩을 하는데 갑자기 작동하질 않네요.
원래 잘 됐었는데,,지금도 ISP programming done 이라고 나오긴
하는데 회로가 구동하질 않습니다. 회로 전원을 껐다 켜게되면
예전 프로그래밍 했던데로 작동합니다.
어떻게 잘못된건지 모르겠어서 질문드립니다.
관리자 답변
안녕하세요? 퓨즈비트를 읽어 보세요.
얼마가 나오나요?
0xffD9EF가 나오는지요?
|
||||
| 734 | 답변완료LCD 출력보드(AM-LCD)에 관한 질문입니다 | 박태영 | 2008-01-30 | 2,405 |
|
LCD 출력 보드를 이용하려 하는데 LCD 에 전원만 공급되고 글자가 표시되지 않습니다.
(실습장비 목록)
UST-MPB-ATmega128 v3.0
LCD 출력 보드(AM-LCD)
POWERTIP PC1602G-P2 (P/N:PC1602LRS-GSO-B-P2)
(실습방법)
- 프로그램은 잘 작동하는 검증된 *.hex 파일을 다운로드하여 사용하고 있습니다.
- ATmega128 의 포트와 LCD 출력 보드는 연결선을 구매하여 연결하였습니다.
(현재상황)
- LCD는 전원만 공급되어 녹색 바탕만 켜져 있고 글씨는 표시되지 않습니다.
- LED 출력보드(AM-TL8) 를 연결하여 보니 아래와 같습니다.
#Control Signal
RS (PG2) = off
R/W (PG1) = on
E (PG0) = on
# Data Output
DB0 ~ DB7(AD0 ~ AD7) = 모두 흐리게 on
(리셋 처음에는 DB0, DB1, DB3, DB4, DB5 에 진하게 on)
(의문사항)
1. J572/J571 핀 번호는 회로도의 핀번호를 기준으로 아래와 같은지요? (첨부파일 참조)
2, 4, 6, 8, GND
1, 3, 5, 7, VCC
(J572/J571 글자 인쇄됨)
2. 제가 실습한 방식으로 하면 원래 안되는 것인지요?
3. 어떻게 해야 할까요?
참고로 저는 사무직 회사원이며 AVR 초보자입니다.
제 목표는 단지 LCD 에 "Hello world!" 한 번 표시하면 대 만족입니다.
자세히 설명하여 주시면 감사하겠습니다.
관리자 답변
안녕하세요? 저희 뉴테크놀로지 컴패니 제품을 이용해 주셔서 감사드립니다.
우선, 말씀하신 부분의 회로 연결이 잘못되었습니다.
RS ==> PG0, RW==>PG1, E==>PG2 로 설정되어야 합니다.
2x5 박스헤더커넥터는 위에서 봤을 때라면 배치가 맞습니다.
프로그램이 이상 없다면 땜만 다시 하시면 잘 동작할 것 같습니다.
단지, Contrast만 가변저항 조절해서 맞춰 주시기 바랍니다.
또한, 저희 회사에도 ATMEGA128 모듈이 있습니다.
저렴하고, 제품도 편리하게 소형으로 잘 만들어 두었으니, 잘 활용하시기 바랍니다.
또한, 저희 회사 자료실 --> 기존자료실이나 Q&A 쪽에 가면 각종 예제 파일들이 있습니다. 참고하시기 바랍니다.
감사합니다.
>LCD 출력 보드를 이용하려 하는데 LCD 에 전원만 공급되고 글자가 표시되지 않습니다.
>
>(실습장비 목록)
>UST-MPB-ATmega128 v3.0
>LCD 출력 보드(AM-LCD)
>POWERTIP PC1602G-P2 (P/N:PC1602LRS-GSO-B-P2)
>
>(실습방법)
>- 프로그램은 잘 작동하는 검증된 *.hex 파일을 다운로드하여 사용하고 있습니다.
>- ATmega128 의 포트와 LCD 출력 보드는 연결선을 구매하여 연결하였습니다.
>
>(현재상황)
>- LCD는 전원만 공급되어 녹색 바탕만 켜져 있고 글씨는 표시되지 않습니다.
>- LED 출력보드(AM-TL8) 를 연결하여 보니 아래와 같습니다.
>#Control Signal
>RS (PG2) = off
>R/W (PG1) = on
>E (PG0) = on
>
># Data Output
>DB0 ~ DB7(AD0 ~ AD7) = 모두 흐리게 on
>(리셋 처음에는 DB0, DB1, DB3, DB4, DB5 에 진하게 on)
>
>(의문사항)
>1. J572/J571 핀 번호는 회로도의 핀번호를 기준으로 아래와 같은지요? (첨부파일 참조)
>2, 4, 6, 8, GND
>1, 3, 5, 7, VCC
>(J572/J571 글자 인쇄됨)
>
>2. 제가 실습한 방식으로 하면 원래 안되는 것인지요?
>
>3. 어떻게 해야 할까요?
>
>참고로 저는 사무직 회사원이며 AVR 초보자입니다.
>
>제 목표는 단지 LCD 에 "Hello world!" 한 번 표시하면 대 만족입니다.
>
>자세히 설명하여 주시면 감사하겠습니다.
>
|
||||
| 733 | 답변완료구매 영수증 | 전병주 | 2008-01-30 | 2,113 |
|
안녕하세요 1월 26일 강좌에 참여 했던 전병주라고 합니다.
제가 그때 ISP USB 케이블을 구매 하였는데
영수증을 받지 못해서 강사분께
영수증 파일이라도 보내달라고 부탁 하였는데
아직 받아 보지 못했습니다.
33,000원 짜리 제품인데,
제가 학교 지원금을 받기 위해서라도 꼭 필요하니
보내주시기 바람니다.
JBJCOOL@NAVER.COM
이상 입니다.
좋은 하루 되세요
관리자 답변
안녕하세요?
영수증이나 계산서는 파일로 발송이 불가능하구요.
우편으로 보내드릴 수 있습니다.
영수증을 원하시면 주소만 남겨 주시면 되구요.
세금 계산서를 원하시면 사업자 등록증 카피본을 02-704-4733으로 보내고, 02-704-4774로 전화 주셔서 직원에게 말씀해 주시기 바랍니다.
감사합니다.
>안녕하세요 1월 26일 강좌에 참여 했던 전병주라고 합니다.
>
>제가 그때 ISP USB 케이블을 구매 하였는데
>
>영수증을 받지 못해서 강사분께
>
>영수증 파일이라도 보내달라고 부탁 하였는데
>
>아직 받아 보지 못했습니다.
>
>33,000원 짜리 제품인데,
>
>제가 학교 지원금을 받기 위해서라도 꼭 필요하니
>
>보내주시기 바람니다.
>
>JBJCOOL@NAVER.COM
>
>이상 입니다.
>
>좋은 하루 되세요
|
||||
| 732 | 답변완료se-sm9 모터 구동 소스를 구하고 싶습니다.. | 이진우 | 2008-01-30 | 2,154 |
|
지금 제가 NTC의 se-sm9 스텝모터를 사용하고 있는데요.
스텝모터 구동 소스가 필요합니다
꼭 필요한대 구할수가 없네요 부탁합니다^^
관리자 답변
안녕하세요? 저희 뉴테크놀로지 컴패니 제품을 이용해 주셔서 감사드립니다.
자료실에서 기존 자료실을 누르신 후,
CS2P나 MS2로 검색하셔서 스테핑 모터 컨트롤 보드 용 소스를 받으시면 됩니다.
감사합니다.
|
||||
| 731 | 답변완료ATmega48은 어떻게 사용하나요 | 이재복 | 2008-01-30 | 2,426 |
|
안녕하세요..
제가 지금 ATmega48을 이용해서 모터를 제어하려고 합니다..
소스는 ATmel회사에 보면 AVR444를 실헙해 보려고 하는데.. 여기서 사용된 칩이
ATmega48이구요..그런데 어떤 툴을 사용해야 될지 모르겠는데요.. 좀 가르켜 주세요.. 아트멜 회사에는 AVRISP mkII In-System Programmer 와 ATSTK500 를 사용 하라고 되어 있던데.. 모르겠습니다..
ATmega48용은 없나요...있으면 구입하고 싶은데요.. 참 여기는 호주입니다..
관리자 답변
안녕하세요? 저희 뉴테크놀로지 컴패니 제품을 이용해 주셔서 감사드립니다.
며칠 전에 호주 시드니에서 한 분이 다녀가셨었는 데, 호주 쪽에서 간혹 연락이 와서 반갑네요.
ATmega48도 저희 회사 제품 중에 STK500을 지원하는 장비가 있습니다.
AD-USBISP가 그 제품입니다. STK500과 호환되도록 설계되었습니다.
사용 툴은 AVR Studio, IARC, ICCAVR, CodeVision 등이 지원됩니다.
그리고, 또한, 프린터 포트 타입으로는 AD-ISPPRO가 STK-200/300과 호환됩니다.
사용 툴은 ICCAVR, CodeVision, IARC, Ponyprog, ToastProg 등이 지원됩니다.
저희 웹싸이트에서 강좌--> AVR 강좌에 보시면 KD-128PRO 강좌라고 있습니다.
그것을 다운 받아서, 찬찬히 읽어 보면서 따라해 보시면, 사용법은 같습니다.
단, 셋팅만 ATMEGA48로 셋팅하시면 됩니다.
아쉽게도 저희 회사에는 ATMEGA48용 킷트는 없습니다.
하지만, 필요하신 모터 제어에 저희 KD-128PRO 와 같은 ATMEGA128을 사용한 보드로도 제작과 테스트가 가능합니다. 강좌도 상기 강좌에 각 모터마다 강좌가 다 되어 있구요.
참고하시기 바랍니다.
감사합니다.
>안녕하세요..
>제가 지금 ATmega48을 이용해서 모터를 제어하려고 합니다..
>소스는 ATmel회사에 보면 AVR444를 실헙해 보려고 하는데.. 여기서 사용된 칩이
>ATmega48이구요..그런데 어떤 툴을 사용해야 될지 모르겠는데요.. 좀 가르켜 주세요.. 아트멜 회사에는 AVRISP mkII In-System Programmer 와 ATSTK500 를 사용 하라고 되어 있던데.. 모르겠습니다..
> ATmega48용은 없나요...있으면 구입하고 싶은데요.. 참 여기는 호주입니다..
>
|
||||
| 730 | 답변완료AD-USBISP를 구입했는데요 .... | 김학도 | 2008-01-29 | 2,225 |
|
여기서 설명하는 AVRSTUDIO 이외의 프로그램은 사용 할수 없는것인가요?
Toastprog2005를 사용 하고있었는데
장치연결실패라는 메세지만 뜨네영
관리자 답변
안녕하세요? 저희 뉴테크놀로지 컴패니 제품을 이용해 주셔서 감사드립니다.
USBISP는 STK500이라는 프로토콜을 사용합니다.
따라서, STK500을 지원하는 컴파일러나 다운로더가 사용 가능합니다.
예륻들어서, AVR Studio, ICCAVR, IARC, Code Vision 등입니다.
말씀하신 Toastprog는 STK500을 지원하지 않습니다.
감사합니다.
>여기서 설명하는 AVRSTUDIO 이외의 프로그램은 사용 할수 없는것인가요?
>Toastprog2005를 사용 하고있었는데
>장치연결실패라는 메세지만 뜨네영
|
||||
| 729 | 답변완료조언을 구하고 싶은데 방문가능한가요? | 김태훈 | 2008-01-29 | 2,040 |
|
몇일전에 무료강좌를 했었군요
자주왔었는데 며칠만 일찍왔었어도 ㅠㅜ
예전에 브라이스톤에서 부품살때 사장님과 통화했는데
너무 친절하시고 잘설명해주시더라고요^^
강좌를 못들어 너무 아쉽네요
혹시 저희가 하다가 몰라서 그런데
방문해서 조금 배워도 될까요? 조언을 쫌 구하고 싶은데
관리자 답변
안녕하세요? 저희 뉴테크놀로지 컴패니를 방문해 주셔서 감사드립니다.
하다가 모르면 언제든 들르세요. 가능하면, Q&A를 이용하면 빠르게 기존 질문들의 검색이 가능하고, 유사한 답변을 얻을 수 있습니다. 또한, 새로운 질문을 하셔도 성의껏 답변해 드립니다.
그리고, 무료 강좌는 가능한 한달에 한번 또는 두달에 한번 하려고 고려 중입니다.
수고하세요.
|
||||
| 728 | 답변완료[소스] GLCD를 이용한 빙고게임(KT-M128용) | 안양박 | 2008-01-29 | 2,309 |
|
그래픽lcd를 이용해 빙고게임을만들었는데 헤드파일이 빠져있어 프로젝트파일이랑 함께올립니다.
아직 점수계산이랑 소리파일은 함께올리지 못했습니다.
점수계산이랑 소리는 빠른시일내에 연결시키겠습니다. UART0으로 시리얼 연결하시고(9600,N,8,1), 키보드를 아무키나 시작하고 엔트키를 치면 정지하는식으로 계속 돌아갑니다. 밥내기 술내기 많이 하세요.^_^
관리자 답변
안녕하세요, 뉴티씨입니다. 문의 내용 확인하였습니다. 추가 문의사항은 newtc@newtc.co.kr 또는 02-704-4774로 연락 주시기 바랍니다. 감사합니다.
|
||||
| 727 | 답변완료서보모터에 대한 질문있습니다. | 최용석 | 2008-01-28 | 2,241 |
|
저희가 이번에 졸작으로 여러방향의 적외선을 인식해서 그쪽방향으로 모터를 돌리도록 해야하는 상황입니다.
그래서 서보모터(HS-311)을 구매하였습니다.
1.그런데 공부를 하던중에 서보모터는 360도 회전은 안되고 180도만 회전이 된다고 들었는데 그러면 정방향으로부터 -90도 +90도 밖에 회전이 안되는것인가요?
2.그렇다면 360도가 회전가능한 서보모터가 있는지도 궁금하구요.
3.360도 회전이 안된다면 스테핑모터로 사용해야하는지..그리고 스테핑모터와 적외선 센서가 연계가 가능한지 궁금합니다.
4.그리고 저번에 방문하였을때 한 기판에 적외선 센서4개가 붙어있는것으로 작동되는것을 보여주셨는데 각각 하나씩만 센서가 따로 있는것은 없는지 궁금합니다.
저번주 학교에서 하는 강좌 많은 도움이 되었습니다.^^
관리자 답변
안녕하세요? 저희 뉴테크놀로지 컴패니를 방문해 주셔서 감사합니다.
질문에 대한 답을 드립니다.
1.2. 일반적인 저가형 서보 모터는 -90도~90도 회전밖에 안되지만,
고가(최소 50만원 이상)의 서보 모터는 360도 회전도 가능합니다.
또한, 저가형 서보를 개조하여 360도로 만드는 방법들이 인터넷에 떠돌더군요.
물론, 고가형처럼 내구성이나 성능을 만족시키진 못하지만요.
3. 스테핑 모터를 사용하셔도 충분히 가능한 상황이라고 비춰 집니다.
스테핑 모터 구동은 AM-MS2나 AM-CS2P 모터 구동 드라이버 확장모듈을 사용하시면 편리하구요. 자료실--> 기존자료실에 가시면 구동 예제 소스가 있습니다.
4. 하나씩만 있는 것은 없구요. 각각 두개씩 달려있는 것은 있습니다.
감사합니다.
>저희가 이번에 졸작으로 여러방향의 적외선을 인식해서 그쪽방향으로 모터를 돌리도록 해야하는 상황입니다.
>그래서 서보모터(HS-311)을 구매하였습니다.
>
>1.그런데 공부를 하던중에 서보모터는 360도 회전은 안되고 180도만 회전이 된다고 들었는데 그러면 정방향으로부터 -90도 +90도 밖에 회전이 안되는것인가요?
>
>2.그렇다면 360도가 회전가능한 서보모터가 있는지도 궁금하구요.
>
>3.360도 회전이 안된다면 스테핑모터로 사용해야하는지..그리고 스테핑모터와 적외선 센서가 연계가 가능한지 궁금합니다.
>
>4.그리고 저번에 방문하였을때 한 기판에 적외선 센서4개가 붙어있는것으로 작동되는것을 보여주셨는데 각각 하나씩만 센서가 따로 있는것은 없는지 궁금합니다.
>
>저번주 학교에서 하는 강좌 많은 도움이 되었습니다.^^
|
||||
| 726 | 답변완료[질문] Timer 1 사용하여 PFC PWM 듀티값 설정하기 | 대구칠곡 | 2008-01-28 | 3,239 |
|
안녕하세요.
제목에서 언급한 것처럼 Timer 1 을 이용하여 원하는 주파수, 원하는 듀티 값을 출력하는 프로그램입니다.
사용환경:
ATMega128 16MHz , 컴파일러(ICC-AVR)
원하는 출력:
50Hz, 80%듀티 값을 OC1B(PB6) 핀으로 출력한다
작업방법:
1) PFC PWM 을 사용하고, OC1A 값에 TOP 값을 입력한다 (TOP = 16MHz/(2 x 256분주 x 50Hz) = 625 = 0x0271)
2) TIMSK 값을 설정한다 (0x0C, Timer1 의 Overflow, OutputCompareMatch"B" 두개만 enable)
3) TCCR1A, TCCR1B 설정한다 (0x21, 0x1C OCR1A 값을 MAX 로 하여 OCR1B 값을 비교하도록)
4) 80% 듀티값을 구하기 위하여 OCR1B 값 설정 (80% = 62.5 x 8 = 500 = 0x01F4)
질문:
1) 아래 소스를 실행시키면 듀티값이 80% 의 출력이 나오는게 아니고 90% 의 출력이 나옵니다. 듀티값을 80%로 만들기 위하여 OCR1B 에 어떤값을 넣어야하나요? (주파수는 원하는데로 50Hz 나옵니다)
2) "AVR ATMega128정복" 책의 설명을 참고하자면 TCNT1 값이 0x0000 ~ TOP(625) ~ 0x0000 을 반복하는것 같은데, 여기선 오버플로우 발생할때마다 TCNT 값을 초기화시키고 있습니다. 왜 이렇게해야하는지??
미리 감사드립니다.
=========================================================================
//ICC-AVR application builder : 2008-01-28 오후 1:19:27
// Target : M128
// Crystal: 16.000Mhz
#include <iom128v.h>
#include <macros.h>
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0x40; // PB6 (OC1B)
PORTC = 0x00; //m103 output only
DDRC = 0x00;
PORTD = 0x00;
DDRD = 0x00;
PORTE = 0x00;
DDRE = 0x00;
PORTF = 0x00;
DDRF = 0x00;
PORTG = 0x00;
DDRG = 0x00;
}
//TIMER1 initialize - prescale:256
// WGM: 9) PWM phz freq correct, TOP=OCRnA
// desired value: 50Hz
// actual value: 50.000Hz (0.0%)
void timer1_init(void)
{
TCCR1B = 0x00; //stop
TCNT1H = 0xFD; //setup (64911=65536-625)
TCNT1L = 0x8F;
OCR1AH = 0x02; // top = 625
OCR1AL = 0x71;
OCR1BH = 0x01; // 80% (62.5 x 8) 이게아닌가베네
OCR1BL = 0xF4;
OCR1CH = 0x00; // NOT USED
OCR1CL = 0x00;
ICR1H = 0x00; // NOT USED
ICR1L = 0x00;
TCCR1A = 0x21; // WGM(1001), CS(100), COM1B(10)
TCCR1B = 0x1C; //start Timer
}
#pragma interrupt_handler timer1_compb_isr:14
void timer1_compb_isr(void)
{
//compare occured TCNT1=OCR1B
// 여기서 80% 듀티값의 PB6 OC1B 출력이 이루어져야 하는데,... 90% 듀티값이 출력됨-.-;
}
#pragma interrupt_handler timer1_ovf_isr:15
void timer1_ovf_isr(void)
{
//TIMER1 has overflowed
// 이 값을 왜 여기서 초기화 하는지???
TCNT1H = 0xFD; //reload counter high value
TCNT1L = 0x8F; //reload counter low value
}
//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();
timer1_init();
MCUCR = 0x00;
EICRA = 0x00; //extended ext ints
EICRB = 0x00; //extended ext ints
EIMSK = 0x00;
TIMSK = 0x0C; //OCIE1B, TOIE1
ETIMSK = 0x00; //extended timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
//
void main(void)
{
init_devices();
//insert your functional code here...
while(1)
{}
}
=========================================================================
관리자 답변
안녕하세요? 저희 뉴테크놀로지 컴패니를 방문해 주시고, 좋은 글 남겨 주셔서 감사드립니다.
우선, OCR1B 그 값은 조절해 보셔서, 직접 확인하셔야 할 것 같습니다.
그리고, TCNT 값을 초기화 해야 다시 주기마다 다시 0 ~TOP으로 올라갈때까지의 시간동안 쉬다가 TOP에서 0으로 넘어가는 순간...즉 overflow가 나는 순간에
overflow interrupt가 발생하게 되며, 본 프로그램은 그것을 이용하고 있습니다.
참고하시기 바랍니다.
감사합니다.
>안녕하세요.
>
>제목에서 언급한 것처럼 Timer 1 을 이용하여 원하는 주파수, 원하는 듀티 값을 출력하는 프로그램입니다.
>
>사용환경:
>ATMega128 16MHz , 컴파일러(ICC-AVR)
>
>원하는 출력:
>50Hz, 80%듀티 값을 OC1B(PB6) 핀으로 출력한다
>
>작업방법:
>1) PFC PWM 을 사용하고, OC1A 값에 TOP 값을 입력한다 (TOP = 16MHz/(2 x 256분주 x 50Hz) = 625 = 0x0271)
>2) TIMSK 값을 설정한다 (0x0C, Timer1 의 Overflow, OutputCompareMatch"B" 두개만 enable)
>3) TCCR1A, TCCR1B 설정한다 (0x21, 0x1C OCR1A 값을 MAX 로 하여 OCR1B 값을 비교하도록)
>4) 80% 듀티값을 구하기 위하여 OCR1B 값 설정 (80% = 62.5 x 8 = 500 = 0x01F4)
>
>질문:
>1) 아래 소스를 실행시키면 듀티값이 80% 의 출력이 나오는게 아니고 90% 의 출력이 나옵니다. 듀티값을 80%로 만들기 위하여 OCR1B 에 어떤값을 넣어야하나요? (주파수는 원하는데로 50Hz 나옵니다)
>
>2) "AVR ATMega128정복" 책의 설명을 참고하자면 TCNT1 값이 0x0000 ~ TOP(625) ~ 0x0000 을 반복하는것 같은데, 여기선 오버플로우 발생할때마다 TCNT 값을 초기화시키고 있습니다. 왜 이렇게해야하는지??
>
>미리 감사드립니다.
>
>=========================================================================
>
>//ICC-AVR application builder : 2008-01-28 오후 1:19:27
>// Target : M128
>// Crystal: 16.000Mhz
>
>#include <iom128v.h>
>#include <macros.h>
>
>void port_init(void)
>{
> PORTA = 0x00;
> DDRA = 0x00;
> PORTB = 0x00;
> DDRB = 0x40; // PB6 (OC1B)
> PORTC = 0x00; //m103 output only
> DDRC = 0x00;
> PORTD = 0x00;
> DDRD = 0x00;
> PORTE = 0x00;
> DDRE = 0x00;
> PORTF = 0x00;
> DDRF = 0x00;
> PORTG = 0x00;
> DDRG = 0x00;
>}
>
>//TIMER1 initialize - prescale:256
>// WGM: 9) PWM phz freq correct, TOP=OCRnA
>// desired value: 50Hz
>// actual value: 50.000Hz (0.0%)
>void timer1_init(void)
>{
> TCCR1B = 0x00; //stop
> TCNT1H = 0xFD; //setup (64911=65536-625)
> TCNT1L = 0x8F;
> OCR1AH = 0x02; // top = 625
> OCR1AL = 0x71;
> OCR1BH = 0x01; // 80% (62.5 x 8) 이게아닌가베네
> OCR1BL = 0xF4;
> OCR1CH = 0x00; // NOT USED
> OCR1CL = 0x00;
> ICR1H = 0x00; // NOT USED
> ICR1L = 0x00;
> TCCR1A = 0x21; // WGM(1001), CS(100), COM1B(10)
> TCCR1B = 0x1C; //start Timer
>}
>
>#pragma interrupt_handler timer1_compb_isr:14
>void timer1_compb_isr(void)
>{
> //compare occured TCNT1=OCR1B
>
> // 여기서 80% 듀티값의 PB6 OC1B 출력이 이루어져야 하는데,... 90% 듀티값이 출력됨-.-;
>}
>
>#pragma interrupt_handler timer1_ovf_isr:15
>void timer1_ovf_isr(void)
>{
> //TIMER1 has overflowed
> // 이 값을 왜 여기서 초기화 하는지???
> TCNT1H = 0xFD; //reload counter high value
> TCNT1L = 0x8F; //reload counter low value
>}
>
>//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();
> timer1_init();
>
> MCUCR = 0x00;
> EICRA = 0x00; //extended ext ints
> EICRB = 0x00; //extended ext ints
> EIMSK = 0x00;
> TIMSK = 0x0C; //OCIE1B, TOIE1
> ETIMSK = 0x00; //extended timer interrupt sources
> SEI(); //re-enable interrupts
> //all peripherals are now initialized
>}
>
>//
>void main(void)
>{
> init_devices();
> //insert your functional code here...
> while(1)
> {}
>}
>
>=========================================================================
>
|
||||
| 725 | 답변완료스테핑 모터와 DC모터 질문입니다.. | 조정교 | 2008-01-28 | 3,004 |
|
스테핑 모터와 DC모터의 차이점이 궁굼합니다..
단순히 전원은 차이는 아닌듯하고.. 뭔가 다른게 있을듯해서요 ^^;
또..
스테핑 모터와 dc모터 모두가 역회전이 가능한지 궁굼합니다..
관리자 답변
안녕하세요? 조정교님,
세미나 끝나고 잘 들어가셨나요?
도움이 많이 되셨는 지요?
스테핑 모터와 DC 모터의 차이는 많죠..
우선 스테핑 모터는 한스텝 한스텝마다 각각의 오차는 있을 수 있지만, 누적 오차가 없이 원하는 각만큼씩만 돌릴 수 있구요.
DC 모터는 원하는 각만 돌리기에는 원심력 등 때문에 정확히 돌리기 쉽지 않습니다. 하지만, 엔코더를 달면 그나마 조금 정확하게 돌릴 수 있지만, 여전히 정확히 하려면 제어 방식이 어렵고, 쉽지 않습니다. 하지만, 크기에 비해 토크가 세구요.
용도에 따라 달리 쓰시면 됩니다.
스테핑 모터와 DC 모터 제어는 각각 로봇제작강좌와 AVR 강좌를 참고하세요.
감사합니다.
|
||||
| 724 | 답변완료pdf 파일이 다 안열리네요!! | 이은환 | 2008-01-28 | 2,344 |
|
확인 부탁드립니다!!
관리자 답변
안녕하세요? 저희 뉴테크놀로지 컴패니를 방문해 주셔서 감사드립니다.
잘 열리는 데요.
아마도 고객님의 PC에 연결된 공유기 셋팅이나 firewall 등의 셋팅에 의해서 열리지 않는 것 같습니다.
점검 바랍니다.
감사합니다.
|
||||
