로그인 | 회원가입 | 주문 조회
총 10,748개의 질문이 있습니다.
번호 제목 작성자 등록일 조회
2468 답변완료am-slcd420 시리얼통신연결방법 김규태 2009-03-17 1,442
안녕하세요 이번에 am-slcd420 제품을구입햇는데 통신케이블이 없어서 어떻게 하지를못하겟네요 따로 구입해야되는지모르고 그냥삿는데요 구입하고 하나도 못만져보고잇는데 rs232통신회로도좀 가르쳐주실수잇으신가요?? 그리고 데이터 송신해서 lcd화면에나오게하는 프로그램같은것도 올려주세요..초보입니다 기본적인 소스같은것도올려주심 감사합니다
관리자 답변 N.T.C · 2009-03-17
안녕하세요...고객님... SLCD에 보시면 VCC, RX, TX, GND라고 쓰여져 있습니다. 그리고 SLCD는 특별한 프로그램이 없습니다. 고객님께서 타겟보드와 컴퓨터 터미널이랑 통신하듯이 타겟보드와 SLCD랑 통신하시면 됩니다. 제품소개를 보시고 궁금증이 풀리지 않으시면 언제라도 질문주세요. 서울 근교에 사시면 직접 찾아오시면 좀 더 상세히 서포트 해 드리겠습니다. 감사합니다 >안녕하세요 이번에 am-slcd420 제품을구입햇는데 >통신케이블이 없어서 어떻게 하지를못하겟네요 >따로 구입해야되는지모르고 그냥삿는데요 >구입하고 하나도 못만져보고잇는데 >rs232통신회로도좀 가르쳐주실수잇으신가요?? >그리고 데이터 송신해서 lcd화면에나오게하는 >프로그램같은것도 올려주세요..초보입니다 >기본적인 소스같은것도올려주심 감사합니다
2467 답변완료UART 문의 이준승 2009-03-16 1,418
NTC CPU 기판, PORT A - PORT F까지 사용 가능한 확장 보드, NTC TEXT LCD MODULE등등을 가지고서 실험 중에 있습니다. 지금은 UART 통신을 하고 있는데 이상한 현상이 있어 문의 드립니다. 1. UART0 를 사용하여 초기 통신 모드를 초기화 시켰습니다. 2. PC와 케이블로 연결하였고 3. 통신이 시작되었는데 엉뚱한 값이 메인 보드와 PC의 하이퍼 터미널에서 표시됩니다. 4. 가령 NTC 메인보드상에서 0x33이라고 TX에 값을 주었으면 하이퍼터미널에서는 3이라는 값이 표시 되어야하는데 엉뚱한 값들이 표시되고 있고 5. 하이퍼터미널에서 3이라는 값을 TX하면 NTC 메인보드 LCD에는 엉뚱한 값 (0x66)이 표시됩니다. 6. 실제로 하이퍼터미널에서 "2"를 보냈는데 NTC 메인보드에서는 0x33이라는 값에서 반응을 하여 그대로 TEXT LCD에 표시하게 했는데 7. NTC 메인보드와 다른기종간에 UART통신에서는 0x33값이 0x66이라는 값에서 반응을 하고 있는 황당한 일이 있는데 이유를 찾고 있으나 찾지 못하여 왜 그런지 문의 드립니다.
관리자 답변 N.T.C · 2009-03-16
안녕하세요? 고객님, 소스가 잘못된 모양입니다. 일단, 한꺼번에 모든 것을 테스트 하지 마시고, 모듈별로 각각 테스트 해보기 바랍니다. 예를 들어서, TEXTLCD소스로 LCD를 테스트 해 보고, 시리얼 소스로 시리얼 데이터가 잘 들어오는 지 등을 테스트 하기 바랍니다. 본사의 자료실->기존자료실에 많은 소스가 있으니, 참고바랍니다. 하다가 잘 안되면, 본사로 오면, 각각 정상동작하는 것을 보여줄 수 있습니다. 소스 이상 외에는 별다른 이상이 있을 것 같지가 않습니다. 소스를 잘 살펴 보기 바랍니다. 우선은, 각 모듈별 테스트를 해보기 바랍니다. 또한, 퓨즈비트가 0xffd9ef로 되어 있는 지 확인하기 바랍니다. 수고하세요. >NTC CPU 기판, PORT A - PORT F까지 사용 가능한 확장 보드, NTC TEXT LCD MODULE등등을 가지고서 실험 중에 있습니다. >지금은 UART 통신을 하고 있는데 이상한 현상이 있어 문의 드립니다. >1. UART0 를 사용하여 초기 통신 모드를 초기화 시켰습니다. >2. PC와 케이블로 연결하였고 >3. 통신이 시작되었는데 엉뚱한 값이 메인 보드와 PC의 하이퍼 터미널에서 표시됩니다. >4. 가령 NTC 메인보드상에서 0x33이라고 TX에 값을 주었으면 하이퍼터미널에서는 3이라는 값이 표시 되어야하는데 엉뚱한 값들이 표시되고 있고 >5. 하이퍼터미널에서 3이라는 값을 TX하면 NTC 메인보드 LCD에는 엉뚱한 값 (0x66)이 표시됩니다. >6. 실제로 하이퍼터미널에서 "2"를 보냈는데 NTC 메인보드에서는 0x33이라는 값에서 반응을 하여 그대로 TEXT LCD에 표시하게 했는데 >7. NTC 메인보드와 다른기종간에 UART통신에서는 0x33값이 0x66이라는 값에서 반응을 하고 있는 황당한 일이 있는데 이유를 찾고 있으나 찾지 못하여 > >왜 그런지 문의 드립니다.
2466 답변완료차동 ADC 문의 ADC 2009-03-16 1,402
KD-128 PRO를 구입하여 ADC를 테스트 하고 있습니다. 단동의 경우에는 KD-128 PRO로 ADC 입력(0~5V?) 부분을 테스트 하였습니다. 차동 입력을 해야 하는데요. KD-128 PRO 키트에서 바로 가능한지요? 메뉴얼의 "Input Channel and Gain Selections" 테이블에 보니 MUX 비트가 01001인 경우에 +는 ADC1, -는 ADC1이라고 되어 있는데 전원부의 +5V, -5V를 ADC1, ADC0에 연결하면 되는 건지... 제가 전자쪽을 잘 몰라서 질문이 정확했는지도 모르겠습니다. 이 글을 보시고 가능하면 070-7017-8296(인터넷전화)로 전화좀 부탁 합니다.
관리자 답변 N.T.C · 2009-03-16
안녕하세요? 고객님, 저희 NewTC를 이용하여 주셔서 감사합니다. 아래 질문을 참고하시면 좋겠네요. Q&A에서 ADC라고 치면 많은 질문과 답변이 나옵니다. 이 중에서 차동 입력에 관한 부분도 있으니, 참고 바랍니다. 아래에 한 가지 참고할만한 예를 들어 두었습니다. 차동에서는 최대 -2.5V ~ 2.5V 입력을 받을 수 있습니다. - 아래 - http://www.newtc.co.kr/board/view.php?id=qna&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=adc&select_arrange=headnum&desc=asc&no=4079 본 싸이트에서 질문은 반드시 본명으로 하셔야 합니다. 수고하세요. >KD-128 PRO를 구입하여 ADC를 테스트 하고 있습니다. > >단동의 경우에는 KD-128 PRO로 ADC 입력(0~5V?) 부분을 테스트 하였습니다. > >차동 입력을 해야 하는데요. KD-128 PRO 키트에서 바로 가능한지요? > >메뉴얼의 "Input Channel and Gain Selections" 테이블에 보니 > >MUX 비트가 01001인 경우에 +는 ADC1, -는 ADC1이라고 되어 있는데 > >전원부의 +5V, -5V를 ADC1, ADC0에 연결하면 되는 건지... > >제가 전자쪽을 잘 몰라서 질문이 정확했는지도 모르겠습니다. > >이 글을 보시고 가능하면 070-7017-8296(인터넷전화)로 전화좀 부탁 합니다.
2465 답변완료Relay 전원 공급 보드 (4 Ch) 관련 질문 이준학 2009-03-16 1,470
안녕하세요.? 저번 "Relay 전원 공급 보드 (4 Ch)" 관련 하여 시연방문드렸었는데요. 먼저 프린트포트출력방법에 관한 것 부터 공부하라셔서.... 아래 링크되어 있는 프린트포트 실험키트를 이용하여 LED 점등제어가 가능하도록 실험확인은 되었습니다. 저번 설명 시 프린트포트 신호 출력만 가능하면 Relay 전원 공급 보드 (4 Ch)도 이용 가능하다고 하셨는데, 프린트포트로서 LED점등가능하다면 전원보드도 이용가능하겠지요? 혹, 다른 체크 사항이 있을 지 싶어 문의글 남겨봅니다. 나름 정리해 본 케이블 제작 방법인데, 맞는지 한 번 봐주세요. 아 그리고 대량주문 시에는 케이블 제작도 가능하다고 하셨는데,최소 수량인 50개일경우와 100개 등 1회 주문당 최소수량이 다를 경우 보드 및 케이블 단가 확인부탁드립니다. 연락처 : 011-9567-3652 email: [email protected]
관리자 답변 N.T.C · 2009-03-16
안녕하세요..고객님.. 저희 NewTC 제품을 이용해 주셔서 감사합니다. 잘 되어 있네요. 그렇게 제어하시면 될것 같습니다. 릴레이 전원 공급 보드 포합 50000원(부가세포함)쯤 생각하시면 됩니다. 자세한 것은 전화로 연락하겠습니다. 감사합니다. >안녕하세요.? > >저번 "Relay 전원 공급 보드 (4 Ch)" 관련 하여 시연방문드렸었는데요. > >먼저 프린트포트출력방법에 관한 것 부터 공부하라셔서.... > >아래 링크되어 있는 프린트포트 실험키트를 이용하여 LED 점등제어가 가능하도록 > >실험확인은 되었습니다. 저번 설명 시 프린트포트 신호 출력만 가능하면 > >Relay 전원 공급 보드 (4 Ch)도 이용 가능하다고 하셨는데, 프린트포트로서 LED점등가능하다면 전원보드도 이용가능하겠지요? > >혹, 다른 체크 사항이 있을 지 싶어 문의글 남겨봅니다. > >나름 정리해 본 케이블 제작 방법인데, 맞는지 한 번 봐주세요. > >아 그리고 대량주문 시에는 케이블 제작도 가능하다고 하셨는데,최소 수량인 50개일경우와 >100개 등 1회 주문당 최소수량이 다를 경우 보드 및 케이블 단가 확인부탁드립니다. > >연락처 : 011-9567-3652 >email: [email protected]
2464 답변완료cannot entering programming mode문제입니다. 나상빈 2009-03-15 1,401
ntc atmega128 am-128ram모듈과 usbisp v02를 사용중인데요. 잘사용하다가 컴퓨터 포맷하고 iccavr과 avr studio를 깔아서 프로그램을 입력하다가 도중에 에러가 난다음 다시 해보니깐 계속 프로그래밍 모드로 들어가지 못한다고 하네요. a/s할땐 usbisp랑 모듈둘다 보내야하나요?
관리자 답변 N.T.C · 2009-03-15
안녕하세요? 고객님, 저희 NewTC 제품을 이용하여 주셔서 감사합니다. 일단은 아래대로 해 보시고, 안 되시면, 두가지를 함께 보내시는 것이 좋겠습니다. 하지만, 대부분, 문제가 생긴다면, 128쪽 모듈의 문제가 생겼을 경우가 많습니다. 설정 문제였고, 실제로는 문제가 없는 경우도 50% 정도 되지요. 일단은 드라이버를 잘 깔아 보시고, 포트를 맞춰서 해보세요. - 아래 - http://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=23 수고하세요. >ntc atmega128 am-128ram모듈과 usbisp v02를 사용중인데요. > >잘사용하다가 컴퓨터 포맷하고 iccavr과 avr studio를 깔아서 프로그램을 입력하다가 도중에 에러가 난다음 다시 해보니깐 계속 프로그래밍 모드로 들어가지 못한다고 하네요. a/s할땐 usbisp랑 모듈둘다 보내야하나요?
2463 답변완료3축 가속도 센서 플러스 모듈 질문 진승훈 2009-03-14 1,449
3축 가속도 센서 플러스 모듈를 이용하여 http://blog.naver.com/ascbbs/40023024959 위의 동영상과 같이 숫자 인식을 만들려고 합니다. 최종 목표는 모션인식하여 리모콘을 만드는 것입니다. 3축 가속도 센서 + atmega128를 활용할려고 합니다. 인식하는게 가능한가요
관리자 답변 N.T.C · 2009-03-14
안녕하세요? 네, 가능합니다. 우선, 3축 가속도 센서 예제인 자료실의 윈도우 예제에서 AVRside라는 부분을 가지고, X, Y, Z 값을 각각 받아서, 윈도에서 모션별로 저장해 보세요. 어떤, 숫자마다 특징이 있을 겁니다. 그 특징을 가지고 인식하면 됩니다. 물론, 하는 동안에 얼마나 잘 그 특징을 파악하고, 공식화 하는 가가 이슈겠습니다. 그걸 잘하면, 빨리 완성하게 될겁니다. 다른 방법은, 그 데이터를 패턴도로 저장하고, 패턴 유사성을 따지는 겁니다. 일단 생각에는 서로 다른 속도로 그리는 것도 감안할 수도 있겠습니다. 그런 것까지 감안하려면, 움직임부터 멈춤까지의 동작을 대략 10등분 정도로 하고, 그 값들을 평균을 내서, 10가지의 값이 일치하는 정도의 %를 따져서만 해도 될 것 같네요. 수고하세요. >3축 가속도 센서 플러스 모듈를 이용하여 >http://blog.naver.com/ascbbs/40023024959 >위의 동영상과 같이 숫자 인식을 만들려고 합니다. >최종 목표는 모션인식하여 리모콘을 만드는 것입니다. >3축 가속도 센서 + atmega128를 활용할려고 합니다. >인식하는게 가능한가요 >
2462 답변완료엔코더 신호를 받고 싶어요... 전은철 2009-03-13 1,367
DC 모터 엔코더 부분에서 신호가 올 때 마다 인터럽트를 걸고 printf 등으로 모터 회전 수 등을 찍어주고 싶은데 그것과 관련된 예제파일 같은것 없을까요??? 감사합니다.
관리자 답변 N.T.C · 2009-03-13
안녕하세요....고객님... 저희 회사에서는 아직 엔코더가 달린 DC모터는 판매하고 있지 않습니다. 구입하신 모터 회사에서 문의하세요. 감사합니다. >DC 모터 엔코더 부분에서 신호가 올 때 마다 >인터럽트를 걸고 printf 등으로 모터 회전 수 등을 찍어주고 싶은데 >그것과 관련된 예제파일 같은것 없을까요??? > >감사합니다.
2461 답변완료AM-IRS4D에서 수광부 반응속도 정경석 2009-03-13 1,305
AM-IRS4D에서 수광부의 반응속도를 알고싶습니다.
관리자 답변 N.T.C · 2009-03-13
안녕하세요...고객님... 최대 500 [us]까지는 가능합니다. 감사합니다. >AM-IRS4D에서 수광부의 반응속도를 알고싶습니다.
2460 답변완료회로도를 구하고 싶습니다. 박평주 2009-03-13 1,382
현재 NTC에서 판매되고 있는 보드와 모듈 등을 사용하여 제작하고자 하는 프로그램을 구현하고 있습니다. 지금까지는 테스트로서 모듈을 연결하여 사용하였지만 이제 하나의 보드에 모듈의 필요한 부분만을 사용하려고 합니다. 자료실이나 강좌에 없는 모듈에 대해 회로도를 구하고 싶은데 메일로 보내주실 수 있으신지요. 그리고 한가지 더, 12V 스테핑 모터를 12V 제어 모듈에 연결하면 구동이 안되나요? 강좌에서는 4V를 권장하고 있네요. 필요한 회로도의 모듈 모델은 다음과 같습니다. 스테핑 모터 구동모듈 AM-CS2P Relay 전원공급 보드 AM-RB04-B 스위치 보드 AM-TS8 LT 적외선 센서 모듈(디지털 4Ch) AM-IRS4D 3축 가속도 센서 플러스 모듈 AM-3AXIS-P 그럼 답신 기다리겠습니다. 안녕히계세요.
관리자 답변 N.T.C · 2009-03-13
안녕하세요...고객님... 저희 회사에서는 공개해도 된다고 판단된 회로도는 모두 공개하고 있으며 공개되지 않은 회로도는 공개할 수 없다고 판단된 회로도입니다. 공개된 모든 회로도는 자료실 =>> 기존자료실에서 '회로도'로 검색하시면 찾을 수 있습니다. 12V 스테핑 모터면 드라이브 전원부에 12V 공급해 주시면 됩니다. 감사합니다. >현재 NTC에서 판매되고 있는 보드와 모듈 등을 사용하여 >제작하고자 하는 프로그램을 구현하고 있습니다. > >지금까지는 테스트로서 모듈을 연결하여 사용하였지만 >이제 하나의 보드에 모듈의 필요한 부분만을 사용하려고 합니다. > >자료실이나 강좌에 없는 모듈에 대해 회로도를 구하고 싶은데 >메일로 보내주실 수 있으신지요. > > >그리고 한가지 더, 12V 스테핑 모터를 12V 제어 모듈에 연결하면 구동이 > >안되나요? 강좌에서는 4V를 권장하고 있네요. > > >필요한 회로도의 모듈 모델은 다음과 같습니다. > >스테핑 모터 구동모듈 AM-CS2P > >Relay 전원공급 보드 AM-RB04-B > >스위치 보드 AM-TS8 > >LT 적외선 센서 모듈(디지털 4Ch) AM-IRS4D > >3축 가속도 센서 플러스 모듈 AM-3AXIS-P > > >그럼 답신 기다리겠습니다. > >안녕히계세요.
2459 답변완료ATMega128트레이닝 풀키트 CD 배준성 2009-03-13 1,427
직접구입하진 않았지만 풀키트를 (케이스포함) 가지고있는데요 구매기록 말고 딴방법으로 CD 자료를 구할수는 없는건가요?
관리자 답변 N.T.C · 2009-03-13
안녕하세요...고객님... 어떤 자료가 필요하신가요? 대부분의 자료는 자료실에서 검색하시면 가능합니다. 또한 ATMega128트레이닝 풀키트는 구버젼이랑 신버젼에 차이가 있기에 소스또한 다릅니다. 직접 찾아오시면 CD를 드릴께요. 감사합니다. >직접구입하진 않았지만 > >풀키트를 (케이스포함) 가지고있는데요 > >구매기록 말고 딴방법으로 CD 자료를 구할수는 없는건가요? > > > > >
2458 답변완료그래픽 lcd 출력 관련 문의요... 탁탁이 2009-03-12 1,437
Serial LCD 모듈 (2*16)(AM-SLCD216) 이거 쓰는데요.. 제가 쓸주 아는게 avr studio 밖에 없어서 이걸로 쏘스를 짜고 있는데요. 온도값 : xxx 조도값 : xxx 이렇게 계속 변환 값을 표현하고 싶은데.. 어떻게 해야할까요.. 일딴 xxx/xx 로 온도값과 조도값을 표시하고 있는데 이러면 보기가싫으니......... 지금은 1초에 한번 값을 표시하기 때문에 xxx/xx/xxx/xx/xxx/xx 이렇게 계속 뒤에 줄줄줄 뜨거든요.. 화면을 지우고 xxx/xx 이값만 표시 하거나 아니면 처음 질문처럼 온도값: xx 조도값: xxx 이렇게 표현하려면 어떻게 해야하나요? 제가 짠 쏘스입니다... #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> volatile int count=0, s=0,mode=0; volatile int i=0,choice=0, a, b, c, d, e; unsigned char jodo,ondo; void timer0_init(); void adc_init(); //void adc_init(); void init_PORT(); void usart_init(); void interrupt_init(); void sencor_init(); int hex2asc(int m); void main(void) { timer0_init(); init_PORT(); adc_init(); usart_init(); interrupt_init(); sei(); while(1) { } } void timer0_init(void) { TIMSK=0x01; TCCR0=0x07; } void interrupt_init(void) { EIMSK=0xE0; EICRB=0xA8; } void adc_init(void) { //PORTF=0xfa; // ADMUX=0x20; //aref단자로 입력된전압 5v 좌측정렬 ADCSRA=0xfb; //enable, free,128분주 ADCSRA|=0x40; //or 시작 } /*void adc2_init(void) { DDRF=0xFB; ADMUX=0x22; ADCSRA=0xF3; ADCSRA|=0x40; }*/ void init_PORT(void) { // DDRB=0xFF; DDRC=0xFF; DDRA=0xFF; DDRD=0xFE; //usart1 // PORTD=0xFE; DDRE=0xED; //usart0 } void usart_init(void) { UCSR1A=0x00; UCSR1B=0x18; UCSR1C=0x06; UBRR1H=0x00; UBRR1L=0x67; } //////////// 아스키값으로 변환 함수//////////// int hex2asc(int m) { return m+0x30; } void sencor_init(void) { //////////////////조도값 출력//////////// //UDR1=hex; while(!(UCSR1A&0x20)); UDR1=hex2asc(a); while(!(UCSR1A&0x20)); UDR1=hex2asc(b); while(!(UCSR1A&0x20)); UDR1=hex2asc(c); while(!(UCSR1A&0x20)); UDR1='/'; UCSR1A |=0x20; //i=0; //////////////////온도값 출력////////////////// //UDR1=hex; while(!(UCSR1A&0x20)); UDR1=hex2asc(d); while(!(UCSR1A&0x20)); UDR1=hex2asc(e); while(!(UCSR1A&0x20)); UDR1='/'; UCSR1A |=0x20; //i=0; } ///////////타이머 카운터///////////// ISR(TIMER0_OVF_vect) { TCNT0=0xFF-0x83; //0x7c count++; if(count==0x7d) { ////////조도 온도 출력제어///// if(mode==0){ ADMUX=0x20; mode=1;} else if(mode==1){ ADMUX=0x22; mode=0;} count=0; s++; } if(s==1) { sencor_init(); s=0; } } ISR(ADC_vect) { ////////////조도센서 adc0사용/////////// if(ADMUX==0x20) { DDRF=0xFE; jodo=ADCH; a=jodo/100; b=(jodo%100)/10; c=jodo%10; if(jodo>=210) PORTC=0x01; else if(190<=jodo) PORTC=0x00; } /////////////온도센서 adc2사용////////////// if(ADMUX==0x22) { DDRF=0xFB; ondo=ADCH; ondo/=5.1; //온도를 50도까지만 표현 d=ondo/10; e=ondo%10; if(ondo>28) PORTA=0x02; else if(ondo<24) PORTA=0x00; } }
관리자 답변 N.T.C · 2009-03-13
안녕하세요...고객님... 저희가 소스까진 봐드리지 않습니다. 컴퓨터로 uart통신 해보셨나요? printf()문을 사용하면 쉽게 구현 가능합니다. 조도값과 온도값을 저장하는 전역변수를 하나씩 선언해서 printf()문으로 포멧을 맞춰주면 됩니다. printf("\\r\\n 조도값 : %d, 조도값변수); printf("\\r\\n 온도값 : %d, 온도값변수); 이렇게 하시면 좀 더 보기쉽게 가능할것 같습니다. 해보시고 또 질문주세요. 그리고, 앞으로 본명으로 질문 부탁드립니다. 감사합니다. >Serial LCD 모듈 (2*16)(AM-SLCD216) 이거 쓰는데요.. >제가 쓸주 아는게 avr studio 밖에 없어서 이걸로 쏘스를 짜고 있는데요. >온도값 : xxx >조도값 : xxx >이렇게 계속 변환 값을 표현하고 싶은데.. 어떻게 해야할까요.. >일딴 xxx/xx 로 온도값과 조도값을 표시하고 있는데 >이러면 보기가싫으니......... >지금은 1초에 한번 값을 표시하기 때문에 >xxx/xx/xxx/xx/xxx/xx 이렇게 계속 뒤에 줄줄줄 뜨거든요.. >화면을 지우고 xxx/xx 이값만 표시 하거나 >아니면 처음 질문처럼 온도값: xx > 조도값: xxx 이렇게 표현하려면 어떻게 해야하나요? >제가 짠 쏘스입니다... > >#include <avr/io.h> >#include <util/delay.h> >#include <avr/interrupt.h> >volatile int count=0, s=0,mode=0; >volatile int i=0,choice=0, a, b, c, d, e; > >unsigned char jodo,ondo; >void timer0_init(); >void adc_init(); >//void adc_init(); >void init_PORT(); >void usart_init(); >void interrupt_init(); >void sencor_init(); >int hex2asc(int m); >void main(void) >{ > timer0_init(); > init_PORT(); > adc_init(); > usart_init(); > interrupt_init(); > sei(); > while(1) > { > > } >} > >void timer0_init(void) >{ > TIMSK=0x01; > TCCR0=0x07; >} > >void interrupt_init(void) >{ > EIMSK=0xE0; > EICRB=0xA8; >} > >void adc_init(void) >{ > //PORTF=0xfa; >// ADMUX=0x20; //aref단자로 입력된전압 5v 좌측정렬 > ADCSRA=0xfb; //enable, free,128분주 > ADCSRA|=0x40; //or 시작 >} > >/*void adc2_init(void) >{ > DDRF=0xFB; > ADMUX=0x22; > ADCSRA=0xF3; > ADCSRA|=0x40; >}*/ > >void init_PORT(void) >{ >// DDRB=0xFF; > DDRC=0xFF; > DDRA=0xFF; > DDRD=0xFE; //usart1 >// PORTD=0xFE; > DDRE=0xED; //usart0 >} > >void usart_init(void) >{ > UCSR1A=0x00; > UCSR1B=0x18; > UCSR1C=0x06; > UBRR1H=0x00; > UBRR1L=0x67; >} >//////////// 아스키값으로 변환 함수//////////// >int hex2asc(int m) >{ > return m+0x30; >} > >void sencor_init(void) >{ > //////////////////조도값 출력//////////// > //UDR1=hex; > while(!(UCSR1A&0x20)); > UDR1=hex2asc(a); > while(!(UCSR1A&0x20)); > UDR1=hex2asc(b); > while(!(UCSR1A&0x20)); > UDR1=hex2asc(c); > while(!(UCSR1A&0x20)); > UDR1='/'; > UCSR1A |=0x20; > //i=0; > //////////////////온도값 출력////////////////// > //UDR1=hex; > while(!(UCSR1A&0x20)); > UDR1=hex2asc(d); > while(!(UCSR1A&0x20)); > UDR1=hex2asc(e); > while(!(UCSR1A&0x20)); > UDR1='/'; > UCSR1A |=0x20; > //i=0; > >} >///////////타이머 카운터///////////// >ISR(TIMER0_OVF_vect) >{ > > TCNT0=0xFF-0x83; //0x7c > count++; > if(count==0x7d) > { > ////////조도 온도 출력제어///// > if(mode==0){ > ADMUX=0x20; > mode=1;} > else if(mode==1){ > ADMUX=0x22; > mode=0;} > count=0; > s++; > } > if(s==1) > { > sencor_init(); > s=0; > } > >} >ISR(ADC_vect) >{ >////////////조도센서 adc0사용/////////// > if(ADMUX==0x20) > { DDRF=0xFE; > jodo=ADCH; > a=jodo/100; > b=(jodo%100)/10; > c=jodo%10; > if(jodo>=210) > PORTC=0x01; > else if(190<=jodo) > PORTC=0x00; > } >/////////////온도센서 adc2사용////////////// > if(ADMUX==0x22) > { DDRF=0xFB; > ondo=ADCH; > ondo/=5.1; //온도를 50도까지만 표현 > d=ondo/10; > e=ondo%10; > if(ondo>28) > PORTA=0x02; > else if(ondo<24) > PORTA=0x00; > } >} >
2457 답변완료SE-3T9 전은철 2009-03-12 1,463
SE-3T9 으로 시리얼 통신 하려는데 휴우.. 계속 죄송합니다;;; 그림과 같이 연결했고 SE-3T9 시리얼 케이블 (길이 2미터) 오류 정정 방법 이라는 글에서 나와있는대로 선도 다시 이었습니다;;; 그런데도 안되네요.. ㅠ_ㅠ 여전히 Unable to detect STK500 device 라고 뜹니다;;; ㅎㅎ 좋은하루 되세요
관리자 답변 N.T.C · 2009-03-13
안녕하세요..고객님.. STK500은 프로그램을 Write할 때 쓰는 프로토콜이구요. SE-3T9 시리얼 케이블은 시리얼 통신용이지 stk500과는 무관합니다. ad-usbisp 는 연결하셨나요? 기타 설정(타겟 MCU및 ISP설정) 다시 한번 확인하시기 바랍니다. 수고하세요 >SE-3T9 으로 시리얼 통신 하려는데 >휴우.. 계속 죄송합니다;;; > >그림과 같이 연결했고 > >SE-3T9 시리얼 케이블 (길이 2미터) 오류 정정 방법 >이라는 글에서 나와있는대로 선도 다시 이었습니다;;; > >그런데도 안되네요.. ㅠ_ㅠ > >여전히 >Unable to detect STK500 device >라고 뜹니다;;; ㅎㅎ > >좋은하루 되세요
2456 답변완료USB-ISP 로 printf 실행 관련된 문제입니다. 전은철 2009-03-12 1,446
ㅎㅎ 계속 답변 감사합니다. stdio.h include 시켜줬고 다른 거를 할 때는 잘 되는데 printf 만 하려고 하면 에러가 나네요 아마 int putchar(char c) { if (_textmode && c == '\\n') putchar('\\r'); /* Wait for empty transmit buffer */ while ( !(UCSR0A & (1<<UDRE0)) ) ; /* Putting data into buffer , sends the data */ UDR0 = c; return c; } 여기에서 잘못 된것 같은데. 밑에 전체 소스 첨부합니다. 감사합니다. /// // ICC-AVR application builder // Target : M128 // Crystal: 16Mhz #include <iom128v.h> #include <macros.h> #include <stdio.h> extern int _textmode; int putchar(char c) { if (_textmode && c == '\\n') putchar('\\r'); /* Wait for empty transmit buffer */ while ( !(UCSR0A & (1<<UDRE0)) ) ; /* Putting data into buffer , sends the data */ UDR0 = c; return c; } void port_init(void) { PORTA = 0x00; DDRA = 0x00; PORTB = 0x00; DDRB = 0x00; PORTC = 0x00; //m103 output only DDRC = 0x03; PORTD = 0x00; DDRD = 0x00; PORTE = 0x00; DDRE = 0x00; PORTF = 0x00; DDRF = 0x00; PORTG = 0x00; DDRG = 0x03; } //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 delay(int dd) { int i, j; for(i=0; i<dd; i++){ for(j=0; j<500; j++){ } } } #define MOTOR_PORT PORTC #define MOTOR_DDR DDRC #define PWM1_ON (MOTOR_PORT|=0x01) #define PWM1_OFF (MOTOR_PORT&=0xFE) #define DIR1_ON (MOTOR_PORT|=0x02) #define DIR1_OFF (MOTOR_PORT&=0xFD) #define ENABLE1_OFF (MOTOR_PORT|=0x04) #define ENABLE1_ON (MOTOR_PORT&=0xFB) #define BREAK1_ON (MOTOR_PORT|=0x08) #define BREAK1_OFF (MOTOR_PORT&=0xF7) #define LED_PORT PORTG // ATMega16 보드의 PORTB의 포트에 연결된 LED가 깜빡거립니다. void main(void){ int i,d, count = 1; init_devices(); printf("test\\n"); MOTOR_DDR = 0xff; ENABLE1_ON; while(1) { LED_PORT = 0x01; DIR1_ON; for(d=0;d<10;d++) { for(i=0;i<1000;i++){ PWM1_ON; delay(10-d); PWM1_OFF; delay(d); } if(d==2) BREAK1_ON; } BREAK1_OFF; LED_PORT = 0x02; DIR1_OFF; for(d=0;d<10;d++) { for(i=0;i<1000;i++){ PWM1_ON; delay(10-d); PWM1_OFF; delay(d); } } } }
관리자 답변 N.T.C · 2009-03-12
안녕하세요....고객님.. 아래 문장을 추가하라고 했는 데요. 내용이 변경되었네요. 어떤 용도로 if (_textmode && c == '\\n') putchar('\\r'); 문을 추가했는지 이해 하기가 어렵네요. putchar();문안에 자기 자신을 포함시킨다면 무한 루프에 빠지기때문에 AVR에서는 함수안에 자기자신을 포함시키는 재귀함수는 허용하지 않습니다. 또한 putchar()함수는 한번에 한 바이트만 처리합니다. 어떤 용도로 추가했는지 알려주시면 새로운 방법을 제시해 드리겠습니다. 감사합니다. // printf 함수 사용시 추가할 것. int putchar(char c) { while (((UCSR0A>>UDRE0)&0x01) == 0) ; // UDRE, data register empty UDR0 = c; return c; } >ㅎㅎ 계속 답변 감사합니다. >stdio.h include 시켜줬고 다른 거를 할 때는 잘 되는데 >printf 만 하려고 하면 에러가 나네요 > >아마 > >int putchar(char c) > { > if (_textmode && c == '\\n') > putchar('\\r'); > /* Wait for empty transmit buffer */ > while ( !(UCSR0A & (1<<UDRE0)) ) > ; > /* Putting data into buffer , sends the data */ > UDR0 = c; > return c; > } > >여기에서 잘못 된것 같은데. >밑에 전체 소스 첨부합니다. 감사합니다. > >/// > > >// ICC-AVR application builder >// Target : M128 >// Crystal: 16Mhz > >#include <iom128v.h> >#include <macros.h> >#include <stdio.h> > >extern int _textmode; > >int putchar(char c) > { > if (_textmode && c == '\\n') > putchar('\\r'); > /* Wait for empty transmit buffer */ > while ( !(UCSR0A & (1<<UDRE0)) ) > ; > /* Putting data into buffer , sends the data */ > UDR0 = c; > return c; > } > >void port_init(void) >{ > PORTA = 0x00; > DDRA = 0x00; > PORTB = 0x00; > DDRB = 0x00; > PORTC = 0x00; //m103 output only > DDRC = 0x03; > PORTD = 0x00; > DDRD = 0x00; > PORTE = 0x00; > DDRE = 0x00; > PORTF = 0x00; > DDRF = 0x00; > PORTG = 0x00; > DDRG = 0x03; >} > >//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 delay(int dd) >{ > int i, j; > for(i=0; i<dd; i++){ > for(j=0; j<500; j++){ > } > } >} > >#define MOTOR_PORT PORTC >#define MOTOR_DDR DDRC >#define PWM1_ON (MOTOR_PORT|=0x01) >#define PWM1_OFF (MOTOR_PORT&=0xFE) >#define DIR1_ON (MOTOR_PORT|=0x02) >#define DIR1_OFF (MOTOR_PORT&=0xFD) >#define ENABLE1_OFF (MOTOR_PORT|=0x04) >#define ENABLE1_ON (MOTOR_PORT&=0xFB) >#define BREAK1_ON (MOTOR_PORT|=0x08) >#define BREAK1_OFF (MOTOR_PORT&=0xF7) >#define LED_PORT PORTG > >// ATMega16 보드의 PORTB의 포트에 연결된 LED가 깜빡거립니다. >void main(void){ > int i,d, count = 1; > init_devices(); > > printf("test\\n"); > > MOTOR_DDR = 0xff; > ENABLE1_ON; > > while(1) > { > LED_PORT = 0x01; > DIR1_ON; > for(d=0;d<10;d++) > { > for(i=0;i<1000;i++){ > PWM1_ON; > delay(10-d); > PWM1_OFF; > delay(d); > } > if(d==2) BREAK1_ON; > } > BREAK1_OFF; > LED_PORT = 0x02; > DIR1_OFF; > > for(d=0;d<10;d++) > { > for(i=0;i<1000;i++){ > PWM1_ON; > delay(10-d); > PWM1_OFF; > delay(d); > } > } > > > } >}
2455 답변완료모터 구동관련 다시 질문 전은철 2009-03-11 1,370
ㅎㅎ 밑에 알려주신대로 모터를 구동해봤는데 모터가 그냥 베터리에 연결했을 때 보다 느리게 돌아가네요 ㅎㅎ 아마도 보드에 베터리를 연결해야 하는 것 같은데 <img src ="http://jsharp.cafe24.com/aa.jpg"> 그림에서 1번으로 되어있는 부분에 베터리를 연결하고 2번이라고 되어있는 부분에 모터를 연결하는게 맞나요??
관리자 답변 N.T.C · 2009-03-12
안녕하세요? 잘 사용하신 것 같네요. 하지만, 모터 구동부를 쓰게 되면, 전압 강하가 0.3V 정도 되기 때문에, 아무래도 약간 느리게 돌아갈겁니다. 모터 스펙에 따라 차이가 많이 날 수도 있겠지만, 매우 큰 차이는 나지 않을 것으로 생각합니다. 직접 연결하게 되면, 아무래도 역기전력이 넘어 올 수도 있고, 전류 증폭 면에서도 문제가 생기게 되지요. 1번 부분에 베터리 연결하는 게 아니구요. 베터리 연결은 빨간색, 검정색 연결하신 2핀 커넥터 쪽에 전원을 주는 게 맞습니다. 2번 이라고 하신 약간 노란 커넥터와 1번이라고 하신 초록 커넥터 옆에 있는 초록 커넥터는 같은 핀이구요. 즉, 오른쪽 두개는 같은 커넥터인데 모양만 다른 두가지 타입을 연결할 수 있도록 해 둔 것이구요. 왼쪽 두개도 마찬가지 입니다. 즉, 모터 두개를 연결할 수 있도록 만든거지요. 수고하세요. >ㅎㅎ 밑에 알려주신대로 >모터를 구동해봤는데 모터가 그냥 베터리에 연결했을 때 보다 >느리게 돌아가네요 ㅎㅎ >아마도 보드에 베터리를 연결해야 하는 것 같은데 > ><img src ="http://jsharp.cafe24.com/aa.jpg"> > >그림에서 1번으로 되어있는 부분에 베터리를 연결하고 >2번이라고 되어있는 부분에 모터를 연결하는게 맞나요??
2454 답변완료AVR Studio 4.13 번역 메뉴얼 있는지요? 임동빈 2009-03-11 1,446
안녕하세요.. AVR Studio 4.13 사용자를 위한 번역 메뉴얼을 어디서 볼 수 있는지요? 프로그램 내용을 이해하기가 어려워 응용할 수가 없어서 그렇습니다. 만약, 번역된 것이 없고 영문으로 읽어야 한다면, AT89S51 에 hex file 을 write 하기 위해서 어디서 어떤 chapter 을 읽으면 되는지 알려 주시면 감사드리겠습니다.
관리자 답변 N.T.C · 2009-03-12
안녕하세요? NewTC를 이용하여 주셔서 감사합니다. AVR Studio 메뉴얼은 없지만, 아래를 참고하면 89S51에 write 할 수 있을 겁니다. Q&A에서 89S 라고 검색하면 다른 참고들도 많이 나옵니다. - 아래 - http://www.newtc.co.kr/board/view.php?id=qna&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=89S&select_arrange=headnum&desc=asc&no=6533 수고하세요. >안녕하세요.. >AVR Studio 4.13 사용자를 위한 번역 메뉴얼을 어디서 볼 수 있는지요? >프로그램 내용을 이해하기가 어려워 응용할 수가 없어서 그렇습니다. >만약, 번역된 것이 없고 영문으로 읽어야 한다면, AT89S51 에 hex file 을 >write 하기 위해서 어디서 어떤 chapter 을 읽으면 되는지 알려 주시면 >감사드리겠습니다.