Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 9588 | 답변완료아두이노 DM-USTYLE보드에서 usb2serial 업로드가 안되네요. | 이래현 | 2016-04-03 | 1,902 |
|
이전에 올리신 김성진님과 같은 증상입니다. (질문답변 번호 : 19820, 19824, 19826)
해결되셨는지 궁금하네요.
에러메시지 avrdude: stk500_getsync(): not in sync: resp=0x00
이전 질문과 답변에서 알려주신 것을 참고하여,
알려주신데로 해서, ISP로 하는 것은 됩니다.
스케치 도구에서 부트로더굽기도 잘 됩니다.
그래서 다시 usb2serial로 연결하여 스케치에서 업로드를 하려고 하니
똑같은 에러메시지가 나오며 안되네요.
avrdude: stk500_getsync(): not in sync: resp=0x00
부트로더굽기 후 추가로 해야되는 다른 절차가 있나요?
저는 ISP로 연결 -> 부트로더굽기 -> usb2serial로 연결 -> 스케치 업로드
이렇게 해보았습니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
최근에 아두이노에서 arduino.cc와 arduino.org사이에 문제가 있었던것으로 압니다.
그 이후 서로 다른 버전의 스케치 소프트웨어를 발표하고 있습니다.
그런데 최근의 .cc의 스케치로 부트로더 업로드하면 다른 버전들과 호환이 안되거나 하는 증상도 발견되었습니다.
아래의 org 소프트웨어로 다시 해보세요.
최근 저희도 비슷한 문제로 몇가지 실험을 했는데 발견된겁니다.
http://download.arduino.org/IDE/1.7.9/arduino-1.7.9.org-windows.exe
또한 강의자료 하나를 올려드리오니 참고하시기 바랍니다.
감사 합니다.
>
>
> 이전에 올리신 김성진님과 같은 증상입니다. (질문답변 번호 : 19820, 19824, 19826)
> 해결되셨는지 궁금하네요.
>
> 에러메시지 avrdude: stk500_getsync(): not in sync: resp=0x00
>
> 이전 질문과 답변에서 알려주신 것을 참고하여,
> 알려주신데로 해서, ISP로 하는 것은 됩니다.
> 스케치 도구에서 부트로더굽기도 잘 됩니다.
>
> 그래서 다시 usb2serial로 연결하여 스케치에서 업로드를 하려고 하니
> 똑같은 에러메시지가 나오며 안되네요.
> avrdude: stk500_getsync(): not in sync: resp=0x00
>
> 부트로더굽기 후 추가로 해야되는 다른 절차가 있나요?
>
> 저는 ISP로 연결 -> 부트로더굽기 -> usb2serial로 연결 -> 스케치 업로드
> 이렇게 해보았습니다.
>
|
||||
| 9587 | 답변완료핸드폰과 PM-BT-UART-M,S 연결 | 이종성 | 2016-04-01 | 1,672 |
|
아두이노쪽에서 핸드폰으로 블루투스를 이용해 데이터를 전송하고 싶은대
PM-BT-UART-M,S 중 어떤걸 연결해야 되는 건가요?
관리자 답변
안녕하세요? 고객님,
저희뉴티씨 제품을 이용하여 주셔서 감사합니다.
스마트폰 안에 있는 것이 마스터 모듈이라 슬레이브 모듈을 사야 합니다.
PM-BT-UART-S 를이용하셔야 합니다.
감사합니다.
>
>
> 아두이노쪽에서 핸드폰으로 블루투스를 이용해 데이터를 전송하고 싶은대
> PM-BT-UART-M,S 중 어떤걸 연결해야 되는 건가요?
>
|
||||
| 9586 | 답변완료라인트레이서 질문 | 김홍기 | 2016-04-01 | 1,617 |
|
졸업작품을하는데 동작이 이렇게됩니다.
1. 시작선에서 전원버튼을 킨다.
2. 저장공간에 물체를 올려 놓을시 오토트레일러가 선을 따라 움직인다.
3. 전방에 장애물 봉착시 멈춘다
4. 라인 끝선에 도달시 멈춘다
5. 저장공간에 물체를 다시 치우면 뒤로 후진하게 된다.
6. 후진시에도 장애물 봉착시 멈추게 된다.
7. 다시 시작점 도착시 멈춘다.
장애물 인식은 적외선 센서로 하기로했는데 저장공간에 물체를 인식하려면 뭐를 쓰면좋나요?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
본사에 현재의 라인트레이서 기구물에
전방이나 후방에 센서 부착 가능한 형태의 기구물이 만들어져 있어서, 조만간 판매 예정입니다.
전화로는 사실 지금도 구매가능합니다. 조만간 홈페이지에도 페이지를 구축 예정입니다.
또한, 여기에 붙이는 전방을 인식할 수 있는 적외선(IR)방식의 센서 보드도 개발되고 있습니다.
조만간 판매 예정입니다.
저장 공간이라는 곳에도 별도로 고정된 적외선으로 인식하고 있으면 되지 않나요?
그럼 같은 센서 써도 될 것 같구요.
만약, 그렇게 안하고 특정한 물체가 있다 없다로 인식하려면, RFID나 같은 걸로 하면 좋겠습니다.
감사합니다.
>
>
> 졸업작품을하는데 동작이 이렇게됩니다.
> 1. 시작선에서 전원버튼을 킨다.
> 2. 저장공간에 물체를 올려 놓을시 오토트레일러가 선을 따라 움직인다.
> 3. 전방에 장애물 봉착시 멈춘다
> 4. 라인 끝선에 도달시 멈춘다
> 5. 저장공간에 물체를 다시 치우면 뒤로 후진하게 된다.
> 6. 후진시에도 장애물 봉착시 멈추게 된다.
> 7. 다시 시작점 도착시 멈춘다.
>
> 장애물 인식은 적외선 센서로 하기로했는데 저장공간에 물체를 인식하려면 뭐를 쓰면좋나요?
>
|
||||
| 9585 | 답변완료공식홈페이지에서 온라인 구매 | 김동희 | 2016-03-31 | 1,576 |
|
공식홈페이지에서 온라인으로 AD-USBISP V03.6를 구매하고
입금까지 완료했습니다.
구매 가능한건가요?
발송은 언제되나요?
주문번호 : 1603310001
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
이미 입금확인하고 발송했습니다.
내일 받으실겁니다. 홈페이지 발송 데이타 업데이트만 남았습니다.
로젠택배로 발송되었습니다.
내일 업데이트가 됩니다.
감사합니다.
>
>
> 공식홈페이지에서 온라인으로 AD-USBISP V03.6를 구매하고
>
> 입금까지 완료했습니다.
>
> 구매 가능한건가요?
>
> 발송은 언제되나요?
>
> 주문번호 : 1603310001
>
|
||||
| 9584 | 답변완료초음파 센서 구동 문의 | 문해니 | 2016-03-30 | 1,542 |
|
#include <iom128v.h>
#include <macros.h>
char data;
int cnt, flag, intd, cnt3, flag3, intd3, cnt0, flag0, intd0;
float d, d3;
////////////COUTNER////////////
void Counter3_setting(void)
{
TCCR3A = 0X00;
TCCR3B = 0X02;
TCNT3 = 0;
}
////////////UART///////////////////
void tx0Char(char message);
void tx0number(unsigned int Data)
{
tx0Char( (Data/10000) +'0');
tx0Char(((Data/ 1000)%10)+'0');
tx0Char(((Data/ 100)%10)+'0');
tx0Char(((Data/ 10)%10)+'0');
tx0Char( (Data %10)+'0');
}
void tx0Char(char message)
{
while (!(UCSR0A & 0x20));
UDR0 = message;
}
#pragma interrupt_handler UART0_RX : 19
void UART0_RX(void)
{
CLI();
data = UDR0;
d = cnt*0.085+40;
d3 = cnt3*0.085+40;
intd = (int)d;
intd3 = (int)d3;
intd0 =(int)cnt0*0.085; //거리값 계산
tx0Char(data); tx0number(intd); tx0Char('\r'); tx0Char('\n');
tx0Char('T'); tx0number(intd3); tx0Char('\r'); tx0Char('\n');
tx0Char('Z'); tx0number(intd0); tx0Char('\r'); tx0Char('\n'); tx0Char('\r'); tx0Char('\n'); //PC로 거리값 출력
PORTA = ~(PORTA);
flag=0; flag3 = 0; flag0 = 0;
PORTF = 0XFF; //초음파 송신
Counter3_setting(); //카운팅시작
SEI();
}
void uart0_init(void)
{
UCSR0B = 0b10011000; //rxcie ON RXEN ON TXEN ON
UCSR0A = 0X00;
UCSR0C = 0X06;
UBRR0L = 0X67; //9600BPS
UBRR0H = 0X00;
}
//////////INTERRUPT
#pragma interrupt_handler ISR1 : iv_INT1
void ISR1(void) //초음파 1 수신시 작동
{
PORTA = ~(PORTA);
flag++;
if( flag == 1){ PORTF = 0x00; }
else if(flag == 2)
{
cnt=TCNT3;
}
}
#pragma interrupt_handler ISR3 : iv_INT3
void ISR3(void)
{
PORT if(flag3 == 2)
{
cnt3=TCNT3;
}
}
#pragma interrupt_handler int0_isr : 2
void int0_isr(void)
{
PORTA = ~(PORTA);
flag0++;
if( flag0 == 1){ PORTF = 0x00; }
else if(flag0 == 2)
{
cnt0=TCNT3;
}
}
////////INT setting/////////
void int_setting(void)
{
EICRA = 0X0c; EICRA |= 0XC0;
EICRA |= 0X03;
EICRB = 0X00;
EIMSK = 0X02; EIMSK |= 0X08; EIMSK |= 0X01;
}
int main(void)
{
SEI();
uart0_init();
int_setting();
DDRA = 0xFF;
PORTA = 0x00;
DDRF = 0XFF;
PORTF = 0X00;
// Insert code
while(1);
}A = ~(PORTA);
flag3++;
if( flag3 == 1){ PORTF = 0x00; }
else if(flag3 == 2)
{
cnt3=TCNT3;
}
}
#pragma interrupt_handler int0_isr : 2
void int0_isr(void)
{
PORTA = ~(PORTA);
flag0++;
if( flag0 == 1){ PORTF = 0x00; }
else if(flag0 == 2)
{
cnt0=TCNT3;
}
}
////////INT setting/////////
void int_setting(void)
{
EICRA = 0X0c; EICRA |= 0XC0;
EICRA |= 0X03;
EICRB = 0X00;
EIMSK = 0X02; EIMSK |= 0X08; EIMSK |= 0X01;
}
int main(void)
{
SEI();
uart0_init();
int_setting();
DDRA = 0xFF;
PORTA = 0x00;
DDRF = 0XFF;
PORTF = 0X00;
// Insert code
while(1);
}
하기소닉 초음파 센서로 거리 측정하려고 합니다.
첨부한 ppt에 회로도와 초음파 센서 작동법 기재하였습니다.
현재 int1, int3에서 측정한 결과값은 거리값을 매우잘 보여주고있습니다. pc에
그런데 int0에서 측정한 결과값(그외 다른 int4~7f로 바꿨을때도 마찬가지)은 그냥 0으로 뜹니다.
초음파 송신하지 않고, 일부로 초음파 수신기에 충격을 주어서 인터럽트를 만들어주었을때 PA0에 달린
LED가 깜박하는것을 확인 할 수 있었습니다.(int0은 작동하는듯)
그러나 계속적으로 측정길이 결과값은 0이 뜨는데 도저히 이유를 모르겠습니다.
제발 도와주세요 ㅠㅠ
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
일단, 소스를 보니, 인터럽트 구문 내에서 너무 많은 시간을 일하는 소스입니다.
인터럽트를 빠져나갔을 때 쯤이면 이미 다음 수행할 인터럽트가 대기하고 있어서,
메인문을 할 수도 없거니와, 다음 인터럽트도 모두 정상동작한다고 보기 어렵습니다.
우선, 인터럽트 안에서는 플래그 정도만 변경하고, 메인에서 일하도록 소스를 변경하여 보세요.
감사합니다.
>
>
> #include <iom128v.h>
> #include <macros.h>
>
>
>
> char data;
> int cnt, flag, intd, cnt3, flag3, intd3, cnt0, flag0, intd0;
> float d, d3;
>
> ////////////COUTNER////////////
> void Counter3_setting(void)
> {
> TCCR3A = 0X00;
> TCCR3B = 0X02;
> TCNT3 = 0;
> }
>
> ////////////UART///////////////////
> void tx0Char(char message);
> void tx0number(unsigned int Data)
> {
> tx0Char( (Data/10000) +'0');
> tx0Char(((Data/ 1000)%10)+'0');
> tx0Char(((Data/ 100)%10)+'0');
> tx0Char(((Data/ 10)%10)+'0');
> tx0Char( (Data %10)+'0');
> }
> void tx0Char(char message)
> {
> while (!(UCSR0A & 0x20));
> UDR0 = message;
> }
>
> #pragma interrupt_handler UART0_RX : 19
> void UART0_RX(void)
> {
> CLI();
> data = UDR0;
> d = cnt*0.085+40;
> d3 = cnt3*0.085+40;
> intd = (int)d;
> intd3 = (int)d3;
> intd0 =(int)cnt0*0.085; //거리값 계산
> tx0Char(data); tx0number(intd); tx0Char('\r'); tx0Char('\n');
> tx0Char('T'); tx0number(intd3); tx0Char('\r'); tx0Char('\n');
> tx0Char('Z'); tx0number(intd0); tx0Char('\r'); tx0Char('\n'); tx0Char('\r'); tx0Char('\n'); //PC로 거리값 출력
> PORTA = ~(PORTA);
> flag=0; flag3 = 0; flag0 = 0;
> PORTF = 0XFF; //초음파 송신
> Counter3_setting(); //카운팅시작
> SEI();
> }
> void uart0_init(void)
> {
> UCSR0B = 0b10011000; //rxcie ON RXEN ON TXEN ON
> UCSR0A = 0X00;
> UCSR0C = 0X06;
> UBRR0L = 0X67; //9600BPS
> UBRR0H = 0X00;
> }
>
> //////////INTERRUPT
>
> #pragma interrupt_handler ISR1 : iv_INT1
> void ISR1(void) //초음파 1 수신시 작동
> {
> PORTA = ~(PORTA);
> flag++;
> if( flag == 1){ PORTF = 0x00; }
> else if(flag == 2)
> {
> cnt=TCNT3;
>
> }
> }
> #pragma interrupt_handler ISR3 : iv_INT3
> void ISR3(void)
> {
> PORT if(flag3 == 2)
> {
> cnt3=TCNT3;
>
> }
> }
> #pragma interrupt_handler int0_isr : 2
> void int0_isr(void)
> {
> PORTA = ~(PORTA);
> flag0++;
> if( flag0 == 1){ PORTF = 0x00; }
> else if(flag0 == 2)
> {
> cnt0=TCNT3;
> }
> }
> ////////INT setting/////////
> void int_setting(void)
> {
> EICRA = 0X0c; EICRA |= 0XC0;
> EICRA |= 0X03;
> EICRB = 0X00;
> EIMSK = 0X02; EIMSK |= 0X08; EIMSK |= 0X01;
> }
> int main(void)
> {
> SEI();
> uart0_init();
> int_setting();
>
> DDRA = 0xFF;
> PORTA = 0x00;
>
> DDRF = 0XFF;
> PORTF = 0X00;
>
> // Insert code
>
> while(1);
> }A = ~(PORTA);
> flag3++;
> if( flag3 == 1){ PORTF = 0x00; }
> else if(flag3 == 2)
> {
> cnt3=TCNT3;
>
> }
> }
> #pragma interrupt_handler int0_isr : 2
> void int0_isr(void)
> {
> PORTA = ~(PORTA);
> flag0++;
> if( flag0 == 1){ PORTF = 0x00; }
> else if(flag0 == 2)
> {
> cnt0=TCNT3;
> }
> }
> ////////INT setting/////////
> void int_setting(void)
> {
> EICRA = 0X0c; EICRA |= 0XC0;
> EICRA |= 0X03;
> EICRB = 0X00;
> EIMSK = 0X02; EIMSK |= 0X08; EIMSK |= 0X01;
> }
> int main(void)
> {
> SEI();
> uart0_init();
> int_setting();
>
> DDRA = 0xFF;
> PORTA = 0x00;
>
> DDRF = 0XFF;
> PORTF = 0X00;
>
> // Insert code
>
> while(1);
> }
>
>
> 하기소닉 초음파 센서로 거리 측정하려고 합니다.
> 첨부한 ppt에 회로도와 초음파 센서 작동법 기재하였습니다.
>
> 현재 int1, int3에서 측정한 결과값은 거리값을 매우잘 보여주고있습니다. pc에
> 그런데 int0에서 측정한 결과값(그외 다른 int4~7f로 바꿨을때도 마찬가지)은 그냥 0으로 뜹니다.
> 초음파 송신하지 않고, 일부로 초음파 수신기에 충격을 주어서 인터럽트를 만들어주었을때 PA0에 달린
> LED가 깜박하는것을 확인 할 수 있었습니다.(int0은 작동하는듯)
> 그러나 계속적으로 측정길이 결과값은 0이 뜨는데 도저히 이유를 모르겠습니다.
>
> 제발 도와주세요 ㅠㅠ
>
|
||||
| 9583 | 답변완료kr-sl128 크기가 어떻게 되나요. | 김상진 | 2016-03-30 | 1,630 |
|
스테핑 라인트레이서 키트 kr sl128
완성품의 가로 세로 높이 크기가 어느정도 되나요?
관리자 답변
안녕하세요, 뉴티씨입니다. 문의 내용 확인하였습니다. 추가 문의사항은 newtc@newtc.co.kr 또는 02-704-4774로 연락 주시기 바랍니다. 감사합니다.
|
||||
| 9582 | 답변완료isp관련해서 문의합니다. | 김선규 | 2016-03-29 | 1,589 |
|
방금 전의 글과 연관되어서 연락드립니다.
호환성은 아무런 문제가 없는데
펌업을 해야될것 같은데 어떻게 해야되나요?
따로 보내지 않고 집에서 하는 방법은 없는건가요?
관리자 답변
안녕하세요? 고객님,
펌업은 본사로 방문하시거나 보내거나 해서,
본사에서 직접 해야 합니다. 펌업 자체는 무상으로 진행해 드리고 있습니다.
펌업시 USBISP의 이상유무 점검도 함께 진행되므로, 도움이 되실 것입니다.
본사로 보내거나 방문하셔서 업그레이드 받으시기를 권합니다.
감사합니다.
>
>
> 방금 전의 글과 연관되어서 연락드립니다.
>
> 호환성은 아무런 문제가 없는데
>
> 펌업을 해야될것 같은데 어떻게 해야되나요?
>
> 따로 보내지 않고 집에서 하는 방법은 없는건가요?
>
|
||||
| 9581 | 답변완료isp관련해서 문의 드립니다. | 김선규 | 2016-03-29 | 1,573 |
|
avr studio 7.0을 사용을 하려고 하는데 사진과 같은 오류가 나타나더군요.
알아보니까 isp쪽 문제라고 펌웨어 업글을 하라고 하던데
지금 사용하고 있는건 뉴티씨꺼 AD-usbisp v3.5를 사용하고 있습니다.
혹시 isp문제가 아니라면 어떠한 문제인지 알려주실수 있으십니까?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
본사에서 펌업을 하여 문제를 해결해야 합니다.
아니면 호환성에 문제가 생기게 되어서 그렇습니다.
감사합니다.
>
>
> avr studio 7.0을 사용을 하려고 하는데 사진과 같은 오류가 나타나더군요.
>
> 알아보니까 isp쪽 문제라고 펌웨어 업글을 하라고 하던데
>
> 지금 사용하고 있는건 뉴티씨꺼 AD-usbisp v3.5를 사용하고 있습니다.
>
> 혹시 isp문제가 아니라면 어떠한 문제인지 알려주실수 있으십니까?
>
|
||||
| 9580 | 답변완료아랫글 이어 | 문해니 | 2016-03-29 | 1,554 |
|
아 아무것도 연결해놓지 않은 상태에서 인터럽트를 준게 문제일수 있겠네요
혹시 int0~7번 연결해 놓은 회로도도 첨부해 주실수 있나요?
관리자 답변
안녕하세요? 고객님,
회로도는 제품 구매시에 오픈되는 회로만 제공됩니다.
스위치를 누르면 VCC랑 붙고,
평시에는 저항으로 Pull down된 회로도 쓰시면 간단하게 실습 가능합니다.
다만, 커패시터 등을 사용하여 바운싱 방지회로 만들어 붙이면 좋습니다.
감사합니다.
>
>
> 아 아무것도 연결해놓지 않은 상태에서 인터럽트를 준게 문제일수 있겠네요
> 혹시 int0~7번 연결해 놓은 회로도도 첨부해 주실수 있나요?
>
|
||||
| 9579 | 답변완료아래글 이어서 | 문해니 | 2016-03-28 | 1,586 |
|
테스트 해봤는데..
안되네요...ㅜㅜ
제가 atmega128이 두개가 있구요
한개 테스트 결과
int0 됨
int1 한번은됨
int2 안됨
int3 됨
int4 안됨
int5 안됨
int6 안됨
int7 안됨
(동시에 INT0,3까지 가능)
소스코드는 올려주신걸 PA0깜박걸리는 걸로 살짝바꿧습니다.
//ICC-AVR application builder : 2007-03-22 오후 7:32:10
// Target : M128
// Crystal: 16.000Mhz
#include <iom128v.h>
#include <macros.h>
volatile int i = 0;
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 = 0x03;
}
/*//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;
}*/
#pragma interrupt_handler int7_isr:iv_INT7
void int7_isr(void)
{
CLI();
i++;
//external interupt on INT0
SEI();
}
//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 3..0
EICRB = 0xc0; //extended ext ints 7..4 Be careful of PORTE's PE0 => PDI and PE1 => PDO, so please attention when downloading.
EIMSK = 0x80; // External interrupt Mask register 7..0
TIMSK = 0x00; //timer interrupt sources
ETIMSK = 0x00; //extended timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
void main ( void )
{
init_devices( );
while( 1 )
{
if ( i%2 )
{
PORTA = 0x01;
}else{
PORTA = 0x02;
}
}
}
두번째 같은 모델의 atmega128을 검증해봤을때 귀찮아서 한방에 검사해보았습니다.
//ICC-AVR application builder : 2007-03-22 오후 7:32:10
// Target : M128
// Crystal: 16.000Mhz
#include <iom128v.h>
#include <macros.h>
int i = 0;
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 = 0x03;
}
/*//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;
}*/
#pragma interrupt_handler int0_isr: 2
void int0_isr(void)
{
CLI();
i++;
//external interupt on INT0
SEI();
}
#pragma interrupt_handler int1_isr:iv_INT1
void int1_isr(void)
{
CLI();
i++;
//external interupt on INT0
SEI();
}
#pragma interrupt_handler int2_isr:iv_INT2
void int2_isr(void)
{
CLI();
i++;
//external interupt on INT0
SEI();
}
#pragma interrupt_handler int3_isr:iv_INT3
void int3_isr(void)
{
i++;
}
#pragma interrupt_handler int4_isr:iv_INT4
void int4_isr(void)
{
i++;
}
#pragma interrupt_handler int5_isr:iv_INT5
void int5_isr(void)
{
i++;
}
#pragma interrupt_handler int6_isr:iv_INT6
void int6_isr(void)
{
i++;
}
#pragma interrupt_handler int7_isr:iv_INT7
void int7_isr(void)
{
i++;
}
//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 = 0xff; //extended ext ints 3..0
EICRB = 0xff; //extended ext ints 7..4
EIMSK = 0xff; // External interrupt Mask register 7..0
TIMSK = 0x00; //timer interrupt sources
ETIMSK = 0x00; //extended timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
void main ( void )
{
init_devices( );
while( 1 )
{
if ( i%2 )
{
PORTA = 0x01;
}else{
PORTA = 0x02;
}
}
}
그결과 int0,3정상작동
int1,4,5,6,7 어쩌다 한번은 작동
int2 안됨
이였습니다.
원인이 뭘까요?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
위의 소스는 INT7 즉, PE7에서 rising edge 입력 받아서, PORTA의 D0번 LED변화주는 거구요.
밑의 소스는 IN0~INT7 까지 모두의 외부인터럽트를 모두 rising edge 입력 받아서, 한 개라도 들어오면 같은 PORTA의 D0번 변화를 주는 겁니다.
테스트 하실 때에 반드시 본사의 Switch module인 AM-TS8처럼 8개 동시에 Active High 되는 회로를 물려 놓고, 평시에는 0이다가 누르면 각 핀이 1이 되는 형식의 모듈을 물려야 합니다.
한개 스위치로 뺏다가 꼽았다가 하는 식으로 하면 에러날 확률이 높습니다.
글쎄요. 그런식으로 안되는 것은 이해하기가 어렵네요.
방금 테스트 한 소스를 첨부합니다.
여기서는 이 소스로는 잘 됩니다.
다만, PD2의 INT2의 경우, 가지고 계신 모듈이 MAX3232와 붙어 있어서 그 칩의 영향으로,
해당핀의 인터럽트 지원은 어렵습니다.
감사합니다.
>
>
> 테스트 해봤는데..
> 안되네요...ㅜㅜ
>
> 제가 atmega128이 두개가 있구요
>
> 한개 테스트 결과
> int0 됨
> int1 한번은됨
> int2 안됨
> int3 됨
> int4 안됨
> int5 안됨
> int6 안됨
> int7 안됨
> (동시에 INT0,3까지 가능)
>
>
> 소스코드는 올려주신걸 PA0깜박걸리는 걸로 살짝바꿧습니다.
>
> //ICC-AVR application builder : 2007-03-22 오후 7:32:10
> // Target : M128
> // Crystal: 16.000Mhz
>
> #include <iom128v.h>
> #include <macros.h>
>
> volatile int i = 0;
>
> 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 = 0x03;
> }
>
> /*//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;
> }*/
>
> #pragma interrupt_handler int7_isr:iv_INT7
> void int7_isr(void)
> {
> CLI();
> i++;
> //external interupt on INT0
> SEI();
> }
>
> //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 3..0
> EICRB = 0xc0; //extended ext ints 7..4 Be careful of PORTE's PE0 => PDI and PE1 => PDO, so please attention when downloading.
> EIMSK = 0x80; // External interrupt Mask register 7..0
> TIMSK = 0x00; //timer interrupt sources
> ETIMSK = 0x00; //extended timer interrupt sources
> SEI(); //re-enable interrupts
> //all peripherals are now initialized
> }
>
> void main ( void )
> {
> init_devices( );
>
> while( 1 )
> {
> if ( i%2 )
> {
> PORTA = 0x01;
> }else{
> PORTA = 0x02;
> }
> }
> }
>
>
> 두번째 같은 모델의 atmega128을 검증해봤을때 귀찮아서 한방에 검사해보았습니다.
> //ICC-AVR application builder : 2007-03-22 오후 7:32:10
> // Target : M128
> // Crystal: 16.000Mhz
>
> #include <iom128v.h>
> #include <macros.h>
>
> int i = 0;
>
> 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 = 0x03;
> }
>
> /*//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;
> }*/
> #pragma interrupt_handler int0_isr: 2
> void int0_isr(void)
> {
> CLI();
> i++;
> //external interupt on INT0
> SEI();
> }
> #pragma interrupt_handler int1_isr:iv_INT1
> void int1_isr(void)
> {
> CLI();
> i++;
> //external interupt on INT0
> SEI();
> }
> #pragma interrupt_handler int2_isr:iv_INT2
> void int2_isr(void)
> {
> CLI();
> i++;
> //external interupt on INT0
> SEI();
> }
> #pragma interrupt_handler int3_isr:iv_INT3
> void int3_isr(void)
> {
> i++;
> }
> #pragma interrupt_handler int4_isr:iv_INT4
> void int4_isr(void)
> {
> i++;
> }
> #pragma interrupt_handler int5_isr:iv_INT5
> void int5_isr(void)
> {
> i++;
> }
> #pragma interrupt_handler int6_isr:iv_INT6
> void int6_isr(void)
> {
> i++;
> }
> #pragma interrupt_handler int7_isr:iv_INT7
> void int7_isr(void)
> {
> i++;
> }
> //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 = 0xff; //extended ext ints 3..0
> EICRB = 0xff; //extended ext ints 7..4
> EIMSK = 0xff; // External interrupt Mask register 7..0
> TIMSK = 0x00; //timer interrupt sources
> ETIMSK = 0x00; //extended timer interrupt sources
> SEI(); //re-enable interrupts
> //all peripherals are now initialized
> }
>
> void main ( void )
> {
> init_devices( );
>
> while( 1 )
> {
> if ( i%2 )
> {
> PORTA = 0x01;
> }else{
> PORTA = 0x02;
> }
> }
> }
>
>
> 그결과 int0,3정상작동
> int1,4,5,6,7 어쩌다 한번은 작동
> int2 안됨
>
> 이였습니다.
> 원인이 뭘까요?
>
|
||||
| 9578 | 답변완료17일에INT AS 받았었는데.. | 문해니 | 2016-03-28 | 1,453 |
|
지금 INT1,3만 작동이 되고 나머지는 안되고있는 상황인데.
되는 INT도 됬다가 안됬다가 하는데 이유를 모르겠습니다..
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
프로그램에서 문제가 있으신 것 같습니다.
하드웨어 문제인지 점검해 보시려면, 일단,
첨부해 드린 예제를 모듈에 넣고,
각 포트에 모두 AM-TL8 모듈을 물리거나 해서,
모든 핀에 LED가 모두 꺼졌다 켜졌다 잘 하는 지를 점검해 보세요.
LED 모듈이 하나 정도 있으시다면, 꽂았다 뺏다 하시면서 해도 됩니다.
http://www.newtc.co.kr/dpshop/bbs/board.php?bo_table=m41&wr_id=690&sca=&sfl=wr_subject%7C%7Cwr_content&stx=%ED%8F%AC%ED%8A%B8&sop=and
감사합니다.
>
>
> 지금 INT1,3만 작동이 되고 나머지는 안되고있는 상황인데.
> 되는 INT도 됬다가 안됬다가 하는데 이유를 모르겠습니다..
>
|
||||
| 9577 | 답변완료USBISP V03.5 에서 UART통신 문의드립니다. | 박광수 | 2016-03-25 | 1,471 |
|
다른 시리얼통신장비를 사용하면 정상적으로 값이 출력되는데,
USBISP V03.5 를 사용하여 PC와 UART통신을 하면 값이 이상하게 출력됩니다.
Ex) 0x0A가 출력되어야 하는데, 0x3D 가 출력.
ASCII 코드에서 0 0 0 0 0 이 출력되어야하나 깨진글자가 출력.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
USBISP V03.x 버전의 UART 포트는 TTL level(5V 레벨) 혹은 CMOS Level(3.3V 레벨)만 호환됩니다.
따라서, RS-232C 레벨(+-12V 레벨, 실제로는 보통 9V, -5V)과 붙이면, 이상한 문자가 나오다가 계속 사용하면 망가지게 됩니다. 즉, 다른 장비라고 표현하신 장비는 RS-232C 레벨이 아닌지 확인 바랍니다.
혹시 그런것은 아닌지 확인 바랍니다.
감사합니다.
>
>
> 다른 시리얼통신장비를 사용하면 정상적으로 값이 출력되는데,
>
> USBISP V03.5 를 사용하여 PC와 UART통신을 하면 값이 이상하게 출력됩니다.
>
> Ex) 0x0A가 출력되어야 하는데, 0x3D 가 출력.
> ASCII 코드에서 0 0 0 0 0 이 출력되어야하나 깨진글자가 출력.
>
|
||||
| 9576 | 답변완료kr-sl128 키트 소스 질문 | 김상진 | 2016-03-24 | 1,436 |
|
kr-sl128 을 부분적으로 구매하여
모터 드라이버를 am- ms2 를 사용하는데
이골로 수정된 소스는 따로 제공되지않는건가요?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
그런 경우, 원래 따로 제공되지 않습니다.
킷트 단위로 CD를 제공하기 때문입니다.
기존의 A/S신청란에 질문하신 내용에 소스코드 관련된 질문에 답변을 좀 더 달아뒀으니, 참고 바랍니다.
감사합니다.
>
>
> kr-sl128 을 부분적으로 구매하여
>
> 모터 드라이버를 am- ms2 를 사용하는데
>
> 이골로 수정된 소스는 따로 제공되지않는건가요?
>
|
||||
| 9575 | 답변완료AM-128PL 크기 문의 | 임윤택 | 2016-03-23 | 1,430 |
|
AM-128PL 모듈을 구매하였고, 모듈을 그대로 사용하여 개발을 하고 싶습니다.
1번핀과 2번핀의 간격은 2.56 mm 으로 보이는 데요,
1번핀과 64번핀의 간격은 정확히 어떻게 되는지 문의 드립니다.
겉으로 보기에는 38mm 정도로 보입니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
AM-128PL은 AM-128PRO모듈과 크기가 같고 기능만 차이가 있습니다.
다음 링크를 참고하세요.
http://www.newtc.co.kr/dpshop/bbs/board.php?bo_table=m41&wr_id=234&sca=&sfl=wr_subject%7C%7Cwr_content&stx=%EA%B8%B0%EA%B5%AC%EB%8F%84&sop=and
고객님 말씀대로 비슷한데 38.1mm입니다.
감사합니다.
>
>
> AM-128PL 모듈을 구매하였고, 모듈을 그대로 사용하여 개발을 하고 싶습니다.
> 1번핀과 2번핀의 간격은 2.56 mm 으로 보이는 데요,
> 1번핀과 64번핀의 간격은 정확히 어떻게 되는지 문의 드립니다.
> 겉으로 보기에는 38mm 정도로 보입니다.
>
|
||||
| 9574 | 답변완료DM-USB2SERIAL 질문추가요 | 김도영 | 2016-03-22 | 1,461 |
|
답변 정말 감사합니다.
그러니까
1. Arduino 를 업로드할때는 NOTEBOOK ->USB2SERIAL -> ARDUINO 이고
2. RX-64를 업로드할 때는 NOTEBOOK -> USB2RS485 -> RX-64 이고
3. Arduino 랑 RX-64를 연결해서 데이터를 주고받을땐 Arduino -> UART TO RS485 -> RX-64
이렇게 정리가 되었는데 맞나요?
그리고 이게 맞다면
지금 저한테 필요한게 USB TO RS485 랑, UART TO RS485 두개만 있으면 정리완료 되는겁니까?
관리자 답변
안녕하세요?
네, 그렇게 할 수도 있구요.
아니면, 본사의 AD-USB2SERIAL 하나하고,
예전에 저도 같은 모터를 써서 로봇을 만든적이 있는 데,
그 때, UART to 485 (CS-428/9AT) + AD-USBSERIAL 조합으로 써서 모터와 PC사이를 연결했구요.
즉, PC - AD-USBSERIAL - CS-428/9AT - RX-64 이렇게 써서 PC에서 모터 셋팅할 때 썻구요.
그리고, 이렇게 해서 모터 단품 프로토콜 테스트할 때에도 썻어요.
다시 AVR과 사용할 때에는 AVR - AD-USBSERIAL의 4핀 커넥터(본사 AVR모듈과는 1:1) ----- 같은 AD-USBSERIAL내부의 9핀 커넥터 - CS428/9AT - RX-64 이렇게 썻습니다.
485는 1:1로 5개를 쭉 연장할 수 있는 커넥터 보드를 만들어 썻습니다.
모터 전원이 많이 먹으니까, 전원 공급이 매우 중요해요. 따라서, 선의 두께와 재질도 중요해지죠.
선은 연선으로 약간 굵은 선을 쓰는 게 유리합니다.
수고하세요!
>
>
> 답변 정말 감사합니다.
>
> 그러니까
> 1. Arduino 를 업로드할때는 NOTEBOOK ->USB2SERIAL -> ARDUINO 이고
> 2. RX-64를 업로드할 때는 NOTEBOOK -> USB2RS485 -> RX-64 이고
> 3. Arduino 랑 RX-64를 연결해서 데이터를 주고받을땐 Arduino -> UART TO RS485 -> RX-64
>
> 이렇게 정리가 되었는데 맞나요?
>
> 그리고 이게 맞다면
> 지금 저한테 필요한게 USB TO RS485 랑, UART TO RS485 두개만 있으면 정리완료 되는겁니까?
>
|
||||
