로그인 | 회원가입 | 주문 조회
총 10,743개의 질문이 있습니다.
번호 제목 작성자 등록일 조회
3513 답변완료2.4GHz Band RF 모듈(AM-RFMOD) 제품에 대한 문의. 오상훈 2009-08-21 1,297
귀사의 제품에 대한 문의를 하려고 합니다. 우선 RF 쪽에는 제반지식이 많지 않아 여쭈어봅니다. 2.4GHz Band RF 모듈을 6개를 구입해서 송신부는 5개인데 수신부는 1개로 구성을 해서 5:1로 송수신을 하려고 하는데 이게 가능한가요? 구성은 센서 - MCU - RF모듈 (송신) ---> 센서 - MCU - RF모듈 (송신) ---> 센서 - MCU - RF모듈 (송신) ---> RF모듈 (수신) - MCU - LED 센서 - MCU - RF모듈 (송신) ---> 센서 - MCU - RF모듈 (송신) ---> 이렇게 데이터 통신이 될 수 있는 지 알고 싶습니다.
관리자 답변 N.T.C · 2009-08-22
안녕하세요? 고객님, 저희 NewTC 제품을 이용하여 주셔서 감사합니다. 물론, 가능합니다. 송수신을 half duplex로 하는 모듈이므로, 제어시에 주의하여야 합니다. 또한 다만, 송신하는 5개가 서로가 출력할 때, 데이터가 동시에 보내게 되면 깨질 수 있으니까, 토큰을 주고받고 하는 프로토콜을 넣어주면 좋겠습니다. 일단은 본 RFMOD의 경우 ID와 채널을 일치시키게 되면, 서로 데이터를 주고 받을 수 있습니다. 물론, 이 때 보레이트 (흔히 bps), 데이터비트수 , 패리티, 스탑비트, 등은 당연히 일치해야 겠지요. RFMOD 설정 프로그램을 자료실->기존 자료실 가면 받을 수 있습니다. 그리고, 설정을 편하게 하시려면, 하드웨어 적으로는 AD-USBSERIAL을 하나 구하셔서 사용하시는 것이 편하겠습니다. 기본적으로는 수신 모드로 가 있게 되고, 데이터를 송신할 때만 잠시 송신모드로 갔다가 송신하고는 다시 수신모드로 가 있게 됩니다. 수고하세요. >귀사의 제품에 대한 문의를 하려고 합니다. 우선 RF 쪽에는 제반지식이 많지 않아 여쭈어봅니다. >2.4GHz Band RF 모듈을 6개를 구입해서 송신부는 5개인데 수신부는 1개로 구성을 해서 5:1로 송수신을 하려고 하는데 이게 가능한가요? >구성은 >센서 - MCU - RF모듈 (송신) ---> >센서 - MCU - RF모듈 (송신) ---> >센서 - MCU - RF모듈 (송신) ---> RF모듈 (수신) - MCU - LED >센서 - MCU - RF모듈 (송신) ---> >센서 - MCU - RF모듈 (송신) ---> > >이렇게 데이터 통신이 될 수 있는 지 알고 싶습니다. > > >
3512 답변완료uart를 두개동시에 사용하는방법.. 김헌주 2009-08-21 1,400
atmega128에서요.. uart를 동시에 두개사용하는 방법을 알고싶습니다.. 목적은 lcd출력을 할려고요... 스쿨존 도로에 진입할때 차량을 적외선으로 감지해서 초음파센서로 속도측정하여 엘씨디에 출력하고. 다시 스쿨존이 끝나는 지점에서 적외선으로 차량을 감지해서 여긴 스쿨존이 아니다 뭐..이런식으로 나타낼려고하는중인데.. 처음부분(속도측정하여 출력)은 전부 완성이 된 상태입니다... 다음부분도 아트매가 한개만 사용해서 할려고하는데 uart둘다 사용할려면 어떻게 해야하는지 도통 감이 안잡히네요.. 아는사람이 하면 아주 간단한부분만 손보면 될듯한데.. 방법이 있다면 좀도와주세요.ㅠ
관리자 답변 N.T.C · 2009-08-22
안녕하세요? 고객님, 저희 NewTC를 이용하여 주셔서 감사합니다. 우선, UART0와 UART1을 모두 초기화 하시구요. 그런 후에, // printf 함수 사용시 추가할 것. int putchar(char c) { while (((UCSR0A>>UDRE0)&0x01) == 0) ; // UDRE, data register empty UDR0 = c; return c; } 이렇게 하면 printf 시에 UART0번으로만 출력 되겠지요? // printf 함수 사용시 추가할 것. int putchar(char c) { while (((UCSR1A>>UDRE1)&0x01) == 0) ; // UDRE, data register empty UDR1 = c; return c; } 이렇게 선언하면 printf 시에 UART1번으로만 출력 될겁니다. 하지만, 아래와 같이 하면, // printf 함수 사용시 추가할 것. int where=0; int putchar(char c) { if(where == 0){ while (((UCSR0A>>UDRE0)&0x01) == 0) ; // UDRE, data register empty UDR0 = c; }else if(where == 1){ while (((UCSR1A>>UDRE1)&0x01) == 0) ; // UDRE, data register empty UDR1 = c; } return c; } 이렇게 하면 where 값이 0이면 UART0로 where 값이 1이면 UART1로 출력 됩니다. 양쪽 다 한번에 같은 내용을 출력 하려면, 아래와 같이 하면 되겠지요. int putchar(char c) { while (((UCSR0A>>UDRE0)&0x01) == 0) ; // UDRE, data register empty UDR0 = c; while (((UCSR1A>>UDRE1)&0x01) == 0) ; // UDRE, data register empty UDR1 = c; return c; } 수고하세요. >atmega128에서요.. >uart를 동시에 두개사용하는 방법을 알고싶습니다.. >목적은 lcd출력을 할려고요... >스쿨존 도로에 진입할때 차량을 적외선으로 감지해서 초음파센서로 속도측정하여 엘씨디에 출력하고. >다시 스쿨존이 끝나는 지점에서 적외선으로 차량을 감지해서 여긴 스쿨존이 아니다 뭐..이런식으로 나타낼려고하는중인데.. > >처음부분(속도측정하여 출력)은 전부 완성이 된 상태입니다... > >다음부분도 아트매가 한개만 사용해서 할려고하는데 uart둘다 사용할려면 어떻게 해야하는지 도통 감이 안잡히네요.. > >아는사람이 하면 아주 간단한부분만 손보면 될듯한데.. > >방법이 있다면 좀도와주세요.ㅠ >
3511 답변완료usb-isp관련해서 문의드려요 이창호 2009-08-21 1,332
AM-128PL 을 사용하는데 usb-isp랑 연결해보려고 합니다. 자체 전원공급이 있던데 128에 프로그램만 넣어 보려고 하느건데 1번 스위치 on만 하고 하면 되는건가요??
관리자 답변 N.T.C · 2009-08-21
안녕하세요? 고객님, 저희 NewTC 제품을 이용하여 주셔서 감사합니다. 네 맞습니다. 안쪽에 있는 1번 스위치만 ON 하고 연결하시면 됩니다. 감사합니다. >AM-128PL 을 사용하는데 usb-isp랑 연결해보려고 합니다. > >자체 전원공급이 있던데 128에 프로그램만 넣어 보려고 하느건데 > >1번 스위치 on만 하고 하면 되는건가요?? >
3510 답변완료전원충돌 메세지 노민지 2009-08-21 1,305
ATmega128을 사용하고 있는 사용자 입니다. UART로 신호를 보내서 하이퍼터미널로 데이터를 받게 프로그램을 짰습니다. 물론 정확히 5V (USB) 로 주었습니다. 제가 사용하는 노트북에서는 전원충돌 메세지가 뜨지 않는데 데스크 탑에서는 전원 충돌 메세지가 뜹니다. 혹시 이유를 아시면 답변 부탁드립니다. 혹시 AD conversion이 잘못 되서 그런건가요? 감사합니다.
관리자 답변 N.T.C · 2009-08-21
안녕하세요? 고객님, 저희 NewTC를 이용하여 주셔서 감사합니다. 그런데, USB 쪽에서 보드로 보내시는 전원은 최소한 다이오드라도 이용해서, 전원 보호는 하셨는 지요? 보드쪽에서 USB를 통해 PC로 전원이 역으로 공급되다가 잘못되면 PC가 망가질 수 있으므로, 주의하시기 바랍니다. 어떤 전원충돌 메시지인지.....어떤 상황인지 정확히 몰라서, 위처럼 말씀드리니, 조치 바랍니다. 수고하세요. >ATmega128을 사용하고 있는 사용자 입니다. > >UART로 신호를 보내서 하이퍼터미널로 데이터를 받게 프로그램을 짰습니다. >물론 정확히 5V (USB) 로 주었습니다. >제가 사용하는 노트북에서는 전원충돌 메세지가 뜨지 않는데 >데스크 탑에서는 전원 충돌 메세지가 뜹니다. >혹시 이유를 아시면 답변 부탁드립니다. > >혹시 AD conversion이 잘못 되서 그런건가요? > >감사합니다.
3509 답변완료AM-MS2 드라이버 저항 & 모터 발열에 대한 배중진 2009-08-20 1,340
모터 작동은 잘 되는데 손 델수 없을정도로 뜨거워져서 혹시나 잔 고장이 생기지 않을까 걱정되서 이렇게 문의 합니다. 많은 수량을 제작해야 합니다. 이 발열문제를 해결 할 수 있는 솔루션과 대안을 알려주십시요. 모터 제어 환경 스펙 * AM-MS2 드라이버 * 전원 24V 6.5A * 모터 2개(오토닉스) 1. A9K-G265 DC 3.4V / 2A 2. A2K-M243 DS 3.2V / 1.2A
관리자 답변 N.T.C · 2009-08-20
안녕하세요? 고객님, 저희 NewTC 제품을 이용하여 주셔서 감사합니다. 우선, 모터 구동부에 공급되는 모터용 전류가 얼마나 흐르는 지 재 보시기 바랍니다. 1.5A 이내라면 특히 1A 이내라면, 크게 걱정하지 않으셔도 되겠지만, 그 이상의 전류가 흐른다면, 방열판을 추가로 작업하여 주셔야 합니다. 본사 모듈은 교육용으로 제작되어, 방열판이 없이 저렴한 가격으로 제작되어 있습니다. 수량이 매우 많다면, 산업용으로 본사에서 제작을 할 수도 있겠지만, 수량이 최소 300EA 이상 되어야 작업됩니다. 가격도 그에 맞춰서 좀 올라가게 되겠지요. 현재 버전으로 쓰시려면, 방열판을 대서 쓰는 방법이 가장 좋겠습니다. 하지만, 원래 손 델 수 없을 정도로 뜨거워져도 견딜 수 있도록 드라이버 칩이 제작이 되어 있습니다. 칩 설명서에서도 그렇게 되어 있구요. 다만, 조금이라도 열이 덜 나도록, 중간에 있는 바이어스 조정용 가변 저항을 돌려서, 열이 최소화하여 나도록 사용하여 주시기 바랍니다. 또한, 위에서 언급한 전류를 꼭 재 보시기 바랍니다. 감사합니다. >모터 작동은 잘 되는데 손 델수 없을정도로 뜨거워져서 혹시나 잔 고장이 생기지 않을까 >걱정되서 이렇게 문의 합니다. >많은 수량을 제작해야 합니다. 이 발열문제를 해결 할 수 있는 솔루션과 대안을 알려주십시요. > >모터 제어 환경 스펙 > >* AM-MS2 드라이버 >* 전원 24V 6.5A >* 모터 2개(오토닉스) > 1. A9K-G265 DC 3.4V / 2A > 2. A2K-M243 DS 3.2V / 1.2A
3508 답변완료usb - isp 문제가.. 서동호 2009-08-20 1,410
저희 실험실에 usb - isp가 있더군요.. 근데 버젼이 몇인지는 잘 모르겠습니다.. 아무튼 지금 보시면 그림에서와 같은 에러가 떠서 그러는데요 ... 이거 어떡게 해야되나요? 만약 그 회사로 보내줘야 한다면 저희 모듈이 at90can128을 쓰고 있어서 선 꼽는게 맞지 않아 땜질을 해서 다른 선을 떼워놨습니다... 이래도 A/S가 되나요?? 지금 그림을 찾아보니 02 버젼인거 같네요..
관리자 답변 N.T.C · 2009-08-20
안녕하세요? 고객님, 저희 NewTC 제품을 이용하여 주셔서 감사합니다. 그렇다면, 본사로 제품을 보내주시기 바랍니다. 상태를 보고 판단해야 할 것 같습니다. 원래는 직접 땜을 하신다던가 하게 되면 본사에서 A/S 하기는 무리가 있습니다. 하지만, 상태를 보고 가능하다면 해드리도록 하겠습니다. 다음부터는 원상태에서 건드리지 마시구요. 가능하다면 선으로 변경하여 사용하시면 좋겠습니다. 홈페이지 아래 주소로 보내주세요. 증상, 성함, 주소, 연락처번호 함께 보내주세요. 수고하세요. >저희 실험실에 usb - isp가 있더군요.. 근데 버젼이 몇인지는 잘 모르겠습니다.. > >아무튼 지금 보시면 > >그림에서와 같은 에러가 떠서 그러는데요 ... > >이거 어떡게 해야되나요? 만약 그 회사로 보내줘야 한다면 > >저희 모듈이 at90can128을 쓰고 있어서 선 꼽는게 맞지 않아 땜질을 해서 > >다른 선을 떼워놨습니다... 이래도 A/S가 되나요?? > >지금 그림을 찾아보니 02 버젼인거 같네요..
3507 답변완료초보 질문 이상엽 2009-08-19 1,464
avr mega128pro를 샀는데 사고보니 제 노트북에 parallel포트가 없다는걸 알았습니다. 그래서 알아보니 usb to parallel 컨버터가 있던데 그냥 이걸로 연결하면 되나요?
관리자 답변 N.T.C · 2009-08-19
안녕하세요? 고객님, 질문하시길 잘하셨습니다. 안됩니다. 그렇게 하면 안됩니다. 시중에 판매중인 USB to parallel은 프린터 전용드라이버입니다. 그렇게 쓰려면 USB to LPT를 써야 하는 데, 그런 제품은 현재 국내에 없습니다. 해외에 예전에 있었다는 데, 해외에도 지금은 구할 수가 없습니다. 그런 걸 만들려는 시도가 몇 번 있기는 했는 데, 가격대비 효용성 문제 때문에 만들어 지지 않고 있습니다. AD-USBISP V03을 구매하여 사용하시면 됩니다. 수고하세요. >avr mega128pro를 샀는데 사고보니 제 노트북에 parallel포트가 없다는걸 알았습니다. >그래서 알아보니 usb to parallel 컨버터가 있던데 그냥 이걸로 연결하면 되나요?
3506 답변완료ATmega128pro와 블루투스 통신관련 질문드립니다!! 박민지 2009-08-19 1,875
코드비전을 사용하고 있구요 ~ LM35온도센서를 이용하여 ATmega128로 ADC와 USART통신해서 코드비전 터미널창으로 출력까지 잘 확인했습니다!!!! 이때 ATmega128 pro의 UART0핀에 시리얼케이블 꽂고 했구요 ~~ 이제 좀더 나아가서 그 받은 온도를 펌테크사의 "FB155BC"블루투스를 사용해서 한쪽 ATmega128에서 받은 온도값을 다른쪽 ATmega128칩에 연결되어있는 블루투스를 사용해서 받아서 하이퍼터미널 창에 띄워보려고 하는데요 ~~ 송신부의 온도센서가 달려있는 보드판의 블루투스는 128칩 RX,TX0에 납땜하였고 수신부의 블루투스에는 128칩의 RX,TX1에 납땜하였습니다~ 펌테크사에서 블루투스 페어링도 다 맞춰주었고요.. 송신부의 ATmega128에서 받은 온도를 블루투스쪽으로 출력해서 반대편 블루투스에서 다시 ATmega128로 넣어주는.. 별도의 소스가 필요한가요..? #include <mega128.h> #include <delay.h> #include <stdio.h> unsigned int abf; void uart_init() { UCSR0B=0x18; //RXEN0,TXEN0 enable, 송수신 허용 UCSR0C=6; //asynchronous mode, no parity, 1 stop bit, 8 bit UBRR0H=0; UBRR0L=103; // Baud rate=9600 } void get_adc() { ADMUX=0x40; //입력채널은 ADC0 즉, PF0 , 오른쪽 정렬, VREF는 AVCC ADCSRA|=0x40; // 단일 모드로 컨버팅 시작 while((ADCSRA & 0x10)==0); //wait for the AD conversion to complete ADCSRA|=0x10; abf=ADCW; } void main() { uart_init(); ADMUX=0x40; ADCSRA=0x87; while(1) { //endless loop get_adc(); printf("%d ",abf); delay_ms(1000); } } #include <mega128.h> #include <delay.h> #include <stdio.h> unsigned int abf; /* interrupt [usart0_RXC] void uart_recv(void) { rx0_buf[p_rx0_wr++] = UDR0; if(rx0_buf[p_rx0_wr-1] == CR_VALUE)cr0_check_flag++; if(cr0_check_flag > 0) { if(rx0_buf[p_rx0_wr-1] == LF_VALUE)lf_check_flag++; } if (p_rx0_wr > UART0_BUF_SIZE-1)p_rx0_wr = 0; } */ /* interrupt [USART1_RXC] void uart_recv(void) { rx1_buf[p_rx1_wr++] = UDR1; if(rx1_buf[p_rx1_wr-1] == CR_VALUE)cr1_check_flag++; if (p_rx1_wr > UART1_BUF_SIZE-1)p_rx1_wr = 0; } */ void INIT_UART0() { //unsigned int i; UCSR0B=0x18; //RXEN0,TXEN0 enable, 송수신 허용 UCSR0C=6; //asynchronous mode, no parity, 1 stop bit, 8 bit UBRR0H=0; UBRR0L=103; // Baud rate=9600 //for (i=0; i<UART0_BUF_SIZE; i++) rx0_buf[i] = 0; } void INIT_UART1(unsigned char baudrate) { //unsigned int i; UBRR1H = 0; UBRR1L = 103; UCSR1B = 0x18; //for (i=0; i<UART1_BUF_SIZE; i++) rx1_buf[i] = 0; } unsigned char PUTCHAR_UART0 (unsigned char c) { while (!(UCSR0A & 0x20)) ; UDR0 = c; return 0; } ///////////////////////////////////////////////////////////// 이부분에서 밑으로 쫘악 이와같은 p_rx0_wr ,UART0_BUF_SIZE 등에서 error가 뜹니다 ㅠㅠ unsigned int CHECK_RX_BUF_UART0(void) { unsigned int len; if (p_rx0_wr == p_rx0_rd) { len = 0; } else { if (p_rx0_wr > p_rx0_rd) len = p_rx0_wr - p_rx0_rd; else len = UART0_BUF_SIZE + p_rx0_wr - p_rx0_rd; } return len; } unsigned int CHECK_RX_BUF_UART1(void) { unsigned int len; if (p_rx1_wr == p_rx1_rd) { len = 0; } else { if (p_rx1_wr > p_rx1_rd) len = p_rx1_wr - p_rx1_rd; else len = UART1_BUF_SIZE + p_rx1_wr - p_rx1_rd; } return len; } //////////////////////////////////////////// PUTCHAR_UART1에서도 에러가 뜨네요..... 이걸 해주는 이유가 128에서 블루투스로 데이터가 잘 오는지 확인해보기 위함이라는데.... 도와주세요 ㅠㅠ void BYPASS_MODE() { if(CHECK_RX_BUF_UART0()) { PUTCHAR_UART1(GETCHAR_UART0()); } if(CHECK_RX_BUF_UART1()) { PUTCHAR_UART0(GETCHAR_UART1()); } } void get_adc() { ADMUX=0x40; //입력채널은 ADC0 즉, PF0 , 오른쪽 정렬, VREF는 AVCC ADCSRA|=0x40; // 단일 모드로 컨버팅 시작 while((ADCSRA & 0x10)==0); //wait for the AD conversion to complete ADCSRA|=0x10; abf=ADCW; } void main() { INIT_UART0(); INIT_UART1(); ADMUX=0x40; ADCSRA=0x87; while(1) { BYPASS_MODE(); get_adc(); printf("%d ",abf); delay_ms(1000); } }
관리자 답변 N.T.C · 2009-08-19
안녕하세요? 고객님, 저희 NewTC 제품을 이용하여 주셔서 감사합니다. Q&A와 자료실에서 블루투스 라고 쳐서 나오는 것 중 계속 검색이라는 걸 눌러 보면, 참고할 만한게, 많이 나옵니다. 그 모듈 쓴 회로도하고 예제 소스들도 나오구요. - 아래 - http://www.newtc.co.kr/board/zboard.php?id=qna&&select_arrange=headnum&desc=asc&category=&sn=off&ss=on&sc=off&keyword=블루투스&sn1=&divpage=1 수고하세요. >코드비전을 사용하고 있구요 ~ > >LM35온도센서를 이용하여 ATmega128로 ADC와 USART통신해서 코드비전 터미널창으로 출력까지 잘 확인했습니다!!!! > >이때 ATmega128 pro의 UART0핀에 시리얼케이블 꽂고 했구요 ~~ > > > >이제 좀더 나아가서 > >그 받은 온도를 펌테크사의 "FB155BC"블루투스를 사용해서 >한쪽 ATmega128에서 받은 온도값을 >다른쪽 ATmega128칩에 연결되어있는 블루투스를 사용해서 받아서 > >하이퍼터미널 창에 띄워보려고 하는데요 ~~ > > > >송신부의 온도센서가 달려있는 보드판의 블루투스는 128칩 RX,TX0에 납땜하였고 > >수신부의 블루투스에는 128칩의 RX,TX1에 납땜하였습니다~ > > > >펌테크사에서 블루투스 페어링도 다 맞춰주었고요.. > > >송신부의 ATmega128에서 받은 온도를 블루투스쪽으로 출력해서 > >반대편 블루투스에서 다시 ATmega128로 넣어주는.. > >별도의 소스가 필요한가요..? > > > > > >#include <mega128.h> >#include <delay.h> >#include <stdio.h> > >unsigned int abf; > > > > >void uart_init() >{ > UCSR0B=0x18; //RXEN0,TXEN0 enable, 송수신 허용 > UCSR0C=6; //asynchronous mode, no parity, 1 stop bit, 8 bit > UBRR0H=0; > UBRR0L=103; // Baud rate=9600 > } > >void get_adc() >{ > ADMUX=0x40; //입력채널은 ADC0 즉, PF0 , 오른쪽 정렬, VREF는 AVCC > ADCSRA|=0x40; // 단일 모드로 컨버팅 시작 > > while((ADCSRA & 0x10)==0); //wait for the AD conversion to complete > ADCSRA|=0x10; > abf=ADCW; >} > >void main() >{ > uart_init(); > ADMUX=0x40; > ADCSRA=0x87; > > > > while(1) { //endless loop > get_adc(); > printf("%d ",abf); > > > > delay_ms(1000); > } >} > > > > > > > >#include <mega128.h> >#include <delay.h> >#include <stdio.h> > > >unsigned int abf; > >/* >interrupt [usart0_RXC] void uart_recv(void) >{ > rx0_buf[p_rx0_wr++] = UDR0; > if(rx0_buf[p_rx0_wr-1] == CR_VALUE)cr0_check_flag++; > if(cr0_check_flag > 0) > > { > if(rx0_buf[p_rx0_wr-1] == LF_VALUE)lf_check_flag++; > } > if (p_rx0_wr > UART0_BUF_SIZE-1)p_rx0_wr = 0; >} */ >/* >interrupt [USART1_RXC] void uart_recv(void) >{ > rx1_buf[p_rx1_wr++] = UDR1; > if(rx1_buf[p_rx1_wr-1] == CR_VALUE)cr1_check_flag++; > if (p_rx1_wr > UART1_BUF_SIZE-1)p_rx1_wr = 0; >} */ > >void INIT_UART0() >{ > //unsigned int i; > UCSR0B=0x18; //RXEN0,TXEN0 enable, 송수신 허용 > UCSR0C=6; //asynchronous mode, no parity, 1 stop bit, 8 bit > UBRR0H=0; > UBRR0L=103; // Baud rate=9600 > > //for (i=0; i<UART0_BUF_SIZE; i++) rx0_buf[i] = 0; > } > >void INIT_UART1(unsigned char baudrate) >{ > //unsigned int i; > > UBRR1H = 0; > UBRR1L = 103; > UCSR1B = 0x18; > > //for (i=0; i<UART1_BUF_SIZE; i++) rx1_buf[i] = 0; >} > > > >unsigned char PUTCHAR_UART0 (unsigned char c) >{ > while (!(UCSR0A & 0x20)) ; > UDR0 = c; > return 0; >} > >///////////////////////////////////////////////////////////// >이부분에서 밑으로 쫘악 이와같은 p_rx0_wr ,UART0_BUF_SIZE 등에서 error가 뜹니다 ㅠㅠ > >unsigned int CHECK_RX_BUF_UART0(void) >{ > unsigned int len; > > if (p_rx0_wr == p_rx0_rd) > { > len = 0; > } > else > { > if (p_rx0_wr > p_rx0_rd) len = p_rx0_wr - p_rx0_rd; > else len = UART0_BUF_SIZE + p_rx0_wr - p_rx0_rd; > } > return len; >} > >unsigned int CHECK_RX_BUF_UART1(void) >{ > unsigned int len; > > if (p_rx1_wr == p_rx1_rd) > { > len = 0; > } > else > { > if (p_rx1_wr > p_rx1_rd) len = p_rx1_wr - p_rx1_rd; > else len = UART1_BUF_SIZE + p_rx1_wr - p_rx1_rd; > } > return len; > } >//////////////////////////////////////////// >PUTCHAR_UART1에서도 에러가 뜨네요..... >이걸 해주는 이유가 128에서 블루투스로 데이터가 잘 오는지 확인해보기 위함이라는데.... >도와주세요 ㅠㅠ > > >void BYPASS_MODE() >{ > if(CHECK_RX_BUF_UART0()) > { > PUTCHAR_UART1(GETCHAR_UART0()); > } > if(CHECK_RX_BUF_UART1()) > { > PUTCHAR_UART0(GETCHAR_UART1()); > } >} >void get_adc() >{ > ADMUX=0x40; //입력채널은 ADC0 즉, PF0 , 오른쪽 정렬, VREF는 AVCC > ADCSRA|=0x40; // 단일 모드로 컨버팅 시작 > > while((ADCSRA & 0x10)==0); //wait for the AD conversion to complete > ADCSRA|=0x10; > abf=ADCW; >} >void main() >{ > INIT_UART0(); > > INIT_UART1(); > ADMUX=0x40; > ADCSRA=0x87; > > > while(1) > { > BYPASS_MODE(); > > get_adc(); > printf("%d ",abf); > > delay_ms(1000); > > } >} > >
3505 답변완료회로도 문의 입니다. 김병혁 2009-08-19 1,233
AM-DC1-4D를 사용 중입니다. 작품 회로도를 그려야 하는데 이 제품 회로도 좀 얻을수 없을까요? 부탁드립니다. 메일 주소는 poco412@naver.com 입니다.
관리자 답변 N.T.C · 2009-08-19
안녕하세요? 고객님, 저희 NewTC 제품을 이용하여 주셔서 감사합니다만, 죄송하지만 그 제품은 회로도를 공개하지 않고 있습니다. 다만, L298 데이터 시트를 참고하시기 바랍니다. 감사합니다. >AM-DC1-4D를 사용 중입니다. > >작품 회로도를 그려야 하는데 > >이 제품 회로도 좀 얻을수 없을까요? > >부탁드립니다. > >메일 주소는 poco412@naver.com 입니다.
3504 답변완료AM-MS2를 이용하여 스테핑모터 제어중인데.. 곽경민 2009-08-19 1,420
모터가 진동을 하긴 하는데..움직일 생각은 안하네요..소스는 오픈소스를 받아서 했으나 작동이 안되어, 수정하여 모터가 진동하는 것까지 작동시켜 놓았습니다. 무슨 문제일까요? NTC사의 128 보드를 사용하고 있습니다.
관리자 답변 N.T.C · 2009-08-19
안녕하세요? 고객님, 저희 NewTC 제품을 이용하여 주셔서 감사합니다. 전압, 전류를 맞추셨는 지 확인해 보세요. 그리고, 모터 구동부 중간에 있는 가변저항을 돌려서 토크에 따라 바이어스를 맞춰 주어야 합니다. 토크가 너무 많이 걸리는 데, 전류, 전압이 딸리면 당연히 안돌 것이구요. 바이어스를 잘 못 맞춰도 안돌 것입니다. 확인해 보세요. 수고하세요. >모터가 진동을 하긴 하는데..움직일 생각은 안하네요..소스는 오픈소스를 받아서 했으나 작동이 안되어, 수정하여 모터가 진동하는 것까지 작동시켜 놓았습니다. 무슨 문제일까요? > >NTC사의 128 보드를 사용하고 있습니다.
3503 답변완료AM-3AXIS-P 센서 관련 문의 김도용 2009-08-19 1,303
ATmega128pro 제품과 AM-3AXIS-P을 연동하였고, 뉴티씨에서 제공하는 윈어플리케이션으로 테스트를 완료하였습니다. 궁금증 1. 뉴티씨에서 제공하는 윈도우 어플리케이션(RS-232) 소스를 받아볼수 있을까요? 메뉴얼에는 있다고 하는데...VC 소스는 안보이네요... 궁금증 2. 센싱된 가속도값 1은 값의 부호가 어떻게 되나요?
관리자 답변 N.T.C · 2009-08-19
안녕하세요? 고객님, 저희 NewTC 제품을 이용하여 주셔서 감사합니다. 답변하여 드릴께요. 1. 윈도우쪽 소스는 최신판은 제공되지 않고 있습니다. 예전의 소스는 아래 링크를 따라가시면 코드비전 및 ICCAVR의 예전 예제로 해 보실 수가 있습니다. 다만, 윈도 프로그램에 약간 버그가 있는 데, 주로 버퍼쪽입니다. 참고 바랍니다. 간혹 데이터가 튀고 하는 데, 그게 버퍼 문제입니다. 이 윈도우 소스는 공개해 드리고 있으니, 참고 바랍니다. - 아래 - http://www.newtc.co.kr/download/AM-3AXIS/Window_Example_old.zip 수고하세요. 2. 센싱된 가속도값 1이라는 것이 무슨 말씀이신지요? 아래의 식을 참고하여 계산하시면 되겠습니다. - 아래 - http://www.newtc.co.kr/board/view.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=3축&select_arrange=headnum&desc=asc&no=121 현재의 최신 버전으로 테스트 하시려면, 아래 3을 받으시면 됩니다. - 아래 3- http://www.newtc.co.kr/download/AM-3AXIS/Window_Example.zip 수고하세요. >ATmega128pro 제품과 AM-3AXIS-P을 연동하였고, >뉴티씨에서 제공하는 윈어플리케이션으로 테스트를 완료하였습니다. > >궁금증 1. 뉴티씨에서 제공하는 윈도우 어플리케이션(RS-232) 소스를 받아볼수 있을까요? > 메뉴얼에는 있다고 하는데...VC 소스는 안보이네요... > >궁금증 2. 센싱된 가속도값 1은 값의 부호가 어떻게 되나요?
3502 답변완료UART 통신 돌콤 2009-08-19 1,460
AVR 강좌를 따라, ex_printf.c를 생성해서 compile 하면 아래와 같은 error 메세지가 나옵니다. " !ERROR Function 'putchar' not defined. ...." 테스트 환경은, AM-128PL과 AM-128PRO 2가지 모델에서 동일한 오류 입니다. 동작하는 예제 코드를 부탁드립니다. (필요시, header 파일 포함해서...)
관리자 답변 N.T.C · 2009-08-19
안녕하세요? 고객님, 저희 NewTC 제품을 이용하여 주셔서 감사합니다. 아래를 참고 바랍니다. - 아래 - 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=21 그리고, 자료실->기존자료실에서 시리얼 그리고, UART 두가지로 쳐서 확인해 보시면, 예제소스들이 있습니다. 다음에는 본명으로 꼭 질문 바랍니다. 이곳은 공용 게시판으로 본명이 아니면 답변이 나가지 않습니다. 수고하세요. >AVR 강좌를 따라, ex_printf.c를 생성해서 compile 하면 아래와 같은 error 메세지가 나옵니다. > > " !ERROR Function 'putchar' not defined. ...." > >테스트 환경은, AM-128PL과 AM-128PRO 2가지 모델에서 동일한 오류 입니다. > >동작하는 예제 코드를 부탁드립니다. >(필요시, header 파일 포함해서...) >
3501 답변완료윈 7 64비트로 갈아탔는데.. isp드라이버를 깔아도 isp를 못잡요 ㅠㅠ 누런생선 2009-08-19 1,390
xp 32비트쓸 땐 잘되건건데.... 이러네요... 어케 방도가 없을까요??
관리자 답변 N.T.C · 2009-08-19
안녕하세요? 고객님, VISTA 32비트까지는 잘 설치하여 테스트 하였는데, Vista 64비트는 아직 환경이 없어서, 테스트하지 못하였습니다. 다만, 드라이버 설치 시에 첨부해 드리는 소프트웨어를 통하여, 진행하여 보시기 바랍니다. 우선, 압축을 풀고 CP210xSetIDs.exe를 실행하여 드라이버가 잡히면, VID에 10C4라고 잡힐 겁니다. PID에 84F3이라고 잡힐 거구요 그 중에서 PID를 체크하고, EA60으로 바꾼 뒤에 오른쪽에 있는 Program Device를 한 번 누르세요. 그런 다음에, 올려드린 최신 드라이버를 깔면 동작한다고, 칩 회사에서 설명하고 있습니다. 한 번 해보시기 바랍니다. 참고로 말씀드리면, 아직, 대부분의 개발 환경들이 비스타 64비트까지는 지원되는 것이 쉽지 않을 겁니다. 개발용은 가능하면 XP 정도로 사용하는 것이 좋습니다. 다음에는 본명으로 꼭 질문 바랍니다. 이곳은 공용 게시판으로 본명이 아니면 답변이 나가지 않습니다. 수고하세요. >xp 32비트쓸 땐 잘되건건데.... 이러네요... > >어케 방도가 없을까요??
3500 답변완료USART통신 결과 질문올립니다~! 박민지 2009-08-18 1,447
보드 : NTC사이 ATmega128 Pro 프로그램 : 코드비전 인터넷 소스를 참고하여 LM35센서를 달고 OPAMP gain은 4로하여 이 소스를 돌려봤는데요 ~ 결과 출력값이 298,330,310등 삼백대 전 후반으로 나옵니다 ~ 손으로 센서를 만지면 온도가 상승하고 후후 불면 하강하는 등으로 보아 ADC가 잘 되는것으로 보여지는데요.. 여기서 나오는 300등의 값을 현재온도로 변환을 해서 출력하려하는데요.. long temp; 이렇게 변수지정해서 온도 공식.. temp = 500/1024*abf; 이렇게 하면 0값이 출력되는데요... 그럼 어떻게 현재온도를 출력해야하나요 ..ㅠㅠ? 그리고 저 공식에 나온 값을 계산기로 해보면... 300일때 146이 나오는데...온도로 보기힘든 이 뜬금없는 값은...ㅠㅠ 코드비전은 float형식은 평가판에서는 지원되지 않던데요 ... 어떻게 하면 되나요 도와주세용 ㅠ.ㅠ #include <mega128.h> #include <delay.h> #include <stdio.h> //---------------------------------------------------- unsigned int abf; //---------------------------------------------------- void uart_init() { UCSR0B=0x18; //RXEN0,TXEN0 enable, 송수신 허용 UCSR0C=6; //asynchronous mode, no parity, 1 stop bit, 8 bit UBRR0H=0; UBRR0L=103; // Baud rate=9600 } //---------------------------------------------------- void get_adc() { ADMUX=0x40; //입력채널은 ADC0 즉, PF0 , 오른쪽 정렬, VREF는 AVCC ADCSRA|=0x40; // 단일 모드로 컨버팅 시작 while((ADCSRA & 0x10)==0); //wait for the AD conversion to complete ADCSRA|=0x10; abf=ADCW; } //---------------------------------------------------- void main() { uart_init(); ADMUX=0x40; ADCSRA=0x87; while(1) { //endless loop get_adc(); printf("%d ",abf); delay_ms(1000); } } //-------------------- end of file -------------------
관리자 답변 N.T.C · 2009-08-19
안녕하세요? 코드비전 평가판은 Float를 활성화하면 Evaluation 코드 제한에 걸리게 되네요. 그럼, ICCAVR을 사용하세요. 평가판에서도 float가 잘 됩니다. 다운로드 속도도 더 빠르구요. 수고하세요. >보드 : NTC사이 ATmega128 Pro >프로그램 : 코드비전 > >인터넷 소스를 참고하여 >LM35센서를 달고 OPAMP gain은 4로하여 이 소스를 돌려봤는데요 ~ >결과 출력값이 298,330,310등 삼백대 전 후반으로 나옵니다 ~ > >손으로 센서를 만지면 온도가 상승하고 >후후 불면 하강하는 등으로 보아 ADC가 잘 되는것으로 보여지는데요.. > >여기서 나오는 300등의 값을 현재온도로 변환을 해서 출력하려하는데요.. >long temp; 이렇게 변수지정해서 >온도 공식.. temp = 500/1024*abf; >이렇게 하면 0값이 출력되는데요... >그럼 어떻게 현재온도를 출력해야하나요 ..ㅠㅠ? >그리고 저 공식에 나온 값을 계산기로 해보면... >300일때 146이 나오는데...온도로 보기힘든 이 뜬금없는 값은...ㅠㅠ >코드비전은 float형식은 평가판에서는 지원되지 않던데요 ... >어떻게 하면 되나요 도와주세용 ㅠ.ㅠ > >#include <mega128.h> >#include <delay.h> >#include <stdio.h> >//---------------------------------------------------- >unsigned int abf; > >//---------------------------------------------------- >void uart_init() >{ > UCSR0B=0x18; //RXEN0,TXEN0 enable, 송수신 허용 > UCSR0C=6; //asynchronous mode, no parity, 1 stop bit, 8 bit > UBRR0H=0; > UBRR0L=103; // Baud rate=9600 > } >//---------------------------------------------------- >void get_adc() >{ > ADMUX=0x40; //입력채널은 ADC0 즉, PF0 , 오른쪽 정렬, VREF는 AVCC > ADCSRA|=0x40; // 단일 모드로 컨버팅 시작 > > while((ADCSRA & 0x10)==0); //wait for the AD conversion to complete > ADCSRA|=0x10; > abf=ADCW; >} >//---------------------------------------------------- >void main() >{ > uart_init(); > ADMUX=0x40; > ADCSRA=0x87; > > > while(1) { //endless loop > get_adc(); > printf("%d ",abf); > > delay_ms(1000); > } >} >//-------------------- end of file -------------------
3499 답변완료interrupt부분 질문드립니다 ㅠㅠ 김정민 2009-08-18 1,440
이 부분에서 putch쓰면 안된다고 하셨는데요... 제가 수업을 듣고 하는게 아니라 혼자서 하는거라..ㅠㅠ 어떻게 해야하는지 막막해서요 혹시 저 인터럽트 부분만 그럼 수정봐주시면 안될런지요...ㅠㅠ interrupt [ADC_INT] void adc_isr(void) // ADC 컨버전 완료 interrupt { //ADCSR |= 0x10; // ADIF를 "1"로 클리어한다. result=ADCH; // ADMUX 레지스터 셋팅에 의해 좌정렬 하게 되면 ADC는 8bit의 분해능을 가지게 되고, // ADCH에 그 결과 값이 저장 되므로, ADCH를 읽어 온다. if(ADMUX==0x20) { if(timer_flag==10) // 값을 세번 읽어서 평균을 내에서 전송한다. temp[0]=result; else if(timer_flag==30) temp[1]=result; else if(timer_flag==50) { temp[2]=result; result_temp = (temp[0]+temp[1]+temp[2])/3; //result |= 0x80; putch(result_temp); } } }
관리자 답변 N.T.C · 2009-08-18
아래에 답변 단 것을 참고하세요. 수고하세요. >이 부분에서 putch쓰면 안된다고 하셨는데요... >제가 수업을 듣고 하는게 아니라 혼자서 하는거라..ㅠㅠ >어떻게 해야하는지 막막해서요 >혹시 저 인터럽트 부분만 그럼 수정봐주시면 안될런지요...ㅠㅠ > > > >interrupt [ADC_INT] void adc_isr(void) // ADC 컨버전 완료 interrupt >{ > //ADCSR |= 0x10; // ADIF를 "1"로 클리어한다. > result=ADCH; // ADMUX 레지스터 셋팅에 의해 좌정렬 하게 되면 ADC는 8bit의 분해능을 가지게 되고, > // ADCH에 그 결과 값이 저장 되므로, ADCH를 읽어 온다. > > if(ADMUX==0x20) > { > > if(timer_flag==10) // 값을 세번 읽어서 평균을 내에서 전송한다. > temp[0]=result; > else if(timer_flag==30) > temp[1]=result; > else if(timer_flag==50) > { > temp[2]=result; > result_temp = (temp[0]+temp[1]+temp[2])/3; > > //result |= 0x80; > putch(result_temp); > } > } >} >