로그인 | 회원가입 | 주문 조회
총 10,743개의 질문이 있습니다.
번호 제목 작성자 등록일 조회
8523 답변완료AM-CD2L 출력문의 이은우 2013-11-27 1,443
입력이 5v라고 나와있는데 출력은 그럼 몇 voltage로 나오나요? 출력voltage값을 조절할 수 있는건가요? AM-DC2-2D같은 경우 입력5v에 출력이 5~45v로 나와있는데 출력 voltage는 사용보드로 값을 조절할 수 있는건가요? 예제소스가 있다면 부탁드립니다.
관리자 답변 관리자 · 2013-11-27
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. CD2L의 경우는 10핀 헤더박스에 공급되는 5V가 모터에 공급되는 전원이 됩니다. 따라서, 이 10핀 헤더박스에 꽂는 전압을 변경하면 모터에 공급되는 전원이 변경되게 됩니다. 따라서, AVR과 10핀 케이블로 연결하지 않고, GND끼리, Data끼리를 연결한 후, VCC와 GND한개 더빼서, 거기에 모터에 공급되길 원하는 전압을 공급하면 되겠습니다. 최대 18V까지만, 거기에 전압 넣었을 때, CD2L에 문제가 없게 됩니다. 잘 확인한 후 사용하세요. 감사합니다. > > > 입력이 5v라고 나와있는데 출력은 그럼 몇 voltage로 나오나요? > 출력voltage값을 조절할 수 있는건가요? > > > AM-DC2-2D같은 경우 입력5v에 출력이 5~45v로 나와있는데 출력 voltage는 사용보드로 값을 조절할 수 있는건가요? 예제소스가 있다면 부탁드립니다. >
8522 답변완료AM-CSV 각도조절 이은우 2013-11-27 1,456
서보모터 하나 혹은 두개를 연결해서 각도조절을 하고 싶은데 DC모터구동모듈 같은 경우에는 신호주기 데이터시트가 있던데 이 제품은 없더라구요. 혹시 각도조절에 필요한 데이터시트가 있으면 부탁드립니다.
관리자 답변 관리자 · 2013-11-27
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 자료실에서 서보 라고 치면, 각종 예제소스가 나올 겁니다. 8개를 한 번에 제어하는 소스도 있고, 1개를 시리얼로 제어하는 소스도 있고, 여러가지가 있습니다. 참고 바라구요. 서보모터는 오실로스코프로 정확히 재가면서 만들어야소스를 제대로 만들 수 있습니다. 따라서, 본사의 예제를 사용해 보세요. 또한, 온라인강좌->AVR 강좌에서 서보 라고 치면, 서보모터 강좌가 있습니다. 그 부분 참고하시면 안에 자세히 나옵니다. 감사합니다. > > > 서보모터 하나 혹은 두개를 연결해서 각도조절을 하고 싶은데 DC모터구동모듈 같은 경우에는 신호주기 데이터시트가 있던데 이 제품은 없더라구요. > > 혹시 각도조절에 필요한 데이터시트가 있으면 부탁드립니다. >
8521 답변완료AD-USBISP V6.0 관련 질문 입니다. 이성근 2013-11-26 1,354
어제 질문을 올려 답변하신데로 하였으나 여전히 같은 문제가 발생하고 있습니다. 설정이 잘못되었는지 모르지만 ISP에서 MOSI 와 MISO의 단자에 파형이 나오지 않고 있습니다. 바쁘시지만 다시 한번 부탁을 드립니다. 칩:Atmega48PA TOOL : AD-USBISP V6.0 컴파일러 : AVT Studio 6.1 OS : Window 7 64bit입니다.
관리자 답변 관리자 · 2013-11-27
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 한 번 제품을 가지고 방문하여 주시거나, 택배로 보내서 점검받아 보시기 바랍니다. 직접 봐야 알 것 같습니다. 감사합니다. > > > 어제 질문을 올려 답변하신데로 하였으나 여전히 같은 문제가 발생하고 있습니다. > 설정이 잘못되었는지 모르지만 ISP에서 MOSI 와 MISO의 단자에 파형이 나오지 않고 있습니다. > 바쁘시지만 다시 한번 부탁을 드립니다. > 칩:Atmega48PA > TOOL : AD-USBISP V6.0 > 컴파일러 : AVT Studio 6.1 > OS : Window 7 64bit입니다. >
8520 답변완료제품 문의입니다 허상훈 2013-11-26 1,437
안녕하세요 atmega와 지그비를 이용한 프로젝트를 수행 중에 있습니다 전원 변환 보드 am-mp533 를 이용하여 5v와 3.3v의 전압을 각각 사용했었습니다. 원래는 보드에 smps 어뎁터를 연결하여 프로젝트를 수행중이였으나 잠수함 실험을 위해 귀사 제품인 se-bat12v 배터리를 구매하여 am-mp533에 연결하였는데 지그비 통신이 더 이상 되지않는것이었습니다. 그래서 am-mp533 부품의 손상을 고려하여 멀티미터로 전압을 측정하였더니 지그비 부분에 3.3v의 출력이 나와야하는데 5v의 출력이 나오는 것을 확인할 수 있었습니다. 5v 부분에선 7v정도의 전압이 출력되구요. 분명히 am-mp533 제품의 허용 범위안에 배터리의 스펙인데 왜 이런 것인지 모르겠습니다 교수님 말씀으론 과전류가 흘러서 그렇게 된 거 아니냐 하시는데 그런 것인지 궁금합니다 물론 이런 일이 생긴건 저의 불찰이긴 하지만 제품 스펙을 확인하고 허용 범위 안에 있는 것을 확인 했었으나 이런 일이 생겨 유감입니다. 기분도 안좋구요. 또한 질문답변에 am-mp533을 검색해보니 배터리 연결 후 이상이 생긴 것이 저 뿐만은 아니고 다른 사람들에게도 있었던 것 같은데 답변들을 보면 이런 부분을 제대로 확인을 안해보시고 제품엔 문제 없을 것이다 라는 식의 모호한 답변만 달려있더라구요. 배터리 또한 귀사 제품에 연결하여 사용하라고 출시하신 것 같아 별 문제 없을 것이라 생각했는데 이런 일이 생기네요... 다행히 아트메가와 기타 모터 모듈, 서보 모터 모듈에는 큰 이상이 없고 일단 두 부품만 손상이 되어 재 구매 후 프로젝트를 다시 수행할 생각인데 아시듯 지그비가 저가의 제품이 아니기 때문에 다시 제품에 문제가 생기면 곤란하니 이 부분에 대해 확인 좀 부탁드리겠습니다.
관리자 답변 관리자 · 2013-11-26
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사드립니다. 저희 MP533 제품은 현재 전량 5V와 3.3V를 테스트 해서 발매되고 있습니다. 예전에 샘플링 체크를 하여 나간 적이 있었으나, 당시부터 고객님이 지적하신 문제가 간혹 발견되고 있어서, 18개월 전부터는 전량 전수검사를 하고 있습니다. 따라서, 제품이 발매될 당시에는 문제가 없을 확률이 매우 높습니다. 하지만, 순간 쇼트나 무슨 사유로 오버스펙의 과전류가 흐른다던가 하면 LM1117-3.3V 같은 부품들이 망가질 수 있습니다. 실험실 환경에 작은 납덩어리가 닿아도 쇼트가 될 수 있으니, 매우 주의가 요망됩니다. 또한, 선을 잠시 움직이다가 쇼트가 나도 마찬가지입니다. 아날로그 서보모터의 경우, 하나에 250 - 350mA 정도 사용됩니다. 순간 400mA 정도 먹기도 합니다. 레귤레이터인 7805나 1117-3.3V의 경우, 700mA 정도의 스펙입니다만, 순간적으로 좀 더 걸리면서 망가질 수도 있습니다. 따라서, 안정적으로는 400-500mA 이내로 사용하는 것이 권장됩니다. 전원보드 사용시에 서포터 등을 사용하여, 실험실의 쇼트 방지를 위하여 위로 띄워서 사용하는 것도 좋은 습관입니다. 그리고, 혹시 5V나 3.3V의 전류를 더 많이 사용해야 한다면, MP533에서 사용된 7805를 빼고, 방열판 사용시 3A까지 사용 가능한 현재는 구하기가 좀 어렵긴 하지만, 78T05 같은 부품으로 교체하여 사용하는 것도 좋은 방법이라고 하겠습니다. 감사합니다. > > > 안녕하세요 atmega와 지그비를 이용한 프로젝트를 수행 중에 있습니다 > 전원 변환 보드 am-mp533 를 이용하여 5v와 3.3v의 전압을 각각 사용했었습니다. > 원래는 보드에 smps 어뎁터를 연결하여 프로젝트를 수행중이였으나 잠수함 실험을 위해 귀사 제품인 se-bat12v 배터리를 구매하여 am-mp533에 연결하였는데 지그비 통신이 더 이상 되지않는것이었습니다. 그래서 am-mp533 부품의 손상을 고려하여 멀티미터로 전압을 측정하였더니 지그비 부분에 3.3v의 출력이 나와야하는데 5v의 출력이 나오는 것을 확인할 수 있었습니다. 5v 부분에선 7v정도의 전압이 출력되구요. > 분명히 am-mp533 제품의 허용 범위안에 배터리의 스펙인데 왜 이런 것인지 모르겠습니다 교수님 말씀으론 과전류가 흘러서 그렇게 된 거 아니냐 하시는데 그런 것인지 궁금합니다 > > 물론 이런 일이 생긴건 저의 불찰이긴 하지만 제품 스펙을 확인하고 허용 범위 안에 있는 것을 확인 했었으나 이런 일이 생겨 유감입니다. 기분도 안좋구요. 또한 질문답변에 am-mp533을 검색해보니 배터리 연결 후 이상이 생긴 것이 저 뿐만은 아니고 다른 사람들에게도 있었던 것 같은데 답변들을 보면 이런 부분을 제대로 확인을 안해보시고 제품엔 문제 없을 것이다 라는 식의 모호한 답변만 달려있더라구요. 배터리 또한 귀사 제품에 연결하여 사용하라고 출시하신 것 같아 별 문제 없을 것이라 생각했는데 이런 일이 생기네요... > > 다행히 아트메가와 기타 모터 모듈, 서보 모터 모듈에는 큰 이상이 없고 일단 두 부품만 손상이 되어 재 구매 후 프로젝트를 다시 수행할 생각인데 아시듯 지그비가 저가의 제품이 아니기 때문에 다시 제품에 문제가 생기면 곤란하니 이 부분에 대해 확인 좀 부탁드리겠습니다. >
8519 답변완료Enable 핀 설정해도 안되네요. 백지은 2013-11-26 1,375
제가 하려는 것은 클럭을 입력받아서 주파수와 듀티를 바꾼후 임의의 포트로 출력하려는 것입니다. 주파수를 낮게 설정해서 모듈 LED를 켜는 소스를 만들었고, 원하는동작을 하길에 주파수만 다시 변경해서 PORTA로 출력을 했습니다. 근데 PORTA에서는 신호가 아에 안잡힙니다. 두소스의 차이점은 Enable, Dir핀인거 같은데, PORTA로 출력하려면 Enable 이랑 Dir핀을 어떻게 설정하는지 모르겠어요. 확인부탁드립니다. -------------------------------여기까지가 저번에 한 질문입니다. 알려주신대로 portA의 enable 핀에 0 넣고, Dir 핀에 1 넣었습니다. 그런데 출력신호가 안잡힙니다. 아래 소스처럼 Output 설정할때 넣고, 동시에 LED 다른곳 출력되게 신호도 설정해봤습니다. LED는 켜지는데 왜 PORT만 안되는지 이해가안되네요. 추가로 말씀드리자면, PortA, B,C 세 포트의 0~7 bit까지 1V직류신호가 검출됩니다.(프로그램넣든안넣든) 이거는 원래 정상동작인가요? module inverter_signal(clk, reset, sw_sig1, sw_sig2, sw_sig3, sw_sig4, ena_a, dir_a); input clk, reset; output ena_a = 0; // A인에이블활설화 output dir_a = 1; // A출력 output sw_sig1; // switch 1 output sw_sig2; // switch 3 inverse - output sw_sig3; // siwtch 3 output sw_sig4; // switch 1 inverse - reg [31:0] clk_count; reg sw_sig1; reg sw_sig3; parameter SEC_sig1 = 2500; // when 25us, it must be 2500 always@(posedge clk) if(!reset) clk_count <= 0; else if(clk_count < SEC_sig1) clk_count <= clk_count+1; else clk_count <= 0; always@(posedge clk) if(clk_count <= 1250) sw_sig1 = 1; else if(clk_count > 1250) sw_sig1 = 0; always@(posedge clk) if(clk_count > 500 && clk_count <= 1750) sw_sig3 = 1; else sw_sig3 = 0; assign sw_sig4 =~ sw_sig1; assign sw_sig2 =~ sw_sig3; endmodule
관리자 답변 관리자 · 2013-11-26
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. PORTA를 테스트 하는 예제를 작성해 보았습니다. 테스트 해보니 잘 동작합니다. 첨부 예제를 참고하시기 바랍니다. > > > 제가 하려는 것은 클럭을 입력받아서 주파수와 듀티를 바꾼후 임의의 포트로 출력하려는 것입니다. > > 주파수를 낮게 설정해서 모듈 LED를 켜는 소스를 만들었고, > 원하는동작을 하길에 주파수만 다시 변경해서 PORTA로 출력을 했습니다. > 근데 PORTA에서는 신호가 아에 안잡힙니다. 두소스의 차이점은 > Enable, Dir핀인거 같은데, PORTA로 출력하려면 Enable 이랑 Dir핀을 > 어떻게 설정하는지 모르겠어요. > > 확인부탁드립니다. > -------------------------------여기까지가 저번에 한 질문입니다. > > 알려주신대로 portA의 enable 핀에 0 넣고, Dir 핀에 1 넣었습니다. > > 그런데 출력신호가 안잡힙니다. 아래 소스처럼 Output 설정할때 넣고, > 동시에 LED 다른곳 출력되게 신호도 설정해봤습니다. LED는 켜지는데 > 왜 PORT만 안되는지 이해가안되네요. > > 추가로 말씀드리자면, PortA, B,C 세 포트의 0~7 bit까지 1V직류신호가 > 검출됩니다.(프로그램넣든안넣든) 이거는 원래 정상동작인가요? > > > > > > > > > > > module inverter_signal(clk, reset, sw_sig1, sw_sig2, sw_sig3, sw_sig4, ena_a, dir_a); > > input clk, reset; > > output ena_a = 0; // A인에이블활설화 > output dir_a = 1; // A출력 > output sw_sig1; // switch 1 > output sw_sig2; // switch 3 inverse - > output sw_sig3; // siwtch 3 > output sw_sig4; // switch 1 inverse - > > reg [31:0] clk_count; > reg sw_sig1; > reg sw_sig3; > > > parameter SEC_sig1 = 2500; // when 25us, it must be 2500 > > > always@(posedge clk) > > > if(!reset) > > clk_count <= 0; > > else > > if(clk_count < SEC_sig1) > > clk_count <= clk_count+1; > > else > > clk_count <= 0; > > > always@(posedge clk) > > > if(clk_count <= 1250) > > sw_sig1 = 1; > > else if(clk_count > 1250) > > sw_sig1 = 0; > > > always@(posedge clk) > > > if(clk_count > 500 && clk_count <= 1750) > > sw_sig3 = 1; > > > else > > sw_sig3 = 0; > > > > > > assign sw_sig4 =~ sw_sig1; > assign sw_sig2 =~ sw_sig3; > > endmodule >
8518 답변완료DC라인트레이서 KR-DL128 키트에서.. 남견우 2013-11-26 1,459
PG3와 PG2 스위치를 이용해서 PG3를 누르면 동작을 하게하고 PG2를 누르면 멈추게하는 소스를 만들려구 하는데 쉽게 되질않네요..ㅠㅠ 어떤 부분을 수정해야 할까요??ㅜㅜ --------------------------------------------------------------------------- #include <avr/io.h> #include <avr/interrupt.h> #include <stdio.h> #define SENSOR_PORT PINF #define MOTORPORT1 PORTC #define ON 1 #define OFF 0 #define CW 1 #define CCW 0 void port_init(void) { PORTA = 0x00; DDRA = 0x00; PORTB = 0x00; DDRB = 0x00; PORTC = 0x00; //m103 output only DDRC = 0xff; PORTD = 0x00; DDRD = 0x00; PORTE = 0x00; DDRE = 0x00; PORTF = 0x00; DDRF = 0x00; PORTG = 0x00; DDRG = 0x03; } // UART0 을 이용한 출력 void tx0Char(char message) { while (((UCSR0A>>UDRE0)&0x01) == 0) ; // UDRE, data register empty UDR0 = message; } static int Putchar(char c, FILE *stream) { tx0Char(c); return 0; } //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 XMCRA = 0x00; //external memory XMCRB = 0x00; //external memory port_init(); uart0_init(); fdevopen(Putchar,0); 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 n) { volatile int i,j; for(i=1;i<n;i++) { for(j=1;j<600;j++); } } void delay2(int n) { volatile int i,j; for(i=1;i<n;i++) { for(j=1;j<10;j++); } } void M1A(int onoff){ if(onoff==ON) MOTORPORT1 = MOTORPORT1|0x01; else MOTORPORT1 = MOTORPORT1&0xFE; } void M1A_(int onoff){ if(onoff==ON) MOTORPORT1 = MOTORPORT1|0x02; else MOTORPORT1 = MOTORPORT1&0xFD; } void M1B(int onoff){ if(onoff==ON) MOTORPORT1 = MOTORPORT1|0x04; else MOTORPORT1 = MOTORPORT1&0xFB; } void M1B_(int onoff){ if(onoff==ON) MOTORPORT1 = MOTORPORT1|0x08; else MOTORPORT1 = MOTORPORT1&0xF7; } void Motor1(int CWCCW){ if(CWCCW==CW){ M1A(ON); M1A_(OFF); }else{ M1A(OFF); M1A_(ON); } } void Motor2(int CWCCW){ if(CWCCW==CW){ M1B(ON); M1B_(OFF); }else{ M1B(OFF); M1B_(ON); } } void MOTORSTOP(void){ M1B(OFF); M1B_(OFF); M1A(OFF); M1A_(OFF); } // int main(void) { unsigned char sensor; // volatile unsigned char stepleft=0, stepright=0; init_devices(); while(1){ sensor = SENSOR_PORT & 0x0F; printf("\r\n Sensor:%x ",sensor); switch(sensor){ /*case 0x00: printf("Nothing\r\n"); PORTG= 0x01; break; case 0x08: printf("RIGHTEST\r\n"); PORTG= 0x02; break; case 0x04: printf("RIGHT\r\n"); PORTG= 0x03; break; case 0x03: case 0x02: printf("LEFT\r\n"); PORTG= 0x00; break; case 0x01: printf("LEFTEST\r\n"); PORTG= 0x03; break;*/ case 0x03: case 0x07: printf("맨오른쪽 \r\n"); PORTG= 0x01; Motor1(0); M1B(OFF); M1B_(OFF); delay(17); MOTORSTOP(); delay2(1); // Motor2(0); //Motor2(0); break; case 0x0b: printf("오른쪽 \r\n"); PORTG= 0x02; Motor1(0); M1B(OFF); M1B_(OFF); delay(17); MOTORSTOP(); delay2(1); // // Motor2(0); break; case 0x0c: case 0x0d: printf("왼쪽 \r\n"); PORTG= 0x03; //Motor1(1); M1A(OFF); M1A_(OFF); Motor2(1); delay(14); MOTORSTOP(); delay2(1); break; case 0x0e: printf("맨왼쪽\r\n"); PORTG= 0x00; //Motor1(1); M1A(OFF); M1A_(OFF); Motor2(1); delay(14); MOTORSTOP(); delay2(1); break; case 0x0f: printf("All White"); Motor1(0); Motor2(1); delay(15); MOTORSTOP(); //M1A(OFF); //M1A_(OFF); //Motor2(1); //delay(50); //MOTORSTOP(); delay2(1); break; default : printf("예외\r\n"); M1A(OFF); M1A_(OFF); M1B(OFF); M1B_(OFF); //Motor1(0); //Motor2(1); break; } } return 0; }
관리자 답변 관리자 · 2013-11-26
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 죄송하지만, 소스 수정 등은 본사에서 도움을 드리는 범위를 넘어섭니다. PG3를 눌렀을 때, 어떻게 인식하는지, 어떤 동작을 하게 하는지, PG2를 눌렀을 때, 어떻게 인식할 지, 어떤 동작을 멈출지 등을 모두 명확하게 설정한 후, 프로그램해야 합니다. 다른 키나 센서들에는 전혀 동작하지 않는 것인지, 우선, 블럭 구성도를 그리고, 각 포트의 비트별 동작 정의를 합니다. 그리고나서, 프로그램을 들어가야 합니다. 대강 생각만 하고, 그렇게 하면 되겠지 하는 것보다, 위에 말씀드린 것처럼, 정확하게 문서로 정의하고 프로그램을 시작하는 것이 좋습니다. 감사합니다. > > > PG3와 PG2 스위치를 이용해서 PG3를 누르면 동작을 하게하고 PG2를 누르면 > 멈추게하는 소스를 만들려구 하는데 쉽게 되질않네요..ㅠㅠ 어떤 부분을 수정해야 > 할까요??ㅜㅜ > > --------------------------------------------------------------------------- > > #include <avr/io.h> > #include <avr/interrupt.h> > #include <stdio.h> > > #define SENSOR_PORT PINF > #define MOTORPORT1 PORTC > > #define ON 1 > #define OFF 0 > #define CW 1 > #define CCW 0 > > void port_init(void) > { > PORTA = 0x00; > DDRA = 0x00; > PORTB = 0x00; > DDRB = 0x00; > PORTC = 0x00; //m103 output only > DDRC = 0xff; > PORTD = 0x00; > DDRD = 0x00; > PORTE = 0x00; > DDRE = 0x00; > PORTF = 0x00; > DDRF = 0x00; > PORTG = 0x00; > DDRG = 0x03; > } > > // UART0 을 이용한 출력 > void tx0Char(char message) > { > while (((UCSR0A>>UDRE0)&0x01) == 0) ; // UDRE, data register empty > UDR0 = message; > } > > > static int Putchar(char c, FILE *stream) > { > tx0Char(c); > return 0; > > } > > //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 > XMCRA = 0x00; //external memory > XMCRB = 0x00; //external memory > port_init(); > uart0_init(); > fdevopen(Putchar,0); > > 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 n) > { > volatile int i,j; > for(i=1;i<n;i++) > { > for(j=1;j<600;j++); > } > } > > void delay2(int n) > { > volatile int i,j; > for(i=1;i<n;i++) > { > for(j=1;j<10;j++); > } > } > > > void M1A(int onoff){ > if(onoff==ON) > MOTORPORT1 = MOTORPORT1|0x01; > else > MOTORPORT1 = MOTORPORT1&0xFE; > } > > void M1A_(int onoff){ > if(onoff==ON) > MOTORPORT1 = MOTORPORT1|0x02; > else > MOTORPORT1 = MOTORPORT1&0xFD; > } > > void M1B(int onoff){ > if(onoff==ON) > MOTORPORT1 = MOTORPORT1|0x04; > else > MOTORPORT1 = MOTORPORT1&0xFB; > } > > void M1B_(int onoff){ > if(onoff==ON) > MOTORPORT1 = MOTORPORT1|0x08; > else > MOTORPORT1 = MOTORPORT1&0xF7; > } > > > void Motor1(int CWCCW){ > if(CWCCW==CW){ > M1A(ON); > M1A_(OFF); > }else{ > M1A(OFF); > M1A_(ON); > } > } > > void Motor2(int CWCCW){ > if(CWCCW==CW){ > M1B(ON); > M1B_(OFF); > }else{ > M1B(OFF); > M1B_(ON); > } > } > > > void MOTORSTOP(void){ > M1B(OFF); > M1B_(OFF); > M1A(OFF); > M1A_(OFF); > } > > // > int main(void) > { > unsigned char sensor; > // volatile unsigned char stepleft=0, stepright=0; > > init_devices(); > > while(1){ > sensor = SENSOR_PORT & 0x0F; > > printf("\r\n Sensor:%x ",sensor); > switch(sensor){ > /*case 0x00: printf("Nothing\r\n"); > PORTG= 0x01; > break; > case 0x08: printf("RIGHTEST\r\n"); > PORTG= 0x02; > break; > case 0x04: printf("RIGHT\r\n"); > PORTG= 0x03; > break; > case 0x03: > case 0x02: printf("LEFT\r\n"); > PORTG= 0x00; > break; > case 0x01: printf("LEFTEST\r\n"); > PORTG= 0x03; > break;*/ > > case 0x03: > case 0x07: printf("맨오른쪽 \r\n"); > PORTG= 0x01; > Motor1(0); > M1B(OFF); > M1B_(OFF); > delay(17); > MOTORSTOP(); > delay2(1); > > // Motor2(0); > //Motor2(0); > break; > case 0x0b: printf("오른쪽 \r\n"); > PORTG= 0x02; > Motor1(0); > M1B(OFF); > M1B_(OFF); > delay(17); > MOTORSTOP(); > delay2(1); > > // > // Motor2(0); > break; > case 0x0c: > case 0x0d: printf("왼쪽 \r\n"); > PORTG= 0x03; > //Motor1(1); > M1A(OFF); > M1A_(OFF); > Motor2(1); > delay(14); > MOTORSTOP(); > delay2(1); > > break; > case 0x0e: printf("맨왼쪽\r\n"); > PORTG= 0x00; > //Motor1(1); > M1A(OFF); > M1A_(OFF); > Motor2(1); > delay(14); > MOTORSTOP(); > delay2(1); > > break; > case 0x0f: printf("All White"); > Motor1(0); > Motor2(1); > delay(15); > MOTORSTOP(); > //M1A(OFF); > //M1A_(OFF); > //Motor2(1); > //delay(50); > //MOTORSTOP(); > > delay2(1); > > break; > > default : printf("예외\r\n"); > M1A(OFF); > M1A_(OFF); > M1B(OFF); > M1B_(OFF); > //Motor1(0); > //Motor2(1); > break; > > } > } > return 0; > } >
8517 답변완료AB-M128-A 함수 질문요. 김도형 2013-11-26 1,464
키트를 통해 전력측정기기를 만들고 있는데요, 센서의 출력값이 voltage로 보통 나옵니다. 다만 교류를 측정할 때, 최대값에 1/2를 하면 되는 건 알겠는데, 최대값을 찾는 함수를 모르겠네요. vout_max = findmax(); 라는 식도 있긴 한데 배열에서 최대값을 찾는거라 AB-M128-A키트에서 적용이 안되는 것 같던데 알려주세요.
관리자 답변 관리자 · 2013-11-26
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 이 게시판은 제품의 이상 유무나, 예제 소스에 관한 내용 등을 질문 답변하는 것을 목적으로 하고 있습니다. 양해 바랍니다. 최대 값을 찾는다거나, 최소값을 찾는다거나, 하는 부분은 알고리즘에 관한 부분 같습니다. Sorting 등을 통하여, 최대 또는 최소값을 찾는 것이 좋겠습니다. 서점에 알고리즘 관련된 수치해석용 서적들이 많이 나옵니다. 참고하시기 바랍니다. > > > 키트를 통해 전력측정기기를 만들고 있는데요, > 센서의 출력값이 voltage로 보통 나옵니다. > 다만 교류를 측정할 때, 최대값에 1/2를 하면 되는 건 알겠는데, 최대값을 찾는 함수를 모르겠네요. > vout_max = findmax(); 라는 식도 있긴 한데 배열에서 최대값을 찾는거라 AB-M128-A키트에서 적용이 안되는 것 같던데 알려주세요. >
8516 답변완료FM-CY6S-KIT 키트 재질문입니다. 백지은 2013-11-26 1,400
제가 하려는 것은 클럭을 입력받아서 주파수와 듀티를 바꾼후 임의의 포트로 출력하려는 것입니다. 주파수를 낮게 설정해서 모듈 LED를 켜는 소스를 만들었고, 원하는동작을 하길에 주파수만 다시 변경해서 PORTA로 출력을 했습니다. 근데 PORTA에서는 신호가 아에 안잡힙니다. 두소스의 차이점은 Enable, Dir핀인거 같은데, PORTA로 출력하려면 Enable 이랑 Dir핀을 어떻게 설정하는지 모르겠어요. 확인부탁드립니다. module inverter_signal(clk, reset, sw_sig1, sw_sig2, sw_sig3, sw_sig4); input clk, reset; output sw_sig1; // switch 1 output sw_sig2; // switch 3 inverse - output sw_sig3; // siwtch 3 output sw_sig4; // switch 1 inverse - reg [31:0] clk_count; reg sw_sig1; reg sw_sig3; parameter SEC_sig1 = 2500; // when 25us, it must be 2500 always@(posedge clk) if(!reset) clk_count <= 0; else if(clk_count < SEC_sig1) clk_count <= clk_count+1; else clk_count <= 0; always@(posedge clk) if(clk_count <= 1250) sw_sig1 = 1; else if(clk_count > 1250) sw_sig1 = 0; always@(posedge clk) if(clk_count > 500 && clk_count <= 1750) sw_sig3 = 1; else sw_sig3 = 0; assign sw_sig4 =~ sw_sig1; assign sw_sig2 =~ sw_sig3; endmodule
관리자 답변 관리자 · 2013-11-26
안녕하세요? 고객님, 그렇군요. 그렇다면, Enable에 0, Dir 에 1을 준 후, 포트A에 데이터를 주면 출력 될 겁니다. 감사합니다. > > > 제가 하려는 것은 클럭을 입력받아서 주파수와 듀티를 바꾼후 임의의 포트로 출력하려는 것입니다. > > 주파수를 낮게 설정해서 모듈 LED를 켜는 소스를 만들었고, > 원하는동작을 하길에 주파수만 다시 변경해서 PORTA로 출력을 했습니다. > 근데 PORTA에서는 신호가 아에 안잡힙니다. 두소스의 차이점은 > Enable, Dir핀인거 같은데, PORTA로 출력하려면 Enable 이랑 Dir핀을 > 어떻게 설정하는지 모르겠어요. > > 확인부탁드립니다. > > module inverter_signal(clk, reset, sw_sig1, sw_sig2, sw_sig3, sw_sig4); > > input clk, reset; > > > output sw_sig1; // switch 1 > output sw_sig2; // switch 3 inverse - > output sw_sig3; // siwtch 3 > output sw_sig4; // switch 1 inverse - > > reg [31:0] clk_count; > reg sw_sig1; > reg sw_sig3; > > > parameter SEC_sig1 = 2500; // when 25us, it must be 2500 > > > always@(posedge clk) > > > if(!reset) > > clk_count <= 0; > > else > > if(clk_count < SEC_sig1) > > clk_count <= clk_count+1; > > else > > clk_count <= 0; > > > always@(posedge clk) > > > if(clk_count <= 1250) > > sw_sig1 = 1; > > else if(clk_count > 1250) > > sw_sig1 = 0; > > > always@(posedge clk) > > > if(clk_count > 500 && clk_count <= 1750) > > sw_sig3 = 1; > > > else > > sw_sig3 = 0; > > > > > > assign sw_sig4 =~ sw_sig1; > assign sw_sig2 =~ sw_sig3; > > endmodule >
8515 답변완료AD-USBISP V6.0 관련 문의 사항 이성근 2013-11-26 1,444
얼마전에 AD-USBISP V6.0을 구매하였습니다. 근데 다운로드가 되지 않아 이렇게 질문을 남깁니다. 사용 컴파일러 : AVR STUDIO 6.1 사용칩 : atmega48PA 다운로드를 실행하면 첨부파일의 그림과 같은 에러가 발생합니다. 제가 AVR STUDIO6.1도 처음 사용하고 ATMEGA48PA칩도 처음 사용하는 지라 좀 막히는 부분이 많습니다. 긴급으로 답변 부탁을 드립니다. 감사합니다.
관리자 답변 관리자 · 2013-11-26
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 일단, ATMEGA48P는 USBISP V6.0으로 AVR Studio V6.1에서 사용이 가능한 디바이스입니다. 하지만, 처음 칩을 사서 사용할 때에는 반드시 SCK ISP Freq.를 115.2kHz 근처 것을 사용하셔야 합니다. 첨엔 AVR이 내부 클럭으로 잡혀 있어서, 1MHz~4MHz로 동작합니다. The device is shipped with internal RC oscillator at 8.0MHz and with the fuse CKDIV8 programmed, resulting in 1.0MHz system clock 사용하시는 칩의 경우는 1MHz로 시스템 클럭이 잡혀 있습니다. 따라서, 퓨즈를 다시 잡고 외부 크리스탈로 작업하시기 전에는 ISP 다운로드시에는 반드시 1/4 클럭이하인 115kHz 정도로 ISP Freq.를 내려놓고, 사용하는 것이 바람직합니다. 일단, 그렇게 해서, 퓨즈를 정상적으로 외부 크리스탈 쓰는 것으로 변경한 다음, 그런 다음에 그 다음부터는 다시 SCK ISP Freq.를 1.832MHz로 변경하여 쓰시면 됩니다. 감사합니다. > > > 얼마전에 AD-USBISP V6.0을 구매하였습니다. 근데 다운로드가 되지 않아 이렇게 질문을 남깁니다. > 사용 컴파일러 : AVR STUDIO 6.1 > 사용칩 : atmega48PA > 다운로드를 실행하면 첨부파일의 그림과 같은 에러가 발생합니다. > 제가 AVR STUDIO6.1도 처음 사용하고 ATMEGA48PA칩도 처음 사용하는 지라 좀 막히는 부분이 > 많습니다. 긴급으로 답변 부탁을 드립니다. 감사합니다. >
8514 답변완료rs232 사용해 보려고합니다. 박수상 2013-11-25 1,472
KD 128 pro 가지고 있는데 컴파일러는 코드비젼 사용합니다. 기본 예제소스를 넣고 컴파일 시켰는데 어떻게 테스트를 하죠? 검색해보니 막 하이퍼 터미널 어쩌구 하는데 다른 프로그램도 있어야 하나요? 아 그리고 제가 가지고 있는 케이블이라곤 isp 밖에 없는데 방법좀 부탁드립니다.;;
관리자 답변 관리자 · 2013-11-25
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 일단, KD-128PRO와 AD-USBISP V03.5나 03.6을 가지고 계신다면 OK입니다. USBISP 구매하실 때에, 4핀- 4핀 1:1 케이블도 같이 들어 있었을 겁니다. 그 케이블을 USBISP의 뒷쪽 4핀 커넥터에 꽂고, 나머지 한 쪽을 KD-128PRO의 보드 위쪽의 4핀 커넥터(UART0)에 꽂으면 AVR의 UART0와 USBISP의 시리얼 COM 포트를 통해서 연결될 겁니다. 시리얼 확인용 터미널은 구글에서 시리얼웍스 라고 쳐서, 찾아 보세요. 랜플라자인가 하는 곳에서 링크된 것이 있을 겁니다. 그것을 쓰시면 됩니다. 반드시, 시리얼 통신 속도와 컴포트 등을 모두 맞춰줘야 동작합니다. 온라인강좌->AVR 강좌에서 컴파일러별 UART 강좌를 읽어 보세요. 감사합니다. > > > KD 128 pro 가지고 있는데 컴파일러는 코드비젼 사용합니다. > 기본 예제소스를 넣고 컴파일 시켰는데 어떻게 테스트를 하죠? > 검색해보니 막 하이퍼 터미널 어쩌구 하는데 다른 프로그램도 있어야 하나요? > > 아 그리고 제가 가지고 있는 케이블이라곤 isp 밖에 없는데 방법좀 부탁드립니다.;; >
8513 답변완료FM-CY6S-KIT 키트에서 포트 신호입력방법 백지은 2013-11-25 1,453
FPGA에서 간단한 25kHz 시그널을 PORTA의 4개 핀으로 출력하려고합니다. 근데, PORTA에 Enable 핀과 Dir핀이 있더라구요. Jtag으로 구운다음에 오실로스코프로 핀 출력을 확인해봤는데, 입력신호와 다른 시그널이 PORTA 전체에 똑같이 입력되어있었습니다. 제가 다른 입력신호를 줬는데 그게 입력이 제대로 안된거같습니다. 이경우에 원래 저렇게 기본 시그널이 나오나요? 그리고 Enable 핀은 VCC로, Dir핀은 GND로 되어있던데요. 거기에 5V 전원을 인가해줘야 프로그램된 신호가 나오는 건가요? 아니면 Enable과 Dir는 5V를 따로 주고, 프로그램할때 신호를 따로 넣어줘야하나요? ---------------------------------- module inverter_signal(clk, reset, sw_sig1, sw_sig2, sw_sig3, sw_sig4); input clk, reset; output sw_sig1; // switch 1 output sw_sig2; // switch 3 inverse - output sw_sig3; // siwtch 3 output sw_sig4; // switch 1 inverse - reg [31:0] clk_count; reg sw_sig1; reg sw_sig3; parameter SEC_sig1 = 2500; // when 25us, it must be 2500 always@(posedge clk) if(!reset) clk_count <= 0; else if(clk_count < SEC_sig1) clk_count <= clk_count+1; else clk_count <= 0; always@(posedge clk) if(clk_count <= 1250) sw_sig1 = 1; else if(clk_count > 1250) sw_sig1 = 0; always@(posedge clk) if(clk_count > 500 && clk_count <= 1750) sw_sig3 = 1; else sw_sig3 = 0; assign sw_sig4 =~ sw_sig1; assign sw_sig2 =~ sw_sig3; endmodule --------------------------------------------------
관리자 답변 관리자 · 2013-11-25
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 답변 드릴께요. > FPGA에서 간단한 25kHz 시그널을 PORTA의 4개 핀으로 출력하려고합니다. > > 근데, PORTA에 Enable 핀과 Dir핀이 있더라구요. > Jtag으로 구운다음에 오실로스코프로 핀 출력을 확인해봤는데, > 입력신호와 다른 시그널이 PORTA 전체에 똑같이 입력되어있었습니다. > 제가 다른 입력신호를 줬는데 그게 입력이 제대로 안된거같습니다. 이경우에 > 원래 저렇게 기본 시그널이 나오나요? ==> 무슨 말씀이신지 10번정도 읽어봐도 잘 정확히 이해가 안갑니다. 좀 더 풀어서 얘기해 주세요. > > 그리고 > > Enable 핀은 VCC로, Dir핀은 GND로 되어있던데요. 거기에 5V 전원을 인가해줘야 > 프로그램된 신호가 나오는 건가요? 아니면 Enable과 Dir는 5V를 따로 주고, 프로그램할때 > 신호를 따로 넣어줘야하나요? ==> Enable에 0을 줘야 일단, 포트 제어가 Enable이 될 거구요. Dir 핀에 0을 넣어줘야 입력으로 사용할 겁니다. 감사합니다. > > > ---------------------------------- > module inverter_signal(clk, reset, sw_sig1, sw_sig2, sw_sig3, sw_sig4); > > input clk, reset; > > > output sw_sig1; // switch 1 > output sw_sig2; // switch 3 inverse - > output sw_sig3; // siwtch 3 > output sw_sig4; // switch 1 inverse - > > reg [31:0] clk_count; > reg sw_sig1; > reg sw_sig3; > > > parameter SEC_sig1 = 2500; // when 25us, it must be 2500 > > > always@(posedge clk) > > > if(!reset) > > clk_count <= 0; > > else > > if(clk_count < SEC_sig1) > > clk_count <= clk_count+1; > > else > > clk_count <= 0; > > > always@(posedge clk) > > > if(clk_count <= 1250) > > sw_sig1 = 1; > > else if(clk_count > 1250) > > sw_sig1 = 0; > > > always@(posedge clk) > > > if(clk_count > 500 && clk_count <= 1750) > > sw_sig3 = 1; > > > else > > sw_sig3 = 0; > > > > > > assign sw_sig4 =~ sw_sig1; > assign sw_sig2 =~ sw_sig3; > > endmodule > > -------------------------------------------------- >
8512 답변완료Tiny2313 기본코드 관리자 2013-11-25 1,443
//ICC-AVR application builder : 2013-11-25 오후 2:31:34 // Target : T2313 // Crystal: 1.0000Mhz #include <iot2313v.h> #include <macros.h> void port_init(void) { PORTA = 0x00; DDRA = 0x00; PORTB = 0x00; DDRB = 0x00; PORTD = 0x00; DDRD = 0x40; } //call this routine to initialize all peripherals void init_devices(void) { //stop errant interrupts until set up CLI(); //disable all interrupts port_init(); MCUCR = 0x00; GIMSK = 0x00; TIMSK = 0x00; SEI(); //re-enable interrupts //all peripherals are now initialized } void delay(int delaytime){ int i, j; for(i=0;i<1000;i++){ for(j=0;j<delaytime;j++){ } } } // void main(void) { init_devices(); //insert your functional code here... while(1){ PORTD |=0b01000000; delay(1000); PORTD |=0b00000000; delay(1000); } }
관리자 답변 관리자 · 2013-11-25
내부 클럭 사용시의 예제입니다. > > > //ICC-AVR application builder : 2013-11-25 오후 2:31:34 > // Target : T2313 > // Crystal: 1.0000Mhz > > #include <iot2313v.h> > #include <macros.h> > > void port_init(void) > { > PORTA = 0x00; > DDRA = 0x00; > PORTB = 0x00; > DDRB = 0x00; > PORTD = 0x00; > DDRD = 0x40; > } > > //call this routine to initialize all peripherals > void init_devices(void) > { > //stop errant interrupts until set up > CLI(); //disable all interrupts > port_init(); > > MCUCR = 0x00; > GIMSK = 0x00; > TIMSK = 0x00; > SEI(); //re-enable interrupts > //all peripherals are now initialized > } > > void delay(int delaytime){ > int i, j; > for(i=0;i<1000;i++){ > for(j=0;j<delaytime;j++){ > } > } > } > > // > void main(void) > { > init_devices(); > //insert your functional code here... > while(1){ > PORTD |=0b01000000; > delay(1000); > PORTD |=0b00000000; > delay(1000); > } > } >
8511 답변완료네...라인트레이서요ㅠㅠ 조민성 2013-11-25 1,374
그래서 소스바꿀때는 모터구동포트랑 센서포트랑 포트선언 이거만바꾸면되는거에요???
관리자 답변 관리자 · 2013-11-25
안녕하세요? 고객님, 포트들 바꾸면 되지만, 8051보드의 경우는 IRS 센서는 아날로그 출력이라서, 해당 8051 보드에서 ADC가 되지 않으므로, 안되구요. IRS4D의 경우, 디지털 출력이라 8051에서 값을 읽는 것이 가능하므로, 쓰실 수 있습니다. 감사합니다. > > > 그래서 소스바꿀때는 모터구동포트랑 센서포트랑 포트선언 이거만바꾸면되는거에요??? >
8510 답변완료다음의 AT91SAM7S256 타이머 카운터 0 소스 코드에 대하여 확인을 부탁 드립니다. 주호석 2013-11-25 1,722
안녕하세요? 한 블로그에 나와있는 소스 코드를 참고하여,IAR ARM 컴파일러에서 제공된 헤더 화일의 레지스터 및 함수를 활용하여 다음과 같이 타이머 카운터 0 코드를 프로그래밍 해 보았습니다. #include <AT91SAM7S256.h> #include <lib_AT91SAM7S.h> static volatile unsigned int Count_ms; void Timer_Handler(void); void AT91SAM7S256_TC0(void) { AT91F_TC0_CfgPMC(); // Enable peripheral clock in PMC for TC0. *AT91C_TC0_CCR = AT91C_TC_CLKDIS; // Disable peripheral clock in TC0. AT91F_TC_InterruptDisable(AT91C_BASE_TC0, AT91C_TC_COVFS | AT91C_TC_LOVRS | AT91C_TC_CPAS | AT91C_TC_CPBS | AT91C_TC_CPCS | AT91C_TC_LDRAS | AT91C_TC_LDRBS | AT91C_TC_ETRGS); //Disable timer counter 0 Interrupt. *AT91C_TC0_SR; // Read timer counter 0 register. (initialize timer counter 0 register) *AT91C_TC0_CMR = (AT91C_TC_CLKS_TIMER_DIV4_CLOCK | AT91C_TC_CPCTRG); // TCCLKS(clock division) of // TC0_CMR is set as 128.(TCCLKS = 0x3)| // Enable RC Compare Trigger.(CPCTRG = 1) *AT91C_TC0_RC = 375; // Count the divided clock by 375, to count 1ms. AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, AT91C_ID_TC0, AT91C_AIC_PRIOR, AT91C_AIC_SRCTYPE_HIGH_LEVEL, Timer_Handler); AT91F_TC_InterruptEnable(AT91C_BASE_TC0, AT91C_TC_CPCS); AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_TC0); *AT91C_TC0_CCR = AT91C_TC_CLKEN; *AT91C_TC0_CCR = AT91C_TC_SWTRG; } void Timer_Handler(void) { *AT91C_TC0_SR; ++Count_ms; return; } void Delay_ms(unsigned int ms_set) { Count_ms = 0; while(ms_set > Count_ms); } 위의 소스 코드가 참조해 드린 블로그에 나와있는 것처럼 올바르게 프로그래밍 한 것인지, 그리고 레지스터 또한 올바르게 사용되어 졌는지를 지적해 주시면 감사 드리겠습니다. 감사합니다. P.S : 인터럽트 벡터를 지정할 때 핸들러 형식으로 함수를 사용하는 이유, 그리고 인터럽트 소스 벡터 레지스터(AIC Source Vector Register)를 왜 배열형으로 사용하는 지의 이유에 대해서도 설명해 주시면 대단히 감사 드리겠습니다.
관리자 답변 관리자 · 2013-11-25
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 본사에서 고객님이 직접 코딩하시거나, 외부 코딩된 자료를 검증해 드리거나 하는 서비스는 해 드리지 못하고 있으니, 참고하시기 바랍니다. 거기까지 제공해 드리면 좋은데 해드리지 못하는 부분 죄송하게 생각합니다. 본사의 온라인 강좌에 가시면, 부족하지만, 몇가지 강좌가 제공되고 있으니, 그 부분 참고 바랍니다. 감사합니다. > > > 안녕하세요? > > > 한 블로그에 나와있는 소스 코드를 참고하여,IAR ARM 컴파일러에서 > > 제공된 헤더 화일의 레지스터 및 함수를 활용하여 다음과 같이 > > 타이머 카운터 0 코드를 프로그래밍 해 보았습니다. > > > #include <AT91SAM7S256.h> > #include <lib_AT91SAM7S.h> > > static volatile unsigned int Count_ms; > > void Timer_Handler(void); > > void AT91SAM7S256_TC0(void) > { > AT91F_TC0_CfgPMC(); // Enable peripheral clock in PMC for TC0. > *AT91C_TC0_CCR = AT91C_TC_CLKDIS; // Disable peripheral clock in TC0. > AT91F_TC_InterruptDisable(AT91C_BASE_TC0, AT91C_TC_COVFS | AT91C_TC_LOVRS | AT91C_TC_CPAS | > AT91C_TC_CPBS | AT91C_TC_CPCS | AT91C_TC_LDRAS | AT91C_TC_LDRBS | > AT91C_TC_ETRGS); //Disable timer counter 0 Interrupt. > *AT91C_TC0_SR; // Read timer counter 0 register. (initialize timer counter 0 register) > *AT91C_TC0_CMR = (AT91C_TC_CLKS_TIMER_DIV4_CLOCK | AT91C_TC_CPCTRG); // TCCLKS(clock division) of > // TC0_CMR is set as 128.(TCCLKS = 0x3)| > // Enable RC Compare Trigger.(CPCTRG = 1) > *AT91C_TC0_RC = 375; // Count the divided clock by 375, to count 1ms. > AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, AT91C_ID_TC0, AT91C_AIC_PRIOR, AT91C_AIC_SRCTYPE_HIGH_LEVEL, Timer_Handler); > AT91F_TC_InterruptEnable(AT91C_BASE_TC0, AT91C_TC_CPCS); > AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_TC0); > *AT91C_TC0_CCR = AT91C_TC_CLKEN; > *AT91C_TC0_CCR = AT91C_TC_SWTRG; > } > > void Timer_Handler(void) > { > *AT91C_TC0_SR; > ++Count_ms; > return; > } > > void Delay_ms(unsigned int ms_set) > { > Count_ms = 0; > while(ms_set > Count_ms); > } > > > 위의 소스 코드가 참조해 드린 블로그에 나와있는 것처럼 올바르게 > > 프로그래밍 한 것인지, 그리고 레지스터 또한 올바르게 사용되어 졌는지를 > > 지적해 주시면 감사 드리겠습니다. > > > 감사합니다. > > > > P.S : 인터럽트 벡터를 지정할 때 핸들러 형식으로 함수를 사용하는 이유, > > 그리고 인터럽트 소스 벡터 레지스터(AIC Source Vector Register)를 > > 왜 배열형으로 사용하는 지의 이유에 대해서도 설명해 주시면 대단히 > > 감사 드리겠습니다. >
8509 답변완료AM-DC2-2D 문의입니다. 김상학 2013-11-25 1,364
AM-DC2-2D 개봉하고, 코딩다 하고 오늘 처음으로 구동하는건데 이전에 언코더 장착형 dc모터 구동되는가 테스트해볼려고 한번 하고 오늘 처음 돌렸는데 맛갔네요 ㅡ ㅡ;;; 잭 문제인지 확인하려고 다 물려봣는데. 문제는 AM-DC2-2D 모듈입니다.. 이거 원;; 두번째 테스트때 뻥나버리다뇨;;;
관리자 답변 관리자 · 2013-11-25
안녕하세요? 고객님, 저희 뉴티씨 제품을 이용하여 주셔서 감사합니다. 혹시, 물리신 DC 모터가 어떤 제품인지요? 모터 드라이버 스펙보다 전류사용이 높은 제품이라면, 망가질 수 있습니다. 모터 스펙을 살펴 보시고 올려 보시면 좋겠습니다. 감사합니다. > > > AM-DC2-2D 개봉하고, 코딩다 하고 오늘 처음으로 구동하는건데 > > 이전에 언코더 장착형 dc모터 구동되는가 테스트해볼려고 한번 하고 > > 오늘 처음 돌렸는데 > > 맛갔네요 ㅡ ㅡ;;; > > 잭 문제인지 확인하려고 다 물려봣는데. > > 문제는 AM-DC2-2D 모듈입니다.. 이거 원;; 두번째 테스트때 뻥나버리다뇨;;; >