Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 7463 | 답변완료AM-MP533에 대해서 질문이요 | 강근영 | 2012-07-25 | 1,409 |
|
제가 KD-2560PRO를 사용하고 있는데 대부분의 센서나 ZigBee모듈의 supply voltage가 3.3V여서 KD-2560PRO에서 나오는 전압 5V를 3.3V로 감압시키고 싶은데 메뉴얼에는 9V이상의 전압을 주어야 된다고 써있습니다.
1. 그럼 5V에서 나오는 전압을 3.3V로 감압시킬수는 없는건가요?
2. 사용할수 있다면 전원입력 단자의 전원 없이 KD-2560PRO에서 나오는 전압 5V로 사용할 수 있나요?
3. 아니면 전원입력 단자에 전원을 공급해주면 알아서 3.3V 전압이 나오는 건가요?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
MP533의 5V 커넥터 쪽에다가 AVR 보드에서의 5V 출력을 1;1로 연결하고,
3.3V 쪽에서 전원 뽑으면 됩니다.
수고하세요.
>
>
> 제가 KD-2560PRO를 사용하고 있는데 대부분의 센서나 ZigBee모듈의 supply voltage가 3.3V여서 KD-2560PRO에서 나오는 전압 5V를 3.3V로 감압시키고 싶은데 메뉴얼에는 9V이상의 전압을 주어야 된다고 써있습니다.
> 1. 그럼 5V에서 나오는 전압을 3.3V로 감압시킬수는 없는건가요?
> 2. 사용할수 있다면 전원입력 단자의 전원 없이 KD-2560PRO에서 나오는 전압 5V로 사용할 수 있나요?
> 3. 아니면 전원입력 단자에 전원을 공급해주면 알아서 3.3V 전압이 나오는 건가요?
>
|
||||
| 7462 | 답변완료궁금합니다~ | 조민제 | 2012-07-25 | 1,404 |
|
iccavr 프로그램을 쓰는데 C를짜면 어떻게 ATmega128 pro 키트에 프로그램을 넣는지요??
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
우선, 홈피 메인 화면의 오른쪽 동영상 강좌를 클릭해서 보세요.
좀 개념이 잡힐 겁니다.
그 후에, 자세한 것을 알려면, 자료실에서 USBISP 메뉴얼 중에서 사용자 메뉴얼 보면 됩니다.
수고하세요.
>
>
> iccavr 프로그램을 쓰는데 C를짜면 어떻게 ATmega128 pro 키트에 프로그램을 넣는지요??
>
|
||||
| 7461 | 답변완료궁금합니다~ | 조민제 | 2012-07-24 | 1,377 |
|
IAR Embedded Workbench 이건 어떻게 쓰이는 건가요?
관리자 답변
이 툴도 아래의 답변에서 말씀드린 것처럼, 크로스 컴파일러의 일종이며,
IAR은 회사 이름이고, EwAVR 이 AVR용 크로스 컴파일러입니다.
이 툴은 특이한 점은 JTAGICE만 지원합니다. 즉, USBISP가 지원되지 않아서, 이 툴 쓸 때는 반드시,
다운로드 할 때는 AVR Studio를 써서 USBISP를 쓰는 것이 빠릅니다.
수고하세요.
>
>
> IAR Embedded Workbench 이건 어떻게 쓰이는 건가요?
>
|
||||
| 7460 | 답변완료물어볼게 있습니다~ | 조민제 | 2012-07-24 | 1,348 |
|
ATmega128에 프로그램을 넣기위해서 C언어를 사용해서 모듈을 제어하고 싶습니다.
ATmega128 Pro완제품에 보면 CD가 있는데 어떤 것을 깔아서 실험을 해야할 지 모르겠습니다 ㅠ
깨끗하고 간략한 답변 좀 부탁드립니다 ^^;
C언어를 쓰면 ATmega128에 알아들을 수 있는 언어로 변환하는 프로그램도 있습니까??
예를 들면 포니플포그처럼 말입니다.
저희가 C언어로 해서 최대한 무엇을 하고싶은데, 어떻게 하는지 잘 몰라서 넉을 넣고 있습니다 ㅠ
제발 부드러운 답변 부탁드립니다~
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
답변드릴께요.
> ATmega128에 프로그램을 넣기위해서 C언어를 사용해서 모듈을 제어하고 싶습니다.
> ATmega128 Pro완제품에 보면 CD가 있는데 어떤 것을 깔아서 실험을 해야할 지 모르겠습니다 ㅠ
===> 우선 HEX 파일 downloading(다운로딩)은
AD-USBISP라는 툴을 사용해서 STK500 프로토콜을 사용하는 프로그램 즉,
AVR Studio, Codevision, ICCAVR 등을 사용하면 PC의 USB포트를 사용하여 다운로딩 가능합니다.
사용법은 자료실에서 USBISP를 치면, 각 버전별로 메뉴얼이 있는 데, 거기서 사용자 메뉴얼과
일반 메뉴얼이 있습니다. 그 중에서, 사용자 메뉴얼을 보면 매우 자세히 나와 있습니다.
AD-ISPPRO라는 툴을 사용해서, STK200/300 프로토콜을 사용하는 프로그램 즉,
ICCAVR, Codevision, Ponyprog 등을 사용하면 PC의 페러렐 포트를 사용하여 다운로딩 가능합니다.
> 깨끗하고 간략한 답변 좀 부탁드립니다 ^^;
> C언어를 쓰면 ATmega128에 알아들을 수 있는 언어로 변환하는 프로그램도 있습니까??
===> 일반적으로 C언어를 써서 hexa 파일이나 binary 파일로 변환해 주는 즉, 기계어로 변환해 주는 프로그램을 통상 컴파일러(사실은 컴파일러 + 링커)라고 합니다. 그런데, 컴퓨터에서 컴파일하고, 사용은 AVR 같은 다른 CPU 종류에서 하는 컴파일러를 크로스 컴파일러라고 합니다.
AVR용 크로스 컴파일러로는 WINAVR과 같은 gnu의 gcc 계열, ICCAVR V6, V7, V8, Codevision, IAR 등이 있습니다. 본사에서는 ICCAVR을 메인 컴파일러로 사용하며, 대리점으로서 정식버전 판매도 하고 있습니다.
winavr은 무상 소프트웨어 입니다. 주로 AVR Studio + WINAVR 형태로 많이 사용합니다. 하지만, 어셈블리어로 변환하게 되면, 많은 사람들이 쓰긴 하지만 효율이 떨어지는 소스 형태로 되어 있어서, 본사에서는 권장하지 않고 있습니다. 하지만, 워낙 많은 유저가 있어서, 본사에서도 많은 예제 소스를 공급하고 있습니다.
ICCAVR은 소스 자동 생성 마법사도 들어있고, 소스도 예쁘게 짜지며, 효율도 좋게 컴파일됩니다. 어셈블리 결과도 매우 효율이 좋습니다. 그래서, 본사에서 메인으로 잡고 쓰고 있으며, 본사에서 매우 많은 예제를 제공하고, 강좌도 대부분 이것으로 되어 있습니다. 이 컴파일러 중에서 ICCAVR V7으로 학습하시면 편리합니다.
본사 자료실에서 데모버전 다운로드 가능합니다. 45일간은 standard 버전과 동일하게 동작합니다.
그 이후는 4kb 컴파일 제한이 걸리게 됩니다. 이 때, 계속 쓰시려면, 상업용으로 쓰는 게 아니라면, 저렴한 버전인 비상업용버전(N.C.) 버전을 본사에서 구매하여 쓰시면 됩니다.
본사에서 이 컴파일러용 교재도 판매하고 있습니다. 함께 보시면 더욱 좋습니다.
KD-128ALL 관련된 교재로 문의하시면 됩니다. 16,500원입니다.
코드비전의 경우도 여러가지 예제와 교재들이 나와 있습니다.
IAR의 경우는 EwAVR이 있는 데, 이는 매우 단가가 높지만, 신뢰성이 높아서 주로 자동차 회사나 자동차 부품회사, 군수용 등으로 사용됩니다. 물론, 본사에서 구매 가능하십니다.
우선, 위의 내용을 참조로 하고, 우선 본사 홈피의 메인화면에서 오른쪽 중간 귀퉁이에 보면, 동영상 강좌가 있습니다. 우선 그 강좌를 보시면 좋겠습니다. 필요한 부분을 찾아 보다보면, 어느순간 이해하게 될 겁니다.
많은 도움 되면 좋겠습니다.
수고하세요.
> 예를 들면 포니플포그처럼 말입니다.
>
> 저희가 C언어로 해서 최대한 무엇을 하고싶은데, 어떻게 하는지 잘 몰라서 넉을 넣고 있습니다 ㅠ
>
> 제발 부드러운 답변 부탁드립니다~
>
|
||||
| 7459 | 답변완료에러메시지 | 이관정 | 2012-07-24 | 1,282 |
|
One or more operations failed! Please examine the output log above!
Done: there are error(s). Exit code: 1. Tue Jul 24 16:48:57 2012
관리자 답변
안녕하세요? 고객님,
이 경우는 여러가지 경우가 있을 수 있습니다.
우선 AVR Studio에서 erase를 한 번 하고 하면 될 수도 있습니다.
그렇게 먼저 해보세요.
수고하세요.
>
>
> One or more operations failed! Please examine the output log above!
>
> Done: there are error(s). Exit code: 1. Tue Jul 24 16:48:57 2012
>
|
||||
| 7458 | 답변완료am-128ram의 개발kit관련 질문 | 박재웅 | 2012-07-24 | 1,433 |
|
안녕하세요
디바이스마트랑 newtc홈페이지를 검색해봤는데요..
디바이스마트에서 am-128ram의 개발kit가 am-m128xxx
이 시리즈를 이용해야된다는데 ab-m128xxx
시리즈밖에 검색이 안 되네요..오타가 난건가요?
또 ab-m128xxx 시리즈에 am-128pro모듈하고 다른 모듈이 탑재된다고 하는데
am-128ram은 탑재 안 되는지 알고 싶습니다..
관리자 답변
안녕하세요? 고객님,
AM-128RAM은 AB-M128PRO-A나 AB-M128-B보드에 탑재 가능합니다.
아마 그 대리점에서 오타를 내신 것 같네요.
수고하세요.
>
>
> 안녕하세요
>
> 디바이스마트랑 newtc홈페이지를 검색해봤는데요..
>
> 디바이스마트에서 am-128ram의 개발kit가 am-m128xxx
>
> 이 시리즈를 이용해야된다는데 ab-m128xxx
>
> 시리즈밖에 검색이 안 되네요..오타가 난건가요?
>
> 또 ab-m128xxx 시리즈에 am-128pro모듈하고 다른 모듈이 탑재된다고 하는데
>
> am-128ram은 탑재 안 되는지 알고 싶습니다..
>
|
||||
| 7457 | 답변완료AM-LEDM 문의사항. | 김완식 | 2012-07-23 | 1,436 |
|
AM-LEDM 구매자인대 ICC AVR말고
avr studio 소스는 없나요?
avr studio 소스로 보고싶은대 icc avr말곤 없내요..
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
죄송하지만, ICCAVR용 소스만 준비되어 있습니다.
C 소스는 일부 함수명과 헤더파일 이름을 제외하면, 거의 비슷하므로, 참고하셔서
쓰시면 되겠습니다. ICCAVR용 소스를 이용 부탁드립니다.
수고하세요.
>
>
> AM-LEDM 구매자인대 ICC AVR말고
> avr studio 소스는 없나요?
>
> avr studio 소스로 보고싶은대 icc avr말곤 없내요..
>
|
||||
| 7456 | 답변완료ATmega128 다운로드 문제 | 김봉상 | 2012-07-23 | 1,427 |
|
안녕하세요
몇달전에 AB-M128Pro-A 구매를 한 사람입니다.
USB ISP로 첨부한 그림과 같이 Fuse를 바꾸고 프로그램을 다운로드 하려고 했으나
Fuse를 바꾸고 나서 확인을 누르면 다음과 같은 문구가 나옵니다.
이것을 사기전에 구매한 AB-M128Pro-A에서는 이런 문제가 생기지 않았는데
이번에 구매한 것은 모두다 이런 메세지가 뜨네요...
어떻게 문제를 해결 해야하나요...
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
우선, 제품의 퓨즈비트 셋팅시 뭔가 잘못된 것 같네요.
퓨즈비트 설정 잘못으로 생긴 오류는 인공호흡하면 대부분 살아납니다.
인공호흡 방법은 온라인 강좌에서 AVR 강좌를 보면, 인공호흡으로 검색하면 나옵니다.
참고하셔서 인공호흡하여 살려 쓰세요.
직접하기 어렵다면 본사에서 도와드립니다.
인공호흡으로 살아난다면, 운송비만 받고, 수리비는 받지 않고 있습니다.
수고하세요.
>
>
> 안녕하세요
>
> 몇달전에 AB-M128Pro-A 구매를 한 사람입니다.
>
> USB ISP로 첨부한 그림과 같이 Fuse를 바꾸고 프로그램을 다운로드 하려고 했으나
>
> Fuse를 바꾸고 나서 확인을 누르면 다음과 같은 문구가 나옵니다.
>
> 이것을 사기전에 구매한 AB-M128Pro-A에서는 이런 문제가 생기지 않았는데
>
> 이번에 구매한 것은 모두다 이런 메세지가 뜨네요...
>
> 어떻게 문제를 해결 해야하나요...
>
|
||||
| 7455 | 답변완료AM-DC1-3D 모터드라이브의 출력 전압에 대해 질문이 있습니다 | 정준우 | 2012-07-20 | 1,427 |
|
모터 드라이브의 출력 전압값은 전원 전압값에 따라가나요?
즉 전원 전압값이 12v이면 모터드라이브에서 나오는 전압값도 12v
전원 전압값이 20v이면 모터드라이브에서 나오는 전압값도 20v인가요?
그리고 AM-DC1-4D 모터드라이브는 이제 단종된 제품인가요?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
답변하여 드릴께요.
> 모터 드라이브의 출력 전압값은 전원 전압값에 따라가나요?
> 즉 전원 전압값이 12v이면 모터드라이브에서 나오는 전압값도 12v
> 전원 전압값이 20v이면 모터드라이브에서 나오는 전압값도 20v인가요?
==> 네, 그렇습니다. 그러나 약간씩 다운되서 들어갑니다.
>
> 그리고 AM-DC1-4D 모터드라이브는 이제 단종된 제품인가요?
1-4D보다 1-3C가 더 용량이 큰 제품입니다.
>
==> 네, 단종입니다.
수고하세요.
|
||||
| 7454 | 답변완료키트를 구매하여 이제 처음 시작하는데요 | 유석영 | 2012-07-20 | 1,286 |
|
winavr 을 먼저 패치하고 그다음 avrstdio 를 패치한후
그 설명서에 나와있는데로 다하고 예 LED를 깜빡이는 프로그램을 작성한후 컴파일을 했는데
컴파일 오류가 났네요 ... 근데 무슨 뜻인지 몰라 검색도 해보고 찾아봤는데 어떻게 해야 될지 모르겠더라구요
정확히 똑같이 했는데... 오류는 이렇습니다.
rm -rf test.o winavr.elf dep/* winavr.hex winavr.eep winavr.lss winavr.map
Build succeeded with 0 Warnings...
mmcu=atmega128 -Wall -gdwarf-2 -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT test.o -MF dep/test.o.d -c ../test.c
/usr/bin/sh: -Wall: command not found
make: [test.o] Error 127 (ignored)
mmcu=atmega128 -Wl,-Map=test.map test.o -o test.elf
/usr/bin/sh: -Wl,-Map=test.map: command not found
make: [test.elf] Error 127 (ignored)
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature test.elf test.hex
avr-objcopy: 'test.elf': No such file
make: *** [test.hex] Error 1
Build failed with 1 errors and 0 warnings...
관리자 답변
안녕하세요? 고객님,
첨에 시작할 떄는 자료실의 예제를 참고하는 것이 좋겠구요.
툴 환경에 좀 익숙해 지면, 새로운 프로젝트를 만들어서 하는 것이 좋습니다.
첨에 걷지도 못하는 데, 날려고 시작하면 분명 떨어져서 날개가 다칩니다.
걷는 것부터 시작하면 좋겠습니다.
우선, 환경에 익숙해 지세요. 자료실 소스를 참고해서 보세요.
수고하세요.
>
>
> winavr 을 먼저 패치하고 그다음 avrstdio 를 패치한후
> 그 설명서에 나와있는데로 다하고 예 LED를 깜빡이는 프로그램을 작성한후 컴파일을 했는데
> 컴파일 오류가 났네요 ... 근데 무슨 뜻인지 몰라 검색도 해보고 찾아봤는데 어떻게 해야 될지 모르겠더라구요
> 정확히 똑같이 했는데... 오류는 이렇습니다.
>
>
> rm -rf test.o winavr.elf dep/* winavr.hex winavr.eep winavr.lss winavr.map
> Build succeeded with 0 Warnings...
> mmcu=atmega128 -Wall -gdwarf-2 -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT test.o -MF dep/test.o.d -c ../test.c
> /usr/bin/sh: -Wall: command not found
> make: [test.o] Error 127 (ignored)
> mmcu=atmega128 -Wl,-Map=test.map test.o -o test.elf
> /usr/bin/sh: -Wl,-Map=test.map: command not found
> make: [test.elf] Error 127 (ignored)
> avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature test.elf test.hex
> avr-objcopy: 'test.elf': No such file
> make: *** [test.hex] Error 1
> Build failed with 1 errors and 0 warnings...
>
|
||||
| 7453 | 답변완료am-gyro-p-v02 기준전압에대해서 | 황태환 | 2012-07-19 | 1,270 |
|
데이터시트를 보면 1.35v output 이라고 되어있는데요
이걸 만약 F포트에 3번에서 쓰고싶다고하면 핀열어주고
센서핀에서 뽑아서 꽂으면 되는건가요?
계속 해보다가 안되서 질문합니다...
아니면 c프로그래밍으로 뭘짜야되는건가요
ADMUX=0x03 으로 열어주기만하면되는건가요
관리자 답변
안녕하세요? 고객님,
네 그런식으로 꽂으면 됩니다.
하지만, GND는 메인보드와 센서 사이를 통일해서 연결해야 합니다.
그리고, ADMUX = 0x03 이렇게 하면, 3번 채널에 연결되는 겁니다. 즉, F 포트의 D3에 연결되는 거죠.
그러고 나서는 레지스터들을 만져서 ADC 값을 받으면 됩니다.
ADC 하는 것은 온라인 강좌에서 ADC 강좌에서 가장 최근 것을 보시면 좋겠습니다.
소스도 자료실에서 ADC로 검색하면 있으니, 참고 바랍니다.
수고하세요.
>
>
> 데이터시트를 보면 1.35v output 이라고 되어있는데요
>
> 이걸 만약 F포트에 3번에서 쓰고싶다고하면 핀열어주고
>
> 센서핀에서 뽑아서 꽂으면 되는건가요?
>
> 계속 해보다가 안되서 질문합니다...
>
> 아니면 c프로그래밍으로 뭘짜야되는건가요
>
> ADMUX=0x03 으로 열어주기만하면되는건가요
>
|
||||
| 7452 | 답변완료ATtiny 10을 프로그래밍할 수 있는 제품은 없나요? | 권종원 | 2012-07-19 | 1,431 |
|
ATtiny 10을 프로그래밍할 수 있는 제품은 없나요?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
Tiny10의 경우 ISP를 TPI 인터페이스를 통해서 사용하는 데,
아직은 아쉽게도 그것을 프로그래밍 할 수 있는 제품은 없습니다.
향후에 좀 더 생각해 보도록 하겠습니다.
수고하세요.
>
>
> ATtiny 10을 프로그래밍할 수 있는 제품은 없나요?
>
|
||||
| 7451 | 답변완료ATMEGA128 풀트레이닝 키트를 구입했는데요... | 유석영 | 2012-07-17 | 1,459 |
|
흠.. 뭐라해야하지 가방까지 구입을해서 택배밭자마자 열어봤는데
하나 하나살펴보니... 구성품중에 text lcd 작은것 말고 큰게 다리가 소켓에 꼽을수 없을 정도로
휘어있더군요... 전체적으로요 어떻게 해야하나요 교환해주셔야 할탠데 통째로 또 보내자니
제가 기다리고 이제 해야되서 시간이 너무 아깝고 없습니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
최근에 구매하신 고객님이신데 죄송합니다.
배송시에 문제가 좀 생긴 것 같습니다.
아마도 그래픽 LCD 쪽의 커넥터가 알미늄 박스 안에 여러가지 든 것들이 있다 보니,
밀려서 좀 많이 휘었나 봅니다.
보통 보내기 전에 그렇게 되지 않도록 확인을 잘 해서 보내는 데, 죄송하게 되었습니다.
그래픽 LCD는 내일 다시 새것으로 포장하여 보내드리도록 하겠습니다.
가지고 계시는 것은 버리시거나 다리를 잘 펴서 쓰시면 되구요. 본사에서 보내드리는 새것으로 교체하여 쓰시면 되겠습니다. 주소 등은 다 알고 있으니, 그 쪽으로 자동적으로 보내질 겁니다.
수고하세요.
>
>
> 흠.. 뭐라해야하지 가방까지 구입을해서 택배밭자마자 열어봤는데
>
> 하나 하나살펴보니... 구성품중에 text lcd 작은것 말고 큰게 다리가 소켓에 꼽을수 없을 정도로
> 휘어있더군요... 전체적으로요 어떻게 해야하나요 교환해주셔야 할탠데 통째로 또 보내자니
>
> 제가 기다리고 이제 해야되서 시간이 너무 아깝고 없습니다.
>
|
||||
| 7450 | 답변완료am-gyro-p-v02 구입한사람입니다. | 황태환 | 2012-07-17 | 1,463 |
|
자이로센서를 보드에 연결하면 보드의 전원이 자꾸 나가거든요
왜이런건가요 환불되나요?
모듈까지 되있는거라 그냥 꽂으면되는거거든요
다른센서들은 이상없이 잘됩니다.
관리자 답변
안녕하세요? 고객님,
자이로 센서를 거꾸로 보드에 꽂은 게 아닌가 싶네요.
바꿔서 꽂아 실험해 보세요.
수고하세요.
>
>
> 자이로센서를 보드에 연결하면 보드의 전원이 자꾸 나가거든요
>
> 왜이런건가요 환불되나요?
>
> 모듈까지 되있는거라 그냥 꽂으면되는거거든요
>
> 다른센서들은 이상없이 잘됩니다.
>
|
||||
| 7449 | 답변완료자세하게좀알려주세요 제가초보라 | 황태환 | 2012-07-17 | 1,384 |
|
어디에다가 어떡해 저함수를 추가하라는건가요
//ICC-AVR application builder : 2005-05-23 오후 8:41:55
// Target : M128
// Crystal: 16Mhz
#include <mega128.h>
#include <delay.h>
#include <string.h>
#define BUFSIZE 10
#define STX 2
#define LEFT_BTN (PING>>3)&0x01
#define RIGHT_BTN (PING>>2)&0x01
#define OK 1
#define LOW 0
#define HIGH 1
volatile static unsigned char buf[BUFSIZE];//
volatile unsigned int ch0, ch2, ch4;
volatile unsigned char Start[2], X[2], Y[2], Z[2], flexLeft, flexRight;
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00; //m103 output only
DDRC = 0x00;
PORTD = 0x00;
DDRD = 0xff;
PORTE = 0x00;
DDRE = 0x00;
PORTF = 0x00;
DDRF = 0x00;
PORTG = 0x00;
DDRG = 0x03;
}
void sys_init(void){
Start[0] = 0xff;
Start[1] = 0xff;
X[0]=X[1]=Y[0]=Y[1]=Z[0]=Z[1]=0;
flexLeft=flexRight=0;
}
//UART0 initialize
// desired baud rate: 115200
// actual: baud rate:111111 (3.7%)
// char size: 8 bit
// parity: Disabled
void uart0_init(void)
{
UCSR0B = 0x00; //disable while setting baud rate
UCSR0A = 0x00;
UCSR0C = 0x06;
UBRR0L = 0x08; //set baud rate lo //
UBRR0H = 0x00; //set baud rate hi
UCSR0B = 0x18;
}
void TX0_USART(unsigned char *dat,int len) {
int i;
for(i=0;i<len;i++) {
while((UCSR0A & 0x20)==0x00); //UDR0 empty???
UDR0=dat[i];
}
while((UCSR0A & 0x20)==0x00); //until translate, wait
}
// printf 함수 사용시 추가할 것.
int putchar(char c)
{
while((UCSR0A & 0x20)==0x00); //UDR0 empty???
UDR0 = c;
return c;
}
// scanf 함수 사용시 추가할 것.
int getchar(void)
{
while ((UCSR0A & 0x80) == 0);
return UDR0;
}
//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
sys_init();
//sei(); //re-enable interrupts
//all peripherals are now initialized
}
void delay(int n)
{
volatile int i,j;
for(i=1;i<n;i++)
{
for(j=1;j<600;j++);
}
}
void get_adc_data(void)
{
unsigned int i;
for(i=0;i<16;i++){
ADCSRA &= 0x7f;
ADMUX = 0x40;
ADCSRA |= 0xC0;
Start[1] = Start[0] = buf[1] = buf[0] = 0xff;
while((ADCSRA & 0x10) != 0x10);
X[LOW] = buf[3] = ADCL;
X[HIGH] = buf[2] = ADCH & 0x3f;
// ch0 = buf[0]+buf[1]*256;
ADCSRA &= 0x7f;
ADMUX = 0x42;
ADCSRA |= 0xC0;
while((ADCSRA & 0x10) != 0x10);
Y[0] = buf[5] = ADCL;
Y[1] = buf[4] = ADCH & 0x3f;
ADCSRA &= 0x7f;
ADMUX = 0x44;
ADCSRA |= 0xC0;
while((ADCSRA & 0x10) != 0x10);
Z[0] = buf[7] = ADCL;
Z[1] = buf[6] = ADCH & 0x3f;
}
}
void init_buf(void){
buf[8] = flexLeft = 0x00;
buf[9] = flexRight = 0x00;
}
void main(){
int i;
unsigned char send;
unsigned char *str="\r\n\r\n3AXIS Test Program V02\r\n";
init_devices();
//printf("\r\n\r\n3AXIS Test Program V01\r\n");
TX0_USART(str,30);
ADMUX = 0x00; // single-ended ADC3
ADCSRA = 0x86; // ADC enable, 125kHz
while(1){
get_adc_data();
if(RIGHT_BTN == OK){
buf[9] = flexRight = 0xF0;
}else{
buf[9] = flexRight = 0x00;
}
if(LEFT_BTN == OK){
buf[8] = flexLeft = 0xF0;
}else{
buf[8] = flexLeft = 0x00;
}
for(i=0; i<(BUFSIZE); i++) {
send = buf[i];
putchar(send);
}
PORTG ++;
}
}
안녕하세요? 고객님,
그 소스는 프로토콜을 이용하여 출력하기 때문에, 그렇습니다.
윈도우 프로그램과 맞춰 짜서 그렇지요.
안깨지게 보려면, 좀 수정해서 봐야 합니다. %d 등으로 출력하면 되지요.
아래처럼요.
printf("ADC%d Data : %d ", ADMUX, value);
수고하세요.
>
>
> 자료실에있는 예제파일을
>
> avr스튜디오로 컴파일 했을때요
>
> 시리얼 포트를 이용해서 화면출력을 하는데
>
> 화면에 쓰레기값이 출력이 되는데요 왜이런건가요?
>
> 쀍쒥이런글씨
관리자 답변
안녕하세요? 고객님,
뉴티씨를 이용하여 주셔서 감사합니다.
하지만, 그냥 좀 하다 안 된다고 여기다 올려서 수정 해달라는 식으로 하면 안됩니다.
직접 공부해 가면서 해야 해요.
당연히 처음하는 쪽이니 모르는게 당연합니다. 하지만, 그렇다고 급하다고 해서, 무조건 정석이 아닌 길로 쭉 가는 것도 안됩니다. 물론, 이렇게 찾아가면서 질문하는 것도 요즘에는 열심히 하려 하는 것처럼 생각하는 경향이 있지만, 사실 책을 찾아가면서 인터넷 뒤져가면서, C 언어 문법 관련된 부분을 뒤져보면서 공부해야 합니다.
지금 질문은 ADC나 자이로에 관한 질문이 아니라, C언어 문법에 관한 질문입니다.
그런데, 몇시간도 해보지 않고 그냥 질문을 올리게 되면, 절대로 늘지가 않습니다.
결과는 빨리 나올 수도 있겠지만요. 저희 회사는 고객님의 발전을 위하여 노력하기 때문에,
이런 조언도 아끼지 않습니다.
하지만, 넘 힘들어 하시는 것 같아서, 예제를 수정하여 올려드리니, 참고하시기 바랍니다.
자료실에 가서 가속도로 검색해 보세요.
제일 위에 나올 거에요.
- 제목 -
[예제소스] [AVR Studio 4.19 + WINAVR] 3축 가속도 센서(3AXIS) AVR 쪽 예제 소스( 시리얼로 텍스트 출력용)
수고하세요.
>
>
> 어디에다가 어떡해 저함수를 추가하라는건가요
>
>
> //ICC-AVR application builder : 2005-05-23 오후 8:41:55
> // Target : M128
> // Crystal: 16Mhz
>
>
> #include <mega128.h>
> #include <delay.h>
> #include <string.h>
>
>
> #define BUFSIZE 10
> #define STX 2
>
> #define LEFT_BTN (PING>>3)&0x01
> #define RIGHT_BTN (PING>>2)&0x01
> #define OK 1
>
> #define LOW 0
> #define HIGH 1
>
> volatile static unsigned char buf[BUFSIZE];//
> volatile unsigned int ch0, ch2, ch4;
> volatile unsigned char Start[2], X[2], Y[2], Z[2], flexLeft, flexRight;
>
>
> void port_init(void)
> {
> PORTA = 0x00;
> DDRA = 0x00;
> PORTB = 0x00;
> DDRB = 0x00;
> PORTC = 0x00; //m103 output only
> DDRC = 0x00;
> PORTD = 0x00;
> DDRD = 0xff;
> PORTE = 0x00;
> DDRE = 0x00;
> PORTF = 0x00;
> DDRF = 0x00;
> PORTG = 0x00;
> DDRG = 0x03;
> }
>
>
> void sys_init(void){
> Start[0] = 0xff;
> Start[1] = 0xff;
> X[0]=X[1]=Y[0]=Y[1]=Z[0]=Z[1]=0;
> flexLeft=flexRight=0;
> }
>
> //UART0 initialize
> // desired baud rate: 115200
> // actual: baud rate:111111 (3.7%)
> // char size: 8 bit
> // parity: Disabled
>
> void uart0_init(void)
> {
> UCSR0B = 0x00; //disable while setting baud rate
> UCSR0A = 0x00;
> UCSR0C = 0x06;
> UBRR0L = 0x08; //set baud rate lo //
> UBRR0H = 0x00; //set baud rate hi
> UCSR0B = 0x18;
> }
>
> void TX0_USART(unsigned char *dat,int len) {
> int i;
> for(i=0;i<len;i++) {
> while((UCSR0A & 0x20)==0x00); //UDR0 empty???
> UDR0=dat[i];
> }
> while((UCSR0A & 0x20)==0x00); //until translate, wait
> }
>
> // printf 함수 사용시 추가할 것.
> int putchar(char c)
> {
> while((UCSR0A & 0x20)==0x00); //UDR0 empty???
>
> UDR0 = c;
> return c;
> }
>
> // scanf 함수 사용시 추가할 것.
> int getchar(void)
> {
> while ((UCSR0A & 0x80) == 0);
> return UDR0;
> }
>
> //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
> sys_init();
> //sei(); //re-enable interrupts
> //all peripherals are now initialized
> }
>
> void delay(int n)
> {
> volatile int i,j;
> for(i=1;i<n;i++)
> {
> for(j=1;j<600;j++);
> }
> }
>
> void get_adc_data(void)
> {
> unsigned int i;
>
> for(i=0;i<16;i++){
> ADCSRA &= 0x7f;
> ADMUX = 0x40;
> ADCSRA |= 0xC0;
>
> Start[1] = Start[0] = buf[1] = buf[0] = 0xff;
>
> while((ADCSRA & 0x10) != 0x10);
> X[LOW] = buf[3] = ADCL;
> X[HIGH] = buf[2] = ADCH & 0x3f;
> // ch0 = buf[0]+buf[1]*256;
>
> ADCSRA &= 0x7f;
> ADMUX = 0x42;
> ADCSRA |= 0xC0;
>
> while((ADCSRA & 0x10) != 0x10);
> Y[0] = buf[5] = ADCL;
> Y[1] = buf[4] = ADCH & 0x3f;
>
> ADCSRA &= 0x7f;
> ADMUX = 0x44;
> ADCSRA |= 0xC0;
>
> while((ADCSRA & 0x10) != 0x10);
> Z[0] = buf[7] = ADCL;
> Z[1] = buf[6] = ADCH & 0x3f;
> }
> }
>
> void init_buf(void){
> buf[8] = flexLeft = 0x00;
> buf[9] = flexRight = 0x00;
> }
>
> void main(){
>
> int i;
> unsigned char send;
> unsigned char *str="\r\n\r\n3AXIS Test Program V02\r\n";
> init_devices();
> //printf("\r\n\r\n3AXIS Test Program V01\r\n");
> TX0_USART(str,30);
> ADMUX = 0x00; // single-ended ADC3
> ADCSRA = 0x86; // ADC enable, 125kHz
>
> while(1){
> get_adc_data();
> if(RIGHT_BTN == OK){
> buf[9] = flexRight = 0xF0;
> }else{
> buf[9] = flexRight = 0x00;
> }
> if(LEFT_BTN == OK){
> buf[8] = flexLeft = 0xF0;
> }else{
> buf[8] = flexLeft = 0x00;
> }
>
> for(i=0; i<(BUFSIZE); i++) {
> send = buf[i];
> putchar(send);
> }
> PORTG ++;
> }
> }
>
>
> 안녕하세요? 고객님,
> 그 소스는 프로토콜을 이용하여 출력하기 때문에, 그렇습니다.
> 윈도우 프로그램과 맞춰 짜서 그렇지요.
>
> 안깨지게 보려면, 좀 수정해서 봐야 합니다. %d 등으로 출력하면 되지요.
> 아래처럼요.
> printf("ADC%d Data : %d ", ADMUX, value);
>
> 수고하세요.
>
>
>
> >
> >
> > 자료실에있는 예제파일을
> >
> > avr스튜디오로 컴파일 했을때요
> >
> > 시리얼 포트를 이용해서 화면출력을 하는데
> >
> > 화면에 쓰레기값이 출력이 되는데요 왜이런건가요?
> >
> > 쀍쒥이런글씨
>
|
||||
