로그인 | 회원가입 | 주문 조회
총 10,743개의 질문이 있습니다.
번호 제목 작성자 등록일 조회
2313 답변완료uart 통신관련 질문입니다. 최승호 2009-02-05 1,375
저는 지금 atmega128pro를 사용중이고요 usb uart cable을 연결해서 컴퓨터에 통신하려고 합니다. "printf_사용하여_디버깅하기"강좌를 따라서 해봤는데 디버깅은 성공하는데 자꾸 이상한 글자가 하이퍼 터미널에 출력 됩니다. printf("hi")라고 했는데.. ----------------아래와 같은-------------------------------------- ?序i km纏o{km?o{k???k[k尾KZ?z쯭/kNk=i뱁ⅶj?k=^9子戮館 ?_춀健ZooZ??열子 o?Zk?剩쐐?i용 [칔???영?m萸k춌???{?oZ}k煦?쉭?肉?/???K열壕O?=k삵 戮JO[jJi?{λ춐z?K勖Zi降)?k_쩳Zi쎈?雨Zk?ik酸彷ク쉥{壕_Z後ZZ??{퓃{??薏惚 ?o^?サ?i?퐆츹剩???쎈螢쩵?칬km쉥?Zk{萸{戮Z逈kZ侯?k 폨ZO_??? 程k{壻 ---------------------------------------------------------------- 게 나옵니다. 클럭 주파수를 16MHz로 바꾸고 했는데도 마찬가지입니다. 저런 현상이 보통 어떨때 나오는지 알려 주시고 해결책도 알려주시면 감사하겠습니다 ㅡㅡㅋ
관리자 답변 N.T.C · 2009-02-05
안녕하세요..고객님.. 저희 NewTC 제품을 이용해 주셔서 감사합니다. 아래와 같은 에러는 초기타이밍이 일치하지 않아 생기거나 통신속도가 맞지않아 생기는 현상입니다. UART통신속도와 터미널에서의 통신속도를 일치시켜주시고, 그래도 아래와 같이 문자가 깨져 나오면 리셋키를 눌러보세요. 감사합니다. >저는 지금 atmega128pro를 사용중이고요 >usb uart cable을 연결해서 컴퓨터에 통신하려고 합니다. > >"printf_사용하여_디버깅하기"강좌를 따라서 해봤는데 >디버깅은 성공하는데 자꾸 이상한 글자가 하이퍼 터미널에 출력 됩니다. >printf("hi")라고 했는데.. >----------------아래와 같은-------------------------------------- >?序i km纏o{km?o{k???k[k尾KZ?z쯭/kNk=i뱁ⅶj?k=^9子戮館 ?_춀健ZooZ??열子 >o?Zk?剩쐐?i용 [칔???영?m萸k춌???{?oZ}k煦?쉭?肉?/???K열壕O?=k삵 >戮JO[jJi?{λ춐z?K勖Zi降)?k_쩳Zi쎈?雨Zk?ik酸彷ク쉥{壕_Z後ZZ??{퓃{??薏惚 >?o^?サ?i?퐆츹剩???쎈螢쩵?칬km쉥?Zk{萸{戮Z逈kZ侯?k 폨ZO_??? 程k{壻 >---------------------------------------------------------------- >게 나옵니다. > >클럭 주파수를 16MHz로 바꾸고 했는데도 마찬가지입니다. >저런 현상이 보통 어떨때 나오는지 알려 주시고 해결책도 알려주시면 감사하겠습니다 ㅡㅡㅋ
2312 답변완료어디가 잘못됫나좀알려주세요 ㅠ 박종권 2009-02-04 1,335
void main(void) { volatile unsigned char stepleft, stepright; volatile int turn=1; init_devices(); //insert your functional code here... while(1){ if(turn<401){ MOTOR_PORT_DDR = 0xf0; stepright = RIGHTmotorOneClock(stepright, 1); stepleft = LEFTmotorOneClock(stepleft, 1); MOTOR_PORT = stepleft|stepright; turn++; } if(turn >401){ MOTOR_PORT_DDR = 0x0f; stepright = RIGHTmotorOneClock(stepright, 1); stepleft = LEFTmotorOneClock(stepleft, 1); } delay(10); } } main부분만 가지고 와 &#48419;습니다. 이렇게하면 한바퀴만 돌고 멈추는데, if(turn>401)이부분부터는 적용이 않되는거 같습니다,ㅠㅠ 어떻게 해야되나요?ㅠㅠ
관리자 답변 N.T.C · 2009-02-04
안녕하세요...고객님.... 이 프로그램은 turn이 초기값으로 돌아가는 구문이 없네요. 이 경우 turn은 항상 1000보다 크거나 쓰레기값으로 대치되겠지요. turn을 초기값으로 돌아가게하는 구문이 들어간다해도 1000은 너무 작은 값이라서 걱정이 되네요. 정방향에서 역방향으로 또는 역방향에서 정방향으로 전환할때 너무 급하게 하는 감도 있구요. 그럼 모터 드라이브에 무리가 많이 갑니다. 감사합니다. >void main(void) >{ > volatile unsigned char stepleft, stepright; > volatile int turn=1; > init_devices(); > //insert your functional code here... > > > >while(1){ > delay(5); > if(turn<1000) > MOTOR_PORT_DDR = 0xff; > stepright = RIGHTmotorOneClock(stepright, 1); > stepleft = LEFTmotorOneClock(stepleft, 1); > MOTOR_PORT = stepleft|stepright; > turn++; > return; > if(turn >1000){ > MOTOR_PORT_DDR = 0x00; > stepright = RIGHTmotorOneClock(stepright, 1); > stepleft = LEFTmotorOneClock(stepleft, 1); > MOTOR_PORT = stepleft|stepright; > } > delay(5); > } >} > >main부분만 가지고 와 &#48419;습니다. 제가 나름 생각해서 해봤는데,,진짜 프로그래밍은 아는게 없어서,ㅠㅠ 생각대로 하면 될꺼같은데,, 왜 않되는지 모르겠습니다,,, >뭐가잘못인지좀 알려주세요 ㅠㅠ
2311 답변완료죄송합니다...시리얼 테스트 관련... 김정현 2009-02-04 1,324
올려주신 소스를 이용해서 테스트를 해보고 싶은데요... 확인할 수 있는 툴이나 방식에 대해 알려주실수 있나요? 단순히 강좌에 있는 시리얼 디버깅하기 같이 그런한 툴이나 방식에 대한 설명 좀 부탁드립니다. 만약 그렇게 해서 이게 돌아간다면 다른 사람이 짠 랩뷰라는 프로그램이 문제이기 때문에 여쭈어 봅니다. 또 한가지 궁금한것은 입력시 '1'로 사용하셨는데 이 데이타는 실제 칩으로 들어갈때 헥사 코드인 0x01인가요? 아니면 문자 1을 의미하는 건가요? 저희 pc에서는 현재 8비트 신호로 1 => 0x01로 데이타를 rs232로 송출하고 있는 것 같은데 입력이 전혀 안되고 있어서요.. 간단하게라도 이 하드웨어에서 rs232로 통신하는 것은 이상없음을 확인해야 해서요... 정말 정말 죄송합니다.
관리자 답변 N.T.C · 2009-02-04
안녕하세요...고객님... 자료실이나 저희 카페에 가시면 아주 자세하게 잘 나와있습니다. 제가 고쳐준 소스는 아주 잘 돌아갑니다. 방금 다시 확인했습니다. 글로써 방식에 대해 알려준다는건 사실상 어렵기에 동영상 강좌나 초초보강좌를 추천합니다. '1'은 당연히 문자 1이지요. 그래서 %c, %d를 했던건데.... 16진수로 볼려면 %x로 출력해보면 쉽게 알수 있겠네요. 컴퓨터에서 사용하는 터미널의 설정은 제대로 하셨나요? 가까운 곳에 사시면 본사로 한번 들러주세요. 그럼 좀 더 자세하게 서포트 해드릴수 있습니다. 감사합니다. >올려주신 소스를 이용해서 테스트를 해보고 싶은데요... >확인할 수 있는 툴이나 방식에 대해 알려주실수 있나요? >단순히 강좌에 있는 시리얼 디버깅하기 같이 그런한 툴이나 >방식에 대한 설명 좀 부탁드립니다. >만약 그렇게 해서 이게 돌아간다면 다른 사람이 짠 랩뷰라는 >프로그램이 문제이기 때문에 여쭈어 봅니다. >또 한가지 궁금한것은 입력시 '1'로 사용하셨는데 이 데이타는 실제 >칩으로 들어갈때 헥사 코드인 0x01인가요? 아니면 문자 1을 >의미하는 건가요? >저희 pc에서는 현재 8비트 신호로 1 => 0x01로 데이타를 rs232로 송출하고 >있는 것 같은데 입력이 전혀 안되고 있어서요.. >간단하게라도 이 하드웨어에서 rs232로 통신하는 것은 이상없음을 확인해야 >해서요... >정말 정말 죄송합니다.
2310 답변완료AM-128PRO 씨리얼 통신 황의상 2009-02-04 1,375
AM-128Pro 보드를 구매했는데 UART 통신을 이용할려고 하니 핀이 3개 뿐이네요 이 제품은 MAx232 를 내장 하고 있잖아요 이걸 uart통신을 할려면 어떤제품을 써야하는 거죠 여기 제품도 핀수가 안맞던데
관리자 답변 N.T.C · 2009-02-04
안녕하세요...고객님.. 저희 NewTC 제품을 이용해 주셔서 감사합니다. 원래 3핀이 맞습니다. TX, RX, GND 만 있으면 됩니다. max232내장되어 있습니다. 저희 제품중에 SE-3T9를 이용하면 UART통신을 할 수 있습니다. http://www.newtc.co.kr/product_img/SE-3T9_s.jpg 감사합니다. >AM-128Pro 보드를 구매했는데 UART 통신을 이용할려고 하니 핀이 3개 뿐이네요 > >이 제품은 MAx232 를 내장 하고 있잖아요 이걸 uart통신을 할려면 어떤제품을 써야하는 거죠 여기 제품도 핀수가 안맞던데
2309 답변완료로봇을 만들고 싶은데요 고혜승 2009-02-04 1,499
제가 만들고 싶은것은 AVR나 C언어를 이용하여 바닥에 검은 점을 찍어놓고 그것을 찾아 그 부분에 빛을 발사하는 로봇을 만들고 싶습니다. 학생인 저도 만들수 있는 제가 원하는 로봇을 만들수 있는 방법이 있다면 그부분에 대해서 부품과 함께 알려주시기 바랍니다.
관리자 답변 N.T.C · 2009-02-04
안녕하세요...고객님... 너무 추상적이라 뭐라 답변드리기가 어렵네요.^_^ 마치 자동차 전문가한테 "이제 자동차를 배워볼려고 하는데 어떻게 하면 자동차를 만들수 있습니까? 제품화 하지 않고 그냥 저만 탈 수 있는 간단한 자동차인데 이런 자동차를 만들 수 있는 방법이 있다면 부품과 함께 알려주시기 바랍니다" ^_^ 고객님...저희가 고객님께서 만들고자 하는 로봇에 대해 서포트 해 줄수는 있지만 구체적인 내용과 선택은 고객님의 몫이라 생각됩니다. 저희 홈페이지 강좌 =>> 로봇강좌 한번 보시고 그 다음에 좀더 구체적인 질문을 주시면 얼마든지 도와드리겠습니다. 감사합니다. >제가 만들고 싶은것은 AVR나 C언어를 이용하여 > >바닥에 검은 점을 찍어놓고 그것을 찾아 그 부분에 빛을 발사하는 로봇을 만들고 싶습니다. > >학생인 저도 만들수 있는 제가 원하는 로봇을 만들수 있는 방법이 있다면 > >그부분에 대해서 부품과 함께 알려주시기 바랍니다.
2308 답변완료귀찮게 해드려 죄송합니다...ㅠㅠ 김정현 2009-02-04 1,353
답변 너무너무 감사합니다. #include <iom128v.h> #include <macros.h> #include <stdio.h> void port_init(void) { PORTA = 0x00; DDRA = 0xFF; PORTB = 0x00; DDRB = 0x00; PORTC = 0x00; DDRC = 0x00; PORTD = 0x00; DDRD = 0x00; PORTE = 0x00; DDRE = 0x00; PORTF = 0x00; DDRF = 0x00; PORTG = 0x00; DDRG = 0x00; } void uart0_init(void) { UCSR0B = 0x00; UCSR0A = 0x00; UCSR0C = 0x06; UBRR0L = 0x67; UBRR0H = 0x00; UCSR0B = 0x18; } void init_devices(void) { CLI(); XDIV = 0x00; XMCRA = 0x00; port_init(); uart0_init(); MCUCR = 0x00; EICRA = 0x00; EICRB = 0x00; EIMSK = 0x00; TIMSK = 0x00; ETIMSK = 0x00; SEI(); } int getchar(void) { while ((UCSR0A & 0x80) == 0); return UDR0; } int putchar(char c) { while (((UCSR0A>>UDRE0)&0x01) == 0); UDR0 = c; return c; } void main(void) { int in; init_devices(); while(1) { scanf("%d", &in); if(in == 0x01){ PORTA = 0x01; printf("%d",in); } if(in == 0x02){ PORTA = 0x04; printf("%d",in); } if(in == 0x03){ PORTA = 0x08; printf("%d",in); } if(in == 0x04){ PORTA = 0x02; printf("%d",in); } } } 처음에는 굉장히 쉽게 끊날줄 알았는데 시리얼 통신으로 전혀 입출력이 되지 않아 보여서 미치겠습니다. 그냥 피씨에서 보내는 1.2.3.4에 따라 그 데이터를 다시 pc로 그대로 보내고 각각해당하는 데이타를 포트A에 보내면 되는 것 뿐인데요... 도와주셔서 너무너무 감사해요..ㅠㅠ ..완전 감동입니다. 입력시 설정하는 데이타 타입이 잘못 된건지... 0x01 / 1 / "1"....등 여러가지로 해봐도 그대로 입니다... pc에서 데이터를 보낸다는 확인도 오실로스코프로 모듈위의 시리얼 통신#0 에 찍어보면서 전압 측정해본면서 확인했습니다. 뭐가 문제인지....도통 모르겠습니다.
관리자 답변 N.T.C · 2009-02-04
안녕하세요...고객님... 고객님께서 너무 답답해 하시는것 같아 고객님의 소스를 작동가능하게 간단하게 수정해 드리겠습니다. print문은 %c %d두가지 출력으로 고객님께서 왜 이소스가 작동되지 않는지를 이해하기 쉽게 했습니다. 도움이 되시기를 바라며..... 감사합니다. //ICC-AVR application builder : 2009-02-04 오후 4:14:02 // Target : M128 // Crystal: 16.000Mhz #include <iom128v.h> #include <macros.h> #include <stdio.h> void port_init(void) { PORTA = 0x00; DDRA = 0xFF; PORTB = 0x00; DDRB = 0x00; PORTC = 0x00; //m103 output only DDRC = 0x00; PORTD = 0x00; DDRD = 0x00; PORTE = 0x00; DDRE = 0x00; PORTF = 0x00; DDRF = 0x00; PORTG = 0x00; DDRG = 0x00; } //UART0 initialize // desired baud rate: 9600 // actual: baud rate:9615 (0.2%) // char size: 8 bit // parity: Disabled void uart0_init(void) { UCSR0B = 0x00; //disable while setting baud rate UCSR0A = 0x00; UCSR0C = 0x06; UBRR0L = 0x67; //set baud rate lo UBRR0H = 0x00; //set baud rate hi UCSR0B = 0x18; } //call this routine to initialize all peripherals void init_devices(void) { //stop errant interrupts until set up CLI(); //disable all interrupts XDIV = 0x00; //xtal divider XMCRA = 0x00; //external memory port_init(); uart0_init(); MCUCR = 0x00; EICRA = 0x00; //extended ext ints EICRB = 0x00; //extended ext ints EIMSK = 0x00; TIMSK = 0x00; //timer interrupt sources ETIMSK = 0x00; //extended timer interrupt sources SEI(); //re-enable interrupts //all peripherals are now initialized } int putchar(char c) { while (((UCSR0A>>UDRE0)&0x01) == 0); UDR0 = c; return c; } int getchar(void) { while ((UCSR0A & 0x80) == 0); return UDR0; } // void main(void) { char in; init_devices(); while(1) { scanf("%c", &in); if(in == '1'){ PORTA = 0x01; printf("%c = %d\\r\\n",in, in); } if(in == '2'){ PORTA = 0x04; printf("%c = %d\\r\\n",in, in); } if(in == '3'){ PORTA = 0x08; printf("%c = %d\\r\\n",in, in); } if(in == '4'){ PORTA = 0x02; printf("%c = %d\\r\\n",in, in); } } } >답변 너무너무 감사합니다. > >#include <iom128v.h> >#include <macros.h> >#include <stdio.h> > >void port_init(void) >{ > PORTA = 0x00; > DDRA = 0xFF; > PORTB = 0x00; > DDRB = 0x00; > PORTC = 0x00; > DDRC = 0x00; > PORTD = 0x00; > DDRD = 0x00; > PORTE = 0x00; > DDRE = 0x00; > PORTF = 0x00; > DDRF = 0x00; > PORTG = 0x00; > DDRG = 0x00; >} > >void uart0_init(void) >{ > UCSR0B = 0x00; > UCSR0A = 0x00; > UCSR0C = 0x06; > UBRR0L = 0x67; > UBRR0H = 0x00; > UCSR0B = 0x18; >} > > >void init_devices(void) >{ > CLI(); > XDIV = 0x00; > XMCRA = 0x00; > port_init(); > uart0_init(); > > MCUCR = 0x00; > EICRA = 0x00; > EICRB = 0x00; > EIMSK = 0x00; > TIMSK = 0x00; > ETIMSK = 0x00; > SEI(); >} > >int getchar(void) >{ > while ((UCSR0A & 0x80) == 0); > return UDR0; >} >int putchar(char c) >{ > while (((UCSR0A>>UDRE0)&0x01) == 0); > > UDR0 = c; > return c; >} > > >void main(void) >{ > int in; > init_devices(); > while(1) > { > scanf("%d", &in); > if(in == 0x01){ > PORTA = 0x01; > printf("%d",in); > } > if(in == 0x02){ > PORTA = 0x04; > printf("%d",in); > } > if(in == 0x03){ > PORTA = 0x08; > printf("%d",in); > } > if(in == 0x04){ > PORTA = 0x02; > printf("%d",in); > } >} >} >처음에는 굉장히 쉽게 끊날줄 알았는데 시리얼 통신으로 전혀 입출력이 >되지 않아 보여서 미치겠습니다. >그냥 피씨에서 보내는 1.2.3.4에 따라 그 데이터를 다시 pc로 그대로 보내고 >각각해당하는 데이타를 포트A에 보내면 되는 것 뿐인데요... >도와주셔서 너무너무 감사해요..ㅠㅠ ..완전 감동입니다. >입력시 설정하는 데이타 타입이 잘못 된건지... >0x01 / 1 / "1"....등 여러가지로 해봐도 그대로 입니다... >pc에서 데이터를 보낸다는 확인도 오실로스코프로 모듈위의 시리얼 통신#0 >에 찍어보면서 전압 측정해본면서 확인했습니다. >뭐가 문제인지....도통 모르겠습니다.
2307 답변완료usbisp 질문입니다. 박진형 2009-02-04 1,319
안녕하세요.. 저는 귀사의 avr용 usbisp를 구입하였습니다. 다른 회사의 Atmega8515 키트를 구입하여 테스트중에 통신이 이루어 지지 않아 문의 드립니다. 제 avr키트에 244가 장착되어있습니다. 혹시 귀사의 usb포트에 244가 포함되어 있어 충돌 때문에 통신이 이루어 지지 않을까하는 의심이 들어 이렇게 문의 드립니다. 에러메세지는 'AVRISP error entering programming mode'입니다. 빠른 답변 부탁드립니다.
관리자 답변 N.T.C · 2009-02-04
안녕하세요? 고객님, 말씀하신 킷트가 어떤 회사 킷트인지 모르겠지만, 예전에 N.T.REX 제품에서는 ISP 상에서 사용하지 않는 3번 N.C(No Connection) 핀을 5V로 두어야만, 동작하도록 회로가 구성되어 있더군요. 저희 회사는 스탠다드에 맞춰서 제품을 생산하기 때문에, 그렇게 일반적이지 않는 방식은 지원하지 않고 있습니다. 244 때문은 아닌 것 같지만, 회로속에 그런 회로가 내장된 것은 아닌가 싶습니다. 감사합니다. >안녕하세요.. >저는 귀사의 avr용 usbisp를 구입하였습니다. > >다른 회사의 Atmega8515 키트를 구입하여 테스트중에 통신이 이루어 지지 않아 문의 드립니다. > >제 avr키트에 244가 장착되어있습니다. 혹시 귀사의 usb포트에 244가 포함되어 있어 충돌 때문에 통신이 이루어 지지 않을까하는 의심이 들어 이렇게 문의 드립니다. > >에러메세지는 'AVRISP error entering programming mode'입니다. > >빠른 답변 부탁드립니다.
2306 답변완료전혀 작동되지 않아서 질문 올립니다. 김정현 2009-02-04 1,309
죄송합니다. 너무 답답한지라 다시 질문을 올립니다. ~포트 / 시리얼 초기화~ void init_devices(void) { CLI(); XDIV = 0x00; XMCRA = 0x00; port_init(); uart0_init(); uart1_init(); MCUCR = 0x00; EICRA = 0x00; EICRB = 0x00; EIMSK = 0x00; TIMSK = 0x00; ETIMSK = 0x00; SEI(); } int getchar(void) { while ((UCSR0A & 0x80) == 0); return UDR0; } int putchar(char c) { while (((UCSR1A>>UDRE1)&0x01) == 0); UDR1 = c; return c; } void main(void) { int in ; init_devices(); while(1) { scanf("%d", &in); if(in == 1){ PORTA = 0x01; printf("%d",in); } if(in == 2){ PORTA = 0x04; printf("%d",in); } if(in == 3){ PORTA = 0x08; printf("%d",in); } if(in == 4){ PORTA = 0x02; printf("%d",in); } } } 답뱐해준신 것을 토대로 만들어 봤는데요.. 출력이 전혀 되지않아서요...ㅠ.ㅠ...답답해 죽겠습니다. 죄송합니다...혹시 보이시는 잘못이 있다면 지적좀 해주실수 있나요? 죄송합니다.
관리자 답변 N.T.C · 2009-02-04
안녕하세요...고객님.... 지금의 소스는 큰 문제는 없어보입니다. 하지만 소스가 일부이기에 다른 부분에 에러가 있을 수도 있고 또한 설정부분이 잘못되어도 제대로 동작을 안합니다. 강좌를 한번 읽어보시고 하시는게 좋을 듯 싶습니다. 답답하시면 소스 전부를 올려보세요....그럼 어디가 잘못되었는지 알려드리겠습니다. 감사합니다. >죄송합니다. >너무 답답한지라 다시 질문을 올립니다. > >~포트 / 시리얼 초기화~ >void init_devices(void) >{ > CLI(); > XDIV = 0x00; > XMCRA = 0x00; > port_init(); > uart0_init(); > uart1_init(); > > MCUCR = 0x00; > EICRA = 0x00; > EICRB = 0x00; > EIMSK = 0x00; > TIMSK = 0x00; > ETIMSK = 0x00; > SEI(); >} > >int getchar(void) >{ > while ((UCSR0A & 0x80) == 0); > return UDR0; >} >int putchar(char c) >{ > while (((UCSR1A>>UDRE1)&0x01) == 0); > > UDR1 = c; > return c; >} > >void main(void) >{ > int in ; > init_devices(); > while(1) > { > scanf("%d", &in); > if(in == 1){ > PORTA = 0x01; > printf("%d",in); > } > if(in == 2){ > PORTA = 0x04; > printf("%d",in); > } > if(in == 3){ > PORTA = 0x08; > printf("%d",in); > } > if(in == 4){ > PORTA = 0x02; > printf("%d",in); > } >} >} >답뱐해준신 것을 토대로 만들어 봤는데요.. >출력이 전혀 되지않아서요...ㅠ.ㅠ...답답해 죽겠습니다. >죄송합니다...혹시 보이시는 잘못이 있다면 지적좀 해주실수 있나요? >죄송합니다.
2305 답변완료KT-M128 문의 DongHo,Ha 2009-02-04 1,314
수고하십니다. 홈페이지에서 제품을 보고 궁금한 점이 있어 글 남깁니다. 사진을 보면 KT-M128제품에서 센서부가 모두 커넥터 처리가 되어 있는데 센서는 따로 주시는건가요? 아니면 센서 확장보드를 구매해야 하는건가요? 답변 부탁드리겠습니다. 감사합니다.
관리자 답변 N.T.C · 2009-02-04
안녕하세요...고객님... KT-M128은 종합보더 개념입니다. 따라서 센서, 모터구동부, 출력LED등등 이 ONCHIP된 보드입니다. 제품소개에 보시면 자세하게 나와 있습니다. 감사합니다. >수고하십니다. >홈페이지에서 제품을 보고 궁금한 점이 있어 글 남깁니다. >사진을 보면 KT-M128제품에서 센서부가 모두 커넥터 처리가 되어 있는데 >센서는 따로 주시는건가요? 아니면 센서 확장보드를 구매해야 하는건가요? >답변 부탁드리겠습니다. >감사합니다.
2304 답변완료[질문] 하나의 크리스탈 오실레이터로 최승호 2009-02-04 1,308
하나의 크리스탈 오실레이터를 사용해 동시에 여러개의 atmega128을 동작 시키는것이 가능한가요?
관리자 답변 N.T.C · 2009-02-04
안녕하세요...고객님.. 가능하지 않습니다. 크리스탈은 고속동작을 하므로 약간의 전파방해에도 고속동작에 에러를 이르킬수 있습니다. 감사합니다. >하나의 크리스탈 오실레이터를 사용해 동시에 여러개의 atmega128을 동작 시키는것이 가능한가요? >
2303 답변완료제품을 살려고하는데요.... 손태일 2009-02-03 1,284
제가 임베쪽은 처음이라서요... AVR MEGA 128 개발보드(소형) AB-M128-B에 스템모터 SE-SM9와 스텝모터 드라이버 AM-MS2를 사용하고 초음파 센서로는 SRF-04를 사용해서 차를 제작하려고 하는데 모두 호환가능하고 같이 붙여서 쓸수 있죠??? 모두 이 홈페이지에 메뉴얼이 나와있더라고요...초음파 센서만 빼고.. 혹시 모터 구동부분 자료나 프로그램 소스는 없나요? 강좌에 로봇제작 강좌에 라인트렌서 모터구봉부나 센서구동 부분의 PDF파일이 계속 다운도 안되고 읽혀지지가 않네요....ㅜㅜ 로봇제작의 번호 1,2,3,4번의 라인트렌서 부분 PDF 파일 4개 모두 보내주시면 안되나요??
관리자 답변 N.T.C · 2009-02-03
안녕하세요? 고객님, 자료실이나 Q&A에서 다운이 잘 안되시는 고객님들을 위하여, 링크를 개방합니다. 각종 소스들은 자료실->기존자료실에 보시면 있습니다. MS2 라고 검색하거나, 스테핑 이라고 검색하면 나올겁니다. 또한, 파일 다운로드할 때 오류가 생기는 분은 Windows XP에서는 익스플로러에서 도구-인터넷옵션-고급->국제 UTF-8 보내기에 있는 체크를 해제 하시고, 적용, 확인 하시면 됩니다. 간혹, 그래도 안 되시면 프록시나 HTTP1.1 관련 된 부분도 체크 해 보시구요. 바이러스 프로그램에서 등록 안되어 있으면 안되는 경우도 있으니, 백신을 내리거나, 신뢰 구역에 넣어 주시면 될 수도 있습니다. 아래에서 필요하신 강좌의 링크를 카피하셔서 익스플로러에 치시면 다운 가능합니다. 많이 이용하세요. - 아래 - AVR 기초강좌 : http://www.NewTC.co.kr/강좌/AVR기초강좌.zip AVR 기본강좌 : http://www.NewTC.co.kr/강좌/AVR기본강좌.zip 기초 전자공학 : http://www.NewTC.co.kr/강좌/기초전자공학.zip 전자공학응용과정(노이즈쪽): http://www.NewTC.co.kr/강좌/전자공학응용과정.zip 로봇공학 : http://www.NewTC.co.kr/강좌/로봇공학_라인트레이서.zip 자바기초 : http://www.NewTC.co.kr/강좌/자바기초.zip 졸업작품만들기 : http://www.NewTC.co.kr/강좌/졸업작품만들기.zip 그리고, 모두 호환 가능합니다. http://cafe.naver.com/newtc 에 가입하시는 것도 방법입니다. 그 곳에도 소스들이나 자료들이 많이 있습니다. 그리고, 초음파 센서 SRF-04를 이용하는 예제도 있습니다. - [소스,회로도] 초음파 센서 SRF-04를 이용한 거리측정기 - http://www.newtc.co.kr/board/view.php?id=pds&page=2&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=261 검색 잘 하시면, 쉽게 필요한 자료를 발견할 겁니다. Q&A와 자료실->기존 자료실 등에서 잘 검색해 보세요. 감사합니다. >제가 임베쪽은 처음이라서요... >AVR MEGA 128 개발보드(소형) AB-M128-B에 스템모터 SE-SM9와 스텝모터 드라이버 AM-MS2를 사용하고 초음파 센서로는 SRF-04를 사용해서 차를 제작하려고 하는데 모두 호환가능하고 같이 붙여서 쓸수 있죠??? >모두 이 홈페이지에 메뉴얼이 나와있더라고요...초음파 센서만 빼고.. >혹시 모터 구동부분 자료나 프로그램 소스는 없나요? >강좌에 로봇제작 강좌에 라인트렌서 모터구봉부나 센서구동 부분의 PDF파일이 계속 다운도 안되고 읽혀지지가 않네요....ㅜㅜ >로봇제작의 번호 1,2,3,4번의 라인트렌서 부분 PDF 파일 4개 모두 보내주시면 안되나요??
2302 답변완료답변 정말 감사드립니다...근데 하나만 더 안되나요? 김정현 2009-02-03 1,333
답변 너무너무 감사합니다. 제가 직렬 통신은 처음이라서요... 한가지만 더 가능한지요... 저기...본문을 이렇게 구성했습니다. void main(void){ int in ; init_devices(); while(1){ scanf("%c", &in); if(in = 0x01){ PORTA = 0x01; putchar(1); } if(in = 0x02){ PORTA = 0x04; putchar(2); } if(in = 0x03){ PORTA = 0x08; putchar(3); } if(in = 0x04){ PORTA = 0x02; putchar(4); } } } 시리얼 0번째로 1.2.3.4를 받으면 그거에 해당하는 데이타를 A포트에 출력하고 다시 그 시리얼 통신 0포트로 받았던 1.2.3.4를 되돌려 보내는 건데.. 이 소스가 맞는지 궁금합니다. 지금 상태는 그냥 4 입력했을시의 경우만 출력(PORTA = 0x02;)하고 있어0서요... 귀찮게 해서 너무너무 죄송합니다....
관리자 답변 N.T.C · 2009-02-03
안녕하세요...고객님... if(in = 0x01) // in이라는 변수에 0x01을 대입하라는 대입연산자이기에 잘못되었네요. if(in == 0x01)이런식으로 비교연산자를 정확하게 사용하세요. 초기화가 제대로 이뤄졌다면 main문의 '=' 을 '=='으로 바꿔주면 동작할것 같네요. 감사합니다. >답변 너무너무 감사합니다. >제가 직렬 통신은 처음이라서요... >한가지만 더 가능한지요... >저기...본문을 이렇게 구성했습니다. >void main(void){ >int in ; >init_devices(); >while(1){ > scanf("%c", &in); > if(in = 0x01){ > PORTA = 0x01; > putchar(1); > } > if(in = 0x02){ > PORTA = 0x04; > putchar(2); > } > if(in = 0x03){ > PORTA = 0x08; > putchar(3); > } > if(in = 0x04){ > PORTA = 0x02; > putchar(4); > } >} >} >시리얼 0번째로 1.2.3.4를 받으면 그거에 해당하는 데이타를 A포트에 출력하고 >다시 그 시리얼 통신 0포트로 받았던 1.2.3.4를 되돌려 보내는 건데.. >이 소스가 맞는지 궁금합니다. 지금 상태는 그냥 4 입력했을시의 경우만 >출력(PORTA = 0x02;)하고 있어0서요... >귀찮게 해서 너무너무 죄송합니다....
2301 답변완료보드에 들어가는 전압에 대해서 문의합니다. 송창병 2009-02-03 1,361
방금 전화드린 사람인데요. 저희가 AB-M128-B보드와 AM-M16-B보드를 각각하나씩 구매했습니다. 보드 메뉴얼에는 12볼트 이상의 전압이 들어와야 보드가 구동된다고 되어있는데 저희가 어뎁터를 사용하여 보드를 구동하는것이 아니라 소형로봇을 만들고 있어서 베터리를 보드에 연결해서 사용해야 하는 상황입니다. 저희가 가지고 있는 베터리는 리튬-폴리머 베터리 11볼트가 있는데 혹시 이것을 각각보드 하나씩 달아도 보드가 구동이 되는지가 궁금해서 글을 올립니다. 요약하자면 AB-M128-B보드에 리튬-폴리버 베터리 11볼트를 연결해도 보드가 작동하는것입니까?? 마찬가지로 AM-M16-B에도 똑같은 베터리를 연결할 경우 역시 보드가 작동하는지 알고 싶습니다. 참고로 128보드에는 서보모터보드가 연결되고 서보모터보드에는 서보모터가 2개 달려있습니다. 그리고 16보드에는 5볼트출력을 사용하는 워터펌프가 달려있습니다. 빠른 답변 부탁드립니다.
관리자 답변 N.T.C · 2009-02-03
안녕하세요...고객님.. 네, 가능합니다. 베터리만 안정적으로 전원을 공급해 준다면 무리없이 작동 시킬수 있습니다. AVR MCU는 TTL레벨이기에 7805가 7V이상의 전압을 5V로 다운시켜 주니깐 사용하셔도 됩니다. 서보모터와 워트펌퍼의 정확한 스펙을 알수 없어 뭐라 답변드릴 수 없지만 충분한 전류만 공급된다면 사용가능합니다. 감사합니다. >방금 전화드린 사람인데요. > >저희가 AB-M128-B보드와 AM-M16-B보드를 각각하나씩 구매했습니다. > >보드 메뉴얼에는 12볼트 이상의 전압이 들어와야 보드가 구동된다고 되어있는데 저희가 어뎁터를 사용하여 보드를 구동하는것이 아니라 소형로봇을 만들고 있어서 베터리를 보드에 연결해서 사용해야 하는 상황입니다. > >저희가 가지고 있는 베터리는 리튬-폴리머 베터리 11볼트가 있는데 혹시 이것을 각각보드 하나씩 달아도 보드가 구동이 되는지가 궁금해서 글을 올립니다. > >요약하자면 AB-M128-B보드에 리튬-폴리버 베터리 11볼트를 연결해도 보드가 작동하는것입니까?? 마찬가지로 AM-M16-B에도 똑같은 베터리를 연결할 경우 역시 보드가 작동하는지 알고 싶습니다. > >참고로 128보드에는 서보모터보드가 연결되고 서보모터보드에는 서보모터가 2개 달려있습니다. 그리고 16보드에는 5볼트출력을 사용하는 워터펌프가 달려있습니다. > >빠른 답변 부탁드립니다.
2300 답변완료시리얼 통신에 관한 질문입니다.(rs232사용) 김정현 2009-02-03 1,473
현재 입력한 소스로 pc에서 프로그램을 돌려 rs232로 1(0x01)을 보내서 A 포트에 출력하고 다시 RS로 1(0x01)를 돌려보내는 기능입니다. 지금 해보고 있는데 전혀 입출력이 이뤄지지 않고 있습니다. 컴파일러에서는 에러는 없었습니다...ㅠ.ㅠ 직렬통신을 처음 해보는 거라 많이 답답하면서 다른 자료들도 많이 보고 있는데 너무 뒤죽박죽이네요... ~A포트 출력 설정~ void uart0_init(void) { UCSR0B = 0x00; //disable while setting baud rate UCSR0A = 0x00; UCSR0C = 0x06; UBRR0L = 0x67; //set baud rate lo UBRR0H = 0x00; //set baud rate hi UCSR0B = 0x18; } void uart1_init(void) { UCSR1B = 0x00; //disable while setting baud rate UCSR1A = 0x00; UCSR1C = 0x06; UBRR1L = 0x67; //set baud rate lo UBRR1H = 0x00; //set baud rate hi UCSR1B = 0x18; } void init_devices(void) { 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 } int getchar(void) { while ((UCSR0A & 0x80) == 0); return UDR0; } int putchar(char c) { while (((UCSR1A>>UDRE1)&0x01) == 0) ; // UDRE, data register empty UDR1 = c; return c; } void main(void){ int in ; init_devices(); while(1){ scanf("%c", &in); if(in = 0x01){ PORTA = 0x01; putchar(1); } if(in = 0x02){ PORTA = 0x04; putchar(2); } if(in = 0x03){ PORTA = 0x08; putchar(3); } if(in = 0x04){ PORTA = 0x02; putchar(4); } } } 귀찮게 해서 죄송한데 한번만 도와주세요//ㅠㅠ RS로 1.2.3.4를 받으면 A포트로 각각 출력만 하면 되는건데... 초짜라 너무 힘드네요...
관리자 답변 N.T.C · 2009-02-03
안녕하세요? 고객님, init_devices()에서 port_init(); 다음에다가, uart0_init(); 이렇게 초기화 하셔야 UART0번을 쓸 수 있구요. 1번도 마찬가지로 초기화 하셔야 가능합니다. 감사합니다. >현재 입력한 소스로 pc에서 프로그램을 돌려 rs232로 1(0x01)을 보내서 >A 포트에 출력하고 다시 RS로 1(0x01)를 돌려보내는 기능입니다. >지금 해보고 있는데 전혀 입출력이 이뤄지지 않고 있습니다. >컴파일러에서는 에러는 없었습니다...ㅠ.ㅠ > >직렬통신을 처음 해보는 거라 많이 답답하면서 다른 자료들도 많이 >보고 있는데 너무 뒤죽박죽이네요... > >~A포트 출력 설정~ >void uart0_init(void) >{ > UCSR0B = 0x00; //disable while setting baud rate > UCSR0A = 0x00; > UCSR0C = 0x06; > UBRR0L = 0x67; //set baud rate lo > UBRR0H = 0x00; //set baud rate hi > UCSR0B = 0x18; >} >void uart1_init(void) >{ > UCSR1B = 0x00; //disable while setting baud rate > UCSR1A = 0x00; > UCSR1C = 0x06; > UBRR1L = 0x67; //set baud rate lo > UBRR1H = 0x00; //set baud rate hi > UCSR1B = 0x18; >} >void init_devices(void) >{ > 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 >} >int getchar(void) >{ > while ((UCSR0A & 0x80) == 0); > return UDR0; >} >int putchar(char c) >{ > while (((UCSR1A>>UDRE1)&0x01) == 0) ; // UDRE, data register empty > > UDR1 = c; > return c; >} >void main(void){ >int in ; >init_devices(); >while(1){ > scanf("%c", &in); > if(in = 0x01){ > PORTA = 0x01; > putchar(1); > } > if(in = 0x02){ > PORTA = 0x04; > putchar(2); > } > if(in = 0x03){ > PORTA = 0x08; > putchar(3); > } > if(in = 0x04){ > PORTA = 0x02; > putchar(4); > } >} >} >귀찮게 해서 죄송한데 한번만 도와주세요//ㅠㅠ >RS로 1.2.3.4를 받으면 A포트로 각각 출력만 하면 되는건데... >초짜라 너무 힘드네요...
2299 답변완료귀사의 ATmega128 모듈 ADC포트에 관한 질문 김희선 2009-02-03 1,448
안녕하세요. 항상 많은 도움에 감사드립니다. RF모듈 A/S는 4일 오후 전에 도착할 듯 싶습니다. 일전에 방문하였을 때 온도센서의 전압을 ATmega128로 측정한다고 말씀드렸었는데, 전압측정시 isolation 문제때문에 좀 문제가 생겼습니다. ATmega128의 ADC 포트를 보니 isolation은 안될 것 같아서요(차동입력을 이용하면 두 포트 정도는 될 것 같은데 포트 수가 너무 적고요) 그래서 첨부한 그림과 같이 하면 어떨까 생각중입니다. 가장 낮은 전위를 갖는 부분을 AGND에 연결시켜주고 나머지 부분을 단극성으로 입력시켜 주려 합니다. 궁금한 점이, 제가 일전에 방문해서 구입한 ATmega128모듈의 경우 전원2핀에 5V +-를 주면, -는 AGND와 연결이 바로 되는 구조인가요? 만약 그렇게 되면 그림과 같이 꾸미기 위해서 전원핀 -극과 AGND의 연결을 끊어줘야 하니 확인하고 싶습니다. 감사합니다. 좋은 하루 보내세요!
관리자 답변 N.T.C · 2009-02-03
안녕하세요? 모듈 + 보드 로 사용하시게 되면, 기본으로는 전원 5V에 인가를 하게 되면 Vref도 5V가 인가되게 됩니다. 모듈만 쓰시게 되면 전원을 인가한다고 해서 Vref에 5V가 인가되지 않습니다. 인가하려면, 5V를 따로 Vref에 연결하셔야 합니다. AGND도 마찬가지 입니다. 그리고, 채널 과 채널간의 crosstalk를 방지하기 위한 isolation은 샘플링 주파수가 매우 낮어서, PCB 상에서는 크게 신경쓰지 않으셔도 될 것 같습니다. 다만, 외부에 다는 선에서 길어지면서 그런 문제가 생길 수는 있을 것 같으니, 가능한 짧은 선을 사용하시는 것이 좋겠습니다. 수고하세요. > >안녕하세요. 항상 많은 도움에 감사드립니다. >RF모듈 A/S는 4일 오후 전에 도착할 듯 싶습니다. > >일전에 방문하였을 때 온도센서의 전압을 ATmega128로 측정한다고 말씀드렸었는데, 전압측정시 isolation 문제때문에 좀 문제가 생겼습니다. ATmega128의 ADC 포트를 보니 isolation은 안될 것 같아서요(차동입력을 이용하면 두 포트 정도는 될 것 같은데 포트 수가 너무 적고요) > >그래서 첨부한 그림과 같이 하면 어떨까 생각중입니다. 가장 낮은 전위를 갖는 부분을 AGND에 연결시켜주고 나머지 부분을 단극성으로 입력시켜 주려 합니다. >궁금한 점이, 제가 일전에 방문해서 구입한 ATmega128모듈의 경우 전원2핀에 5V +-를 주면, -는 AGND와 연결이 바로 되는 구조인가요? 만약 그렇게 되면 그림과 같이 꾸미기 위해서 전원핀 -극과 AGND의 연결을 끊어줘야 하니 확인하고 싶습니다. > >감사합니다. 좋은 하루 보내세요!