Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 4673 | 답변완료ATMega128 Pro 관련 | 천성록 | 2010-03-10 | 1,266 |
|
수고많으십니다.
제가 귀사의 ATMega128 Pro 보드를 구입하였습니다. Atmel사의 정품 JTAG Debugger인 MKII를 가지고 AVRStudio에서 Connect를 하려고 하니, Identify할 수 없다는 에러 메시지가 뜹니다.
어떻게 하면 됩니까? 제가 회로도를 보니 JTAG의 각 핀에 풀업이 되어 있지 않던데 괜찮은가요?
천성록 올림
011-9018-8864
관리자 답변
아래 질문을 올렸던 천성록입니다.
Atmel의 정품 JTAG을 사용하려면, 먼저 ISP Programmer를 사용하여 JTAG을 Eable시켜야 하는 것 같네요. 제가 Atmel 정품 ISP Programmer를 가지고 있는데, 연결할 때 사용할 수 있는 무슨 쪽보드 같은 것이 있나요? 있다면 어떻게 구매하나요?
천성록 올림
011-9018-8864
|
||||
| 4672 | 답변완료안녕하세요. | 이상현 | 2010-03-10 | 1,396 |
|
다름이아니라 뉴티씨회사 제품의 회로도를보고 pcb를 떳는데요~
TR쪽에 이상하게 값이 들어와서요
본래 6402의 1번 게이트 값은 0V , 2번 소스 값은 3.3V(VCC) , 3번 드레인 값은 3.3V로 나와야하는데
회로 고대로 해서 테스트해보니
1번 게이트값은 3.3v 나오고 2번 소스 값은 3.3V(VCC) 이건 맞고요 , 3번 드레인 값이 0V로 나옵니다.
회로도를 봐도 3번 드레인 값이 0V로 되는거 같은데요...
아닌가요 ㅠㅠ 회로 연결보면 바이패스커패시터로 교류신호를 걸러주는거같은데 0V로 뜨네요 ㅠㅠ
어떤게 잘못된거죠? 그리고 게이트로 나오는 핀 19번 핀 마저 3.3V로 나오네요 ㅠ
이것때문에 지금 usb와 sam7이 연결이 안되는듯한데요
어떻게 해야하죠? ㅠㅠ
그리고 뉴티씨의 외부오실레이터쪽 xin xout 은 400mA로 나오던데
제꺼는 xin xout 둘중에 하나는 그라운드 정도와 900mA로 나옵니다 ㅠㅠ
아 sam7s의 칩에서 이렇게 나오는데 이유가뭐죠?
관리자 답변
안녕하세요
회로도에 fet(p형)은 usb을 처음 접속할때 사용하는 풀업용입니다.
>회로도를 봐도 3번 드레인 값이 0V로 되는거 같은데요...
gate 값이 3.3v이면 드레인도 3.3v 로 되는것이 맞습니다.
>그리고 뉴티씨의 외부오실레이터쪽 xin xout 은 400mA로 나오던데
>제꺼는 xin xout 둘중에 하나는 그라운드 정도와 900mA로 나옵니다 ㅠㅠ
단위가 ma -> mv 가 아니가요?
크스리탈은 제조사마다 나올는 전위이 틀릴 수도 있습니다.
직접 제작하시는 보드에 대해서는 써포트를 하지않고 있습니다.
수고하세요
>다름이아니라 뉴티씨회사 제품의 회로도를보고 pcb를 떳는데요~
>
>TR쪽에 이상하게 값이 들어와서요
>
>본래 6402의 1번 게이트 값은 0V , 2번 소스 값은 3.3V(VCC) , 3번 드레인 값은 3.3V로 나와야하는데
>
>회로 고대로 해서 테스트해보니
>
>1번 게이트값은 3.3v 나오고 2번 소스 값은 3.3V(VCC) 이건 맞고요 , 3번 드레인 값이 0V로 나옵니다.
>
>회로도를 봐도 3번 드레인 값이 0V로 되는거 같은데요...
>
>아닌가요 ㅠㅠ 회로 연결보면 바이패스커패시터로 교류신호를 걸러주는거같은데 0V로 뜨네요 ㅠㅠ
>
>어떤게 잘못된거죠? 그리고 게이트로 나오는 핀 19번 핀 마저 3.3V로 나오네요 ㅠ
>
>
>
>이것때문에 지금 usb와 sam7이 연결이 안되는듯한데요
>
>어떻게 해야하죠? ㅠㅠ
>
>
>
>
>
>
>그리고 뉴티씨의 외부오실레이터쪽 xin xout 은 400mA로 나오던데
>
>제꺼는 xin xout 둘중에 하나는 그라운드 정도와 900mA로 나옵니다 ㅠㅠ
>
>아 sam7s의 칩에서 이렇게 나오는데 이유가뭐죠?
|
||||
| 4671 | 답변완료isp mode error 관련 재질문입니다. | 주성희 | 2010-03-09 | 1,414 |
|
안녕하세요 답변을 정확히 받지 못해서 다시 올립니다.
isp로 AD-USBISP V03 제품은 (주)뉴티씨 사이트에서 완제품 구매하였고
ATmaga8L-8PU 는 디바이스마트 에서 완제품을 구매하여서 사용하였으며
ISP드라이버와 AVR Studio툴은 뉴티씨 자료실에서 다운로드하여 사용했습니다.
이전에 질문에서는 직접제작하신걸로 보시고 답변주신거같아서.. 수정하여 다시올립니다.
ATmaga128 또한 완제품을 교체하여 해보아도 사진과같은 에러가 뜹니다.
선길이라든가 테스터기로 핀확인이라든가 이외에 다른 확인할 길이 있는지여 아님
새로 다른 제품들을 구매해서 사용해야하는지등 다른 길이 있는지 답변좀부탁드리겠습니다.
관리자 답변
안녕하세요? 고객님,
지난 번에 올리신 내용이 정확하지 않아서, 나름 열심히 답변해 드린 것인데,
정확한 상황을 올려 주시면 정확하게 이해해서 보다 정확하고 빨리 답변해 드릴 수 있게 됩니다.
네, 예전에 어떤 고객님이 ATMEGA8L 모듈과 본사의 USBISP 연결 후에 안된다고, 연락이 왔고, 비슷하게 되서 본사로 방문한 적이 있는 데, 모듈과 USBISP 연결을 거꾸로 하셨더군요.
방향이 헛갈리기 쉬워서, 다시 연결하여보았더니 잘 되어 고객님이 만족하고 가셨습니다.
혹시, 그래서 핀 배치를 다시 한 번 보라고 말씀드린 건데, 그외 있을 수 있는 문제는 중간중간 연결하다가 잘못된 부분들 때문이나, 아니면, 보드가 어찌어찌하여 망가졌다면, 그럴 수도 있습니다.
또한, USBISP 가 망가졌을 수도 있겠지요.
하지만, 이러한 것들은 직접 봐서 진단해 봐야 알 수 있는 문제입니다.
우선, 프로그램 설치나 드라이버 설치 등에는 문제가 없는 것으로 보이며,
본사로 모듈과 USBISP를 함께 가지고 방문하시거나, 택배로 보내서 확인하는 것이 좋겠습니다.
본사에는 테스트 할 수 있는 좋은 환경을 구비하고 있습니다. 본사에서 직접 확인 받으시기를 권고해 드립니다.
수고하세요.
>안녕하세요 답변을 정확히 받지 못해서 다시 올립니다.
>isp로 AD-USBISP V03 제품은 (주)뉴티씨 사이트에서 완제품 구매하였고
>ATmaga8L-8PU 는 디바이스마트 에서 완제품을 구매하여서 사용하였으며
>ISP드라이버와 AVR Studio툴은 뉴티씨 자료실에서 다운로드하여 사용했습니다.
>이전에 질문에서는 직접제작하신걸로 보시고 답변주신거같아서.. 수정하여 다시올립니다.
>ATmaga128 또한 완제품을 교체하여 해보아도 사진과같은 에러가 뜹니다.
>선길이라든가 테스터기로 핀확인이라든가 이외에 다른 확인할 길이 있는지여 아님
>새로 다른 제품들을 구매해서 사용해야하는지등 다른 길이 있는지 답변좀부탁드리겠습니다.
|
||||
| 4670 | 답변완료AM-DC2-2D 질문드립니다. | ㅇㅇㅇㅇ | 2010-03-09 | 1,351 |
|
DC모터 2개 사용가능한 모델인데요.
2개 사용시 DC모터 각각 필요한 전압합친 것과 전류 각각 합친 양을 전원부에 넣어주면 되는건가
요 ?
일반 DC모터에 사용하는 모델이 맞는지에 대한 답변부탁드립니다.
추가적으로 한 3~5kg 사이 무게를 위에 달고 움직이려고하는데요.
추천할만한 DC모터가 있으면 추천부탁드립니다.
모터는 4개를 쓸 예정입니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
그렇습니다. 모터 구동부 두 군데서 필요한 전류, 전압을 한 번에 공급하게 됩니다. 즉, 모터 두개가 구동용 전압이 서로 같은 스펙이라야 겠지요. 예로 5볼트용 모터가 1A 소모하다면 2개를 사용할 경우 모터의 입력으로 넣어야 하는 양은 5볼트에 2A 입니다.
현재 본사에서 판매되고있는 DC모터는
SE-DM 700gcm
SE-DS350 4.2~5.2Kgcm ==> 이 모터도 고려해 보세요.
두종류가 있습니다.
아래 모터가 어떨까 싶은데, 직접 가서 맘에 드시는 모터로 골라서 사용하기 바랍니다.
토크가 어느정도 된다고 해도 어떤 식으로 사용하냐에 따라서, 어느정도까지 사용이 가능한지가 달라질 수 있어서, 뭐라고 정확히 추천하여 말하기 어렵습니다. 테스트 해가면서 직접 골라야 합니다.
모터 구동부도 AM-DC2-2D의 경우 최대 2A까지만 지원하는 모듈이라서, 2A가 순간 넘어서게 되면, 모듈이 망가지게 됩니다. 참고하시기 바랍니다. 토크가 제법 되시는 것 같은데, 보다 강한 모터 드라이버를 찾는다면, AM-DC1-3D가 어떨까 싶습니다. 최대 3A까지 지원되고, 하나 사용 가능하지만, 두개 쓰시면 될테구요. 비용이 좀 올라가긴 합니다. 하지만, 모터 토크를 감당하려면, 전류 문제 때문에, 이렇게 사용하시는 것이 좋습니다. 테스트 해 가면서, 비용을 줄이는 방법을 생각해야 합니다.
- 아래 -
http://www.motorplus.kr/shop/goods/goods_view.php?goodsno=24&category=002002
다음에는 반드시 본명으로 질문하여 주세요. 본 게시판은 여러사람이 함께 보는 공간이라서, 나름 규칙같은 것을 해서 함께 사용하는 데 편리하도록 하고 있습니다. 부탁드립니다.
감사합니다.
>DC모터 2개 사용가능한 모델인데요.
>
>2개 사용시 DC모터 각각 필요한 전압합친 것과 전류 각각 합친 양을 전원부에 넣어주면 되는건가
>
>요 ?
>
>일반 DC모터에 사용하는 모델이 맞는지에 대한 답변부탁드립니다.
>
>추가적으로 한 3~5kg 사이 무게를 위에 달고 움직이려고하는데요.
>
>추천할만한 DC모터가 있으면 추천부탁드립니다.
>
>모터는 4개를 쓸 예정입니다.
|
||||
| 4669 | 답변완료SE-DS350(DC 모터와 모터 드라이버 (A3986SLD) | 김동기 | 2010-03-09 | 1,285 |
|
이두개를 구입하였는데 모터와 드라이버의 사용법을 모르겠습니다.
모터드라이버가 너무작아서 빵판에는 불가능한듯한데 어떻게 사용하는지좀알려주세요
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
죄송하지만, 구매하신 모터 드라이버는 본사의 제품이 아닙니다.
구매하신 회사에 문의 하시거나, 데이터 시트를 참고하시기 바랍니다.
DS350 모터의 경우에는 일반 DC 기어드 모터와 사용법이 같구요.
두 선이 있을 텐데, + - 를 각각 1, 0 으로 또는 0, 1로 넣어 줄 때마다 정, 역 회전을 하게 됩니다.
본사에 AM-DC2-2D와 같은 모터드라이버 제품을 구매하시면, 보다 편리하게 사용하실 수 있구요.
각종 예제가 자료실과 자료실->기존자료실에 가면 DC로 검색하여 쉽게 찾으실 수 있습니다.
또한, DS350 정도의 모터는 AM-CD2L 드라이버로도 정역 구동 정도는 저렴하게 쉽게 할 수 있는 데, 아래 강좌의 9장을 참고하시면 강좌까지 나와 있습니다. 물론, 예제 소스도 마찬가지로 자료실과 자료실->기존자료실에 가면 DC로 검색하여 쉽게 찾으실 수 있습니다.
- 아래 -
http://www.newtc.co.kr/board/data/mega128_lecture/kd_128pro를_이용한_ATmega128_초초보강좌.pdf
수고하세요.
>이두개를 구입하였는데 모터와 드라이버의 사용법을 모르겠습니다.
>
>모터드라이버가 너무작아서 빵판에는 불가능한듯한데 어떻게 사용하는지좀알려주세요
|
||||
| 4668 | 답변완료128 AB-M128-B | 안녕하세요 | 2010-03-09 | 1,270 |
|
우리가 AVR MEGA 128 AB-M128-B (avr보드)를 이용해 프로젝트를 수행중인데
센서와 모터를 사용하는데 있어서 확장모듈이 필요합니까?
필요하지않다면 어떻게 해야하는가?(빵판,저항,트랜지스터이런게 필요한가요?)
확장센서모듈을 사용하면 1개당 몇개의 센서를 사용할수있나
여러개를 사용할수있다면 몇개까지 가능한가요.
확장센서모듈사용시 각 센서를 연결하는 방법.
LCD확장모듈이 필요한가? 현재 LCD만 가지고있는데 LCD모듈이 필요하다면 모듈만 따로구입가능한가요?
그리고 SE-DS350(DC 모터)이 모터를구매하엿는데 사용하는방법을모르겟어요 선이 두개나와있는데 이건 전원인거같은데 그럼 프로그램을 넣을때는 어떻게 넣는지 궁금합니다.
그리고 모터드라이버는 또어떻게 사용하는지두요
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
사용하는 센서.
UST_SNR-FSR
(압력센서)
DS18S20
(온도센서)
LC1621-TRNS6
(캐릭터 LCD)
CDS센서(조도 센서)
CDS CELL(GL5549)
관리자 답변
안녕하세요
>센서와 모터를 사용하는데 있어서 확장모듈이 필요합니까?
센서와 모터에 관련된 회로 설계가 가능하시면 부품판매하는 곳에
구입하여 직접 제작이 가능합니다.
>확장센서모듈사용시 각 센서를 연결하는 방법.
센서가 출력이 방식에 따라 연결법이 ( ADC,I2C,SPI등 ) 있습니다.
ATMEGA128 - ADC 포트는 8 개 , I2C 1개 SPI 1개 ,UART 2개 있습니다.
센서 스펙 및 을 ATMEGA128 데이터시트를 보시고 확인하시길 바랍니다.
>LCD확장모듈이 필요한가? 현재 LCD만 가지고있는데 LCD모듈이 필요하다면 모듈만 따로구입가능한가요?
LCD모듈은 128 AB-M128-B 와의 연결 10 박스 헤더 2개로 바로 연결이 가능하면 따로
하드웨어 구성이 필요가 없습니다.
LCD와 모듈을 따로 판매하지 않고 있습니다.
본 게시판은 여러사람이 함께 사용하는 공간으로 본명으로 질문하셔야 답변이 가능합니다.
다음에는 꼭 본명으로 질문하여 주시기 바랍니다.
수고하세요
>우리가 AVR MEGA 128 AB-M128-B (avr보드)를 이용해 프로젝트를 수행중인데
>
>센서와 모터를 사용하는데 있어서 확장모듈이 필요합니까?
>필요하지않다면 어떻게 해야하는가?(빵판,저항,트랜지스터이런게 필요한가요?)
>
>확장센서모듈을 사용하면 1개당 몇개의 센서를 사용할수있나
>여러개를 사용할수있다면 몇개까지 가능한가요.
>확장센서모듈사용시 각 센서를 연결하는 방법.
>
>LCD확장모듈이 필요한가? 현재 LCD만 가지고있는데 LCD모듈이 필요하다면 모듈만 따로구입가능한가요?
>
>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>사용하는 센서.
>
>UST_SNR-FSR
>(압력센서)
>
>
>DS18S20
>(온도센서)
>
>
>LC1621-TRNS6
>(캐릭터 LCD)
>
>
>CDS센서(조도 센서)
>CDS CELL(GL5549)
>
|
||||
| 4667 | 답변완료isp mode error 관련 질문입니다. | 주성희 | 2010-03-09 | 1,376 |
|
isp로는 AD-USBISP V03사용하고
칩은 ATmaga8l-8pu 를 사용하고
툴은 AVR studio 를 사용했습니다.
그런데 계속 isp mode error 이 뜨네요 칩을 ATmaga128 로 해봐도 똑같고
소장하는 다른 isp로 해도 똑같은데 이유를 도무지 찾을수가없네요....
테스터기로 확인해봐도 이상은 없어보이고 컴퓨터 까지 바꿔서해봐도 안되네요..
혹여나 여기서 더 확인해봐야 할거나 다른 이유가 있다면 조금이라도 도움이 될수있게
알려드리길 부탁드립니다.
관리자 답변
ISP 선이 지나치게 길다거나,(보통 30-40cm 지만, 상태가 좋으면 1m 정도까지는 정상동작 하더군요.) 만든 AVR 보드의 SCK 라인의 배선이 노이즈에 매우 약하게 배선되어 있거나, 하는 경우가 많습니다. 그리고, 가지고 계신 보드들의 칩들이 모두 정상인지도 확인하셔야 겠구요.
배선이 잘못되면, 일부 그런 경우도 있을 수 있습니다.
가장 좋은 방법은 다른데서 되는 경우에 여기서 안된다면, 무엇이 문제인 지 문제가 확실해 지니까, 그런 식으로 우선적으로 점검해 가는 게 좋겠습니다.
수고하세요.
>isp로는 AD-USBISP V03사용하고
>칩은 ATmaga8l-8pu 를 사용하고
>툴은 AVR studio 를 사용했습니다.
>그런데 계속 isp mode error 이 뜨네요 칩을 ATmaga128 로 해봐도 똑같고
>소장하는 다른 isp로 해도 똑같은데 이유를 도무지 찾을수가없네요....
>테스터기로 확인해봐도 이상은 없어보이고 컴퓨터 까지 바꿔서해봐도 안되네요..
>혹여나 여기서 더 확인해봐야 할거나 다른 이유가 있다면 조금이라도 도움이 될수있게
>알려드리길 부탁드립니다.
|
||||
| 4666 | 답변완료하나기술(RS232C) | 하나기숳 | 2010-03-08 | 1,390 |
|
안녕하세요 다름아니오라
rs232c 을 사용 하려하는데
장치관리자에 USB_seriai N.T.C (COM5)
설치되어 있으면 되나요
AD-USBISP 입니다 그리고 .사용CPU는 ATMEGA8 입니다. 그리고 져이물건에 RS232C IC각 연결이 되어 있어야 하나요
관리자 답변
안녕하세요.
아래는 USBISP 메뉴얼입니다.
http://www.newtc.co.kr/download/AD-USBISP/AD-USBISP_V03.pdf
3번째장에 있는 그림을 보시면 4개핀이 존재합니다.
1. 5VCC <--------------> 타겟보드가 따로 전원을 사용하면 연결 X
2. TXD <--------------> MCU RX
3. RXD <--------------> MCU TX
4. GND <--------------> GND
컴퓨터의 RS232 레벨(약 15볼트)통신이 아닙니다.
3볼트 또는 5볼트 통신입니다. 마이컴에 UART에 바로 붙혀서 사용합니다.
만약 컴퓨터와 컴퓨터간의 통신을 하시다면
컴퓨터1 <-----USBSERIAL + MAX232------------> 컴퓨터2
또는
컴퓨터1 <-----USBSERIAL + USBSERIAL------------> 컴퓨터2
본 게시판은 여러사람이 함께 사용하는 공간으로 본명으로 질문하셔야 답변이 가능합니다.
다음에는 꼭 본명으로 질문하여 주시기 바랍니다.
수고하세요
>안녕하세요 다름아니오라
>rs232c 을 사용 하려하는데
>장치관리자에 USB_seriai N.T.C (COM5)
>설치되어 있으면 되나요
>
>AD-USBISP 입니다 그리고 .사용CPU는 ATMEGA8 입니다. 그리고 져이물건에 RS232C IC각 연결이 되어 있어야 하나요
>
>
|
||||
| 4665 | 답변완료Device ID가 Return 되지 않는다고 메시지가 뜨네요. | 깃발 | 2010-03-08 | 1,564 |
|
AB-M128Pro-A 보드에 JTAG를 연결 하려니 DEVICE ID가 return 되지 않는현상이 발생 하는군요,
어떻게 조치를 해야 하나요.
관리자 답변
안녕하세요 , 고객님.
아래는 JTAGICE 설명서입니다.
http://www.newtc.co.kr/download/AD-JTAG/AVR-JTAG_Ver11.pdf
메뉴얼의 2번째장에 AVRJTAG 사용준비에 관련된 내용있습니다.
거기에 보시면 퓨즈비트를 0xff19EF로 변경해야 사용이 가능합니다.
ISP 라는 다운로드 장비로 FUSEBIT를 변경후 JTAG이 사용이 가능합니다.
본 게시판은 여러사람이 함께 사용하는 공간으로 본명으로 질문하셔야 답변이 가능합니다.
다음에는 꼭 본명으로 질문하여 주시기 바랍니다.
수고하세요
>AB-M128Pro-A 보드에 JTAG를 연결 하려니 DEVICE ID가 return 되지 않는현상이 발생 하는군요,
>
>어떻게 조치를 해야 하나요.
|
||||
| 4664 | 답변완료ATMega 128 라인트레이서 | 강민수 | 2010-03-08 | 1,411 |
|
귀사의 제품중에 KR-SL16이라는 라인트레이서 키트의 경우
ATMega16 기반하여 제작된 것 같습니다.
저의 경우는 ATMega 128을 사용하고자 합니다.
SE-SLT 알미늄 바디 소개 자료에 보면 ATMega128을 이용한 라인트레이서 키트 그림이
소개되고 있는데 제품소개란에는 없습니다.
단지 데모용인지 알고 싶습니다.
제품이 있다면 가격, 소스코드 등등의 정보 부탁합니다.
관리자 답변
안녕하세요
KR-SL16은 MEGA16 기반입니다.
ATMEGA128 로 사용하실려면 PCB사이즈가 동일한 AB-M128-B 이제품이 가능합니다.
라인트레이서
스테핑 라인트레이서 키트 KR-SL16 완제 231,000원
- AVR MEGA 16 개발보드 AB-M16-B -19,800원
+ AB-M128-B +38,500원
AVR 다운로드장비
컴퓨터에 패럴러 포트가없을경우는 아래장비
AVR용 USB-ISP 라이트 AD-USBISP-L 29,700원
MEGA128용 라인트레이서 예제코드는 CD로 제공됩니다.
수고하세요
>귀사의 제품중에 KR-SL16이라는 라인트레이서 키트의 경우
>ATMega16 기반하여 제작된 것 같습니다.
>
>저의 경우는 ATMega 128을 사용하고자 합니다.
>
>SE-SLT 알미늄 바디 소개 자료에 보면 ATMega128을 이용한 라인트레이서 키트 그림이
>소개되고 있는데 제품소개란에는 없습니다.
>단지 데모용인지 알고 싶습니다.
>
>제품이 있다면 가격, 소스코드 등등의 정보 부탁합니다.
|
||||
| 4663 | 답변완료AVRISP mkII Boot 가 없으면. | 문제아 | 2010-03-08 | 1,408 |
|
AVRISP mkII ISP 펌웨어 업데이트 도중 boot가 날라 간것 같습니다.
파워 리섹을 하니 Res/Orange 순으로 LED가 Blinking 되며.
AVR Studio에서 펌웨어 업데이트를 수행하면
no boot image메시지가 나오는데 대처법을 알려 주시면 감사 하겠습니다.
KIT를 구매해서 ISP 연결 하려다가 이런일이 발생 하였네요.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
AVRISP의 펌웨어가 날라갔다는 말씀 같은데요.
본사 제품이 아니라서, 죄송하지만, 저희가 알 수 없는 내용입니다.
제조사로 문의 하시기 바랍니다.
본사에도 유사 제품이 있습니다.
AD-USBISP 라는 제품이 그것인데요, 이 제품의 경우 업그레이드도 본사에서 무상으로 지원하고 있습니다. 이 경우 택배비는 발생할 수 있습니다. A/S 발생시에도 저렴한 비용으로 A/S 가능합니다.
문의 하신 내용은 킷트와는 무관한 내용으로 보입니다.
다른 문의 사항 있으시면, 본사 Q&A로 올려 주시기 바랍니다. 그리고, 본사의 Q&A는 반드시 본명으로 질문하시는 것을 원칙으로 하고 있습니다. 다음엔 꼭 본명으로 질문하여 주시는 에티켓 부탁드립니다.
감사합니다.
>AVRISP mkII ISP 펌웨어 업데이트 도중 boot가 날라 간것 같습니다.
>
>파워 리섹을 하니 Res/Orange 순으로 LED가 Blinking 되며.
>
>AVR Studio에서 펌웨어 업데이트를 수행하면
>
>no boot image메시지가 나오는데 대처법을 알려 주시면 감사 하겠습니다.
>
>KIT를 구매해서 ISP 연결 하려다가 이런일이 발생 하였네요.
>
>
|
||||
| 4662 | 답변완료AB-M128-B에서 ADC문제 | 김영기 | 2010-03-08 | 1,287 |
|
코드는 다음과 같습니다.
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
int out_val;
unsigned char i;
PORTC = 0xff;
DDRC = 0xff;
SREG |= 0x80;
// ADMUX = 0x00; // ADC0를 사용하고 Vref = AREF사용
ADMUX = 0b01000001; // 0x40;ADC0를 사용하고 Vref = AVCC용
ADCSRA = 0x83; // ADEN = 1 , 분주비는 ?
_delay_ms(10);
for(;;)
{
ADCSRA = 0xC7; // ADSC = 1 , 변환시작
while((ADCSRA & 0x10) == 0);
out_val=0;
for(i=0;i<16;i++)
{
out_val+= (int)ADCH*256 + (int)ADCL;
out_val = out_val >> 4; // 16으로 나누어 평균값을 구한다.
}
if ( out_val < 6*1) PORTC =0b11111110;
else if (out_val<6*2) PORTC =0b11111101;
else if (out_val<6*3) PORTC =0b11111011;
else if (out_val<6*4) PORTC =0b11110111;
else if (out_val<6*5) PORTC =0b11101111;
else if (out_val<6*6) PORTC =0b11011111;
else if (out_val<6*7) PORTC =0b10111111;
else if (out_val<6*8) PORTC =0b01111111;
else if (out_val<6*9) PORTC =0b01111110;
else if (out_val<6*10) PORTC =0b01111110;
else if (out_val<6*11) PORTC =0b01111100;
else if (out_val<6*12) PORTC =0b01111000;
else if (out_val<6*13) PORTC =0b01110000;
else if (out_val<6*14) PORTC =0b01000000;
else PORTC =0b00000000;
}
}
위 코드의 의도는 VR을 ADC에 달아 출력 V에 따라 LED로 확인하는 코드입니다.
ARef전원은 보드가 0R으로 VCC에 연결되었다고 보고 5V ADC의 분해도가 1024는 나와야 된다고 봅니다.
그런데, 보시다 시피 6*1 ~ 6.14 범위에 있고, 문제는 VR를 높였다 줄였다하면, 죽어버리는 현상입니다.
Vref문제인지, 알수가 없습니다.
살펴주시기 바랍니다.
관리자 답변
안녕하세요
하드웨어 및 예제 코드에 대해서는 써포트를 하지만
직접 작성 하신 코드에 대해서는 써포트를 하지않고 있습니다.^^;
아래링크는 ADC 관련 예제 코드 입니다. 참고 하시길 바랍니다.
http://www.newtc.co.kr/board/view.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=adc&select_arrange=headnum&desc=asc&no=212
예제 코드 다운로드하여 칩의 adc가 이상 없이 되는지를 확인 하길 바랍니다.
수고하세요
>코드는 다음과 같습니다.
>
>#include <avr/io.h>
>#include <util/delay.h>
>
>int main(void)
> {
> int out_val;
> unsigned char i;
> PORTC = 0xff;
> DDRC = 0xff;
> SREG |= 0x80;
>// ADMUX = 0x00; // ADC0를 사용하고 Vref = AREF사용
> ADMUX = 0b01000001; // 0x40;ADC0를 사용하고 Vref = AVCC용
> ADCSRA = 0x83; // ADEN = 1 , 분주비는 ?
> _delay_ms(10);
>
>
> for(;;)
> {
> ADCSRA = 0xC7; // ADSC = 1 , 변환시작
> while((ADCSRA & 0x10) == 0);
>
> out_val=0;
>
> for(i=0;i<16;i++)
> {
> out_val+= (int)ADCH*256 + (int)ADCL;
> out_val = out_val >> 4; // 16으로 나누어 평균값을 구한다.
> }
>
> if ( out_val < 6*1) PORTC =0b11111110;
> else if (out_val<6*2) PORTC =0b11111101;
> else if (out_val<6*3) PORTC =0b11111011;
> else if (out_val<6*4) PORTC =0b11110111;
> else if (out_val<6*5) PORTC =0b11101111;
> else if (out_val<6*6) PORTC =0b11011111;
> else if (out_val<6*7) PORTC =0b10111111;
> else if (out_val<6*8) PORTC =0b01111111;
> else if (out_val<6*9) PORTC =0b01111110;
> else if (out_val<6*10) PORTC =0b01111110;
> else if (out_val<6*11) PORTC =0b01111100;
> else if (out_val<6*12) PORTC =0b01111000;
> else if (out_val<6*13) PORTC =0b01110000;
> else if (out_val<6*14) PORTC =0b01000000;
>
> else PORTC =0b00000000;
>
>
>
> }
> }
>
>
>
>위 코드의 의도는 VR을 ADC에 달아 출력 V에 따라 LED로 확인하는 코드입니다.
>ARef전원은 보드가 0R으로 VCC에 연결되었다고 보고 5V ADC의 분해도가 1024는 나와야 된다고 봅니다.
>
>그런데, 보시다 시피 6*1 ~ 6.14 범위에 있고, 문제는 VR를 높였다 줄였다하면, 죽어버리는 현상입니다.
>
>Vref문제인지, 알수가 없습니다.
>살펴주시기 바랍니다.
>
>
|
||||
| 4661 | 답변완료lcd질문 입니다! | 이학경 | 2010-03-07 | 1,224 |
|
#define Control PORTB
#define Data PORTD
#define LCD_EN_ON (Control |=0x04)
#define LCD_EN_OFF (Control &=0x0b)
#define LCD_RW_ON (Control |=0x02)
#define LCD_RW_OFF (Control &=0x0d)
#define LCD_RS_ON (Control |=0x01)
#define LCD_RS_OFF (Control &=0x0e)
#define SCR_CLR Write_Controller(0x01)
#define FIR_HOME Write_Controller(0x02)
#define SEC_HOME Write_Controller(0xc0)
#define SCR_L_SHIFT Write_Controller(0x18)
#define SCR_R_SHIFT Write_Controller(0x1c)
#define CUR_LEFT Write_Controller(0x10)
#define CUR_RIGHT Write_Controller(0x14)
void delay(int cnt)
{int i,j;
for(i=0; i<cnt; i++){
for(j=0; j<600; j++);
}}
void Write_Controller(char value)
{
LCD_EN_OFF;
delay(1);
LCD_RS_OFF;
delay(1);
LCD_RW_OFF;
delay(1);
LCD_EN_ON;
delay(1);
Data=value;
delay(1);
LCD_EN_OFF;
delay(1);
}
void Write_Data(char value)
{
LCD_EN_OFF;
delay(1);
LCD_RS_ON;
delay(1);
LCD_RW_OFF;
delay(1);
LCD_EN_ON;
delay(1);
Data=value;
delay(1);
LCD_EN_OFF;
delay(1);
}
void lcd_init(){
Write_Controller(0x38);
Write_Controller(0x0e);
Write_Controller(0x06);
}
void main(){
init_devices();
DDRB=DDRD=0xff;
lcd_init();
SCR_CLR;
FIR_HOME;
Write_Data('H');delay(500);
Write_Data('A');delay(500);
Write_Data('K');delay(500);
Write_Data('-');delay(500);
Write_Data('K');delay(500);
Write_Data('Y');delay(500);
Write_Data('U');delay(500);
Write_Data('N');delay(500);
Write_Data('G');delay(500);
Write_Data(' ');delay(500);
Write_Data('H');delay(500);
Write_Data('e');delay(500);
Write_Data('l');delay(500);
Write_Data('l');delay(500);
Write_Data('o');delay(500);
Write_Data('w');delay(500);
Write_Controller(0xc0);delay(500);
Write_Data('N');delay(500);
Write_Data('E');delay(500);
Write_Data('W');delay(500);
Write_Data(' ');delay(500);
Write_Data('W');delay(500);
Write_Data('O');delay(500);
Write_Data('R');delay(500);
Write_Data('L');delay(500);
Write_Data('D');delay(500);
Write_Data('/');delay(500);
Write_Data('1');delay(500);
Write_Data('0');delay(500);
Write_Data('0');delay(500);
Write_Data('3');delay(500);
Write_Data('0');delay(500);
Write_Data('7');delay(500);
}
///////////////////////////////////////////
위 사이트에서 초보용으로 제공한 lcd소스인데요
맨위의 define 부분에서
#define LCD_EN_ON (Control |=0x04)
#define LCD_EN_OFF (Control &=0x0b)
#define LCD_RW_ON (Control |=0x02)
#define LCD_RW_OFF (Control &=0x0d)
#define LCD_RS_ON (Control |=0x01)
#define LCD_RS_OFF (Control &=0x0e)
이렇게 정의했는데
Control |=, &=
왜 이런식으로 뒤에 =을 붙이는지 모르겠습니다.
그냥 |랑 &만쓰면 안되나해서 해봤는데 안먹더라구요
=이 무슨의미를 갖는건지요...
책보면서 이해할떄는 그냥 &랑 |만 있으면 되겠구나 했거든요
&는 0값을 고정값으로 주고싶을떄 사용하는거고
|는 1값을 고정값으로 주고싶을떄 사용하는거고
여기서도 그렇게 사용한거같은데
다른 dc모터 제어할떄 와 다르게 =을 붙이는지 ,
이게 무슨뜻이고 왜 안붙이면 인식을 못하는지를
모르겠습니다.
그리고
write controller 부분에서
XXXX X000 (en rs rw ->off)
XXXX X100 (en->on, rs,rw->off)
DATA = 0x38 (데이타값 입력)
XXXX X000 (en하강 엣지 부분에서 데이터전달)
이런식으로 진행되는게 맞나요?
제가 재대로 이해한게 맞는지 모르겠습니다
도움 감사드립니다!
관리자 답변
안녕하세요? 이학경 고객님,
질문하시는 내용으로 보아, 타이밍도 관련해서 많은 발전이 있었던 것 같아서, 흐뭇하네요.
Write Controller는 흐름이 그런 식으로 진행되는 게 맞구요.
하지만, 밑에 그 문장만 가지고 되는 게 아니라, 전에 설명한 타이밍도 전체 흐름이 모두 필요한 겁니다. 알고 계신 것 같긴 한데, 혹시나 해서 남겨 봅니다.
그리고, DC 모터 때는 다른 비트들을 DC 모터 에서 사용하지 않으니까 괜찮았지만,
LCD는 여러가지 비트를 사용하기 때문에, 반드시 다른 비트들도 동시에 사용해야 하는 거죠.
그래서, 중간에 다른 비트들의 값이 변하게 되면, 당연히 동작이 안 되겠죠?
그래서, 그 비트만 제어하는 것이 임베디드 쪽에서 많이 사용됩니다.
다시 한 번 아래 링크를 꼼꼼히 읽어 보기 바랍니다.
- 아래 -
http://www.newtc.co.kr/board/view.php?id=faq&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=36
SET, CLEAR 라고 흔히 설명하죠.
SET은 OR 연산을 통해서 특정비트 1을 만드는 것을 말하구요.
CLEAR는 AND 연산을 통해서 특정비트 0을 만드는 것입니다.
수고하세요.
>
>#define Control PORTB
>#define Data PORTD
>
>#define LCD_EN_ON (Control |=0x04)
>#define LCD_EN_OFF (Control &=0x0b)
>#define LCD_RW_ON (Control |=0x02)
>#define LCD_RW_OFF (Control &=0x0d)
>#define LCD_RS_ON (Control |=0x01)
>#define LCD_RS_OFF (Control &=0x0e)
>
>#define SCR_CLR Write_Controller(0x01)
>#define FIR_HOME Write_Controller(0x02)
>#define SEC_HOME Write_Controller(0xc0)
>#define SCR_L_SHIFT Write_Controller(0x18)
>#define SCR_R_SHIFT Write_Controller(0x1c)
>#define CUR_LEFT Write_Controller(0x10)
>#define CUR_RIGHT Write_Controller(0x14)
>
>
>void delay(int cnt)
>{int i,j;
>for(i=0; i<cnt; i++){
>for(j=0; j<600; j++);
>}}
>
>
>void Write_Controller(char value)
>{
>LCD_EN_OFF;
>delay(1);
>LCD_RS_OFF;
>delay(1);
>LCD_RW_OFF;
>delay(1);
>LCD_EN_ON;
>delay(1);
>Data=value;
>delay(1);
>LCD_EN_OFF;
>delay(1);
>}
>
>void Write_Data(char value)
>{
>LCD_EN_OFF;
>delay(1);
>LCD_RS_ON;
>delay(1);
>LCD_RW_OFF;
>delay(1);
>LCD_EN_ON;
>delay(1);
>Data=value;
>delay(1);
>LCD_EN_OFF;
>delay(1);
>}
>
>void lcd_init(){
>Write_Controller(0x38);
>Write_Controller(0x0e);
>Write_Controller(0x06);
>}
>
>
>
>void main(){
>init_devices();
>DDRB=DDRD=0xff;
>lcd_init();
>SCR_CLR;
>FIR_HOME;
>
>Write_Data('H');delay(500);
>Write_Data('A');delay(500);
>Write_Data('K');delay(500);
>Write_Data('-');delay(500);
>Write_Data('K');delay(500);
>Write_Data('Y');delay(500);
>Write_Data('U');delay(500);
>Write_Data('N');delay(500);
>Write_Data('G');delay(500);
>Write_Data(' ');delay(500);
>Write_Data('H');delay(500);
>Write_Data('e');delay(500);
>Write_Data('l');delay(500);
>Write_Data('l');delay(500);
>Write_Data('o');delay(500);
>Write_Data('w');delay(500);
>
>Write_Controller(0xc0);delay(500);
>Write_Data('N');delay(500);
>Write_Data('E');delay(500);
>Write_Data('W');delay(500);
>Write_Data(' ');delay(500);
>Write_Data('W');delay(500);
>Write_Data('O');delay(500);
>Write_Data('R');delay(500);
>Write_Data('L');delay(500);
>Write_Data('D');delay(500);
>Write_Data('/');delay(500);
>Write_Data('1');delay(500);
>Write_Data('0');delay(500);
>Write_Data('0');delay(500);
>Write_Data('3');delay(500);
>Write_Data('0');delay(500);
>Write_Data('7');delay(500);
>}
>
>///////////////////////////////////////////
>
>위 사이트에서 초보용으로 제공한 lcd소스인데요
>
>맨위의 define 부분에서
>#define LCD_EN_ON (Control |=0x04)
>#define LCD_EN_OFF (Control &=0x0b)
>#define LCD_RW_ON (Control |=0x02)
>#define LCD_RW_OFF (Control &=0x0d)
>#define LCD_RS_ON (Control |=0x01)
>#define LCD_RS_OFF (Control &=0x0e)
>
>
>이렇게 정의했는데
>Control |=, &=
>왜 이런식으로 뒤에 =을 붙이는지 모르겠습니다.
>
>그냥 |랑 &만쓰면 안되나해서 해봤는데 안먹더라구요
>
>=이 무슨의미를 갖는건지요...
>
>책보면서 이해할떄는 그냥 &랑 |만 있으면 되겠구나 했거든요
>
>&는 0값을 고정값으로 주고싶을떄 사용하는거고
>|는 1값을 고정값으로 주고싶을떄 사용하는거고
>여기서도 그렇게 사용한거같은데
>
>다른 dc모터 제어할떄 와 다르게 =을 붙이는지 ,
>이게 무슨뜻이고 왜 안붙이면 인식을 못하는지를
>모르겠습니다.
>
>
>그리고
>
>write controller 부분에서
>
>XXXX X000 (en rs rw ->off)
>XXXX X100 (en->on, rs,rw->off)
>DATA = 0x38 (데이타값 입력)
>XXXX X000 (en하강 엣지 부분에서 데이터전달)
>
>이런식으로 진행되는게 맞나요?
>
>제가 재대로 이해한게 맞는지 모르겠습니다
>
>
>도움 감사드립니다!
|
||||
| 4660 | 답변완료AM-DC1-3D모델에서 24V 100W DC모타사용이 가능한지요 | 김영기 | 2010-03-06 | 1,470 |
|
제목데로 입니다.
불가하다면 PWM으로 콘트롤하는 대체 IC좀 소개해 주세요.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사드립니다.
보통 3A 정도까지 이용하는 정도로는 사용 가능하지만, 60W 정도죠.
가끔씩 순간적으로는 100W 모터도 사용 할 수 있지만, 풀토크로 연속적으로 사용하는 것은 모터 구동부가 망가지게 됩니다. 그리고, 이 경우 AM-DC1-3D 모델에서 방열판을 장착하여야 사용이 가능합니다.
따라서, 전체적으로 보면, 사용이 불가하겠습니다.
여러개의 MOSFET + H Bridge controller를 사용하여 컨트롤 하는 것이 좋겠습니다.
정확한 파트넘버까지 찾으려면, 개발 의뢰로 진행하시는 것이 좋겠습니다.
개발 의뢰를 하실 경우 홈페이지 상단의 Contact us 를 선택하시면 이메일로 연결됩니다.
수고하세요.
>제목데로 입니다.
>불가하다면 PWM으로 콘트롤하는 대체 IC좀 소개해 주세요.
>
|
||||
| 4659 | 답변완료안녕하세요 LCD질문 올립니다. | 이학경 | 2010-03-05 | 1,441 |
|
안녕하세요. 이제막 입문한 초보입니다.
다름이 아니라 avr키트를 구매하고 이걸 lcd에 연결하여 공부를 하고잇는데요
초보 강좌에서 제공한 소스
=============
#include <iom128v.h>
#include <macros.h>
//LCD define//
#define Control PORTB
#define Data PORTC
#define LCD_EN_ON (Control |=0x04)
#define LCD_EN_OFF (Control &=0x0b)
#define LCD_RW_ON (Control |=0x02)
#define LCD_RW_OFF (Control &=0x0d)
#define LCD_RS_ON (Control |=0x01)
#define LCD_RS_OFF (Control &=0x0e)
#define SCR_CLR Write_Controller(0x01)
#define FIR_HOME Write_Controller(0x02)
#define SEC_HOME Write_Controller(0xc0)
#define SCR_L_SHIFT Write_Controller(0x18)
#define SCR_R_SHIFT Write_Controller(0x1c)
#define CUR_LEFT Write_Controller(0x10)
#define CUR_RIGHT Write_Controller(0x14)
void delay(int cnt)
{int i,j;
for(i=0; i<cnt; i++){
for(j=0; j<600; j++);
}}
void Write_Controller(char value)
{
LCD_EN_OFF;
delay(1);
LCD_RS_OFF;
delay(1);
LCD_RW_OFF;
delay(1);
LCD_EN_ON;
delay(1);
Data=value;
delay(1);
LCD_EN_OFF;
delay(1);
}
void Write_Data(char value)
{
LCD_EN_OFF;
delay(1);
LCD_RS_ON;
delay(1);
LCD_RW_OFF;
delay(1);
LCD_EN_ON;
delay(1);
Data=value;
delay(1);
LCD_EN_OFF;
delay(1);
}
void lcd_init(){
Write_Controller(0x38);
Write_Controller(0x0e);
Write_Controller(0x06);
}
void main(){
init_devices();
DDRB=DDRC=0xff;
lcd_init();
SCR_CLR;
FIR_HOME;
Write_Data('H');
Write_Data('i');
Write_Controller(0xc0);
Write_Data('H');
Write_Data('A');
Write_Data('K');
Write_Data(' ');
Write_Data('J');
Write_Data('I');
Write_Data('N');
}
==============================
중에서 이해가 안되는 부분이 있어서 질문 드립니다.
void Write_Controller(char value)
{
LCD_EN_OFF;
delay(1);
LCD_RS_OFF;
delay(1);
LCD_RW_OFF;
delay(1);
LCD_EN_ON;
delay(1);
Data=value;
delay(1);
LCD_EN_OFF;
delay(1);
}
바로 이부분인데요
LCD_EN_OFF; -> 여기서 위의 #define에 적용한 값을 불러오게되면
(Control &=0x0b)값이 되고
control도 #define Control PORTB라고 했으니
결국 대입하면 PORTB&=0x0b가 되는거 아닙니까?
이게 어떤 의미를 갖는건지 이해가 되질 않습니다.
왜 굳이 이렇게 어렵게 써야하는지
이게 무슨뜻인지를 아에 모르겠습니다....
어떤걸 공부해야 할수있을까요
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
(and)&와 (or)| 연산을 통하여 그런 식으로 하는 것은,
그 특정 비트만 제어하기 위해서 사용하는 겁니다. 다른 비트의 값은 안건드리는 거죠.
아래를 참고해 보세요. 임베디드에서 사용하는 거라서, 일반 C 사용하는 분들은 잘 안쓰는 기능이긴 하죠. 하지만, 임베디드 쪽에서 익숙해 지시려면, 이렇게 쓰셔야 합니다.
#define 선언하는 것은 사실 함수로 쓸 수도 있는 데, 왜 define으로 굳이 하는 지 궁금하지 않으세요? 일단, 연산 속도가 매우 빠릅니다. 그 외에도 사용하기가 편리하구요. 일일이 계산할 필요가 없으니까요. 컴파일된 결과도 작게 만들수 있으니까요.
- 아래 -
http://www.newtc.co.kr/board/view.php?id=faq&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=36
수고하세요.
>안녕하세요. 이제막 입문한 초보입니다.
>
>다름이 아니라 avr키트를 구매하고 이걸 lcd에 연결하여 공부를 하고잇는데요
>
>초보 강좌에서 제공한 소스
>
>=============
>#include <iom128v.h>
>#include <macros.h>
>
>//LCD define//
>
>#define Control PORTB
>#define Data PORTC
>
>#define LCD_EN_ON (Control |=0x04)
>#define LCD_EN_OFF (Control &=0x0b)
>#define LCD_RW_ON (Control |=0x02)
>#define LCD_RW_OFF (Control &=0x0d)
>#define LCD_RS_ON (Control |=0x01)
>#define LCD_RS_OFF (Control &=0x0e)
>
>#define SCR_CLR Write_Controller(0x01)
>#define FIR_HOME Write_Controller(0x02)
>#define SEC_HOME Write_Controller(0xc0)
>#define SCR_L_SHIFT Write_Controller(0x18)
>#define SCR_R_SHIFT Write_Controller(0x1c)
>#define CUR_LEFT Write_Controller(0x10)
>#define CUR_RIGHT Write_Controller(0x14)
>
>
>void delay(int cnt)
>{int i,j;
>for(i=0; i<cnt; i++){
>for(j=0; j<600; j++);
>}}
>
>
>void Write_Controller(char value)
>{
>LCD_EN_OFF;
>delay(1);
>LCD_RS_OFF;
>delay(1);
>LCD_RW_OFF;
>delay(1);
>LCD_EN_ON;
>delay(1);
>Data=value;
>delay(1);
>LCD_EN_OFF;
>delay(1);
>}
>
>void Write_Data(char value)
>{
>LCD_EN_OFF;
>delay(1);
>LCD_RS_ON;
>delay(1);
>LCD_RW_OFF;
>delay(1);
>LCD_EN_ON;
>delay(1);
>Data=value;
>delay(1);
>LCD_EN_OFF;
>delay(1);
>}
>
>void lcd_init(){
>Write_Controller(0x38);
>Write_Controller(0x0e);
>Write_Controller(0x06);
>}
>
>void main(){
>init_devices();
>DDRB=DDRC=0xff;
>lcd_init();
>SCR_CLR;
>FIR_HOME;
>Write_Data('H');
>Write_Data('i');
>Write_Controller(0xc0);
>Write_Data('H');
>Write_Data('A');
>Write_Data('K');
>Write_Data(' ');
>Write_Data('J');
>Write_Data('I');
>Write_Data('N');
>}
>
>==============================
>
>중에서 이해가 안되는 부분이 있어서 질문 드립니다.
>
>void Write_Controller(char value)
>{
>LCD_EN_OFF;
>delay(1);
>LCD_RS_OFF;
>delay(1);
>LCD_RW_OFF;
>delay(1);
>LCD_EN_ON;
>delay(1);
>Data=value;
>delay(1);
>LCD_EN_OFF;
>delay(1);
>}
>바로 이부분인데요
>
>LCD_EN_OFF; -> 여기서 위의 #define에 적용한 값을 불러오게되면
>
>(Control &=0x0b)값이 되고
>
>control도 #define Control PORTB라고 했으니
>
>결국 대입하면 PORTB&=0x0b가 되는거 아닙니까?
>
>이게 어떤 의미를 갖는건지 이해가 되질 않습니다.
>
>왜 굳이 이렇게 어렵게 써야하는지
>이게 무슨뜻인지를 아에 모르겠습니다....
>
>어떤걸 공부해야 할수있을까요
|
||||
