로그인 | 회원가입 | 주문 조회
총 10,743개의 질문이 있습니다.
번호 제목 작성자 등록일 조회
3483 답변완료AVR용 USB-ISP 멀티 WIRTE 문의 김동후 2009-08-14 1,328
질문 드립니다. 귀사의 제품중 AVR용 USB-ISP를 이용 하여 여러개의 제품을 WRITE 하고 싶습니다. 즉 5개 이상을 한번에 WRITE 하고 싶습니다. (양산용) 가능 한지요 만약 가능 하다면 방법을 알고 싶습니다. 현재 툴이 아닌 개발을 해야 한다면 개발 비용은 어느정도로 예상 하는 지요.. 빠른 답변 부탁 드립니다.
관리자 답변 N.T.C · 2009-08-14
안녕하세요? 고객님, 저희 NewTC를 이용하여 주셔서 감사합니다. 한 번에 다섯개는 현재 상태로는 불가능 할 것 같습니다. 다른 방법으로 개발을 해야 하는 데, 개발 비용이 생각하시는 것 보다 많이 들어갈 것 같습니다. 제품으로 사용하려면 몇 개월 정도 개발해야 할 테니까요. 제 생각에는 칩 상태로 굽는 장비를 사용하여 write 한 다음, 이런 칩으로 굽는 장비는 한 번에 여러개를 굽는 장비가 이미 개발되어 있으니까요. 그런 다음에, 쓰는 것이 훨씬 저렴하게 하실 수 있을 것 같네요. 수고하세요. >질문 드립니다. > >귀사의 제품중 AVR용 USB-ISP를 이용 하여 여러개의 제품을 WRITE 하고 싶습니다. > >즉 5개 이상을 한번에 WRITE 하고 싶습니다. (양산용) > >가능 한지요 만약 가능 하다면 방법을 알고 싶습니다. > >현재 툴이 아닌 개발을 해야 한다면 개발 비용은 어느정도로 예상 하는 지요.. > >빠른 답변 부탁 드립니다.
3482 답변완료다시한번질문드립니다^^ 이경섭 2009-08-13 1,336
#include <iom128v.h> #include <macros.h> #define MOTOR_PORT PORTC #define MOTOR_PORT_DDR DDRC volatile unsigned int Count=0, Value_R=0xC2, Value_L=0xC2; volatile unsigned char Step_RG=0, Step_RB=0, Step_LG=0,Step_LB=0, Input=0, Status=0; unsigned char RGO[8]={0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90}; unsigned char RBACK[8]={0x90,0x80,0xc0,0x40,0x60,0x20,0x30,0x10}; unsigned char LGO[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; unsigned char LBACK[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; void port_init(void) { PORTA = 0x00; DDRA = 0x00; 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; } //TIMER0 initialize - prescale:256 // WGM: Normal // desired value: 1KHz // actual value: 1.008KHz (0.8%) void timer0_init(void) { TCCR0 = 0x00; //stop ASSR = 0x00; //set async mode TCNT0 = 0xC2; //set count OCR0 = 0x3E; TCCR0 = 0x06; //start timer } #pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF void timer0_ovf_isr(void) { TCNT0 = Value_R; //reload counter value if(Status&0x01) MOTOR_PORT = RGO[Step_RG++]; if(Status&0x02) MOTOR_PORT = RBACK[Step_RB++]; if(Step_RG>7) Step_RG=0; if(Step_RB>7) Step_RB=0; if(Value_R>0xfa) Value_R=0xfa; if(Value_R<0x05) Value_R=0x05; } //TIMER1 initialize - prescale:256 // WGM: 0) Normal, TOP=0xFFFF // desired value: 100Hz // actual value: 100.000Hz (0.0%) void timer1_init(void) { TCCR1B = 0x00; //stop TCNT1H = 0xFD; //setup TCNT1L = 0x8F; OCR1AH = 0x02; OCR1AL = 0x71; OCR1BH = 0x02; OCR1BL = 0x71; OCR1CH = 0x02; OCR1CL = 0x71; ICR1H = 0x02; ICR1L = 0x71; TCCR1A = 0x00; TCCR1B = 0x04; //start Timer } #pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF void timer1_ovf_isr(void) { //TIMER1 has overflowed TCNT1H = 0xFD; //reload counter high value TCNT1L = 0x8F; //reload counter low value if(Count++>50){ Input=PINA; if(Input==0x01) Status = (Status&0xf0)|0x01; if(Input==0x02) Status = (Status&0xf0)|0x02; if(Input==0x04) Value_R++; if(Input==0x08) Value_R--; if(Input==0x10) Status = (Status&0x0f)|0x10; if(Input==0x20) Status = (Status&0x0f)|0x20; if(Input==0x40) Value_L++; if(Input==0x80) Value_L--; Input=0; Count=0; } } //TIMER2 initialize - prescale:256 // WGM: Normal // desired value: 1KHz // actual value: 1.008KHz (0.8%) void timer2_init(void) { TCCR2 = 0x00; //stop TCNT2 = 0xC2; //setup OCR2 = 0x3E; TCCR2 = 0x04; //start } #pragma interrupt_handler timer2_ovf_isr:iv_TIM2_OVF void timer2_ovf_isr(void) { TCNT2 = Value_L; //reload counter value if(Status&0x10) MOTOR_PORT = LGO[Step_LG++]; if(Status&0x20) MOTOR_PORT = LBACK[Step_LB++]; if(Step_LG>7) Step_LG=0; if(Step_LB>7) Step_LB=0; if(Value_L>0xfa) Value_L=0xfa; if(Value_L<0x05) Value_L=0x05; } //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(); timer0_init(); timer1_init(); timer2_init(); MCUCR = 0x00; EICRA = 0x00; //extended ext ints EICRB = 0x00; //extended ext ints EIMSK = 0x00; TIMSK = 0x45; //timer interrupt sources ETIMSK = 0x00; //extended timer interrupt sources SEI(); //re-enable interrupts //all peripherals are now initialized } // void main(void) { init_devices(); MOTOR_PORT_DDR=0xFF; while(1){ ; } } 먼저 이전에 제가올린 질문에 답변주셔서 감사합니다^^ cs2p타이머 이용 제어 소스인데요~ 각각의 변수들이 의미하는바를 잘모르겠어서 그러는데요~ Count, Value_R, Value_L, Input, Status 의 변수들이 어떤값을 의미하는지 좀 알려주새요ㅠㅠ 감사합니다!!!
관리자 답변 N.T.C · 2009-08-13
안녕하세요? 카운터를 이용하여 왼쪽, 오른쪽 모터를 각각 제어하는 소스입니다. 왼쪽모터, 오른쪽 의 속도도 제어하구요. A 포트의 입력된 스위치 값에 의해, 여러가지를 제어할 수 있는 소스입니다. 수고하세요. >#include <iom128v.h> >#include <macros.h> > > >#define MOTOR_PORT PORTC >#define MOTOR_PORT_DDR DDRC > >volatile unsigned int Count=0, Value_R=0xC2, Value_L=0xC2; >volatile unsigned char Step_RG=0, Step_RB=0, Step_LG=0,Step_LB=0, Input=0, Status=0; > >unsigned char RGO[8]={0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90}; >unsigned char RBACK[8]={0x90,0x80,0xc0,0x40,0x60,0x20,0x30,0x10}; >unsigned char LGO[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; >unsigned char LBACK[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; > > >void port_init(void) >{ > PORTA = 0x00; > DDRA = 0x00; > 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; >} > >//TIMER0 initialize - prescale:256 >// WGM: Normal >// desired value: 1KHz >// actual value: 1.008KHz (0.8%) >void timer0_init(void) >{ > TCCR0 = 0x00; //stop > ASSR = 0x00; //set async mode > TCNT0 = 0xC2; //set count > OCR0 = 0x3E; > TCCR0 = 0x06; //start timer >} > >#pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF >void timer0_ovf_isr(void) >{ > TCNT0 = Value_R; //reload counter value > > if(Status&0x01) MOTOR_PORT = RGO[Step_RG++]; > if(Status&0x02) MOTOR_PORT = RBACK[Step_RB++]; > if(Step_RG>7) Step_RG=0; > if(Step_RB>7) Step_RB=0; > if(Value_R>0xfa) Value_R=0xfa; > if(Value_R<0x05) Value_R=0x05; > >} > > >//TIMER1 initialize - prescale:256 >// WGM: 0) Normal, TOP=0xFFFF >// desired value: 100Hz >// actual value: 100.000Hz (0.0%) >void timer1_init(void) >{ > TCCR1B = 0x00; //stop > TCNT1H = 0xFD; //setup > TCNT1L = 0x8F; > OCR1AH = 0x02; > OCR1AL = 0x71; > OCR1BH = 0x02; > OCR1BL = 0x71; > OCR1CH = 0x02; > OCR1CL = 0x71; > ICR1H = 0x02; > ICR1L = 0x71; > TCCR1A = 0x00; > TCCR1B = 0x04; //start Timer >} > >#pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF >void timer1_ovf_isr(void) >{ > //TIMER1 has overflowed > TCNT1H = 0xFD; //reload counter high value > TCNT1L = 0x8F; //reload counter low value > if(Count++>50){ > Input=PINA; > if(Input==0x01) Status = (Status&0xf0)|0x01; > if(Input==0x02) Status = (Status&0xf0)|0x02; > if(Input==0x04) Value_R++; > if(Input==0x08) Value_R--; > if(Input==0x10) Status = (Status&0x0f)|0x10; > if(Input==0x20) Status = (Status&0x0f)|0x20; > if(Input==0x40) Value_L++; > if(Input==0x80) Value_L--; > Input=0; > Count=0; > } >} > >//TIMER2 initialize - prescale:256 >// WGM: Normal >// desired value: 1KHz >// actual value: 1.008KHz (0.8%) >void timer2_init(void) >{ > TCCR2 = 0x00; //stop > TCNT2 = 0xC2; //setup > OCR2 = 0x3E; > TCCR2 = 0x04; //start >} > >#pragma interrupt_handler timer2_ovf_isr:iv_TIM2_OVF >void timer2_ovf_isr(void) >{ > TCNT2 = Value_L; //reload counter value > > if(Status&0x10) MOTOR_PORT = LGO[Step_LG++]; > if(Status&0x20) MOTOR_PORT = LBACK[Step_LB++]; > if(Step_LG>7) Step_LG=0; > if(Step_LB>7) Step_LB=0; > > if(Value_L>0xfa) Value_L=0xfa; > if(Value_L<0x05) Value_L=0x05; > >} >//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(); > timer0_init(); > timer1_init(); > timer2_init(); > > MCUCR = 0x00; > EICRA = 0x00; //extended ext ints > EICRB = 0x00; //extended ext ints > EIMSK = 0x00; > TIMSK = 0x45; //timer interrupt sources > ETIMSK = 0x00; //extended timer interrupt sources > SEI(); //re-enable interrupts > //all peripherals are now initialized >} > >// >void main(void) >{ > init_devices(); > MOTOR_PORT_DDR=0xFF; > while(1){ > ; > } >} > >먼저 이전에 제가올린 질문에 답변주셔서 감사합니다^^ > >cs2p타이머 이용 제어 소스인데요~ > >각각의 변수들이 의미하는바를 잘모르겠어서 그러는데요~ > >Count, Value_R, Value_L, Input, Status 의 변수들이 어떤값을 의미하는지 좀 알려주새요ㅠㅠ > >감사합니다!!! >
3481 답변완료avr 활용 질문이요 이철원 2009-08-13 1,390
안녕하세요 질문있어서 글 씁니다. 일단 전 avr128 제품을 가지고 있고요, 무슨 패키지로 사서 아답터랑 이런것도 다 있습니다. 제가 dc모터 제어랑 co2제어 온도 제어를 해야되는데요 한 1m^3정도 공간을 실내의 축소판이라고 하고 그 안쪽에서 공기나 온도 같은걸 제어 하는 겁니다예를 들면 온도나 co2가 일정 이상 올라가면 펜이 작동하고 다시 그 이하로 내려가면 장치가 작동하지 않는 그런 장치입니다. dc모터는 다른 장치를 구동시키는데 필요합니다. 제가 전자과가 아니다 보니까 이쪽에 너무 문외한이라서 여기 있는 강좌같은걸 보면서 하나씩 배워갈려고 하는데 강좌가 너무 많은데 여기서 제가 만드는 제품에 도움을 줄수 있는 강좌가 어떤게 있을까요? 일단 동영상 강좌는 들어봤는데 제가 만드는거랑은 좀 틀린거 같네요.. 그리고 제가 제어소스같은거 하나도 만들줄 모르는데 이런건 어떻게 해야되나요? 답변 부탁드리겠습니다.
관리자 답변 N.T.C · 2009-08-13
안녕하세요? 고객님, 저희 NewTC 제품을 이용하여 주셔서 감사합니다. 정확하게 그런 어플리케이션으로 된 강좌는 없습니다. CO2 센서의 스펙에 따라서, 다르겠지만 일반적으로 센서는 A/D 컨버터 쪽을 보면 됩니다. 그리고, DC 모터 구동부쪽을 보면 되겠지요. 강좌->AVR 강좌에서 초초보 강좌를 보시면 좋겠습니다. 사실 이 분야는 열심히 공부해서 하지 않으면, 하기가 어렵습니다. 소스를 직접 짜야 하니까요. 누가 대신해서 소스를 짜 주거나, 하드웨어를 구성해 주지는 않습니다. 그리고, C언어도 공부하셔야 합니다. 만약, 개발건으로 개발 의뢰라면, 개발 의뢰로 받겠지만, 비용이 많이 높아지게 되기 때문에, 직접 개발하시는 것이 좋습니다. 수고하세요. >안녕하세요 질문있어서 글 씁니다. 일단 전 avr128 제품을 가지고 있고요, 무슨 패키지로 사서 아답터랑 이런것도 다 있습니다. >제가 dc모터 제어랑 co2제어 온도 제어를 해야되는데요 >한 1m^3정도 공간을 실내의 축소판이라고 하고 그 안쪽에서 공기나 온도 같은걸 제어 하는 겁니다예를 들면 온도나 co2가 일정 이상 올라가면 펜이 작동하고 다시 그 이하로 내려가면 장치가 작동하지 않는 그런 장치입니다. dc모터는 다른 장치를 구동시키는데 필요합니다. >제가 전자과가 아니다 보니까 이쪽에 너무 문외한이라서 여기 있는 강좌같은걸 보면서 하나씩 배워갈려고 하는데 강좌가 너무 많은데 여기서 제가 만드는 제품에 도움을 줄수 있는 강좌가 어떤게 있을까요? 일단 동영상 강좌는 들어봤는데 제가 만드는거랑은 좀 틀린거 같네요.. 그리고 제가 제어소스같은거 하나도 만들줄 모르는데 이런건 어떻게 해야되나요? 답변 부탁드리겠습니다. >
3480 답변완료스테핑 모터에 대한 문의 사항입니다. 정상현 2009-08-13 1,376
안녕하세요. 스테핑 모터를 이용하여 간단한 정 역 회전과 속도 제어, 거리 제어 하고 싶습니다 쓰고자 하는 스테핑 모터 모델은 SE-SM2이고 아직 나머지는 미정입니다. 들어가는 제품이 궁금합니다. AVR 128을 이용하여 제어하고 싶은데 혹시 오픈 소스가 있나요?
관리자 답변 N.T.C · 2009-08-13
안녕하세요? 저희 N.T.C 제품에 관한 질문시 유의사항입니다. 저희 Q&A 게시판은 저희 N.T.C 제품을 사용하시는 분들을 위한 질문과 답변을 해 드리는 게시판입니다. 또한, 반드시 본명을 사용하여 질문하셔야 합니다. 이상의 내용을 지켜 주시면, 언제든 질문은 환영이고, 늘 최선을 다하여 답변 드리겠습니다. 감사합니다. >안녕하세요. > >스테핑 모터를 이용하여 간단한 정 역 회전과 > >속도 제어, 거리 제어 하고 싶습니다 > >쓰고자 하는 스테핑 모터 모델은 SE-SM2이고 > >아직 나머지는 미정입니다. > >들어가는 제품이 궁금합니다. > >AVR 128을 이용하여 제어하고 싶은데 > >혹시 오픈 소스가 있나요? > >
3479 답변완료아래 글에서 모터드라이버 문제 모터스펙 입니다. 가승일 2009-08-13 1,469
http://www.dnj.co.kr/_data/2_dcgm/ecig_spec_ig32e2c0102.htm 위의 모터 사용중이고요. MCU 는 Atmega128 입니다.
관리자 답변 N.T.C · 2009-08-13
안녕하세요? 고객님, 저희 NewTC 제품을 이용하여 주셔서 감사합니다. 우선, 사용하시는 모터는 대략 12V 530mA 정도 사용이라 순간 전류가 1A 이상 흐를 것으로 예상됩니다. 하지만, 저희 모터 구동부로 충분히 구동이 가능한 부분입니다. 혹시, 그렇다면 사용하시는 전원부는 어떤 것을 쓰는 지 궁급합니다. 전원부가 안정이 안되면, 모터 구동부에 무리를 줄 수 있습니다. 전원부 스펙을 올려 보세요. 수고하세요. >http://www.dnj.co.kr/_data/2_dcgm/ecig_spec_ig32e2c0102.htm > >위의 모터 사용중이고요. MCU 는 Atmega128 입니다.
3478 답변완료USB ISP V03 가 장치관리자에 등록되지 않습니다 도움바랍니다. 정연진 2009-08-13 1,410
USB ISP V03을 컴퓨터에서 사용할려고 합니다. 드라이버 프로그램은 컴퓨터로 다운 받았습니다. 하지만 압축을 풀고 인스톨은 성공적으로 되었으나, 드라이버가 장치관리자에 성공적으로 등록되지 않았습니다. 원인이 무엇인지 확인바랍니다.... fig1은 장치관리자의 드라이버가 등록되지 않은 화면이며, fig2는 시스템에서 드라이버서명을 '경고'로 하였을&#46468; 뜨는 화면입니다. 드라이버 서명을 '무시'로 화면 경고 화면은 뜨지 않으나 드라이버가 설치되지 않은 결과는 같습니다.
관리자 답변 N.T.C · 2009-08-13
안녕하세요? 고객님, 저희 NewTC 제품을 이용하여 주셔서 감사합니다. PC에 따라서 그렇게 되는 경우도 있습니다. 이럴 때는, 고객님이 올려주신 마지막 화면에서 무시 하고, 계속 진행하여 드라이버를 설치하시기 바랍니다. MS에서 인증받지 않은 드라이버라서 생기는 화면이니, 상관없이 진행하시면 됩니다. 감사합니다. >USB ISP V03을 컴퓨터에서 사용할려고 합니다. >드라이버 프로그램은 컴퓨터로 다운 받았습니다. > >하지만 압축을 풀고 인스톨은 성공적으로 되었으나, > 드라이버가 장치관리자에 성공적으로 등록되지 않았습니다. > >원인이 무엇인지 확인바랍니다.... > >fig1은 장치관리자의 드라이버가 등록되지 않은 화면이며, >fig2는 시스템에서 드라이버서명을 '경고'로 하였을&#46468; 뜨는 화면입니다. >드라이버 서명을 '무시'로 화면 경고 화면은 뜨지 않으나 >드라이버가 설치되지 않은 결과는 같습니다. >
3477 답변완료USBISP 3.0 제품 ATMEGA2560지원? 김성식 2009-08-13 1,407
USBISP 3.0 제품 ATMEGA2560지원하는지요?
관리자 답변 N.T.C · 2009-08-13
안녕하세요? 고객님, 네 지원됩니다. 제가 직접 테스트까지 하여 보았습니다. 수고하세요. >USBISP 3.0 제품 ATMEGA2560지원하는지요? >
3476 답변완료AM-DC2-4C 모터 드라이버 문제 질문드립니다. 가승일 2009-08-13 1,384
AM-DC2-4C 모터드라이버 2개이고요. 구입한지는 3주정도 되었구요. 그동안 잘되다가 갑자기 작동이 안돼네요. 증상은 1개는 한쪽만 작동이 되고, 다른 1개는 둘다 작동이 안됩니다. 그리고 이 제품 발열이 심한편인가요 ? 손 델정도로 심하게 뜨거워지던데... 제가 회로를 잘못연결한걸 수도 있고 발열이 너무 심해서 모듈이 나간거일수도 있는데, 아니면 제가 회로구성을 잘못했는지 확인할 방법이 없네요. 어쨋든 지금 작동이 2개 다 안됩니다 ㅠㅠ 혹시 A/S 가능한지 질문드립니다. 그렇다면 택배비용과 수리비용은 어떻게 되는지도 궁금합니다.
관리자 답변 박성만 · 2009-08-13
부러워요 나는AM-DC2-2D 하고있는데 연락좀주세요 01027779721
3475 답변완료질문있습니다!!!^^ 이경섭 2009-08-13 1,435
#include <iom128v.h> #include <macros.h> #define MOTOR_PORT PORTC #define MOTOR_PORT_DDR DDRC volatile unsigned int Count=0, Value_R=0xC2, Value_L=0xC2; volatile unsigned char Step_RG=0, Step_RB=0, Step_LG=0,Step_LB=0, Input=0, Status=0; unsigned char RGO[8]={0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90}; unsigned char RBACK[8]={0x90,0x80,0xc0,0x40,0x60,0x20,0x30,0x10}; unsigned char LGO[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; unsigned char LBACK[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; void port_init(void) { PORTA = 0x00; DDRA = 0x00; 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; } //TIMER0 initialize - prescale:256 // WGM: Normal // desired value: 1KHz // actual value: 1.008KHz (0.8%) void timer0_init(void) { TCCR0 = 0x00; //stop ASSR = 0x00; //set async mode TCNT0 = 0xC2; //set count OCR0 = 0x3E; TCCR0 = 0x06; //start timer } #pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF void timer0_ovf_isr(void) { TCNT0 = Value_R; //reload counter value if(Status&0x01) MOTOR_PORT = RGO[Step_RG++]; if(Status&0x02) MOTOR_PORT = RBACK[Step_RB++]; if(Step_RG>7) Step_RG=0; if(Step_RB>7) Step_RB=0; if(Value_R>0xfa) Value_R=0xfa; if(Value_R<0x05) Value_R=0x05; } //TIMER1 initialize - prescale:256 // WGM: 0) Normal, TOP=0xFFFF // desired value: 100Hz // actual value: 100.000Hz (0.0%) void timer1_init(void) { TCCR1B = 0x00; //stop TCNT1H = 0xFD; //setup TCNT1L = 0x8F; OCR1AH = 0x02; OCR1AL = 0x71; OCR1BH = 0x02; OCR1BL = 0x71; OCR1CH = 0x02; OCR1CL = 0x71; ICR1H = 0x02; ICR1L = 0x71; TCCR1A = 0x00; TCCR1B = 0x04; //start Timer } #pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF void timer1_ovf_isr(void) { //TIMER1 has overflowed TCNT1H = 0xFD; //reload counter high value TCNT1L = 0x8F; //reload counter low value if(Count++>50){ Input=PINA; if(Input==0x01) Status = (Status&0xf0)|0x01; if(Input==0x02) Status = (Status&0xf0)|0x02; if(Input==0x04) Value_R++; if(Input==0x08) Value_R--; if(Input==0x10) Status = (Status&0x0f)|0x10; if(Input==0x20) Status = (Status&0x0f)|0x20; if(Input==0x40) Value_L++; if(Input==0x80) Value_L--; Input=0; Count=0; } } //TIMER2 initialize - prescale:256 // WGM: Normal // desired value: 1KHz // actual value: 1.008KHz (0.8%) void timer2_init(void) { TCCR2 = 0x00; //stop TCNT2 = 0xC2; //setup OCR2 = 0x3E; TCCR2 = 0x04; //start } #pragma interrupt_handler timer2_ovf_isr:iv_TIM2_OVF void timer2_ovf_isr(void) { TCNT2 = Value_L; //reload counter value if(Status&0x10) MOTOR_PORT = LGO[Step_LG++]; if(Status&0x20) MOTOR_PORT = LBACK[Step_LB++]; if(Step_LG>7) Step_LG=0; if(Step_LB>7) Step_LB=0; if(Value_L>0xfa) Value_L=0xfa; if(Value_L<0x05) Value_L=0x05; } //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(); timer0_init(); timer1_init(); timer2_init(); MCUCR = 0x00; EICRA = 0x00; //extended ext ints EICRB = 0x00; //extended ext ints EIMSK = 0x00; TIMSK = 0x45; //timer interrupt sources ETIMSK = 0x00; //extended timer interrupt sources SEI(); //re-enable interrupts //all peripherals are now initialized } // void main(void) { init_devices(); MOTOR_PORT_DDR=0xFF; while(1){ ; } } NEWTC카페에 올라온 타이머인터럽트를 이용해서 스텝모터돌려보는 소스인데요... 컴파일도 에러 없이 잘되는데... 스텝모터가 한쪽만 반응하고 또, 움직이질 않네요... 소스를 보고 또 보아도 잘 이해가 안가서 그러는데... 혹시 문제점이 어디있는지 설명해주실수있나요?? 더불어 소스코드에대한 약간의 설명도 부탁드립니다^^;; 결과물을 가지고 발표를 해야하는 상황이라... 염치불구하고 부탁드립니다!!! 수고하세요^^
관리자 답변 N.T.C · 2009-08-13
안녕하세요? 고객님, 저희 NewTC 제품을 이용하여 주셔서 감사합니다. 강좌->로봇강좌 쪽에 보면, 강의 내용이 잘 나와 있으니, 참고 바랍니다. 소스 관련 강좌도 있으니까, 그걸 보세요. 일부 첨부도 하였습니다. 그리고, CS2P 모터 구동부의 가변저항을 돌려서 바이어스를 맞춰줘야 다른쪽 바퀴도 돌아갈겁니다. 전압과 전류도 충분히 공급되는 지 확인하세요. 스테핑라인트레이서는 1.2V 1000mA 충전지(건전지가 아님) 12개를 사용하여 14.4V를 만들어서 사용하시기 바랍니다. 아답타로 할 경우, 15V 600mA 이상 아답타 또는 12V 1A이상의 SMPS를 사용하세요. 정격은 24V 3A 입니다. 수고하세요. >#include <iom128v.h> >#include <macros.h> > > >#define MOTOR_PORT PORTC >#define MOTOR_PORT_DDR DDRC > >volatile unsigned int Count=0, Value_R=0xC2, Value_L=0xC2; >volatile unsigned char Step_RG=0, Step_RB=0, Step_LG=0,Step_LB=0, Input=0, Status=0; > >unsigned char RGO[8]={0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90}; >unsigned char RBACK[8]={0x90,0x80,0xc0,0x40,0x60,0x20,0x30,0x10}; >unsigned char LGO[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; >unsigned char LBACK[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; > > >void port_init(void) >{ > PORTA = 0x00; > DDRA = 0x00; > 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; >} > >//TIMER0 initialize - prescale:256 >// WGM: Normal >// desired value: 1KHz >// actual value: 1.008KHz (0.8%) >void timer0_init(void) >{ > TCCR0 = 0x00; //stop > ASSR = 0x00; //set async mode > TCNT0 = 0xC2; //set count > OCR0 = 0x3E; > TCCR0 = 0x06; //start timer >} > >#pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF >void timer0_ovf_isr(void) >{ > TCNT0 = Value_R; //reload counter value > > if(Status&0x01) MOTOR_PORT = RGO[Step_RG++]; > if(Status&0x02) MOTOR_PORT = RBACK[Step_RB++]; > if(Step_RG>7) Step_RG=0; > if(Step_RB>7) Step_RB=0; > if(Value_R>0xfa) Value_R=0xfa; > if(Value_R<0x05) Value_R=0x05; > >} > > >//TIMER1 initialize - prescale:256 >// WGM: 0) Normal, TOP=0xFFFF >// desired value: 100Hz >// actual value: 100.000Hz (0.0%) >void timer1_init(void) >{ > TCCR1B = 0x00; //stop > TCNT1H = 0xFD; //setup > TCNT1L = 0x8F; > OCR1AH = 0x02; > OCR1AL = 0x71; > OCR1BH = 0x02; > OCR1BL = 0x71; > OCR1CH = 0x02; > OCR1CL = 0x71; > ICR1H = 0x02; > ICR1L = 0x71; > TCCR1A = 0x00; > TCCR1B = 0x04; //start Timer >} > >#pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF >void timer1_ovf_isr(void) >{ > //TIMER1 has overflowed > TCNT1H = 0xFD; //reload counter high value > TCNT1L = 0x8F; //reload counter low value > if(Count++>50){ > Input=PINA; > if(Input==0x01) Status = (Status&0xf0)|0x01; > if(Input==0x02) Status = (Status&0xf0)|0x02; > if(Input==0x04) Value_R++; > if(Input==0x08) Value_R--; > if(Input==0x10) Status = (Status&0x0f)|0x10; > if(Input==0x20) Status = (Status&0x0f)|0x20; > if(Input==0x40) Value_L++; > if(Input==0x80) Value_L--; > Input=0; > Count=0; > } >} > >//TIMER2 initialize - prescale:256 >// WGM: Normal >// desired value: 1KHz >// actual value: 1.008KHz (0.8%) >void timer2_init(void) >{ > TCCR2 = 0x00; //stop > TCNT2 = 0xC2; //setup > OCR2 = 0x3E; > TCCR2 = 0x04; //start >} > >#pragma interrupt_handler timer2_ovf_isr:iv_TIM2_OVF >void timer2_ovf_isr(void) >{ > TCNT2 = Value_L; //reload counter value > > if(Status&0x10) MOTOR_PORT = LGO[Step_LG++]; > if(Status&0x20) MOTOR_PORT = LBACK[Step_LB++]; > if(Step_LG>7) Step_LG=0; > if(Step_LB>7) Step_LB=0; > > if(Value_L>0xfa) Value_L=0xfa; > if(Value_L<0x05) Value_L=0x05; > >} >//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(); > timer0_init(); > timer1_init(); > timer2_init(); > > MCUCR = 0x00; > EICRA = 0x00; //extended ext ints > EICRB = 0x00; //extended ext ints > EIMSK = 0x00; > TIMSK = 0x45; //timer interrupt sources > ETIMSK = 0x00; //extended timer interrupt sources > SEI(); //re-enable interrupts > //all peripherals are now initialized >} > >// >void main(void) >{ > init_devices(); > MOTOR_PORT_DDR=0xFF; > while(1){ > ; > } >} > >NEWTC카페에 올라온 타이머인터럽트를 이용해서 스텝모터돌려보는 소스인데요... > >컴파일도 에러 없이 잘되는데... > >스텝모터가 한쪽만 반응하고 또, 움직이질 않네요... > >소스를 보고 또 보아도 잘 이해가 안가서 그러는데... > >혹시 문제점이 어디있는지 설명해주실수있나요?? > >더불어 소스코드에대한 약간의 설명도 부탁드립니다^^;; > >결과물을 가지고 발표를 해야하는 상황이라... > >염치불구하고 부탁드립니다!!! > >수고하세요^^
3474 답변완료ntc사 atmega128 개발용 보드에서 uart의 vcc는 몇볼트가 공급되나요?? 이지웅 2009-08-12 1,449
5v인가요?? 3.3v인가요??
관리자 답변 N.T.C · 2009-08-13
안녕하세요? 고객님, 아답타를 사용하여 보드를 사용하게 되면 5V가 공급됩니다. 하지만, 5V 쪽에 3.3V를 꽂아서 128L AVR을 사용하여 동작하게 되면, 3.3V가 공급되겠지요? 일반적인 사용인 기본은 5V입니다. 감사합니다. >5v인가요?? > >3.3v인가요?? > >
3473 답변완료AB-M128Pro-A 보드와 AVRISP mkII 연결에 관해서.. 이종욱 2009-08-12 1,395
128Pro 보드를 이용해서 Stepping 모터를 제어하려고 합니다. 기존에 ISP 로 쓰던 mkII를 그대로 써서 사용하고 싶은데 방법을 문의드립니다. 귀사에서 판매중인 6핀 10핀 변환 컨넥터의 경우 128Pro 쪽과 변환 컨넥터쪽 모두 MM 타입으로 만나게 구성이 되어있어서 중간의 연결 케이블이 있는지 궁금합니다.
관리자 답변 N.T.C · 2009-08-12
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. MM 타입이 뭔가요? 고객분들이 MK-ii에서도 잘 연결하여 사용하시던데요.. 만약에 케이블이 따로 필요하다면, SE-MIN1 케이블을 구매하셔서 연결하셔도 될 것 같습니다. 그리고, mk-ii 에 기본적으로 10핀잭 -1핀 암놈 들로된 10개 핀선이 있었을 겁니다. 그걸 사용하시는 게 더 좋겠지요. 그리고, 본사에는 아래 링크와 같은 커넥터 변환보드가 있습니다. -아래- http://www.newtc.co.kr/product_AD-ISP-CVB.php 정확히 질문을 이해하지 못해 답이 되었나 모르겠네요. 답이 안 되었다면 좀 더 자세히 질문 남겨주세요. 수고하세요. >128Pro 보드를 이용해서 Stepping 모터를 제어하려고 합니다. >기존에 ISP 로 쓰던 mkII를 그대로 써서 사용하고 싶은데 방법을 문의드립니다. >귀사에서 판매중인 6핀 10핀 변환 컨넥터의 경우 128Pro 쪽과 변환 컨넥터쪽 모두 MM 타입으로 만나게 구성이 되어있어서 중간의 연결 케이블이 있는지 궁금합니다.
3472 답변완료AB-m128 A를 사용하고 있는데 추가 메모리 확장에 관한 문의입니다. 이상원 2009-08-12 1,427
현재 프로젝트 진행중에 센서가 어느정도 부착되고 실시간성의 필요성이 있어서 ucos-ii를 포팅하였습니다. 그런데 정확한 이유는 모르겠지만 아마 메모리 부족으로 인하여 os가 자꾸 리셋되거나 뻗어버립니다. 그래서 메모리를 확장하고자 해서 그에 관한 문의를 드립니다. 512~1M 정도의 메모리 확장하고자 하는데 따로 추가 할수 있는지 혹은 그 비용정도를 알고 싶습니다. e-mail을 통해 답변해주시면 감사하겠습니다.
관리자 답변 N.T.C · 2009-08-12
안녕하세요? 고객님, 저희 NewTC 제품을 이용하여 주셔서 감사합니다. 현재 사용하시는 보드에 AM-128RAM 모듈을 사용하시게 되면 32kb의 램을 증설하는 효과를 가져옵니다. 하지만, 현재 보드 상태에서 메모리를 증설하는 것은 어렵겠습니다. 만약, 정 필요하다면, 별도의 보드로 제작하여야 할 것 같구요. 프로젝트가 되기 때문에 비용이 생각하시는 것보다 매우 높게 책정되게 됩니다. 그런, 정확한 원인을 먼저 찾는 것이 우선일 것 같습니다. 감사합니다. >현재 프로젝트 진행중에 센서가 어느정도 부착되고 실시간성의 필요성이 있어서 ucos-ii를 포팅하였습니다. 그런데 정확한 이유는 모르겠지만 아마 메모리 부족으로 인하여 os가 자꾸 리셋되거나 뻗어버립니다. 그래서 메모리를 확장하고자 해서 그에 관한 문의를 드립니다. >512~1M 정도의 메모리 확장하고자 하는데 따로 추가 할수 있는지 혹은 그 비용정도를 알고 싶습니다. > >e-mail을 통해 답변해주시면 감사하겠습니다.
3471 답변완료DC 모터 드라이버 AM-DCx-xx 시리즈에 대한 질문입니다. 류명한 2009-08-12 1,370
뉴티씨의 DC 모터 드라이버를 사용할 때 전류 조절을 통해 DC 모터의 토크를 조절할 수 있나요?
관리자 답변 N.T.C · 2009-08-12
안녕하세요? 고객님, 저희 NewTC 제품을 이용하여 주셔서 감사합니다. 저희 회사 제품의 토크를 조절하는 것은 따로 핀이 나와 있지는 않습니다. 하지만, PWM 주기를 조절함으로써 토크 조절이 가능할 것 같습니다. 감사합니다. >뉴티씨의 DC 모터 드라이버를 사용할 때 > >전류 조절을 통해 DC 모터의 토크를 조절할 수 있나요?
3470 답변완료JTAG 및 AB-M128-A 버그 박완주 2009-08-12 1,437
JTAG의 연결이 안되네요... AVR Studio의 Ver.도 설명서에 나와있는대로 4.15로 새로 깔았구요 ISP로 JTAG En로 FUSE 설정 했는데 ISP는 연결이 되나 ISP를 제거하고 F포트에 JTAG를 연결하면 커넥션이 안됩니다. (디버그 플랫폼과 디바이스도 선택했음) 그리고, ICC 컴파일러로 컴파일하면 XX.cof 파일로 로그하라고대어 있던데 저는 WinAVR을 써서 cof 파일이 안생기는데 어떻게 해야 하나요?? 마지막으로 저희 직원이 AB-M128-A가 문제가 있어서 2번이나 A/S를 받았는데 여전히 똑같네요... 포트의 입출력이 안되요.. 정상적이 CUP 보드를 이 베이스에 꽃으면 안되네요.. NTC 제품으로 보드 ,CPU, 모터, 적외선, 가속도, ISP, USB, JTAG 를 다수 구매하여 테스트 중입니다. AB-M128-A는 다시 한번 AS 부탁 드리구요 박완주
관리자 답변 N.T.C · 2009-08-12
안녕하세요? 고객님, 저희 NewTC 제품을 이용하여 주셔서 감사합니다. 두번씩이나 똑같은 A/S를 받았다면, 본사에서 이상 없이 제품이 나간것 같습니다. 아마도 사용상의 방법 문제인 것 같은데요. 혹시 서울 근교에 계시다면, 제품을 들고 오시는 것이 좋겠습니다. 사용법 상에 어디가 잘못되서 그런 것인지 직접 봐드려야 할 것 같습니다. 어려우시다면, 회사로 전화(02-704-4774) 하셔서 회사에서 전화하라고 하셨다고 말씀해 주시고, 엔지니어와 연결해달라고 하시면 연결 될 겁니다. 아니면, 연락처를 남겨 주시면 연락 드리겠습니다. 감사합니다. >JTAG의 연결이 안되네요... > >AVR Studio의 Ver.도 설명서에 나와있는대로 4.15로 새로 깔았구요 > >ISP로 JTAG En로 FUSE 설정 했는데 ISP는 연결이 되나 ISP를 제거하고 > >F포트에 JTAG를 연결하면 커넥션이 안됩니다. > >(디버그 플랫폼과 디바이스도 선택했음) > >그리고, ICC 컴파일러로 컴파일하면 XX.cof 파일로 로그하라고대어 있던데 > >저는 WinAVR을 써서 cof 파일이 안생기는데 어떻게 해야 하나요?? > >마지막으로 저희 직원이 AB-M128-A가 문제가 있어서 2번이나 A/S를 받았는데 > >여전히 똑같네요... 포트의 입출력이 안되요.. > >정상적이 CUP 보드를 이 베이스에 꽃으면 안되네요.. > >NTC 제품으로 보드 ,CPU, 모터, 적외선, 가속도, ISP, USB, JTAG 를 다수 > >구매하여 테스트 중입니다. > >AB-M128-A는 다시 한번 AS 부탁 드리구요 > >박완주
3469 답변완료AT mega128 을 사용중입니다. 김도현 2009-08-12 1,420
안녕하세요 AT mega128을 사용중인 대학생입니다. 이번에 저희가 로봇을 만들었는데, 로봇에 초음파, 광센서가 부착되어있어서 감지를 하면 즉각적으로 반응하는 로봇입니다. 그렇게 프로그래밍을 해서 실행을 시켰는데, 원활하게 구동이 잘 되었습니다. 근데 저희가 궁금한게 로봇에 Code vision AVR 이란 프로그램을 이용하여 프로그래밍을 했는데, 로봇이 프로그램 전체루프를 한바퀴 돌때의 시간을 오실로스코프로 측정하려고 합니다. 그러면 두군데를 접지시켜서 측정을 해야 하는데, AVR쪽에 연결하여 접지를 하는지 아님 다른 곳에 접지시켜야 되는지 궁금합니다. 제 생각엔 AVR쪽에 한다고 생각하는데, 도저히 몇번이랑 연결을 해야 되는지 모르겠네요. 알려주시면 감사하겠습니다.
관리자 답변 N.T.C · 2009-08-12
안녕하세요? 고객님, 저희 NewTC를 이용하여 주셔서 감사합니다. 그런데, 모든 회로가 Isolation을 하지 않는 이상 GND가 모두 일치해야 할 텐데, GND가 일치하지 않는 회로인가 보죠? GND가 일치되지 않을 경우, 동작하는 것처럼 보이지만, 차후에 정상동작하지 않는 일이 발생할 수 있습니다. GND가 일치되었다면, GND를 어디서 빼도 마찬가지가 되겠지요. 하지만, 선의 길이가 너무 길거나 하면 아날로그 신호는 문제가 될 수 있습니다. 그리고, AVR에서 GND핀이 어디냐의 문제라면 제품소개에 가서 아래의 AM-128PRO 모듈을 클릭하면 핀맵이 나오니까, 참고하기 바랍니다. - 아래 - http://www.newtc.co.kr/product_AM-128PRO.php 자세한 질문 부탁합니다. 감사합니다. >안녕하세요 > >AT mega128을 사용중인 대학생입니다. > >이번에 저희가 로봇을 만들었는데, 로봇에 초음파, 광센서가 부착되어있어서 > >감지를 하면 즉각적으로 반응하는 로봇입니다. > >그렇게 프로그래밍을 해서 실행을 시켰는데, 원활하게 구동이 잘 되었습니다. > >근데 저희가 궁금한게 로봇에 Code vision AVR 이란 프로그램을 이용하여 > >프로그래밍을 했는데, 로봇이 프로그램 전체루프를 한바퀴 돌때의 시간을 > >오실로스코프로 측정하려고 합니다. 그러면 두군데를 접지시켜서 측정을 해야 > >하는데, AVR쪽에 연결하여 접지를 하는지 아님 다른 곳에 접지시켜야 되는지 > >궁금합니다. > >제 생각엔 AVR쪽에 한다고 생각하는데, 도저히 몇번이랑 연결을 해야 되는지 > >모르겠네요. > >알려주시면 감사하겠습니다.