Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 6998 | 답변완료FPGA 모듈 FM-CY6S 제품 회로도 또는 핀 정보 문의 드립니다. | 박진출 | 2012-01-26 | 1,273 |
|
안녕하십니까? 제품에 있어 문의 사항이 있습니다.
조만간 16x16 도트 매트릭스 모듈 20개를 이용하여 160x32 화소의 전광판을
구동시킬 계획에서 FPGA 모듈제품 FM-CY6S 제품을 구입하려고 합니다.
우선 참고로 확인하고 싶은 게 있어 설명서와 각종 자료실을 찾아 보았습니다만,
회로도나 핀 정보가 구체적으로 언급되어 있는 자료가 없는 것 같습니다.
문의에 대한 답변을 찾아보니 일부 제품은 회로도 제공이 불가능하다는 답변을
보았는데, 혹시 이 제품도 회로도의 제공이 불가능한지 궁금합니다.
회로도의 제공이 불가능하다면 보다 더 폭넓게 사용할 수 있도록 핀 정보라도
제공하여 주셨으면 하는 의견입니다. 감사합니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
본사의 FM-CY6-DEV FPGA 개발 키트를 구매하시면 그 안에, 각종 예제와 함께 회로도 등도 함께 제공되고 있습니다만, 모듈에는 그런 내용이 들어있지 않습니다.
하지만, 말씀하신 핀번호 데이터는 제공 가능하며, 각종 강좌는 온라인강좌 -> FPGA 강좌에서 다운로드 받으실 수 있습니다.
수고하세요.
>
>
> 안녕하십니까? 제품에 있어 문의 사항이 있습니다.
>
> 조만간 16x16 도트 매트릭스 모듈 20개를 이용하여 160x32 화소의 전광판을
> 구동시킬 계획에서 FPGA 모듈제품 FM-CY6S 제품을 구입하려고 합니다.
>
> 우선 참고로 확인하고 싶은 게 있어 설명서와 각종 자료실을 찾아 보았습니다만,
> 회로도나 핀 정보가 구체적으로 언급되어 있는 자료가 없는 것 같습니다.
>
> 문의에 대한 답변을 찾아보니 일부 제품은 회로도 제공이 불가능하다는 답변을
> 보았는데, 혹시 이 제품도 회로도의 제공이 불가능한지 궁금합니다.
>
> 회로도의 제공이 불가능하다면 보다 더 폭넓게 사용할 수 있도록 핀 정보라도
> 제공하여 주셨으면 하는 의견입니다. 감사합니다.
>
|
||||
| 6997 | 답변완료AB-M16-B 회로 질문요! | 베테랑 | 2012-01-25 | 1,422 |
|
수고가 많으십니다.
다름 아니라 귀사에 개발보드를 이용하여 제품 개발 활용을 할 예정으로 avr16개발보드를 구매 하였습니다.
펌웨어 개발 도중 아래와 같은 하드웨어 구성으로 CLCD 프로그래밍을 하고 있는 데 LCD 출력이 안되네요!
-하드웨어 커넥션 구성
AVR 16 개발보드 PORTB <----> CLCD모듈 CON(RS,RW,EN)
AVR 16 개발보드 PORTD <----> CLCD모듈 DB(D0,D1,D2,D3,D4,D5,D6,D7)
제 생각으로는 PD2,PD3에 회로에 캐패시터에 영향에 의해서
LCD Data Bus에 HIGH, LOW 신호에 지연(C 충전값)이 발생하는 듯 싶은데!
맞는지 궁금하네요!
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
PORTB에 ISP 단자가 있습니다.
그 핀들 중에서 특히 SCK 핀 즉, PB7의 경우 말씀하신 커패시터가 병렬로 연결되게 되면,
말씀하신 문제가 발생하여 다운로드가 잘 되지 않게 됩니다.
PD0-7의 데이터의 경우, 말씀하신 문제가 발생할 가능성이 충분히 있을 것 같습니다. 또한, 풀다운 저항을 통해서 평소에 0으로 당겨지고 있는 데, 그 부분 또한 문제가 될 수 있습니다.
그 부분의 회로를 잘라내고 테스트 해 보시거나, 다른 포트를 사용하는 것이 좋겠습니다. PORTC와 PORTA로 옮겨보면 확실히 알 수 있겠네요.
수고하세요.
>
>
> 수고가 많으십니다.
>
> 다름 아니라 귀사에 개발보드를 이용하여 제품 개발 활용을 할 예정으로 avr16개발보드를 구매 하였습니다.
>
> 펌웨어 개발 도중 아래와 같은 하드웨어 구성으로 CLCD 프로그래밍을 하고 있는 데 LCD 출력이 안되네요!
>
> -하드웨어 커넥션 구성
>
> AVR 16 개발보드 PORTB <----> CLCD모듈 CON(RS,RW,EN)
> AVR 16 개발보드 PORTD <----> CLCD모듈 DB(D0,D1,D2,D3,D4,D5,D6,D7)
>
> 제 생각으로는 PD2,PD3에 회로에 캐패시터에 영향에 의해서
> LCD Data Bus에 HIGH, LOW 신호에 지연(C 충전값)이 발생하는 듯 싶은데!
> 맞는지 궁금하네요!
>
|
||||
| 6996 | 답변완료USBISP V03.5 인식 문제 | 질문자 | 2012-01-23 | 1,441 |
|
USBISP 3.5사용하고 있는데요. 몇일전까지만해도 컴퓨터에서 잘 인식되고 잘사용하고 있었는데,
오늘 사용해보니 컴퓨터에서 인식을 못해요. 잘됬었을때는 USBISP에서 초록불이랑 파랑불이 나왔던것 같은데
지금은 컴퓨터 장치관리자 들어가보면 인식도 안되있고 USBISP에서는 초록불만 나오고 만져보면 쫌 뜨껍습니다.
망가진건가요 AS받아야 되는 건가요? 만약 AS받아야 되는거면 어떻게 해야하나요?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
본사로 보내주시면 A/S 가능합니다.
A/S 비용은 9,900원이구요. 직원들 휴가 중이라 혹시 수요일날 오시거나 택배 보내시면, 이번건은 아예 새 제품으로 교체해 드리겠습니다.
수고하세요.
>
>
> USBISP 3.5사용하고 있는데요. 몇일전까지만해도 컴퓨터에서 잘 인식되고 잘사용하고 있었는데,
> 오늘 사용해보니 컴퓨터에서 인식을 못해요. 잘됬었을때는 USBISP에서 초록불이랑 파랑불이 나왔던것 같은데
> 지금은 컴퓨터 장치관리자 들어가보면 인식도 안되있고 USBISP에서는 초록불만 나오고 만져보면 쫌 뜨껍습니다.
> 망가진건가요 AS받아야 되는 건가요? 만약 AS받아야 되는거면 어떻게 해야하나요?
>
|
||||
| 6995 | 답변완료8051 안내 웹페이지 링크가 손상되서 이미지가 안보이네요. | 초보자 | 2012-01-22 | 1,357 |
|
8051 안내 웹페이지 링크가 손상되서 이미지가 안보이네요.
초보자로서 8051 공부했는데
최근 추세가 변해서 8051에 다들 관심이 없는 걸까요?
저는 PC에 USB 연결해서 데이터를 주고받는 계측장비 분야를 공부하고 있습니다.
조언 부탁드립니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
서버에 문제가 있어서 생긴 문제였습니다.
지금은 해결하여 두었으니, 이미지가 다 보이실 겁니다.
온라인 강좌에서 8051 강좌도 참고하시기 바랍니다.
수고하세요.
>
>
> 8051 안내 웹페이지 링크가 손상되서 이미지가 안보이네요.
> 초보자로서 8051 공부했는데
> 최근 추세가 변해서 8051에 다들 관심이 없는 걸까요?
> 저는 PC에 USB 연결해서 데이터를 주고받는 계측장비 분야를 공부하고 있습니다.
> 조언 부탁드립니다.
>
|
||||
| 6994 | 답변완료AM-MS2 가변저항 문의 2 | 김성환 | 2012-01-21 | 1,282 |
|
주말 늦은 시간인데도 답변을 해주셔서 감사합니다.
그런데 가장 궁금했던 "저항을 돌리는 방향에 따른 전류의 변화"에 대한 답변이 안 보입니다.
가장 시계방향으로 돌려놓는 게 출력 전류가 낮은 상태가 맞는 거죠?
전압을 재서 확인을 하긴 했지만 "토크 조절" 트리머라서 그런지
왠지 시계방향으로 돌리면 토크가 강해질 것 같은 착각이 드네요.
그리고 Rs 저항의 바깥색으로 판단하는 방법은 FAQ에 있는 글에서 봤었는데요.
아래 글에서 언급한 것처럼 한 쪽이 고장난 것 같아서 AM-MS2를 새로 하나 더 구입했는데,
이전에 쓰던 건 저항이 녹색 바탕에 갈흑금금(1옴)이고
새로 구입한 건 녹색 바탕에 녹흑은금(0.5옴)이네요.
바탕색으로만 판단하면 안 될 것 같습니다.
관리자 답변
안녕하세요? 고객님,
네, 시계 반대방향(CCW)으로 돌리면, 출력가능 토크가 높아지게 됩니다.
그리고, 바탕색 관련된 조언에도 감사드립니다.
정정합니다. ^^ 바탕색보지 마시고, 칼라코드를 보고 하는 게 정확한 것 같습니다.
일반 고객님들 알기 쉬우시라고 그렇게 말씀드린 건데, 그렇지 않은 것도 있으니, 꼭 칼라코드 보세요.
수고하세요.
>
>
> 주말 늦은 시간인데도 답변을 해주셔서 감사합니다.
>
> 그런데 가장 궁금했던 "저항을 돌리는 방향에 따른 전류의 변화"에 대한 답변이 안 보입니다.
> 가장 시계방향으로 돌려놓는 게 출력 전류가 낮은 상태가 맞는 거죠?
> 전압을 재서 확인을 하긴 했지만 "토크 조절" 트리머라서 그런지
> 왠지 시계방향으로 돌리면 토크가 강해질 것 같은 착각이 드네요.
>
> 그리고 Rs 저항의 바깥색으로 판단하는 방법은 FAQ에 있는 글에서 봤었는데요.
> 아래 글에서 언급한 것처럼 한 쪽이 고장난 것 같아서 AM-MS2를 새로 하나 더 구입했는데,
> 이전에 쓰던 건 저항이 녹색 바탕에 갈흑금금(1옴)이고
> 새로 구입한 건 녹색 바탕에 녹흑은금(0.5옴)이네요.
> 바탕색으로만 판단하면 안 될 것 같습니다.
>
|
||||
| 6993 | 답변완료AM-MS2 가변저항 방향 문의 | 김성환 | 2012-01-21 | 1,401 |
|
AM-MS2의 가변저항에 따른 Vref 값을 측정해봤는데
제일 반시계방향으로 돌렸을 때 1.79V
제일 시계방향으로 돌렸을 때 0.01V 정도 나옵니다.
I = Vref / Rs 이니
가변저항을 반시계방향으로 돌릴수록 모터에 흐르는 전류가 높아지는건가요?
보통 돌리는 스위치는 시계방향으로 돌릴수록 힘이 세지는 거라고 생각해서
제일 반시계방향으로 돌려놓는 게 제일 약한 출력이라고 생각해서
테스트할 때 매번 제일 반시계방향으로 돌려놓고 시작했었는데,
Vref를 재보니 당황스럽네요.
자주 사용하던 오른쪽 드라이버가 고장이 난 것 같은데 이것 때문인지...
가변저항을 돌리는 방향에 따른 출력 전류의 변화가 어떻게 되는지 궁금합니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주ㅕ서 감사합니다.
트립 저항을 0.5옴으로 R611, R604, R612, R603에 사용할 경우,
I trip = Vref / R, (단, I trip은 최대전류치 ) 여기서 트립 저항을 0.5옴을 쓰면, 1.5 / 0.5 즉,
Vref입력은 최대 1.5V이고 회로는 현재 0.5옴을 사용하므로 최대 3A까지 사용이 가능합니다. 실제는 최대 전류치가 IC의 상태나 회로에 사용된 저항 등에 의해 약간의 오차가 있을 수 있습니다.
모듈에서 저항을 구별하는 쉬운 방법은 중간의
본사에서 달아 나가는 큰 저항의 바깥 색깔이 주황색이면 1옴이고, 녹색이면 0.5옴입니다.
즉, 현재 0.5옴으로 장착하여 나가므로, 200mA - 3A까지 사용 가능합니다.
하지만, 가변 저항에 걸린 전압을 크게 한다고만 좋은 것은 아니며, 작게한다고만 좋은 것은 아닙니다.
항상 동작시마다 테스트 해서, 적정한 곳을 선정하여 사용하는 것이 좋습니다.
수고하세요.
>
>
> AM-MS2의 가변저항에 따른 Vref 값을 측정해봤는데
> 제일 반시계방향으로 돌렸을 때 1.79V
> 제일 시계방향으로 돌렸을 때 0.01V 정도 나옵니다.
>
> I = Vref / Rs 이니
> 가변저항을 반시계방향으로 돌릴수록 모터에 흐르는 전류가 높아지는건가요?
>
> 보통 돌리는 스위치는 시계방향으로 돌릴수록 힘이 세지는 거라고 생각해서
> 제일 반시계방향으로 돌려놓는 게 제일 약한 출력이라고 생각해서
> 테스트할 때 매번 제일 반시계방향으로 돌려놓고 시작했었는데,
> Vref를 재보니 당황스럽네요.
>
> 자주 사용하던 오른쪽 드라이버가 고장이 난 것 같은데 이것 때문인지...
>
> 가변저항을 돌리는 방향에 따른 출력 전류의 변화가 어떻게 되는지 궁금합니다.
>
|
||||
| 6992 | 답변완료무통장입금으로 물건을 구매하려는데 영수증,세금계산서 | 전진기 | 2012-01-20 | 1,278 |
|
무통장입금으로 물건을 구매하려는데 영수증,세금계산서는 어떻게 받을 수 있나요??
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
구매하시는 과정에 있는 내용을 빠짐없이 기입해 주시구요.
본사로 회사 사업자 등록증 + 통장사본 을 팩스(02-704-4733)으로 보내신 후,
전화 주시면 됩니다. 그러면, 전자세금 계산서를 이메일로 발급해 드립니다.
감사합니다.
>
>
> 무통장입금으로 물건을 구매하려는데 영수증,세금계산서는 어떻게 받을 수 있나요??
>
|
||||
| 6991 | 답변완료atmega128, atmega2561 포트에 대한 궁금증 | 이인준 | 2012-01-20 | 1,232 |
|
여러해동안 귀사의 제품을 이용하고 있습니다.
AB-M128-B 보드에 AM-128PL를 주로 사용하였으나 AM-2561PRO 보드를 꼽아서 사용할려고 하던중에 포트에 대해 의문시 되는 사항이 있어 질문하게 되엇습니다.
atmega 128, atmega2561 공히 PE1, PE2 가 통신 포트 TXD0, RXD0로만 사용하였는데 금일 보니까 ISP의 MISO, MOSI에 연결되어 사용중임을 알았습니다. PB2, PB1의 MOSI, MISO로만 알고 있었거든요, 어떻게 된거죠 ?
답변 부탁드립니다.
연락처는 01032571159
입니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 여러해 이용하여 주셔서 감사드립니다.
원래 ATMEGA64, 128, 2561, 2560 같은 제품들은 MOSI, MISO 라인 대신 PDI, PDO를 이용하고 있습니다.
데이터 시트 상에 나와 있어요.
SPI 통신과는 별도로 다운로딩 전용으로 만들어 둔 거라고 합니다.
수고하세요.
>
>
> 여러해동안 귀사의 제품을 이용하고 있습니다.
> AB-M128-B 보드에 AM-128PL를 주로 사용하였으나 AM-2561PRO 보드를 꼽아서 사용할려고 하던중에 포트에 대해 의문시 되는 사항이 있어 질문하게 되엇습니다.
>
> atmega 128, atmega2561 공히 PE1, PE2 가 통신 포트 TXD0, RXD0로만 사용하였는데 금일 보니까 ISP의 MISO, MOSI에 연결되어 사용중임을 알았습니다. PB2, PB1의 MOSI, MISO로만 알고 있었거든요, 어떻게 된거죠 ?
> 답변 부탁드립니다.
> 연락처는 01032571159
> 입니다.
>
|
||||
| 6990 | 답변완료질문이요^^ | 최예한 | 2012-01-19 | 1,422 |
|
안녕하세요. 사장님
다름아니라 궁금 사항이 2가지 질문이 있었습니다.
첫번째는 첨 스태핑 모타구동이 시계방향으로 돌아 반시계방향으로 오는 것이었습니다만,
-- 사장님꼐서 도움 주심 파일은 처음 시작점이 반시계 반향 ^^.
** 고민끝에 소스을 이것 저것 운좋게.. 방향법을 알었습니다.
*** 제일 중요한 부분은
두번째로 도움주신 스태핑 왕복운동 소스에 선 버튼 누름시 시작부터 끝 마루리까지는 정상적으로
이루워 집니다.
다만, 다시한번 동작을 하려면 전원 또는 reset버튼을 누르고 작동 버튼을 눌러야 하는 번거로움이 없지않아 있는데...
이런거 보안하려면 어찌해야 되는지?
원본은 소중한거라 잘 보관되어. 복사 본으로 이것저것 다른소스를 비교하고 입력해서 보곤하는데...
통...모르겠더라구여.
사장님께서 늘 바쁘시지만, 시간되실때. 어디를 어떻게 해야되는지 소스 수정을 해주시면....
처음 원본과 대조해 보며 그 부분을 과 필요했던 문재점을 잘 알수있고 쉽게 이해될거 같다라는 제의견을 적어보네드립니다.
안된다 하시더라도 답변을 부탁드립니다.
첫날 배운것에 도움이 많이된거 같습니다. 방향 전환 문재를 풀었습니다. 운이 좋았다고 생각되지만.,
건강하세요.
관리자 답변
안녕하세요?
지난 번에 짜드린 소스는 구조상 한 번 동작하면 대기 상태에서는 다시 다음 명령을 기다리기 떄문에,
원칙적으로 버튼 누르는 것에 따라서, 계속 동작하는 것인데, 무슨 말인지 잘 이해가 안갑니다.
또한, 미안하지만, 소스는 계속 짜드리기는 어렵겠습니다. 원래 저희가 소스를 짜드리지는 않습니다.
자세히 질문하여 주세요.
수고하세요.
>
>
> 안녕하세요. 사장님
>
> 다름아니라 궁금 사항이 2가지 질문이 있었습니다.
>
> 첫번째는 첨 스태핑 모타구동이 시계방향으로 돌아 반시계방향으로 오는 것이었습니다만,
> -- 사장님꼐서 도움 주심 파일은 처음 시작점이 반시계 반향 ^^.
> ** 고민끝에 소스을 이것 저것 운좋게.. 방향법을 알었습니다.
>
> *** 제일 중요한 부분은
>
> 두번째로 도움주신 스태핑 왕복운동 소스에 선 버튼 누름시 시작부터 끝 마루리까지는 정상적으로
> 이루워 집니다.
>
> 다만, 다시한번 동작을 하려면 전원 또는 reset버튼을 누르고 작동 버튼을 눌러야 하는 번거로움이 없지않아 있는데...
>
> 이런거 보안하려면 어찌해야 되는지?
>
> 원본은 소중한거라 잘 보관되어. 복사 본으로 이것저것 다른소스를 비교하고 입력해서 보곤하는데...
>
> 통...모르겠더라구여.
>
> 사장님께서 늘 바쁘시지만, 시간되실때. 어디를 어떻게 해야되는지 소스 수정을 해주시면....
>
> 처음 원본과 대조해 보며 그 부분을 과 필요했던 문재점을 잘 알수있고 쉽게 이해될거 같다라는 제의견을 적어보네드립니다.
>
> 안된다 하시더라도 답변을 부탁드립니다.
>
> 첫날 배운것에 도움이 많이된거 같습니다. 방향 전환 문재를 풀었습니다. 운이 좋았다고 생각되지만.,
>
> 건강하세요.
>
|
||||
| 6989 | 답변완료AD-USBISP++V4에서 ISP Mode Error 관련 | 심경섭 | 2012-01-19 | 1,402 |
|
안녕하세요.
AD-USBISP++V4로 새 칩에 프로그래밍하려는데
ISP Mode Error라고 뜨면서 더 이상 진행이 어렵네요.
환경:
Windows XP Pro. 32bit
WinAvr + AVR Studio 4.19
AVR Studio->Tools->...->ISP Freq: 1.21kHz(다른 것도 증상 동일)
AVR이 새칩이고, 기본 fuse 값이 Int.RC Osc. 1MHz라고 스펙이 나와있어,
외부 XTAL는 사용 안함(사용해도 증상 동일함 ㅡㅡ;)
Target:
ATtiny45-20PU
ATMEGA8L-8PU
ATMEGA8-16PU
회로는 단순하게 USBISP-컨버팅 보드 6핀-각 AVR 칩의 해당 PIN에 연결, AVR을 빵판에서 RESET Vcc 10K 풀업, Vcc 5V 외부 전원/GND 연결(외부 XTAL 유/무 증상 동일함)
증상:
AVR 칩을 새로 구입하여 처음 구우려 시도함(fuse/lock 비트 미설정 상태)
AVR Studio->Tools->Program AVR->Connect->STK500, COM4로 Connect하면 다음과 같이 표시됨
Detecting on 'COM4'...
STK500 with V2 firmware found on COM4
Getting revisions.. HW: 0x02, SW Major: 0x02, SW Minor: 0x0a .. OK
Getting isp parameter.. SD=0xfe .. OK
Device Atmega8 선택, Signature not read라고 표시되어 있어, Read Signature를 누르면
ISP Mode Error라는 창 뜸
(위 target 칩 모두 동일함)
USBISP의 ISP Connection 파란 LED가 들어오지 않거나 깜빡일 때도 있고,
항상 켜져 있지 않음
(보드 공급 전압은 5V로 이상없음, USBISP 커넥터로도 Vcc 5V 확인 )
Target 칩부터 USBISP 커넥터 까지는 배선 이상 없음
다른 보드가 없어 더 이상 확인이 어려워 질문 남김니다.
어떤 부분을 확인해 봐야 할 까요?
관리자 답변
안녕하세요? 고객님,
답변 드리겠습니다.
> AD-USBISP++V4로 새 칩에 프로그래밍하려는데
> ISP Mode Error라고 뜨면서 더 이상 진행이 어렵네요.
>
> 환경:
> Windows XP Pro. 32bit
> WinAvr + AVR Studio 4.19
> AVR Studio->Tools->...->ISP Freq: 1.21kHz(다른 것도 증상 동일)
===> STK500은 최소 5kHz 이상으로 ISP Freq.를 사용하도록 되어 있으며,
또한, 최소한 사용 클럭의 1/4 이하를 사용하면 됩니다.
즉, 내부 클럭으로 한다고 해도 처음 써도 460kHz나 115kHz 등으로 쓰시면 되겠습니다.
처음 쓰는 새 칩에 1.8MHz 쓰면 당연히 에러가 나게 되죠.
본사의 USBISP V3.5 이하는 그렇게 해도 알아서 맞춰서 내려쓰기 떄문에 문제가 안 생기지만,
속도가 USBISP+ V4.0 보다는 아무래도 느리게 되구요. USBISP+V4.0은 최고 속도에 맞춰서 디자인 한 것이라서, 최고 속도로 사용하려면, 그런 점들을 고려하여 처음쓸 때는 ISP Freq를 내려서 써야 하겠습니다.
> AVR이 새칩이고, 기본 fuse 값이 Int.RC Osc. 1MHz라고 스펙이 나와있어,
> 외부 XTAL는 사용 안함(사용해도 증상 동일함 ㅡㅡ;)
>
>
> Target:
> ATtiny45-20PU
> ATMEGA8L-8PU
> ATMEGA8-16PU
>
> 회로는 단순하게 USBISP-컨버팅 보드 6핀-각 AVR 칩의 해당 PIN에 연결, AVR을 빵판에서 RESET Vcc 10K 풀업, Vcc 5V 외부 전원/GND 연결(외부 XTAL 유/무 증상 동일함)
==> 리셋단은 단순히 풀업만 시키는 것이 아니라, 커패시터 등으로 RC 타이밍을 만들어 내서, 자연스럽게 리셋하면 High로 올라가도록 타이밍을 조절해 가면서 해야 합니다.
>
>
> 증상:
> AVR 칩을 새로 구입하여 처음 구우려 시도함(fuse/lock 비트 미설정 상태)
> AVR Studio->Tools->Program AVR->Connect->STK500, COM4로 Connect하면 다음과 같이 표시됨
>
> Detecting on 'COM4'...
> STK500 with V2 firmware found on COM4
> Getting revisions.. HW: 0x02, SW Major: 0x02, SW Minor: 0x0a .. OK
> Getting isp parameter.. SD=0xfe .. OK
>
> Device Atmega8 선택, Signature not read라고 표시되어 있어, Read Signature를 누르면
> ISP Mode Error라는 창 뜸
> (위 target 칩 모두 동일함)
==> 위에서 설정하신 ISP Freq.가 너무 낮네요.
>
> USBISP의 ISP Connection 파란 LED가 들어오지 않거나 깜빡일 때도 있고,
> 항상 켜져 있지 않음
> (보드 공급 전압은 5V로 이상없음, USBISP 커넥터로도 Vcc 5V 확인 )
==> ISP 연결이 되지 않는 것으로 보입니다. 위에서 말씀드린 것들을 해보세요.
>
> Target 칩부터 USBISP 커넥터 까지는 배선 이상 없음
>
> 다른 보드가 없어 더 이상 확인이 어려워 질문 남김니다.
> 어떤 부분을 확인해 봐야 할 까요?
>
자작 보드인 경우, 많은 변수가 있습니다만, 일단, 위에서 말씀드린 대로 해 보는 게 좋겠습니다.
그리고, 전문가용보다는 많이 사용해 보지 않으셨을 때는 조금 속도가 상대적으로 늦더라도 일반용 V03.5를 쓰는 것이 좋지 않을까 싶습니다. 사용자에게 맞춰 주니까요.
수고하세요.
|
||||
| 6988 | 답변완료atmega128로 usart 통신 하려고 하는데요. 문제가 있습니다. | 박진수 | 2012-01-18 | 1,389 |
|
현재 당사의 usb isp 를 가지고 usart통신을 시도 중에 있습니다. 물론 이 isp 장비로 다운로더 기능이 있는
6핀과 usart통신으로 쓰이는 4핀을 동시에 사용하고 있지는 않습니다. usart통신핀만 끼워 놓았습니다.
그리고 1번 스위치를 on으로 해놓고 2번 스위치는 내려 놓았고요.
소스는 다음과 같습니다.
#include <mega128.h>
#include <delay.h>
void main(void){
UCSR0B=8; UBRR0H=0; UBRR0L=103; // 16MHz, 9600
UCSR1B=8; UBRR1H=0; UBRR1L=103; // 16MHz, 9600
while(1){ UDR0='0'; UDR1='1'; delay_ms(1000); }
}
이 소스는 문제가 없습니다. 제 친구가 usart통신 테스트 용으로 썻던거고 잘 되었다고
했기때문에 그런데 혹시 일단 소스 검사 부탁드릴게요.
그런데 제 꺼에 넣어서 하이퍼터미널을 키니깐 안나오내요. 아 참
정확히 저는 하이퍼터미널을
사용하지 않구요. serial com 이라는 프로그램을 사용하고 있습니다.
이 프로그램 파일은 위에 첨부할게요.
하이퍼터미널 보다 좋은거 같은데, 기능은 똑같은거 같거든요?
위에 소스에서 보다 싶히 1초당 0,과 1 값이 컴퓨터 RX 창 부분에
떠야 되는데 안되네요.;;;;; 뭐가 문제이죠?
더 정확한 현재 상태를 말씀드릴게요
현재 usb isp 두개를 사서 사용하고 있고 한개는 다운로더 기능으로 한개는 usart 통신 기능으로 사용
중입니다.
usart 핀은 거꾸로 끼우지 않았고 정확하게 꽃았는 상태 입니다. 문제가 무엇인지 모르겠습니다.
아 참 그리고 보트레이트와 정지비트수는 당연히 정확히 맞추어 주었습니다
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
USBISP가 두 개 꼽히면서 충돌난 문제일 가능성이 있습니다.
둘 다 제어판--> 시스템--> 하드웨어 장치관리자 --> 포트에서 잘 잡혔는 지 확인하여 주세요.
아니라면, 컴퓨터 뒤에 보면 보통 4개가 USB포트가 있는 데,
사실은 두 개씩 한 묶음인데, 같은 포트에서 USB 허브로 내부에서 만들어져서 나오는 거라,
그 두 쌍인 곳에 꽂으면 충돌 날 수도 있습니다.
그러므로, 충돌나지 않는 구조로 꽂아서 쓰시면 됩니다.
그것을 확인하여 보세요.
수고하세요.
>
>
> 현재 당사의 usb isp 를 가지고 usart통신을 시도 중에 있습니다. 물론 이 isp 장비로 다운로더 기능이 있는
>
> 6핀과 usart통신으로 쓰이는 4핀을 동시에 사용하고 있지는 않습니다. usart통신핀만 끼워 놓았습니다.
>
> 그리고 1번 스위치를 on으로 해놓고 2번 스위치는 내려 놓았고요.
>
> 소스는 다음과 같습니다.
>
>
> #include <mega128.h>
> #include <delay.h>
>
>
>
> void main(void){
> UCSR0B=8; UBRR0H=0; UBRR0L=103; // 16MHz, 9600
> UCSR1B=8; UBRR1H=0; UBRR1L=103; // 16MHz, 9600
> while(1){ UDR0='0'; UDR1='1'; delay_ms(1000); }
> }
>
>
> 이 소스는 문제가 없습니다. 제 친구가 usart통신 테스트 용으로 썻던거고 잘 되었다고
>
> 했기때문에 그런데 혹시 일단 소스 검사 부탁드릴게요.
>
> 그런데 제 꺼에 넣어서 하이퍼터미널을 키니깐 안나오내요. 아 참
>
> 정확히 저는 하이퍼터미널을
>
> 사용하지 않구요. serial com 이라는 프로그램을 사용하고 있습니다.
>
> 이 프로그램 파일은 위에 첨부할게요.
>
> 하이퍼터미널 보다 좋은거 같은데, 기능은 똑같은거 같거든요?
>
> 위에 소스에서 보다 싶히 1초당 0,과 1 값이 컴퓨터 RX 창 부분에
>
> 떠야 되는데 안되네요.;;;;; 뭐가 문제이죠?
>
> 더 정확한 현재 상태를 말씀드릴게요
>
> 현재 usb isp 두개를 사서 사용하고 있고 한개는 다운로더 기능으로 한개는 usart 통신 기능으로 사용
>
> 중입니다.
>
> usart 핀은 거꾸로 끼우지 않았고 정확하게 꽃았는 상태 입니다. 문제가 무엇인지 모르겠습니다.
>
> 아 참 그리고 보트레이트와 정지비트수는 당연히 정확히 맞추어 주었습니다
>
|
||||
| 6987 | 답변완료AVR MEGA 128 RAM 모듈 시리얼통신 | 초보 | 2012-01-18 | 1,373 |
|
AVR MEGA 128 RAM 모듈로 시리얼 통신을 하려고 합니다.
프로그램을 입력 시키고 입력된 프로그램으로 인해 발생하는 데이터를 시리얼 통신을 이용해 수신하려고 하는데 9핀을 납땜 하려는 과정에서 데이터를 받고 보내고 그리고 그라운드 되는 2,3,5번과 대응되는 핀(홈페이지 그림상 왼쪽 밑에 핀)이 어느 순서로 되어야하는지 확실히 몰라 납땜을 못하고 있습니다.
도움 부탁드립니다.
아 그리고 제품 상세보기에 들어가면 개요와 구성도 부분에 뜨는 그림이 뜨지 않습니다. 확인 부탁 드릴게요
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
일단, 해당 홈페이지 페이지를 복구하여 두었습니다.
그 페이지에 가시면 보실 수 있구요.
또한, 자료실에서 128RAM 메뉴얼 확인하셔서 보시면서 하세요.
소스들도 자료실에서 다운로드 받으시면 됩니다.
UART나 printf 등으로 검색하시면 됩니다.
수고하세요.
>
>
> AVR MEGA 128 RAM 모듈로 시리얼 통신을 하려고 합니다.
> 프로그램을 입력 시키고 입력된 프로그램으로 인해 발생하는 데이터를 시리얼 통신을 이용해 수신하려고 하는데 9핀을 납땜 하려는 과정에서 데이터를 받고 보내고 그리고 그라운드 되는 2,3,5번과 대응되는 핀(홈페이지 그림상 왼쪽 밑에 핀)이 어느 순서로 되어야하는지 확실히 몰라 납땜을 못하고 있습니다.
> 도움 부탁드립니다.
>
> 아 그리고 제품 상세보기에 들어가면 개요와 구성도 부분에 뜨는 그림이 뜨지 않습니다. 확인 부탁 드릴게요
>
|
||||
| 6986 | 답변완료kd-128pro / am-glcd-p 사용하고 있는데요.. | 김성경 | 2012-01-18 | 1,547 |
|
이곳 자료실에서 다운받은 glcd 구동 소스는 icc-avr 용이던데요..
이 소스를 avr studio 에서 구동시키려면, 어떤 걸 바꿔줘야 하나요?ㅜ
@GLCD.C
// Target : M128
// Crystal: 16Mhz
#include <iom128v.h>
#include <macros.h>
#include "FONTK52.h"
#include "GLCDK52.h"
//ICC-AVR application builder : 2006-06-13 오후 10:18:26
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0xFF;
PORTC = 0x00; //m103 output only
DDRC = 0xFF;
PORTD = 0x00;
DDRD = 0xFF;
PORTE = 0x00;
DDRE = 0x00;
PORTF = 0x00;
DDRF = 0x00;
PORTG = 0x00;
DDRG = 0x00;
}
//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();
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 main(void)
{
unsigned char i;
init_devices();
//insert your functional code here...
//for(i=0;i<100;i++)
//delay(60000);
lcd_init(); /* initialize GLCD */
lcd_clear();
//lcd_xy(0,0);
//lcd_string(0,0,"안녕하세요!!");
//write_data(CS_ALL,0xff);
while(1)
{
lcd_string(0,0," 현대 LCD ");
lcd_string(1,0," HG12605NY-LY ");
lcd_string(2,0," 삼성 SDI ");
lcd_string(0,0,"UG-13B04-SEAT5-E");
lcd_string(1,0,"GLCD128X64 V1.0");
lcd_string(1,0,"128x64 그래픽LCD");
lcd_string(2,0," 8x16도트 ASCII ");
lcd_string(3,0,"16x16도트 조합형");
delay(50000);
delay(50000);
delay(50000);
lcd_xy(0,0);
for(i = 0x00; i <= 0x0F; i++)
GLCD_English(i);
lcd_xy(1,0);
for(i = 0x10; i <= 0x1F; i++)
GLCD_English(i);
lcd_string(2,0," !");
GLCD_English(0x22);
lcd_string(2,0,"#$%&'()*+,-./");
lcd_string(3,0,"0123456789:;<=>?");
lcd_string(0,0,"@ABCDEFGHIJKLMNO");
lcd_string(1,0,"PQRSTUVWXYZ[");
GLCD_English(0x5C);
lcd_string(1,13,"]^_");
lcd_string(2,0,"`abcdefghijklmno");
lcd_string(3,0,"pqrstuvwxyz{|}~");
GLCD_English(0x7F);
delay(50000);
delay(50000);
delay(50000);
lcd_string(0,0," * 배우자 * ");
lcd_string(1,0,"마이크로프로세서");
lcd_string(2,0," * 익히자 * ");
lcd_string(3,0,"마이크로콘트롤러");
delay(50000);
delay(50000);
delay(50000);
lcd_string(0,0,"1988 서울 올림픽");
lcd_string(1,0,"2002 월드컵 축구");
lcd_string(2,0,"오~ 필승 KOREA !");
lcd_string(3,0,"대한민국 화이팅!");
delay(50000);
delay(50000);
delay(50000);
lcd_string(0,0,"어려운 한글글자");
lcd_string(1,0," 값광깎꼴꿍넋똘 ");
lcd_string(2,0," 뛸빵뽕삯쏼쑹웬 ");
lcd_string(3,0," 짱쭝첸콸튈펑황 ");
delay(50000);
delay(50000);
delay(50000);
}
}
@FONTK52.H 는 수정할 필요 없을 거 같구요..
@GLCDK52.C
typedef unsigned char byte;
typedef unsigned int word;
#define LCD_OUTP PORTD
#define LCD_INP PIND
#define LCD_CTRL PORTB
#define DISPON 0x3f
#define DISPOFF 0x3e
#define DI 0x01
#define RW 0x02
#define E 0x04
#define CS1 0x08
#define CS2 0x10
#define CS_ALL 0x18
#define SetDI(m) m?(LCD_CTRL|=DI): (LCD_CTRL&=~DI)
#define SetRW(m) m?(LCD_CTRL|=RW): (LCD_CTRL&=~RW)
#define SetE(m) m?(LCD_CTRL|=E): (LCD_CTRL&=~E)
#define SetCS1(m) m?(LCD_CTRL|=CS1):(LCD_CTRL&=~CS1)
#define SetCS2(m) m?(LCD_CTRL|=CS2):(LCD_CTRL&=~CS2)
byte xcharacter, ycharacter; /* x character(0-3), y character(0-15) */
byte cursor_flag, cursorx, cursory; /* x and y cursor position(0-3, 0-15) */
byte Korean_buffer[32]; /* 32 byte Korean font buffer */
/*-------------------------------------------------------------------------*/
/* 시간 지연 루틴 */
void delay( word del )
{
while( del-- );
}
/*
unsigned char read_status(void)
{
unsigned char dat=0;
LCD_CTRL = CS_ALL | DI;
SetE(1);
delay(10);
SetE(0);
dat = LCD_INP;
delay(10);
LCD_CTRL=0x00;
delay(100);
return dat;
}
*/
/* 비지 플래그 체크 */
/*
void check_bf(void)
{
while(read_status() & 0x80 );
}
unsigned char read_data(void)
{
unsigned char dat=0;
//check_bf();
LCD_CTRL = CS_ALL | DI | RW;
SetE(1);
delay(10);
SetE(0);
dat = LCD_INP;
delay(10);
LCD_CTRL=0x00;
delay(300);
return dat;
}
*/
/* lcd 명령 출력 */
//signal = CS1, CS2
//cmd = instruction
void write_cmd( byte signal, byte cmd )
{
//check_bf();
LCD_CTRL = signal & CS_ALL;
SetE(1);
LCD_OUTP = cmd;
delay(10);
SetE(0);
delay(10);
LCD_CTRL=0x00;
delay(300);
}
/* 1 문자 출력 */
//signal = CS1, CS2
//cmd = data
void write_data( byte signal, byte ch )
{
//check_bf();
LCD_CTRL = (signal & CS_ALL) | DI;
SetE(1);
LCD_OUTP = ch;
delay(10);
SetE(0);
delay(10);
LCD_CTRL=0x00;
delay(300);
}
/* GLCD Clear */
void lcd_clear(void)
{
byte i, j, x, y;
LCD_CTRL=0x00;
write_cmd(CS_ALL,0x3f);
write_cmd(CS_ALL,0xc0);
x = 0xB8; /* X start address */
y = 0x40; /* Y start address */
for(i = 0; i <= 7; i++)
{
write_cmd(CS_ALL,x);
write_cmd(CS_ALL,y);
for(j = 0; j < 64; j++)
write_data(CS_ALL,0x00); /* clear CS1 and CS2 */
x++;
}
}
void lcd_init(void)
{
write_cmd( CS_ALL, DISPON );
write_cmd( CS_ALL, 0xc0 ); /* 디스플레이 시작라인 */
write_cmd( CS_ALL, 0xb8 ); /* X 어드레스 셋 = 0 */
write_cmd( CS_ALL, 0x40 ); /* Y 어드레스 셋 = 0 */
}
/* 문자 위치 세트 */
void lcd_xy( byte x, byte y ) /* set English character position on GLCD */
{
xcharacter = x; /* x = 0 - 3 */
ycharacter = y; /* y = 0 - 15 */
}
/*-------------------------------------------------------------------------*/
void lcd_xy_row(byte row,byte x,byte y) /* set character upper/lower row on GLCD */
{
lcd_xy(x,y); /* x = 0 - 3, y = 0 - 15 */
if(row == 0) /* if upper row, set Y address */
write_cmd(CS_ALL,0xB8 + x*2);
else /* if lower row, set Y address + 1 */
write_cmd(CS_ALL,0xB8 + x*2 + 1);
if(ycharacter <= 7) /* if y <= 7, CS1 Y address */
write_cmd(CS1,0x40 + y*8);
else /* if y >= 8, CS2 Y address */
write_cmd(CS2,0x40 + (y-8)*8);
}
void GLCD_English(byte Ecode) //* display a 8x16 Dot English(ASCII) on GLCD /
{ byte x, y, i, signal;
x = xcharacter;
y = ycharacter;
lcd_xy_row(0,x,y); //* display upper row /
if(ycharacter <= 7) //* if y <= 7, CS1 /
signal = CS1;
else //* if y >= 8, CS2 /
signal = CS2;
for(i = 0; i <= 7; i++)
write_data(signal,E_font[Ecode][i]);
lcd_xy_row(1,x,y); //* display lower row /
if(ycharacter <= 7) //* if y <= 7, CS1 /
signal = CS1;
else //* if y >= 8, CS2 /
signal = CS2;
for(i = 8; i <= 15; i++)
{ if((cursor_flag == 1) && (xcharacter == cursorx) && (ycharacter == cursory))
write_data(signal,E_font[Ecode][i] | 0x80);
else
write_data(signal,E_font[Ecode][i]);
}
ycharacter++;
if(ycharacter==16){
ycharacter = 0;
xcharacter++;
}
}
void GLCD_Korean(word Kcode) //* display a 16x16 Dot Korean on GLCD /
{ byte x, y, i, signal;
byte cho_5bit, joong_5bit, jong_5bit;
byte cho_bul, joong_bul, jong_bul, jong_flag;
word character;
if(ycharacter==15)
GLCD_English(0x20);
cho_5bit = table_cho[(Kcode >> 10) & 0x001F]; //* get cho, joong, jong 5 bit /
joong_5bit = table_joong[(Kcode >> 5) & 0x001F];
jong_5bit = table_jong[Kcode & 0x001F];
if(jong_5bit == 0) //* don't have jongsung /
{ jong_flag = 0;
cho_bul = bul_cho1[joong_5bit];
if((cho_5bit == 1) || (cho_5bit == 16)) joong_bul = 0;
else joong_bul = 1;
}
else //* have jongsung /
{ jong_flag = 1;
cho_bul = bul_cho2[joong_5bit];
if((cho_5bit == 1) || (cho_5bit == 16)) joong_bul = 2;
else joong_bul = 3;
jong_bul = bul_jong[joong_5bit];
}
character = cho_bul*20 + cho_5bit; //* copy chosung font /
for(i = 0; i <= 31; i++)
Korean_buffer[i] = K_font[character][i];
character = 8*20 + joong_bul*22 + joong_5bit; //* OR joongsung font /
for(i = 0; i <= 31; i++)
Korean_buffer[i] |= K_font[character][i];
if(jong_flag == 1) //* if jongsung, OR jongsung font /
{ character = 8*20 + 4*22 +jong_bul*28 + jong_5bit;
for(i = 0; i <= 31; i++)
Korean_buffer[i] |= K_font[character][i];
}
x = xcharacter;
y = ycharacter;
lcd_xy_row(0,x,y); //* display upper left row /
if(ycharacter <= 7) //* if y <= 7, CS1 /
signal = CS1;
else //* if y >= 8, CS2 /
signal = CS2;
for(i = 0; i <= 7; i++)
write_data(signal,Korean_buffer[i]);
lcd_xy_row(1,x,y); //* display lower left row /
if(ycharacter <= 7) //* if y <= 7, CS1 /
signal = CS1;
else //* if y >= 8, CS2 /
signal = CS2;
for(i = 16; i <= 23; i++)
{ if((cursor_flag == 1) && (xcharacter == cursorx) && (ycharacter == cursory))
write_data(signal,Korean_buffer[i] | 0x80);
else
write_data(signal,Korean_buffer[i]);
}
ycharacter++;
y = ycharacter;
lcd_xy_row(0,x,y); ///* display upper right row /
if(ycharacter <= 7) ///* if y <= 7, CS1 /
signal = CS1;
else ///* if y >= 8, CS2 /
signal = CS2;
for(i = 8; i <= 15; i++)
write_data(signal,Korean_buffer[i]);
lcd_xy_row(1,x,y); //* display lower right row /
if(ycharacter <= 7) //* if y <= 7, CS1 /
signal = CS1;
else //* if y >= 8, CS2 /
signal = CS2;
for(i = 24; i <= 31; i++)
{ if((cursor_flag == 1) && (xcharacter == cursorx) && (ycharacter == (cursory+1)))
write_data(signal,Korean_buffer[i] | 0x80);
else
write_data(signal,Korean_buffer[i]);
}
ycharacter++;
if(ycharacter==16){
ycharacter = 0;
xcharacter++;
}
}
/*******************************************************************************
* 완성형 한글을 조합형으로 바꾸어 주는 부분입니다.
*******************************************************************************/
word kssm_convert(word kssm)
{
byte high,low;
word index;
word return_data;
high = (kssm>>8)&0xff;
low = kssm &0xff;
if ((kssm >= 0xb0a1)&&(kssm <= 0xc8fe))
{
index = (high - 0xb0) * 94 + low - 0xa1;
return_data = KSTable[index][0]*256;
return_data |= KSTable[index][1];
return return_data;
}
return 0;
}
void lcd_string(byte x, byte y, byte *string) //* display a string on GLCD /
{ byte character1;
word character2;
lcd_xy(x,y); //* x = 0 - 3, y = 0 - 15 /
while(*string != '\0')
{
character1 = *string;
string++;
if(((character1 >> 7) & 0x01) == 0)
GLCD_English(character1); //* display English character /
else
{
character2 = *string;
character2 = 256*character1 + (character2 & 0xFF);
string++;
character2 = kssm_convert(character2);//완성형을 조합형으로 변환
GLCD_Korean(character2); //* display Korean character /
}
}
}
/*
void LCD_OnOff(byte x, byte y, byte *string)
{
write_cmd( 0xc0, DISPON );
lcd_string(x, y, *string);
write_cmd( 0xc0, DISOFF );
delay(50);
write_cmd( 0xc0, DISPON );
}
*/
지금 이것만 1주일 째 붙잡고 있어요ㅜ 도와 주세요ㅜㅠ 감사합니다..
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
혹시 네이버에서 질문하신 분 아니신지요?
답변 올려 드렸었는 데, 여기 첨부로 다시 올려드립니다.
그것 사용하시면 되요. 이것은 WINAVR + AVR Studio 용입니다.
다시 테스트 해보고 올려드리는 거에요.
수고하세요.
>
>
> 이곳 자료실에서 다운받은 glcd 구동 소스는 icc-avr 용이던데요..
>
> 이 소스를 avr studio 에서 구동시키려면, 어떤 걸 바꿔줘야 하나요?ㅜ
>
> @GLCD.C
> // Target : M128
> // Crystal: 16Mhz
>
> #include <iom128v.h>
> #include <macros.h>
>
> #include "FONTK52.h"
> #include "GLCDK52.h"
> //ICC-AVR application builder : 2006-06-13 오후 10:18:26
>
> void port_init(void)
> {
> PORTA = 0x00;
> DDRA = 0x00;
> PORTB = 0x00;
> DDRB = 0xFF;
> PORTC = 0x00; //m103 output only
> DDRC = 0xFF;
> PORTD = 0x00;
> DDRD = 0xFF;
> PORTE = 0x00;
> DDRE = 0x00;
> PORTF = 0x00;
> DDRF = 0x00;
> PORTG = 0x00;
> DDRG = 0x00;
> }
>
> //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();
>
> 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 main(void)
> {
> unsigned char i;
> init_devices();
> //insert your functional code here...
>
> //for(i=0;i<100;i++)
> //delay(60000);
> lcd_init(); /* initialize GLCD */
> lcd_clear();
>
> //lcd_xy(0,0);
> //lcd_string(0,0,"안녕하세요!!");
> //write_data(CS_ALL,0xff);
> while(1)
> {
> lcd_string(0,0," 현대 LCD ");
> lcd_string(1,0," HG12605NY-LY ");
> lcd_string(2,0," 삼성 SDI ");
> lcd_string(0,0,"UG-13B04-SEAT5-E");
> lcd_string(1,0,"GLCD128X64 V1.0");
> lcd_string(1,0,"128x64 그래픽LCD");
> lcd_string(2,0," 8x16도트 ASCII ");
> lcd_string(3,0,"16x16도트 조합형");
> delay(50000);
> delay(50000);
> delay(50000);
>
> lcd_xy(0,0);
> for(i = 0x00; i <= 0x0F; i++)
> GLCD_English(i);
> lcd_xy(1,0);
> for(i = 0x10; i <= 0x1F; i++)
> GLCD_English(i);
> lcd_string(2,0," !");
> GLCD_English(0x22);
>
> lcd_string(2,0,"#$%&'()*+,-./");
> lcd_string(3,0,"0123456789:;<=>?");
>
> lcd_string(0,0,"@ABCDEFGHIJKLMNO");
> lcd_string(1,0,"PQRSTUVWXYZ[");
> GLCD_English(0x5C);
> lcd_string(1,13,"]^_");
> lcd_string(2,0,"`abcdefghijklmno");
> lcd_string(3,0,"pqrstuvwxyz{|}~");
> GLCD_English(0x7F);
> delay(50000);
> delay(50000);
> delay(50000);
>
> lcd_string(0,0," * 배우자 * ");
> lcd_string(1,0,"마이크로프로세서");
> lcd_string(2,0," * 익히자 * ");
> lcd_string(3,0,"마이크로콘트롤러");
> delay(50000);
> delay(50000);
> delay(50000);
>
> lcd_string(0,0,"1988 서울 올림픽");
> lcd_string(1,0,"2002 월드컵 축구");
> lcd_string(2,0,"오~ 필승 KOREA !");
> lcd_string(3,0,"대한민국 화이팅!");
> delay(50000);
> delay(50000);
> delay(50000);
>
> lcd_string(0,0,"어려운 한글글자");
> lcd_string(1,0," 값광깎꼴꿍넋똘 ");
> lcd_string(2,0," 뛸빵뽕삯쏼쑹웬 ");
> lcd_string(3,0," 짱쭝첸콸튈펑황 ");
> delay(50000);
> delay(50000);
> delay(50000);
> }
> }
>
>
>
> @FONTK52.H 는 수정할 필요 없을 거 같구요..
>
> @GLCDK52.C
>
> typedef unsigned char byte;
> typedef unsigned int word;
>
> #define LCD_OUTP PORTD
> #define LCD_INP PIND
> #define LCD_CTRL PORTB
>
> #define DISPON 0x3f
> #define DISPOFF 0x3e
>
> #define DI 0x01
> #define RW 0x02
> #define E 0x04
> #define CS1 0x08
> #define CS2 0x10
> #define CS_ALL 0x18
>
> #define SetDI(m) m?(LCD_CTRL|=DI): (LCD_CTRL&=~DI)
> #define SetRW(m) m?(LCD_CTRL|=RW): (LCD_CTRL&=~RW)
> #define SetE(m) m?(LCD_CTRL|=E): (LCD_CTRL&=~E)
> #define SetCS1(m) m?(LCD_CTRL|=CS1):(LCD_CTRL&=~CS1)
> #define SetCS2(m) m?(LCD_CTRL|=CS2):(LCD_CTRL&=~CS2)
>
> byte xcharacter, ycharacter; /* x character(0-3), y character(0-15) */
> byte cursor_flag, cursorx, cursory; /* x and y cursor position(0-3, 0-15) */
> byte Korean_buffer[32]; /* 32 byte Korean font buffer */
> /*-------------------------------------------------------------------------*/
> /* 시간 지연 루틴 */
> void delay( word del )
> {
> while( del-- );
> }
> /*
> unsigned char read_status(void)
> {
> unsigned char dat=0;
>
> LCD_CTRL = CS_ALL | DI;
> SetE(1);
> delay(10);
> SetE(0);
> dat = LCD_INP;
> delay(10);
> LCD_CTRL=0x00;
> delay(100);
>
> return dat;
> }
> */
> /* 비지 플래그 체크 */
> /*
> void check_bf(void)
> {
> while(read_status() & 0x80 );
> }
>
> unsigned char read_data(void)
> {
> unsigned char dat=0;
> //check_bf();
>
> LCD_CTRL = CS_ALL | DI | RW;
> SetE(1);
> delay(10);
> SetE(0);
> dat = LCD_INP;
> delay(10);
> LCD_CTRL=0x00;
> delay(300);
>
> return dat;
> }
> */
> /* lcd 명령 출력 */
> //signal = CS1, CS2
> //cmd = instruction
> void write_cmd( byte signal, byte cmd )
> {
> //check_bf();
> LCD_CTRL = signal & CS_ALL;
> SetE(1);
> LCD_OUTP = cmd;
> delay(10);
> SetE(0);
> delay(10);
> LCD_CTRL=0x00;
> delay(300);
> }
>
> /* 1 문자 출력 */
> //signal = CS1, CS2
> //cmd = data
> void write_data( byte signal, byte ch )
> {
> //check_bf();
> LCD_CTRL = (signal & CS_ALL) | DI;
> SetE(1);
> LCD_OUTP = ch;
> delay(10);
> SetE(0);
> delay(10);
> LCD_CTRL=0x00;
> delay(300);
> }
>
>
> /* GLCD Clear */
> void lcd_clear(void)
> {
> byte i, j, x, y;
> LCD_CTRL=0x00;
> write_cmd(CS_ALL,0x3f);
> write_cmd(CS_ALL,0xc0);
> x = 0xB8; /* X start address */
> y = 0x40; /* Y start address */
> for(i = 0; i <= 7; i++)
> {
> write_cmd(CS_ALL,x);
> write_cmd(CS_ALL,y);
> for(j = 0; j < 64; j++)
> write_data(CS_ALL,0x00); /* clear CS1 and CS2 */
> x++;
> }
> }
>
> void lcd_init(void)
> {
> write_cmd( CS_ALL, DISPON );
> write_cmd( CS_ALL, 0xc0 ); /* 디스플레이 시작라인 */
> write_cmd( CS_ALL, 0xb8 ); /* X 어드레스 셋 = 0 */
> write_cmd( CS_ALL, 0x40 ); /* Y 어드레스 셋 = 0 */
> }
>
> /* 문자 위치 세트 */
> void lcd_xy( byte x, byte y ) /* set English character position on GLCD */
> {
> xcharacter = x; /* x = 0 - 3 */
> ycharacter = y; /* y = 0 - 15 */
> }
>
> /*-------------------------------------------------------------------------*/
>
> void lcd_xy_row(byte row,byte x,byte y) /* set character upper/lower row on GLCD */
> {
> lcd_xy(x,y); /* x = 0 - 3, y = 0 - 15 */
>
> if(row == 0) /* if upper row, set Y address */
> write_cmd(CS_ALL,0xB8 + x*2);
> else /* if lower row, set Y address + 1 */
> write_cmd(CS_ALL,0xB8 + x*2 + 1);
>
> if(ycharacter <= 7) /* if y <= 7, CS1 Y address */
> write_cmd(CS1,0x40 + y*8);
> else /* if y >= 8, CS2 Y address */
> write_cmd(CS2,0x40 + (y-8)*8);
> }
>
> void GLCD_English(byte Ecode) //* display a 8x16 Dot English(ASCII) on GLCD /
> { byte x, y, i, signal;
>
> x = xcharacter;
> y = ycharacter;
>
> lcd_xy_row(0,x,y); //* display upper row /
> if(ycharacter <= 7) //* if y <= 7, CS1 /
> signal = CS1;
> else //* if y >= 8, CS2 /
> signal = CS2;
> for(i = 0; i <= 7; i++)
> write_data(signal,E_font[Ecode][i]);
>
> lcd_xy_row(1,x,y); //* display lower row /
> if(ycharacter <= 7) //* if y <= 7, CS1 /
> signal = CS1;
> else //* if y >= 8, CS2 /
> signal = CS2;
> for(i = 8; i <= 15; i++)
> { if((cursor_flag == 1) && (xcharacter == cursorx) && (ycharacter == cursory))
> write_data(signal,E_font[Ecode][i] | 0x80);
> else
> write_data(signal,E_font[Ecode][i]);
> }
>
> ycharacter++;
> if(ycharacter==16){
> ycharacter = 0;
> xcharacter++;
> }
> }
>
> void GLCD_Korean(word Kcode) //* display a 16x16 Dot Korean on GLCD /
> { byte x, y, i, signal;
> byte cho_5bit, joong_5bit, jong_5bit;
> byte cho_bul, joong_bul, jong_bul, jong_flag;
> word character;
> if(ycharacter==15)
> GLCD_English(0x20);
> cho_5bit = table_cho[(Kcode >> 10) & 0x001F]; //* get cho, joong, jong 5 bit /
> joong_5bit = table_joong[(Kcode >> 5) & 0x001F];
> jong_5bit = table_jong[Kcode & 0x001F];
>
> if(jong_5bit == 0) //* don't have jongsung /
> { jong_flag = 0;
> cho_bul = bul_cho1[joong_5bit];
> if((cho_5bit == 1) || (cho_5bit == 16)) joong_bul = 0;
> else joong_bul = 1;
> }
> else //* have jongsung /
> { jong_flag = 1;
> cho_bul = bul_cho2[joong_5bit];
> if((cho_5bit == 1) || (cho_5bit == 16)) joong_bul = 2;
> else joong_bul = 3;
> jong_bul = bul_jong[joong_5bit];
> }
>
> character = cho_bul*20 + cho_5bit; //* copy chosung font /
> for(i = 0; i <= 31; i++)
> Korean_buffer[i] = K_font[character][i];
>
> character = 8*20 + joong_bul*22 + joong_5bit; //* OR joongsung font /
> for(i = 0; i <= 31; i++)
> Korean_buffer[i] |= K_font[character][i];
>
> if(jong_flag == 1) //* if jongsung, OR jongsung font /
> { character = 8*20 + 4*22 +jong_bul*28 + jong_5bit;
> for(i = 0; i <= 31; i++)
> Korean_buffer[i] |= K_font[character][i];
> }
>
> x = xcharacter;
> y = ycharacter;
> lcd_xy_row(0,x,y); //* display upper left row /
> if(ycharacter <= 7) //* if y <= 7, CS1 /
> signal = CS1;
> else //* if y >= 8, CS2 /
> signal = CS2;
> for(i = 0; i <= 7; i++)
> write_data(signal,Korean_buffer[i]);
>
> lcd_xy_row(1,x,y); //* display lower left row /
> if(ycharacter <= 7) //* if y <= 7, CS1 /
> signal = CS1;
> else //* if y >= 8, CS2 /
> signal = CS2;
> for(i = 16; i <= 23; i++)
> { if((cursor_flag == 1) && (xcharacter == cursorx) && (ycharacter == cursory))
> write_data(signal,Korean_buffer[i] | 0x80);
> else
> write_data(signal,Korean_buffer[i]);
> }
>
> ycharacter++;
>
> y = ycharacter;
> lcd_xy_row(0,x,y); ///* display upper right row /
> if(ycharacter <= 7) ///* if y <= 7, CS1 /
> signal = CS1;
> else ///* if y >= 8, CS2 /
> signal = CS2;
> for(i = 8; i <= 15; i++)
> write_data(signal,Korean_buffer[i]);
>
> lcd_xy_row(1,x,y); //* display lower right row /
> if(ycharacter <= 7) //* if y <= 7, CS1 /
> signal = CS1;
> else //* if y >= 8, CS2 /
> signal = CS2;
> for(i = 24; i <= 31; i++)
> { if((cursor_flag == 1) && (xcharacter == cursorx) && (ycharacter == (cursory+1)))
> write_data(signal,Korean_buffer[i] | 0x80);
> else
> write_data(signal,Korean_buffer[i]);
> }
>
> ycharacter++;
> if(ycharacter==16){
> ycharacter = 0;
> xcharacter++;
> }
> }
>
> /*******************************************************************************
> * 완성형 한글을 조합형으로 바꾸어 주는 부분입니다.
> *******************************************************************************/
>
> word kssm_convert(word kssm)
> {
> byte high,low;
> word index;
> word return_data;
>
> high = (kssm>>8)&0xff;
> low = kssm &0xff;
>
> if ((kssm >= 0xb0a1)&&(kssm <= 0xc8fe))
> {
> index = (high - 0xb0) * 94 + low - 0xa1;
> return_data = KSTable[index][0]*256;
> return_data |= KSTable[index][1];
> return return_data;
> }
> return 0;
> }
>
>
> void lcd_string(byte x, byte y, byte *string) //* display a string on GLCD /
> { byte character1;
> word character2;
>
> lcd_xy(x,y); //* x = 0 - 3, y = 0 - 15 /
>
> while(*string != '\0')
> {
> character1 = *string;
> string++;
> if(((character1 >> 7) & 0x01) == 0)
> GLCD_English(character1); //* display English character /
> else
> {
> character2 = *string;
> character2 = 256*character1 + (character2 & 0xFF);
> string++;
> character2 = kssm_convert(character2);//완성형을 조합형으로 변환
> GLCD_Korean(character2); //* display Korean character /
> }
> }
> }
>
> /*
> void LCD_OnOff(byte x, byte y, byte *string)
> {
> write_cmd( 0xc0, DISPON );
> lcd_string(x, y, *string);
> write_cmd( 0xc0, DISOFF );
> delay(50);
> write_cmd( 0xc0, DISPON );
> }
> */
>
>
> 지금 이것만 1주일 째 붙잡고 있어요ㅜ 도와 주세요ㅜㅠ 감사합니다..
>
|
||||
| 6985 | 답변완료컴파일오류>>>>> | 전진국 | 2012-01-18 | 1,332 |
|
당사 홈페이지에서 sdcc 컴파일러를 다운받고 , 울트라 edit도 설치하여 .
자료실에 있는 예제대로 프로그램작성후 컴파일로 한다음에 다음과 같은 에러가 발생하였습니다.
답변 부탁드립니다.
발생된 오류 메시지를 아래와 같이서술합니다.
at 1: error 4: 'fopen' failed on file 'ex.c'
홈페이지에 있는 예제를 다운로드 해서 컴파일해는데도 발생되는 오류 메시지는 동일합니다.
추가 질문합니다....
1. 우선 네이버 등업좀 해주시고요.....
2. sdcc로 컴파일을 하면 hex 파일이 없는데.. avr stdtio 에서 어떻게 다운로드 하는지 문의합니다....
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
우선, 네이버 쪽은 다 처리 되었구요. 혹시, 안되었으면 다시 신청하시면서, 쪽지 주세요.
그리고, SDCC 관련은 확인하여 올려 드리겠습니다.
수고하세요.
>
>
> 당사 홈페이지에서 sdcc 컴파일러를 다운받고 , 울트라 edit도 설치하여 .
>
> 자료실에 있는 예제대로 프로그램작성후 컴파일로 한다음에 다음과 같은 에러가 발생하였습니다.
>
> 답변 부탁드립니다.
>
> 발생된 오류 메시지를 아래와 같이서술합니다.
>
> at 1: error 4: 'fopen' failed on file 'ex.c'
>
> 홈페이지에 있는 예제를 다운로드 해서 컴파일해는데도 발생되는 오류 메시지는 동일합니다.
>
> 추가 질문합니다....
>
> 1. 우선 네이버 등업좀 해주시고요.....
> 2. sdcc로 컴파일을 하면 hex 파일이 없는데.. avr stdtio 에서 어떻게 다운로드 하는지 문의합니다....
>
|
||||
| 6984 | 답변완료온라인 무료 강좌 관련 | 김형영 | 2012-01-18 | 1,423 |
|
안녕하세요
avr 무료 온라인 강좌좀 볼려고 하는데
안되네요 강좌를 막았는지 궁금해서 그렇습니다.
수고하세요
관리자 답변
안녕하세요? 고객님,
서버 문제로 막혀 있었네요.
해결해 두었습니다.
무료 온라인 강좌 이제 보실 수 있습니다. 많이 이용해 주세요.
그리고, 내일 본사에서 무료 온라인 강좌를 진행합니다. 참고하세요.
수고하세요.
>
>
> 안녕하세요
> avr 무료 온라인 강좌좀 볼려고 하는데
> 안되네요 강좌를 막았는지 궁금해서 그렇습니다.
> 수고하세요
>
|
||||
