Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 6513 | 답변완료모터가 혼자 돌아갑니다. | 신승현 | 2011-11-06 | 1,354 |
|
void main (void){
unsigned char ah0,al0;
unsigned int ch0;
int sensor0;
init_devices();
ENABLE1_OFF;
ENABLE2_OFF;
ADCSRA &= 0x7f;
while(1){
ch0 = 0;
sensor0 = 0x00;
ADCSRA = 0xC7;
ADMUX = 0x40;
al0 = ADCL;
ah0 = ADCH;
ch0 = al0+ah0*256;
printf("data : %d\\r\\n", ch0);
if(ch0 >= 100){
sensor0=0x01;
}
switch (sensor0){
case 0x00 : PORTB = 0xaa; break; //PORTB = LED
case 0x01 : PORTB = 0x0f; break;
}
}
}
이런 소스에서 왜 연결하면 모터가 가동이 될까요... 분명히 위에다 작동하지말라고 까지 입력을 했는데;;... 자꼬 모터가 돌아가내요.. init_devices() <<<이걸 지우지 안는이상 계속 도내요..
관리자 답변
안녕하세요?
일단, 하드웨어 이상이 없는 지 확인하기 위해서 자료실의 예제 소스를 넣어서 테스트 하는 것이 좋겠습니다. 이상 없다면, 소스 문제로 들어가면 좋겠습니다.
그리고, define 문이나 include 문 같은 전처리문은 소스 맨 앞에 넣어야 합니다.
일단 하드웨어 확인하고서, 파일로 소스 문제가 확실해 지면, 소스를 올려 보세요.
수고하세요.
>void main (void){
> unsigned char ah0,al0;
> unsigned int ch0;
> int sensor0;
> init_devices();
> ENABLE1_OFF;
> ENABLE2_OFF;
> ADCSRA &= 0x7f;
> while(1){
> ch0 = 0;
> sensor0 = 0x00;
> ADCSRA = 0xC7;
> ADMUX = 0x40;
> al0 = ADCL;
> ah0 = ADCH;
> ch0 = al0+ah0*256;
> printf("data : %d\\r\\n", ch0);
> if(ch0 >= 100){
> sensor0=0x01;
> }
> switch (sensor0){
> case 0x00 : PORTB = 0xaa; break; //PORTB = LED
> case 0x01 : PORTB = 0x0f; break;
> }
> }
>}
>
>이런 소스에서 왜 연결하면 모터가 가동이 될까요... 분명히 위에다 작동하지말라고 까지 입력을 했는데;;... 자꼬 모터가 돌아가내요.. init_devices() <<<이걸 지우지 안는이상 계속 도내요..
|
||||
| 6512 | 답변완료센서에서 나오는 출력값 질문입니다. | 최승훈 | 2011-11-07 | 1,368 |
|
전에 써주신 답변 잘 받았습니다. 전에 다음과 같이 답변해 주셨는데요
>질문1. 먼저 매우 기초적인 질문입니다.^^ 코드상에선 상위 비트와 하위비트로 나누어서 상위비트에 256을 곱해서 ch라는 하나의 문자로 표현했는데 %d로 ch0을 출력한 이 값이 각속도 값을 의미하는 것인가요?
== 네 그렇습니다.
여기서 ch0으로 출력되는 값이 voltage값인가요??
감도가 0.5mV/각속도 인데
예를들어 현재 ch0을 출력했을경우 260이란 숫자가 나옵니다.
이때 가속도를 10만큼 움직였을 경우 5mV가 더해지고 265가 되는건가요??
전에 했던 질문 번호는 14084번입니다
사용하는 코드는 센서에 올려주신 코드를 이용하고 있고 사용하는 프로그램은 codevision입니다.
항상 친절한 답변 감사드립니다.
관리자 답변
안녕하세요? 고객님,
아래 답변을 보시면, 도움이 되실 듯 합니다.
- 아래 -
http://newtc.co.kr/board/view.php?id=faq&page=2&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=4
4번에 보면 잘 나와 있습니다만
스케일 백터와 고객님의 값을 이용하여 계산해 내야 각속도가 나옵니다.
즉, 고객님이 뽑은 ADC 값들을 이용하여, 각속도를 계산해 내는 겁니다.
수고하세요.
>전에 써주신 답변 잘 받았습니다. 전에 다음과 같이 답변해 주셨는데요
>
>>질문1. 먼저 매우 기초적인 질문입니다.^^ 코드상에선 상위 비트와 하위비트로 나누어서 상위비트에 256을 곱해서 ch라는 하나의 문자로 표현했는데 %d로 ch0을 출력한 이 값이 각속도 값을 의미하는 것인가요?
>== 네 그렇습니다.
>
>여기서 ch0으로 출력되는 값이 voltage값인가요??
>감도가 0.5mV/각속도 인데
>예를들어 현재 ch0을 출력했을경우 260이란 숫자가 나옵니다.
>이때 가속도를 10만큼 움직였을 경우 5mV가 더해지고 265가 되는건가요??
>
>전에 했던 질문 번호는 14084번입니다
>
>사용하는 코드는 센서에 올려주신 코드를 이용하고 있고 사용하는 프로그램은 codevision입니다.
>항상 친절한 답변 감사드립니다.
|
||||
| 6511 | 답변완료SE-SM9K 모터 사용자 입니다 | 오한영 | 2011-11-07 | 1,291 |
|
SE-SM9K를 구매해서 사용하고 있습니다
모터만 출력 줘서 돌렸을 때는 소리가 모터 도는 소리정도만 나는데..
기구부에 물리니 공진이 생겨서 그런지 소리가 상당히 크게 들리는데
소리를 안나게 할 수 있는 방법이 있을 까요??
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
모터를 돌리는 주파수를 11kHz 정도의 타이머로 돌리니, 소리가 많이 줄어듭니다.
모터와 기구부의 접촉부 사이에 고무판 등으로 완충을 하시면 소리가 많이 줄어듭니다.
수고하세요.
>SE-SM9K를 구매해서 사용하고 있습니다
>
>모터만 출력 줘서 돌렸을 때는 소리가 모터 도는 소리정도만 나는데..
>
>기구부에 물리니 공진이 생겨서 그런지 소리가 상당히 크게 들리는데
>
>소리를 안나게 할 수 있는 방법이 있을 까요??
|
||||
| 6510 | 답변완료AVR오프라인 교육있나요? | 교육생 | 2011-11-07 | 1,225 |
|
AVR 관련해서 오프라인 교육계획있나요?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
12월 둘째 주 정도에 한 번 무료 교육 진행할 까 합니다.
1-2월에도 한 번 교육을 할 예정입니다.
별도 공지하겠습니다.
수고하세요.
>AVR 관련해서 오프라인 교육계획있나요?
>
>
|
||||
| 6509 | 답변완료하이퍼 터미널사용방법을... | ..... | 2011-11-07 | 1,457 |
|
컴파일러는 ICCAVR을 씁니다.
하이퍼 터미널을 쓰는 방법을 알기위해 예제를 다운 받아서 AVR에 넣고
UART0에 연결했습니다. 그다음에 터미널 탭에 있는
Show Terminal Window << 이곳으로 들어가서 Open com port을 눌러도
창에 아무런 반응이 없습니다. 포트도 마췄고... 뭐가 문제인지...
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
혹시, 어떤 예제를 다운로드 받으셨는지요?
자료실->기존자료실에서 printf 라고 쓰시면 printf 관련된 예제들이 나옵니다.
그 중 해당 MCU의 예제를 쓰시면 되겠습니다.
- 추천 -
http://www.newtc.co.kr/board/view.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=printf&select_arrange=headnum&desc=asc&no=238
위의 추천 예제는 터미널을 9,600bps, n.8.1.로 연결하고 UART0로 PC와 연결하였을 때의 예제입니다.
연결 후 키보드를 누르면, 대문자 A, B, C, D 에 대해서는 그 키가 눌렀다고 말해줍니다.
printf("\\r\\nPressed A"); 이렇게 말이죠.
하지만, 나머지 키들은 반응하지 않습니다. default에서 //로 된 부분을 걷어내면 뭔가 반응합니다.
혹시, UART0와 PC의 시리얼 포트와의 연결을 레벨을 맞춰서 한 것이 맞는 지 확인해 보세요.
본사의 모듈이나 보드인 경우, UART0 라고 된 커넥터 중에 3핀 약간 누런 커넥터 몰렉스 호환 5267-3 커넥터라면 RS-232C Level(+-12V) 구요. 그렇지 않고, 4핀 하얀 커넥터 몰렉스 호환 5045-4 커넥터라면, TTL Level(5V level) 커넥터 입니다.
참고하셔서 하시기 바랍니다.
이 하드웨어적인 연결에서 많이들 실수합니다.
수고하세요.
수고하세요.
>컴파일러는 ICCAVR을 씁니다.
>
>하이퍼 터미널을 쓰는 방법을 알기위해 예제를 다운 받아서 AVR에 넣고
>
>UART0에 연결했습니다. 그다음에 터미널 탭에 있는
>
>Show Terminal Window << 이곳으로 들어가서 Open com port을 눌러도
>
>창에 아무런 반응이 없습니다. 포트도 마췄고... 뭐가 문제인지...
|
||||
| 6508 | 답변완료자이로센서 질문입니다, | 최승훈 | 2011-11-07 | 1,186 |
|
답변 감사합니다. 말씀해주신 게시판을 열어 확인하였습니다.
그렇다면 다음과 같을 때 제가 이해한 바가 맞는지 확인하여 주세요
현재 260이란 값이 나오고 있지만 그건 각속도가 0일때의 값이고
질문1. 1024 분해능을 제공해주신 코드에선 이용하고 있는것이고
질문2. AM-GYRO V02를 사용하는 경우 출력되는 값이 260에서 270이 되었을 경우
1024분해능에서 1 변홍할 때의 각속도 값이 6.4453125degree/sec이므로
10이 변동되었으니 각속도 값이 64.453125deg/sec라는 말씀이신건가요??
4. 최종적인 각도 계산을 위한 Scale Vector 값 관련
AM-GYRO V01 ( 즉, IDG300) 이용시,
- 1024 분해능에서 1 변동할때의 각속도 값(Vref = 3.3V) :
3.22265625 mV / ( 2mV/degree/sec) = 1.611328125 degree/sec
- 1024 분해능에서 1 변동할때의 각속도 값(Vref = 5V) :
4.8816568mV / ( 2mV/degree/sec) = 2.4408284 degree/sec
AM-GYRO V02 ( 즉, IDG650) 이용시,
- 1024 분해능에서 1 변동할때의 각속도 값(Vref = 3.3V) :
3.22265625 mV / ( 0.5mV/degree/sec) = 6.4453125 degree/sec
- 1024 분해능에서 1 변동할때의 각속도 값(Vref = 5V) :
4.8816568mV / ( 0.5mV/degree/sec) = 9.7533136 degree/sec
5. 즉, 정리하여 보면, 각속도 구하는 기본식은
( 각속도 초기 adc값 - 센서 회전된 adc 값 ) * scale vector
여기서 adc 샘플링 시간을 누적시키면 각도가 됩니다.(적분)
adc 샘플링 주기가 예로 0.01초이면
degree += (( 각속도 초기 adc값 - 센서 회전된 adc 값 ) * scale vector ) * 0.01sec
관리자 답변
네 그렇습니다.
자이로마다 조금씩 값은 다를 수 있지만,
가만히 있을 때 나오는 값이 있고, 그 값이 260일 수 있겠지요.
그리고, 제가 드린 소스는 1024 분해능으로 사용하여 값을 받아서, 계산한 내용입니다.
또한, 질문 2에서 내용은 맞습니다.
수고하세요.
>답변 감사합니다. 말씀해주신 게시판을 열어 확인하였습니다.
>그렇다면 다음과 같을 때 제가 이해한 바가 맞는지 확인하여 주세요
>현재 260이란 값이 나오고 있지만 그건 각속도가 0일때의 값이고
>질문1. 1024 분해능을 제공해주신 코드에선 이용하고 있는것이고
>질문2. AM-GYRO V02를 사용하는 경우 출력되는 값이 260에서 270이 되었을 경우
>1024분해능에서 1 변홍할 때의 각속도 값이 6.4453125degree/sec이므로
>10이 변동되었으니 각속도 값이 64.453125deg/sec라는 말씀이신건가요??
>
>4. 최종적인 각도 계산을 위한 Scale Vector 값 관련
>
> AM-GYRO V01 ( 즉, IDG300) 이용시,
> - 1024 분해능에서 1 변동할때의 각속도 값(Vref = 3.3V) :
> 3.22265625 mV / ( 2mV/degree/sec) = 1.611328125 degree/sec
> - 1024 분해능에서 1 변동할때의 각속도 값(Vref = 5V) :
> 4.8816568mV / ( 2mV/degree/sec) = 2.4408284 degree/sec
>
> AM-GYRO V02 ( 즉, IDG650) 이용시,
> - 1024 분해능에서 1 변동할때의 각속도 값(Vref = 3.3V) :
> 3.22265625 mV / ( 0.5mV/degree/sec) = 6.4453125 degree/sec
> - 1024 분해능에서 1 변동할때의 각속도 값(Vref = 5V) :
> 4.8816568mV / ( 0.5mV/degree/sec) = 9.7533136 degree/sec
>
>5. 즉, 정리하여 보면, 각속도 구하는 기본식은
> ( 각속도 초기 adc값 - 센서 회전된 adc 값 ) * scale vector
> 여기서 adc 샘플링 시간을 누적시키면 각도가 됩니다.(적분)
> adc 샘플링 주기가 예로 0.01초이면
> degree += (( 각속도 초기 adc값 - 센서 회전된 adc 값 ) * scale vector ) * 0.01sec
>
|
||||
| 6507 | 답변완료KT-M128에서 PWM 을 사용하려고하는데요. | 김길현 | 2011-11-07 | 1,133 |
|
안녕하세요.
KT-M128 에서 PB4(OCR0) 포트를 PWM으로 사용하려고 하는데요.
설정 값을 정확하게 어떻게 넣어야 할지 모르겠네요.
void timer0_init(void)
{
TCCR0 = 0x00; //stop
TCNT0 = 0x00; //set count
OCR0 = 0x1C; //set compare*/
TCCR0 = 0x71; // 여기를 71로 해서 PC PWM 모드로 설정했습니다.
TIMSK = 0x41; // ? timer interrupt sources
ETIMSK = 0x00; // ?extended timer interrupt sources
}
int main(void)
{
...
DDRB = 0x10; // PB4를 출력으로 선언했구요.
...
while(1)
{
for(cLight=0;cLight<255;cLight++)
{
OCR0 = cLight; // <-- duty비 조절 ( PWM을 변화주기)
_delay_ms(10);
}//for()
}//while(1)
...
}//main()
이렇게 OCR0의 값을 변화를 주어서 변경하는 것이 아닌가요?
아니면 설정때문에 그런가요?
타이머 강좌내용은 보았는데요, m128을 사용해서 pwm 제어 강좌는 못 본것 같아서요.
그럼 수고하세요,
관리자 답변
PWM으로 무엇을 하는 것이 목적인가요?
목적에 따라서, 다른 방식을 사용하는 것이 좋아서요.
예를 들어서, 일반적으로 모터 속도 등을 제어하는 것은 PWM의 Duty cycle을 변경함으로서 가능해 집니다. 따라서, 이경우 PWM Fast 모드나 PWM Phase Correct mode를 사용하게 됩니다.
PWM Phase Correct mode가 보다 정밀한 모드이죠.
어떤 경우이든지간에 둘 다 사용이 가능합니다.
따라서, Normal 모드의 경우는 위상만 바뀌거나 하는 경우라서 이런 경우는 거의 사용하지 않습니다.
강의록 8비트 타이머 강좌 쪽에 보면, 목적에 따라서, PWM 방법을 정하는 것이 나와 있습니다.
수고하세요.
>안녕하세요.
>
>KT-M128 에서 PB4(OCR0) 포트를 PWM으로 사용하려고 하는데요.
>
>설정 값을 정확하게 어떻게 넣어야 할지 모르겠네요.
>
>
>void timer0_init(void)
>{
> TCCR0 = 0x00; //stop
> TCNT0 = 0x00; //set count
> OCR0 = 0x1C; //set compare*/
> TCCR0 = 0x71; // 여기를 71로 해서 PC PWM 모드로 설정했습니다.
>
> TIMSK = 0x41; // ? timer interrupt sources
> ETIMSK = 0x00; // ?extended timer interrupt sources
>}
>
>int main(void)
>{
>...
>
> DDRB = 0x10; // PB4를 출력으로 선언했구요.
>...
> while(1)
> {
> for(cLight=0;cLight<255;cLight++)
> {
> OCR0 = cLight; // <-- duty비 조절 ( PWM을 변화주기)
> _delay_ms(10);
> }//for()
> }//while(1)
>
>...
>}//main()
>
>
>
>
>이렇게 OCR0의 값을 변화를 주어서 변경하는 것이 아닌가요?
>
>아니면 설정때문에 그런가요?
>
>타이머 강좌내용은 보았는데요, m128을 사용해서 pwm 제어 강좌는 못 본것 같아서요.
>
>
>그럼 수고하세요,
|
||||
| 6506 | 답변완료공간마우스 제작 프로그램과 블루투스 | 이재현 | 2011-11-08 | 1,654 |
|
안녕하세요 강좌에 있는 공간마우스를 2축 자이로 센서로 제작하고 있습니다.
강좌에서처럼 UART0 을 통해 PC와 AVR을 직접연결했을 때는 마우스가 잘 작동합니다.
저는 PC - AVR 연결사이에 블루투스 모듈 FB155BBC 을 이용하여
무선 공간마우스로 활용하려고 합니다.
PC와 블루투스 모듈 사이에 페어링은 원활하게 되었습니다. (모듈이 SLAVE, PC가 MASTER)
하지만 블루투스로 연결되어 생기는 COM 포트를 이용해서 마우스 프로그램을 실행시키면
전혀 입력을 받지 못합니다.
제 소견으로는 BAUD RATE가 마우스의 ADC소스코드와 윈도우 프로그램에서는 115200kbps로
되어있는 반면, 블루투스는 9600kbps를 기본으로 하고 있기 때문인것 같아서
여러번 블루투스 모듈의 baud rate를 115200kbps 수정하여 작업해 보았으나 계속 통신으로 전송되는 결과가 전혀없습니다...
일단 상태는 이렇구요.
질문은 다음과 같습니다.
1. adc.c 프로그램과 윈도우 소스코드에서 통신 설정할때를 모두 9600kbps로 변경하면 작동하지 않는가요? avr 코드에 대해서 잘몰라서 어떻게 수정해야 baud rate를 낮추는지 모릅니다... 만약 가능하다면 수정 방법을 알고 싶습니다.
2. 유선으로 UART 통신을 한 것은 하이퍼터미널을 이용해서 AVR -> PC로 송신되는 정보를 확인하는게 가능합니다.(전부 깨지긴 합니다만 최소한 전송이 계속되있구나는 알수있습니다.) 이와 비슷하게 UART에서 블루투스로 연결하여 PC랑 페어링 했을 때 PC로 데이터가 전송되고 있는지 확인할 수 있는 방법이 있나요?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
답변 드릴께요.
>1. adc.c 프로그램과 윈도우 소스코드에서 통신 설정할때를 모두 9600kbps로 변경하면 작동하지 않는가요? avr 코드에 대해서 잘몰라서 어떻게 수정해야 baud rate를 낮추는지 모릅니다... 만약 가능하다면 수정 방법을 알고 싶습니다.
==>
아래와 같이 함수를 바꾸면, 9,600bps로 AVR 쪽이 변경됩니다.
이는 본사 모듈의 경우인데, 16MHz, ATMEGA128 사용시입니다.
//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;
}
>
>2. 유선으로 UART 통신을 한 것은 하이퍼터미널을 이용해서 AVR -> PC로 송신되는 정보를 확인하는게 가능합니다.(전부 깨지긴 합니다만 최소한 전송이 계속되있구나는 알수있습니다.) 이와 비슷하게 UART에서 블루투스로 연결하여 PC랑 페어링 했을 때 PC로 데이터가 전송되고 있는지 확인할 수 있는 방법이 있나요?
==> 마찬가지로 UART를 터미널 통하여 확인하면 되겠습니다.
>안녕하세요 강좌에 있는 공간마우스를 2축 자이로 센서로 제작하고 있습니다.
>
>강좌에서처럼 UART0 을 통해 PC와 AVR을 직접연결했을 때는 마우스가 잘 작동합니다.
>
>저는 PC - AVR 연결사이에 블루투스 모듈 FB155BBC 을 이용하여
>
>무선 공간마우스로 활용하려고 합니다.
>
>PC와 블루투스 모듈 사이에 페어링은 원활하게 되었습니다. (모듈이 SLAVE, PC가 MASTER)
>
>하지만 블루투스로 연결되어 생기는 COM 포트를 이용해서 마우스 프로그램을 실행시키면
>
>전혀 입력을 받지 못합니다.
>
>제 소견으로는 BAUD RATE가 마우스의 ADC소스코드와 윈도우 프로그램에서는 115200kbps로
>
>되어있는 반면, 블루투스는 9600kbps를 기본으로 하고 있기 때문인것 같아서
>
>여러번 블루투스 모듈의 baud rate를 115200kbps 수정하여 작업해 보았으나 계속 통신으로 전송되는 결과가 전혀없습니다...
>
>일단 상태는 이렇구요.
>
>질문은 다음과 같습니다.
>
>1. adc.c 프로그램과 윈도우 소스코드에서 통신 설정할때를 모두 9600kbps로 변경하면 작동하지 않는가요? avr 코드에 대해서 잘몰라서 어떻게 수정해야 baud rate를 낮추는지 모릅니다... 만약 가능하다면 수정 방법을 알고 싶습니다.
>
>2. 유선으로 UART 통신을 한 것은 하이퍼터미널을 이용해서 AVR -> PC로 송신되는 정보를 확인하는게 가능합니다.(전부 깨지긴 합니다만 최소한 전송이 계속되있구나는 알수있습니다.) 이와 비슷하게 UART에서 블루투스로 연결하여 PC랑 페어링 했을 때 PC로 데이터가 전송되고 있는지 확인할 수 있는 방법이 있나요?
|
||||
| 6505 | 답변완료SE-SM9K 모터 계속된 질문입니다 | 오한영 | 2011-11-08 | 1,117 |
|
11khz 주파수로 설정하려면 step을 어떻게 잡아줘야 하나요??
지금 제가 설정한 값은
#define MOTOR_STEP_M0 (MOTOR_PORT = (MOTOR_PORT&0x3f)|0x00) // 16 Step : 0.1125
#define MOTOR_STEP_M1 (MOTOR_PORT = (MOTOR_PORT&0x3f)|0x40) // 8 Step : 0.225
#define MOTOR_STEP_M2 (MOTOR_PORT = (MOTOR_PORT&0x3f)|0x80) // 4 Step : 0.45
#define MOTOR_STEP_M3 (MOTOR_PORT = (MOTOR_PORT&0x3f)|0xc0) // 2 Step : 0.9
이렇게 설정을 해 놓았는데..
흠.. 답변 부탁드릴께요
관리자 답변
안녕하세요? 고객님,
타이머 등을 이용하여 PWM 값을 변경하는 포인트를 11kHz로 준 것입니다.
실제로 변경이 그 때마다 된다는 말은 아닙니다.
그 때마다, 변경할 지 말지 결정하는 포인트가 타이머 인터럽트 발생 시점으로 보시면 됩니다.
즉, MS2 라면, 클럭을 넣어주는 타이밍을 말합니다.
우선, 기구적으로 잡는 것이 가장 확실합니다.
수고하세요.
>11khz 주파수로 설정하려면 step을 어떻게 잡아줘야 하나요??
>
>지금 제가 설정한 값은
>
>#define MOTOR_STEP_M0 (MOTOR_PORT = (MOTOR_PORT&0x3f)|0x00) // 16 Step : 0.1125
>#define MOTOR_STEP_M1 (MOTOR_PORT = (MOTOR_PORT&0x3f)|0x40) // 8 Step : 0.225
>#define MOTOR_STEP_M2 (MOTOR_PORT = (MOTOR_PORT&0x3f)|0x80) // 4 Step : 0.45
>#define MOTOR_STEP_M3 (MOTOR_PORT = (MOTOR_PORT&0x3f)|0xc0) // 2 Step : 0.9
>
>이렇게 설정을 해 놓았는데..
>
>흠.. 답변 부탁드릴께요
|
||||
| 6504 | 답변완료AVR ISP 의 이상동작. | 정경호 | 2011-11-09 | 1,256 |
|
100ma 이하의 보드를 주로 사용해서..
USB 전원 스위치를 사용하고 있습니다.
V3 를 1년정도 사용하다 USB 전원이 안되길래;;
하나 더사서 사용하는데 이놈은 1개월만에 고장이 났네요;;
증상은
USB 전원 출력 불가..
타겟보드에 별도 전원 물려도 ISP 불가 입니다.
Check that the ISP programing frequency specified on the 'Main' page is well below 1/4 of the clock frequency of the device.
수리가 가능할까요?
증상은 위 두대가 동일합니다.
그리고 A/S 보내면 작년에산 3.0 버전을 cp210x 드라이버랑 호환되게끔
변경도 해주실 수 있나요? 아무리 따라해도 잘 안되서요.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
수리가 가능합니다.
본사로 보내주시면 수리 됩니다. 수리비용 관련해서는 수리 전에 미리 전화 드립니다.
V03.5로 변경도 가능합니다. 본사로 보내주세요.
수고하세요.
>100ma 이하의 보드를 주로 사용해서..
>
>USB 전원 스위치를 사용하고 있습니다.
>
>V3 를 1년정도 사용하다 USB 전원이 안되길래;;
>
>하나 더사서 사용하는데 이놈은 1개월만에 고장이 났네요;;
>
>
>증상은
>
>USB 전원 출력 불가..
>
>타겟보드에 별도 전원 물려도 ISP 불가 입니다.
>
>Check that the ISP programing frequency specified on the 'Main' page is well below 1/4 of the clock frequency of the device.
>
>
>
>
>수리가 가능할까요?
>
>증상은 위 두대가 동일합니다.
>
>
>그리고 A/S 보내면 작년에산 3.0 버전을 cp210x 드라이버랑 호환되게끔
>
>변경도 해주실 수 있나요? 아무리 따라해도 잘 안되서요.
|
||||
| 6503 | 답변완료 USB-ISP v3.5에 대해서 | 김성엽 | 2011-11-09 | 1,345 |
|
USB-ISP v3.5의 추가기능에는 usb-uart기능이 가능하다고 되있는데
여기서도 usb-uart통신이 성공적으로 연결되면 초록불이 뜨나요?
그리고 attiny2313을 쓰고있는데 이 칩에서의 TxD와 RxD의 연결의 경우
설명서를 기준으로 (칩 TxD) - (usb-isp RxD)로 연결되나요. 아니면 (칩 TxD) - (usb-isp TxD)로 연결이 되는건가요?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
메뉴얼 또는 사용자 메뉴얼에 나와 있지만, USB-UART 기능을 쓰실 때는 ISP 케이블을 빼고 써야 합니다.
동시에 물려 놓으면 안됩니다.
그리고, USB-UART 기능을 연결시킨다고 해서 LED와는 아무 관련이 없습니다.
또한, (Tiny2313 칩 TxD) - (usb-isp RxD)
이렇게 연결하세요.
>USB-ISP v3.5의 추가기능에는 usb-uart기능이 가능하다고 되있는데
>
>여기서도 usb-uart통신이 성공적으로 연결되면 초록불이 뜨나요?
>
>그리고 attiny2313을 쓰고있는데 이 칩에서의 TxD와 RxD의 연결의 경우
>설명서를 기준으로 (칩 TxD) - (usb-isp RxD)로 연결되나요. 아니면 (칩 TxD) - (usb-isp TxD)로 연결이 되는건가요?
>
>
|
||||
| 6502 | 답변완료AM-TL8 문의드립니다. | jslee | 2011-11-09 | 1,411 |
|
안녕하세요..
AM-TL8 문의가 있습니다. 우선 제가 원하는 포트는 120포트입니다. 120포트에 특정상황일때만
LED를 켜서 사람이 인지하게 만들고 싶습니다.
귀사의 제품을 어떻게 이용하면 가능한지 문의드립니다.
그리고 무한전 120포트를 나열할 수 없는데 방법은 없는지요? 또는 간단히 USB로 LED만 제어할
수 있는 제품은 없는지요?
또 AM-TL8에 어떤 AVR이 붙어야되는지 확인 요청드립니다.
휴대폰으로 전화주세요..01087962996
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
유선상으로 답변 드렸습니다만, 정리하면,
ATMEGA2560 두 대로 구현이 가능합니다.
즉, KD-2560PRO 킷트 두 대를 구매하셔서,
PC-----KD-2560PRO 1번 키트 사이를 UART0를 통하여 시리얼 포트로 연결하시고,
다시 KD-2560PRO 1번 키트의 UART1번에서 KD-2560PRO 2번 키트의 UART0로 연결합니다.
이 때, GND-GND, RXD-TXD TXD-RXD 이렇게 각각 보드간 연결하여야 통신이 되겠지요.
이렇게 하고서, PC에서 한 바이트를 날리는 데, 각 비트당 끌것인지 켤 것인지를 보내면 되겠습니다. 예를 들어서 0번비트 정보는 0번 LED 정보, 1번 비트 정보는 1번 LED 정보 이런 겁니다.
쉽게 구현 가능하겠네요.
또한, TL8 보드 8개와 KD-2560 킷트 한개를 먼저 구매하여, 프로그램 짜고 실험 한 후에,
잘 되면, LED쪽 보드를 다시 PCB 작업을 하셔도 되고, 아니면 그냥 쓰셔도 되겠습니다.
LED쪽 보드를 작업 하실 거면 가능하면 Active Low 타입으로 설계하여 PCB 만드세요.
그래야 AVR MCU에서 전류 안당겨 쓰고, 전류를 전체 전원에서 당겨 쓰게 될겁니다.
AVR이 뜨끈해지는 상황은 피할 수 있겠지요.
문의 있으시면 다시 올려 주세요.
구매는 각 대리점들이나 본사 직영 쇼핑몰 파츠랜드(www.partsland.co.kr)에서 구매 가능합니다.
또한, 본사로 전화 구매도 가능합니다.
수고하세요.
>안녕하세요..
>AM-TL8 문의가 있습니다. 우선 제가 원하는 포트는 120포트입니다. 120포트에 특정상황일때만
>LED를 켜서 사람이 인지하게 만들고 싶습니다.
>귀사의 제품을 어떻게 이용하면 가능한지 문의드립니다.
>그리고 무한전 120포트를 나열할 수 없는데 방법은 없는지요? 또는 간단히 USB로 LED만 제어할
>수 있는 제품은 없는지요?
>또 AM-TL8에 어떤 AVR이 붙어야되는지 확인 요청드립니다.
>휴대폰으로 전화주세요..01087962996
|
||||
| 6501 | 답변완료UART 수신 인터럽트시 다른 외부 인터럽트가 걸립니다. | 떠똘이 | 2011-11-09 | 1,454 |
|
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 = 0x98;
}
ISR(INT0_vect)
{ // 인터럽트
unsigned char call_all[16]="$AMIDC,A,00*";
PORTE = 0x04;
UART0_put_string(call_all);
PORTE = 0x00;
lcd_string(3, 0, "올 수신");
delay_ms(1000);
}
ISR(INT1_vect)
{ // 인터럽트
unsigned char call_1[16]="$AMIDC,A,01*";
PORTE = 0x04;
UART0_put_string(call_1);
PORTE = 0x00;
lcd_string(3, 0, "킷트 1번 통신");
delay_ms(1000);
}
ISR(INT2_vect)
{ // 인터럽트
unsigned char call_2[16]="$AMIDC,A,02*";
PORTE = 0x04;
UART0_put_string(call_2);
PORTE = 0x00;
lcd_string(3, 0, "킷트 2번 통신");
delay_ms(1000);
}
ISR(INT3_vect)
{ // 인터럽트/
unsigned char call_3[16]="$AMIDC,A,03*";
PORTE = 0x04;
UART0_put_string(call_3);
PORTE = 0x00;
lcd_string(3, 0, "킷트 3번 통신");
delay_ms(1000);
}
ISR(USART0_RX_vect)
{
str = UDR0;
if(str=='$')
{
usart_cnt=0;
Start=1;
}
else
{
if(Start==1)
{
if(usart_cnt>200)
{
usart_cnt=0;
}
in_buff[usart_cnt] = str;
UART1_putch(in_buff);
if(in_buff[usart_cnt]==0x0A&&in_buff[usart_cnt-1]==0x0D)
{
parsing(usart_cnt);
// UART1_put_hex_ascii(usart_cnt); UART1_put_string(" ");
}
usart_cnt++;
}
}
//UART1_put_hex_ascii(usart_cnt);
// UART1_put_string(" ");
}
atmega 128을 썻으며
위의소스는 스위치를 외부인터럽트로
걸고 uart통신 해서 수신받을 때
인터럽트를 건 부분입니다
문제는 uart 통신에 수신을 받게되거나 프로그램을 MCU에쓸때
인터럽트 1, 2, 3, 이 걸리게됩니다 원인이 어디서
나온건지 모르겠습니다. 스위치는 풀업저항을 달았습니다.
해결책좀 부탁 드립니다
PORTD 에있는 인터럽트를 썻고 UART는 0번입니다
관리자 답변
안녕하세요?
인터럽트 사용시에는 루틴이 짧은 시간에 종료되어야 합니다.
delay 같은 거나 printf 같은 긴 시간 요하는 문장은 쓰이면 안됩니다.
그렇게 되면, 돌아오지 못하거나, 다른 인터럽트가 무시되거나 하는 이상 행동을 하게 됩니다.
수고하세요.
>
>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 = 0x98;
>}
>
>
> ISR(INT0_vect)
> { // 인터럽트
> unsigned char call_all[16]="$AMIDC,A,00*";
>
> PORTE = 0x04;
> UART0_put_string(call_all);
> PORTE = 0x00;
> lcd_string(3, 0, "올 수신");
> delay_ms(1000);
>
> }
>
> ISR(INT1_vect)
> { // 인터럽트
> unsigned char call_1[16]="$AMIDC,A,01*";
>
> PORTE = 0x04;
> UART0_put_string(call_1);
> PORTE = 0x00;
> lcd_string(3, 0, "킷트 1번 통신");
> delay_ms(1000);
>
> }
>
> ISR(INT2_vect)
> { // 인터럽트
>
> unsigned char call_2[16]="$AMIDC,A,02*";
>
> PORTE = 0x04;
> UART0_put_string(call_2);
> PORTE = 0x00;
> lcd_string(3, 0, "킷트 2번 통신");
> delay_ms(1000);
>
>
> }
>
> ISR(INT3_vect)
> { // 인터럽트/
> unsigned char call_3[16]="$AMIDC,A,03*";
>
> PORTE = 0x04;
> UART0_put_string(call_3);
> PORTE = 0x00;
> lcd_string(3, 0, "킷트 3번 통신");
> delay_ms(1000);
>
> }
>
>
>
>ISR(USART0_RX_vect)
>{
> str = UDR0;
>
> if(str=='$')
> {
> usart_cnt=0;
> Start=1;
> }
> else
> {
> if(Start==1)
> {
>
> if(usart_cnt>200)
> {
> usart_cnt=0;
> }
>
> in_buff[usart_cnt] = str;
> UART1_putch(in_buff);
>
> if(in_buff[usart_cnt]==0x0A&&in_buff[usart_cnt-1]==0x0D)
> {
>
> parsing(usart_cnt);
> // UART1_put_hex_ascii(usart_cnt); UART1_put_string(" ");
>
> }
>
> usart_cnt++;
>
> }
> }
> //UART1_put_hex_ascii(usart_cnt);
> // UART1_put_string(" ");
>
>
>}
>atmega 128을 썻으며
>위의소스는 스위치를 외부인터럽트로
>걸고 uart통신 해서 수신받을 때
>인터럽트를 건 부분입니다
>문제는 uart 통신에 수신을 받게되거나 프로그램을 MCU에쓸때
>인터럽트 1, 2, 3, 이 걸리게됩니다 원인이 어디서
>나온건지 모르겠습니다. 스위치는 풀업저항을 달았습니다.
>해결책좀 부탁 드립니다
>
>PORTD 에있는 인터럽트를 썻고 UART는 0번입니다
|
||||
| 6500 | 답변완료AVR MEGA 128 AM-128PRO 모듈 모듈을 사용하는데요 | 김정재 | 2011-11-10 | 1,191 |
|
여기에 ADC기능이 다 있는거져?
따로 연결해야되나여?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
10비트 ADC는 F 포트에 들어 있습니다.
단, 한 포트만 사용할 경우 최대 15ksps가 최대 속도입니다.
수고하세요.
>여기에 ADC기능이 다 있는거져?
>
>따로 연결해야되나여?
|
||||
| 6499 | 답변완료ISP관련해서 avr studio에서 오류 발생 | 황시원 | 2011-11-10 | 1,220 |
|
isp연결해서 프로그램을 구울때 자꾸 오류가 발생하는데..
이상하게 Mr.kim ATmega8로 하면은 오류가 나는데
newtc꺼 Atmega128로 프로그램을 구우면 잘 꾸워집니다..
왜 그런건가요.?
isp버전은 3.0이고 윈도우7 64비트에서 사용중입니다.
앞쪽에 달린거 바꿔서 해봤는데도 안되네요..;;
그리고 isp v3.0버전 하나 더 있는데..
이게 ATmega에 꼽으니깐 ATmega에 들어오는 전원을 다 먹어버리던데.
이건 수리가 가능한가요.?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
윈도우 7 64비트에서 ISP 3.0 드라이버를 어떻게 까셨나요?
혹시 USBISP V03.5가 아닌지요?
그리고, 저희 회사에서는 ATMEGA128 및 ATMEGA8 모두 잘 다운로드 되고 있습니다.
그 mega8 모듈 제품 점검 받아 보시는 것이 좋을 것 같습니다.
저희 회사 USBISP도 USBISP로 다운로드 하는 데, 그것이 ATMEGA8입니다.
이상 있는 제품은 본사에서 점검 후 A/S 받으시면 되겠습니다.
수고하세요.
>isp연결해서 프로그램을 구울때 자꾸 오류가 발생하는데..
>
>이상하게 Mr.kim ATmega8로 하면은 오류가 나는데
>
>newtc꺼 Atmega128로 프로그램을 구우면 잘 꾸워집니다..
>
>왜 그런건가요.?
>
>isp버전은 3.0이고 윈도우7 64비트에서 사용중입니다.
>
>앞쪽에 달린거 바꿔서 해봤는데도 안되네요..;;
>
>그리고 isp v3.0버전 하나 더 있는데..
>
>이게 ATmega에 꼽으니깐 ATmega에 들어오는 전원을 다 먹어버리던데.
>
>이건 수리가 가능한가요.?
|
||||
