Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 6113 | 답변완료AM-CS2P, AD-USBISP-L, AB-M128-B, SE-SM9K 2개를 이용해 회로를 구성하려합니다. | 최민수 | 2011-02-08 | 1,276 |
|
AB-M128-B,AD-USBISP-L을 연결하여 usb에서 전원을 공급받을 예정입니다.
(전원공급기가 구성품에 포함안된듯하여..)
그리고 AB-M128-B의 전원출력을 이용하여 AM-CS2P에 전원 공급을 하고
AM-CS2P에 SE-SM9K 2개를 연결하여 구동할 예정입니다.
여기서 질문입니다.
1)외부전원없이 usb전원만으로 모든 회로 및 스테핑 모터를 구동할 수 있는지요?
2)그리고 구성품에는 케이블이 포함안된것 같던데... AB-M128-B의 포트와 AM-CS2P포트를 연결할 수 있는 케이블은 포함안되있나요? 포함안되있다면 구매는 가능한지?
3)전원부족으로 외부전원이 필요하다면 AB-M128-B의 전원연결아답터의 내경(2파이? 2.5파이?)과 AM-CS2P의 전원 공급 케이블 좀 가르쳐주세요!
4)아..그리고 usb전원으로 부족하다면 AB-M128-B에 전원어답터연결하고 AB-M128-B의 전원출력부분에 AM-CS2P의 전원입력 부분을 연결하여 구동가능한가요?
질문이 많아서 죄송합니다! ㅠ
관리자 답변
안녕하세요
1
부하가 많이 걸리는 모터류는 USB 전원으로 사용할수 없습니다.
별도의 충분한 전류, 전압의 전원을 사용하시기 바랍니다.
그리고 스텝모터는 보통 12 ~24 볼트입니다.
2
박스케이블은 제품소개에 있습니다. 전원용 2핀 케이블
http://www.newtc.co.kr/product_SE-2X520.php
본사로 전화로 주문하시면 됩니다.
3
아탑터는 사이즈는 외경 5파이, 내경 2파이 입니다.
모터용 아탑터는 12볼트에 1A~xA 이상을 사용하세요
스테핑 모터용 추천 전원은 100W-24V 입니다. 아래 SMPS가 잘 동작됩니다.
- 아래 -
http://www.partsland.co.kr/shop/shopdetail.html?branduid=51872&xcode=006&mcode=001&scode=&type=X&search=&sort=brandname
수고하세요
>AB-M128-B,AD-USBISP-L을 연결하여 usb에서 전원을 공급받을 예정입니다.
>(전원공급기가 구성품에 포함안된듯하여..)
>그리고 AB-M128-B의 전원출력을 이용하여 AM-CS2P에 전원 공급을 하고
>AM-CS2P에 SE-SM9K 2개를 연결하여 구동할 예정입니다.
>여기서 질문입니다.
>
>1)외부전원없이 usb전원만으로 모든 회로 및 스테핑 모터를 구동할 수 있는지요?
>2)그리고 구성품에는 케이블이 포함안된것 같던데... AB-M128-B의 포트와 AM-CS2P포트를 연결할 수 있는 케이블은 포함안되있나요? 포함안되있다면 구매는 가능한지?
>3)전원부족으로 외부전원이 필요하다면 AB-M128-B의 전원연결아답터의 내경(2파이? 2.5파이?)과 AM-CS2P의 전원 공급 케이블 좀 가르쳐주세요!
>4)아..그리고 usb전원으로 부족하다면 AB-M128-B에 전원어답터연결하고 AB-M128-B의 전원출력부분에 AM-CS2P의 전원입력 부분을 연결하여 구동가능한가요?
>
>질문이 많아서 죄송합니다! ㅠ
|
||||
| 6112 | 답변완료avr128 development board & usb-isp v03(ad-usbisp v3) | 김환상 | 2011-02-08 | 1,409 |
|
codevision에서 프로그램을 작성후 사이트에서 본메뉴얼데로 설정후 write를 했는데 사진처럼 에러가 뜨는데 왜그런건가요?
관리자 답변
안녕하세요
http://www.newtc.co.kr/board/data/faq/AD_USBISP_V03_사용법.pdf
19~21 페이지를 보시고 하시면 됩니다. 그전에 1~5페이를 먼저 하신후
포트를 맞추어 사용하세요.
그래도 문제가 있으시면 본사로 오시거나, 보내어 점검을 받아
보시길 바랍니다.
fuse 관련 셋팅을 한번이라도 잘못하시면 칩을 사용할수 없는 경우도 발생됩니다.
수고하세요
>codevision에서 프로그램을 작성후 사이트에서 본메뉴얼데로 설정후 write를 했는데 사진처럼 에러가 뜨는데 왜그런건가요?
|
||||
| 6111 | 답변완료AVR 용 USB-ISP V03 ( Model : AD-USBISP V03(-L) ) | 이준수 | 2011-02-08 | 1,306 |
|
AVR 용 USB-ISP V03 ( Model : AD-USBISP V03(-L) ) 제품 설명서에
보면은요 3.3V/5V 호환가능이라고 되어있는데요
3.3V는 어떻게 쓰는건가요?
이번에 아트메가128L-8mu를 사용하였는데요
동작전압을 3.3V로 설계를 하였습니다.
그외에 붙어 있는 모듈들이 3.3V 동작이거든요
AVR 용 USB-ISP V03 ( Model : AD-USBISP V03(-L) )는 전압을 체크해보니 5V나오더라구요
그래서 점퍼를 하는 것이 있는지 궁금합니다.
좋은 답변 부탁드립니다.(자세하게 부탁드립니다.)
관리자 답변
안녕하세요
USB-ISP V03 있는 타겟보드 전원용(5볼트) 팁 스위치를 off 하시면 됩니다.
그러나 타겟보드에 들어가는 전원3.3볼트는 유저가 직접 해야합니다.
http://www.newtc.co.kr/download/AD-USBISP/AD-USBISP_V03.pdf
메뉴얼에 3쪽을 보시길 바랍니다.
수고하세요
>AVR 용 USB-ISP V03 ( Model : AD-USBISP V03(-L) ) 제품 설명서에
>
>보면은요 3.3V/5V 호환가능이라고 되어있는데요
>
>3.3V는 어떻게 쓰는건가요?
>
>이번에 아트메가128L-8mu를 사용하였는데요
>
>동작전압을 3.3V로 설계를 하였습니다.
>
>그외에 붙어 있는 모듈들이 3.3V 동작이거든요
>
>AVR 용 USB-ISP V03 ( Model : AD-USBISP V03(-L) )는 전압을 체크해보니 5V나오더라구요
>
>그래서 점퍼를 하는 것이 있는지 궁금합니다.
>
>좋은 답변 부탁드립니다.(자세하게 부탁드립니다.)
>
>
|
||||
| 6110 | 답변완료Atmega32의 ADC 두채널의 값을 읽는 방법... | 이낙영 | 2011-02-08 | 1,412 |
|
Atmega32를 사용해서 2채널 전압계측기를 만들고있습니다.
ADC0, ADC1에 전압을 입력했습니다. 1스켄에 ADC0, ADC1의 값을
읽고자 하는데 잘 되질 않습니다.
제가 한 방법은 아래와 같습니다.
//---ADC 초기화 부분---
ADC setting
ADCSRA = 0xA5;
ADMUX = 0x40;
ADCSRA = 0xa7;
//---ADC 값 읽는 부분---
while(1) {
ADMUX = 0x40; //ADC.0
ADCSRA |= 0x40; //ADC 변환 시작
while( (ADCSRA & 0x10) == 0); //ADC 완료 시까지 기다림
value1 = (ADCH << 8); //결과저장
value1 |= ADCL;
ADCSRA |= 0x10; //ADC 레지스터의 값을 클리어
ADMUX = 0x41; //ADC.1
ADCSRA |= 0x40; //ADC 변환 시작
while((ADCSRA & 0x10) == 0); //ADC 완료 시까지 기다림
value2 = (ADCH << 8); //결과저장
value2 |= ADCL;
ADCSRA |= 0x10; //ADC 레지스터의 값을 클리어
}
** 현상 **:
ADC 채널의 값이 변하지 않음.
value1의 값과 value2의 값이 항상 같게 나옴.
가변 저항을 돌리면 value1의 값은 변함.
즉, ADC0의 ADCH, ADCL의 값이 ADC1의 값에 적용 됨.
** 질문 **
어떻게 해야 ADC0, ADC1의 값을 동시에 읽을 수 있는지 궁금합니다.
관리자 답변
안녕하세요
원래 AVR은 ADCL부터 읽고 ADCH를 읽어야 합니다.
소스를 보니 반대로되어 있어서, ADC값이 제대로 읽히지 않은 것 같습니다.
수정하여 보세요.
킷트의 하드웨어 및 예제코드에 대해서는 써포트를 하지만
그외에 대해서는 써포트를 하지않습니다.
아래 ADC관련 예제코드를 분석해 보시길 바랍니다.
http://www.newtc.co.kr/board/view.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=adc&select_arrange=headnum&desc=asc&no=212
http://www.newtc.co.kr/board/view.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=adc&select_arrange=headnum&desc=asc&no=390
수고하세요
>Atmega32를 사용해서 2채널 전압계측기를 만들고있습니다.
>
>ADC0, ADC1에 전압을 입력했습니다. 1스켄에 ADC0, ADC1의 값을
>읽고자 하는데 잘 되질 않습니다.
>
>제가 한 방법은 아래와 같습니다.
>
>//---ADC 초기화 부분---
>    ADC setting
>    ADCSRA = 0xA5;
>    ADMUX = 0x40;  
>    ADCSRA = 0xa7;
>
>//---ADC 값 읽는 부분---
>while(1) {
>   ADMUX = 0x40;     //ADC.0
>   ADCSRA |= 0x40;    //ADC 변환 시작
>   while( (ADCSRA & 0x10) == 0); //ADC 완료 시까지 기다림
>   value1 = (ADCH << 8); //결과저장
>   value1 |= ADCL;
>   ADCSRA |= 0x10; //ADC 레지스터의 값을 클리어
>
>   ADMUX = 0x41;      //ADC.1
>   ADCSRA |= 0x40;    //ADC 변환 시작
>   while((ADCSRA & 0x10) == 0); //ADC 완료 시까지 기다림
>        
>   value2 = (ADCH << 8); //결과저장
>   value2 |= ADCL;
>   ADCSRA |= 0x10; //ADC 레지스터의 값을 클리어
>}
>
>** 현상 **:
>ADC 채널의 값이 변하지 않음.
>value1의 값과 value2의 값이 항상 같게 나옴.
>가변 저항을 돌리면 value1의 값은 변함.
>즉, ADC0의 ADCH, ADCL의 값이 ADC1의 값에 적용 됨.
>
>** 질문 **
>어떻게 해야 ADC0, ADC1의 값을 동시에 읽을 수 있는지 궁금합니다.
|
||||
| 6109 | 답변완료질문입니다~ | 신정민 | 2011-02-08 | 1,332 |
|
얼마전 구입한 KD-128pro 가지고 프로그램 테스트를 아래와 같이 했습니다만 에러가 생기네요
컴파일러는 코드비전을 사용했습니다.
PORTG를 비트 단위로 LED ON/OFF 하려고 하는데
그부분에서 에러가 발생합니다. 어떻게 수정해야 하나요?
#include<mega128.h>
#include<delay.h>
void main(void)
{
unsigned int k=20;
DDRG=0x03;
PORTG=0x03;
while(k!=0)
{
delay_ms(500);
PORTG.0=1; => 에러
delay_ms(500);
PORTG.0=0; => 에러
k--;
}
}
관리자 답변
#define D0 0x01
#define D1 0x02
#define D2 0x04
#define D3 0x08
#define D4 0x10
#define D5 0x20
#define D6 0x40
#define D7 0x80
void main(void{
.......//초기화 루틴
PORTG |= D0;
delay_ms(500);
PORTG &= ~D0;
delay_ms(500);
.......
}
이런 식으로 하시는 것이 좋겠습니다.
수고하세요.
>얼마전 구입한 KD-128pro 가지고 프로그램 테스트를 아래와 같이 했습니다만 에러가 생기네요
>컴파일러는 코드비전을 사용했습니다.
>PORTG를 비트 단위로 LED ON/OFF 하려고 하는데
>그부분에서 에러가 발생합니다. 어떻게 수정해야 하나요?
>
>#include<mega128.h>
>#include<delay.h>
>void main(void)
>{
> unsigned int k=20;
> DDRG=0x03;
> PORTG=0x03;
> while(k!=0)
> {
> delay_ms(500);
> PORTG.0=1; => 에러
> delay_ms(500);
> PORTG.0=0; => 에러
> k--;
> }
>}
|
||||
| 6108 | 답변완료입력용 PORTA에 대한 문의사항 입니다. | 안재철 | 2011-02-08 | 1,480 |
|
궁금한 사항이 있어 질문 드립니다.
먼저 전에 A/S 요청한 Atmega 128 PRO 모듈 2개 관련 하여 문의 드립니다.
A/S 받은 제품 PORT의 출력은 정상적으로 동작하는 것을 LED를 보고 확인 하였습니다.
반면 PORT를 입력용으로 사용하려는데 문제가 발생하였습니다.
전체적인 PORT를 확인할 수 없어서 우선 증상만 간단하게 작성하겠습니다.
PORTA는 입력용 PORTC는 출력용으로 사용하려 합니다. VCC
아래철 간단하게 코딩을 하였고 |
R1
DDRA = 0x00 -- |
PORTA = 0x00 (SWITCH 사용) GND----- o o------PORTA (스위치 회로)
DDRC = 0xFF
PORTC = 0xFF (LED 사용) VCC---R1---LED---PORTC (LED 회로)
PORTC = PINA ===> 문제 발생 값이 0x01을 읽음
첫번째 Pro 모듈은 PORTA를 입력용으로 사용시, PINA 값을 읽으면 값이 0x01가 읽히는 문제가 발생합니다. 반면 두번째 Pro 모듈은 스위치와 LED가 연결되어있을때는 정상인데, 스위치쪽을 보드에서 분리하면 PINA 값이 0x01로 변경이 되는 군요
관리자 답변
안녕하세요
하드웨어와 코드상 문제가 없는 경우에 입력이 정상적이지 못한 경우는
1. 스위치에 연결된 포트가 다른 소자가 붙어 있는 경우
2. 입력단자에 디폴트값이 없는 경우 ( 풀업이나 풀다운 존재)
3. 레지스터를 초기화 한다.
예) 아래처럼 잘못된 동작을 방지하기 위해 초기화 함수를 보통 사용합니다.
//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI ( ); //disable all interrupts
XDIV = 0x00; //xtal divider
XMCRA = 0x00; //external memory
port_init ( );
uart0_init ( );
MCUCR = 0x00;
EICRA = 0x00; //extended ext ints
EICRB = 0x00; //extended ext ints
EIMSK = 0x00;
TIMSK = 0x00; //timer interrupt sources
ETIMSK = 0x00; //extended timer interrupt sources
SEI ( ); //re-enable interrupts
//all peripherals are now initialized
}
입력으로 쓸 경우는 보통 외부 풀업저항을 대신하여 내부 풀업을 걸어서 사용합니다.
DDRA = 0x00;
PORTA = 0xFF;
수고하세요
>궁금한 사항이 있어 질문 드립니다.
>
> 먼저 전에 A/S 요청한 Atmega 128 PRO 모듈 2개 관련 하여 문의 드립니다.
> A/S 받은 제품 PORT의 출력은 정상적으로 동작하는 것을 LED를 보고 확인 하였습니다.
> 반면 PORT를 입력용으로 사용하려는데 문제가 발생하였습니다.
> 전체적인 PORT를 확인할 수 없어서 우선 증상만 간단하게 작성하겠습니다.
>
> PORTA는 입력용 PORTC는 출력용으로 사용하려 합니다. VCC
> 아래철 간단하게 코딩을 하였고 |
> R1
> DDRA = 0x00 -- |
> PORTA = 0x00 (SWITCH 사용) GND----- o o------PORTA (스위치 회로)
> DDRC = 0xFF
> PORTC = 0xFF (LED 사용) VCC---R1---LED---PORTC (LED 회로)
>
> PORTC = PINA ===> 문제 발생 값이 0x01을 읽음
>
>
>첫번째 Pro 모듈은 PORTA를 입력용으로 사용시, PINA 값을 읽으면 값이 0x01가 읽히는 문제가 발생합니다. 반면 두번째 Pro 모듈은 스위치와 LED가 연결되어있을때는 정상인데, 스위치쪽을 보드에서 분리하면 PINA 값이 0x01로 변경이 되는 군요
>
>
>
>
>
|
||||
| 6107 | 답변완료AM-DC1-3D관련 문의드립니다. | 임성용 | 2011-02-07 | 1,345 |
|
AM-DC1-3D의 Input 9번 핀 Vcc는 사용하지 않아도 되지 않나요?
모터용 전압은 따로 DC input 핀이 있어서 5~55V 입력하면 되는거 같아서요.
일단 아무생각없이 회로 만들다가 MCU Vcc랑 연결했거든요.
모터가 안돌아가서 원인분석 중에 글 올립니다.
답변 부탁드립니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
우선, 모터용 전원이랑 논리용 전원이랑 두가지가 있다는 말씀을 드립니다.
모터용 전원 즉, 12~55V 라는 것은 (DC1-3D는 12 V 부터라는 것을 유의하시기 바랍니다.)
모터에 파워를 공급해 주는 것이구요. 논리용 전원 즉, 5V는 모터의 모드나 동작시키는 것 관련된 논리적인 연산에 관계된 전원입니다. 즉, 두 가지가 다 있어야 가능합니다.
모터용 전원과 논리 전원이 분리 되어 있는 것은, 주로 노이즈를 저감시키고, MCU에 역전되는 전류가 흘러들어가지 않도록 하기 위함임을 유의하시기 바랍니다.
아마도 모터용 전압이 너무 낮아서 안되는 게 아닌가 싶습니다. 그리고, 전류도 모터가 돌만큼 충분하지 않으면 절대 돌지 않습니다. 모터의 스펙을 우선 살펴 보시구요. 전원 소스에서 모터까지 가는 선도 너무 얆거나 하면 전류가 흘러갈 수가 없습니다. 그럼 모터가 돌 지 않지요. 선은 연선이 좋습니다.
수고하세요.
>AM-DC1-3D의 Input 9번 핀 Vcc는 사용하지 않아도 되지 않나요?
>모터용 전압은 따로 DC input 핀이 있어서 5~55V 입력하면 되는거 같아서요.
>일단 아무생각없이 회로 만들다가 MCU Vcc랑 연결했거든요.
>모터가 안돌아가서 원인분석 중에 글 올립니다.
>답변 부탁드립니다.
|
||||
| 6106 | 답변완료AB-M128-B 5V 출력 관련 질문 | 안재철 | 2011-02-07 | 1,366 |
|
AB-M128-B 시험 보드에서 5V output이 여러개 있는 것으로 보입니다.
5V output 출력 전류가 제한이 있습니까? 아니면 아답터의 출력 용량에 따라 다른가요?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사드립니다.
5V 출력 전류는 아답타 용량이 1A 이상이면 동일하게 800mA로 제한됩니다.
아답타 용량이 1A 이내라면 아답타 용량에 따라서 60% 정도 보시면 됩니다.
감사합니다.
>AB-M128-B 시험 보드에서 5V output이 여러개 있는 것으로 보입니다.
>
>5V output 출력 전류가 제한이 있습니까? 아니면 아답터의 출력 용량에 따라 다른가요?
|
||||
| 6105 | 답변완료가속도센서와 자이로 센서를 같이 사용못하나요? | 이학경 | 2011-02-05 | 1,404 |
|
가속도 센서를 사용하고 있는데 자이로센서도 구매하려고 합니다.
avr에는 adc핀이 포트f밖에 없는데
자이로센서랑 가속도 센서를 어떻게 해야 같이 사용할수 있을까요?
가속도센서모듈에서 10핀을 다잡아먹던데..
별도의 회로없이 여기서 구매하는 모듈로는 어떻게 안되는건가요?
아 그리고 usb시리얼 통신 변환 모듈이랑 개발보드랑 rs232통신 할수 있게해주는 양쪽 3핀 커넥터를 여기서 팔고있나요?
관리자 답변
안녕하세요? 고객님,
저희 늘 뉴티씨 제품을 이용하여 주셔서 감사합니다.
우선, 가속도 센서와 자이로 센서를 함께 사용이 가능합니다.
하지만, 10핀 헤더핀 케이블을 사용해서는 하나밖에 쓸 수 없습니다. 왜냐하면, 잘 아시다시피 F 포트만 ADC 포트이기 때문이지요. 그래서, 본사에서 1핀-1핀 이런 식으로 연결할 수 있는 케이블을 별도로 판매하고 있습니다. SE-MIN1 이라고 불리는 케이블인데요. 이 케이블을 구매하시면 핀투핀으로 연결 가능합니다. 그 케이블을 이용하여 GND, VCC를 메인보드와 각 센서 보드를 각각 연결하여 주신 후, X, Y, Z 각각을 각각 F 포트의 적절한 핀으로 연결하면 사용이 가능합니다. 다른 곳에서는 팔고 있지 않으니, 반드시 본사에 전화해서 구매 가능합니다.
그리고, AD-USBSERIAL 케이블과 킷트의 3핀은 SE-3T9 케이블을 이용하면 연결이 가능합니다.
3핀-3핀 케이블은 없지만, USBSERIAL의 9핀과 킷트의 3핀을 연결하는 케이블이 있으니, 참고하시기 바랍니다.
감사합니다.
>가속도 센서를 사용하고 있는데 자이로센서도 구매하려고 합니다.
>
>avr에는 adc핀이 포트f밖에 없는데
>
>자이로센서랑 가속도 센서를 어떻게 해야 같이 사용할수 있을까요?
>
>가속도센서모듈에서 10핀을 다잡아먹던데..
>별도의 회로없이 여기서 구매하는 모듈로는 어떻게 안되는건가요?
>
>
>아 그리고 usb시리얼 통신 변환 모듈이랑 개발보드랑 rs232통신 할수 있게해주는 양쪽 3핀 커넥터를 여기서 팔고있나요?
|
||||
| 6104 | 답변완료usb변환보드를 이용한 시리얼 케이블 작동 질문입니다. | 이학경 | 2011-02-04 | 1,353 |
|
AB-M128Pro-A 이개발보드 사용하고 있습니다.
UART통신할떄 시리얼케이블(SE-3T9 ) 사용하다가 노트북으로 바꿔서
usb변환보드 AD-USBSERIAL를 구매하게 되었습니다.
그런데
노트북 - AD-USBSERIAL의 TTL단자 - MPU 이런식으로 연결하면 잘 되는데
노트북 - AD-USBSERIAL - 시리얼케이블(se-3t9) - MPU의 rs232 연결을 하게되면 정상적인 작동이 안됩니다.
왜그런건가요?
관리자 답변
안녕하세요? 고객님,
MCU 쪽도 혹시 RS-232C(+-12V Level) 레벨이 맞는 지요?
>노트북 - AD-USBSERIAL의 TTL단자 - MPU 이런식으로 연결하면 잘 되는데
==> 이 때는 MCU도 아마도 TTL Level(5V level)이 맞아서 된 것 같구요.
>노트북 - AD-USBSERIAL - 시리얼케이블(se-3t9) - MPU의 rs232 연결을 하게되면 정상적인 작동이
==> 이 때도 혹시 같은 곳에다 연결한 거라면, 레벨이 안 맞아서 안되겠지요. 이런 식으로 연결하게 되면, 고장날 수도 있습니다. 주의 바랍니다. 시리얼 케이블 쪽은 RS-232C Level인데 MCU 쪽은 TTL Level 이라면 문제가 됩니다.
수고하세요.
>AB-M128Pro-A 이개발보드 사용하고 있습니다.
>
>UART통신할
|
||||
| 6103 | 답변완료가속도 모듈(AM-3AXIS)예제소스 질문드립니다. | 이학경 | 2011-02-03 | 1,333 |
|
void get_data(void)
{
for(unsigned char i=0; i<20; i++)
{
ADCSRA &= 0x7f;
ADMUX = 0x40;
ADCSRA |= 0xC0;
while(!(ADCSRA & 0x10));
X[0] = ADCL;
X[1] = ADCH & 0x3f;
//////////////////////////////////////
ADCSRA &= 0x7f;
ADMUX = 0x42;
ADCSRA |= 0xC0;
while(!(ADCSRA & 0x10));
Y[0] = ADCL;
Y[1] = ADCH & 0x3f;
//////////////////////////////////////
ADCSRA &= 0x7f;
ADMUX = 0x44;
ADCSRA |= 0xC0;
while(!(ADCSRA & 0x10));
Z[0] = ADCL;
Z[1] = ADCH & 0x3f;
}
}
/////////////////////////////////////////////////////////////////////////
위의 함수를 통해서 x,y,z의 adc값을 읽은것 까지는 이해했습니다.
그런데 문제는 ADCL/ADCH로부터 저장된 변수 즉,X[0], X[1], Y[0], Y[1], Z[0], Z[1]변수에
입력된값이 어떤값인지를 모르겠습니다.
예를들어
X값을
ADCL값을 받으면 항상 192만 나오고
ADCH값을 받으면 변화량에따른 값이 나오는데
134
077
065
057
071
127
093
080
082
059
066
087
094
094
이런값들이 나옵니다.
제질문은 이런값이 무슨 의미를 갖는지 모르겠습니다. ADC를통해 아날로그값이 디지털로 변환된건 알겠는데 192도 그렇고... 무언가 구체적으로 이해가 되질 않습니다.
아니면 그냥 이런 값 자체로 의미가있고 변화량에따라 숫자가 변한다는것이 끝인건가요?
두번째는 이걸 어떻게 계산하여야 가속도 값이 나오는지를 모르겠습니다.
부탁드립니다.!
•계산 방식
–Resolution = (Vout / 3.3) * 1024
–Impact = [count – count(offset)] * resolution
이런식으로 계산 한다던데..
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
강좌->AVR 강좌에서 공간 마우스 강좌와 ADC 강좌를 다 보시는 것이 좋겠습니다.
우선, ADC 강좌부터 차근차근 보는 게 빠르겠네요.
AXMUX 쪽을 잘 보시면, 출력 데이터가 우측 정렬 되어 있습니다.
ADCL 받아서 일정한 값만 나온다는 게 이상하군요.
여기서 본사의 배포 소스를 테스트 해보면, 정상적으로 값이 잘 변하고 있거든요.
뭔가 잘못하신 것 같습니다. 강좌를 잘 보시고, 자료실의 3축 가속도 센서 쪽의 윈도우소스 라고 된 것을 다운로드 받아서, 그 쪽에 있는 AVR 소스를 사용하세요.
- 공간 마우스 제작 -
http://www.newtc.co.kr/board/view.php?id=mega128_lecture&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=116
- ADC 강좌 -
http://www.newtc.co.kr/board/view.php?id=mega128_lecture&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=109
아니면, 자료실의 기존 자료실 가셔서, 우선 ADC 부터 파악해 보시는 게 좋겠습니다.
- 소스 -
http://www.newtc.co.kr/board/view.php?id=pds&page=2&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=393
수고하세요.
>void get_data(void)
>{
>for(unsigned char i=0; i<20; i++)
>{
>  ADCSRA &= 0x7f;
>  ADMUX = 0x40;
>  ADCSRA |= 0xC0;
>
>  while(!(ADCSRA & 0x10));  
>  X[0] = ADCL;
>  X[1] = ADCH & 0x3f;
>//////////////////////////////////////
>  ADCSRA &= 0x7f;
>  ADMUX = 0x42;
>  ADCSRA |= 0xC0;
>
>  while(!(ADCSRA & 0x10));  
>  Y[0] = ADCL;
>  Y[1] = ADCH & 0x3f;
>//////////////////////////////////////
>  ADCSRA &= 0x7f;
>  ADMUX = 0x44;
>  ADCSRA |= 0xC0;
>
>  while(!(ADCSRA & 0x10));  
>  Z[0] = ADCL;
>  Z[1] = ADCH & 0x3f;
>
>}
>}
>
>
>
>
>
>/////////////////////////////////////////////////////////////////////////
>위의 함수를 통해서 x,y,z의 adc값을 읽은것 까지는 이해했습니다.
>
>그런데 문제는 ADCL/ADCH로부터 저장된 변수 즉,X[0], X[1], Y[0], Y[1], Z[0], Z[1]변수에
>입력된값이 어떤값인지를 모르겠습니다.
>
>예를들어
>X값을
>ADCL값을 받으면 항상 192만 나오고
>ADCH값을 받으면 변화량에따른 값이 나오는데
>134
>077
>065
>057
>071
>127
>093
>080
>082
>059
>066
>087
>094
>094
>이런값들이 나옵니다.
>
>제질문은 이런값이 무슨 의미를 갖는지 모르겠습니다. ADC를통해 아날로그값이 디지털로 변환된건 알겠는데 192도 그렇고... 무언가 구체적으로 이해가 되질 않습니다.
>아니면 그냥 이런 값 자체로 의미가있고 변화량에따라 숫자가 변한다는것이 끝인건가요?
>
>두번째는 이걸 어떻게 계산하여야 가속도 값이 나오는지를 모르겠습니다.
>부탁드립니다.!
>
>•계산 방식
>–Resolution = (Vout / 3.3) * 1024
>–Impact = [count – count(offset)] * resolution
>
>
>이런식으로 계산 한다던데..
>
>
|
||||
| 6102 | 답변완료하이퍼 터미널 사용 문의입니다. | 이학경 | 2011-02-01 | 1,426 |
|
위의 소스를 이용하여 AVR STUDIO에서 하이퍼 터미널 프로그램으로 문자를 전송하면 다시 같은값을 입력받는 소스입니다.
컴퓨터COM4 -> USBSERIAL -> 시리얼케이블 연결하여서 개발보드USART0번에 연결하였습니다.
뉴티씨자료실에 있는소스와 밑에소스 다 해보았는데
mpu에서 하이퍼터미널에 값을 뿌리는건 되는데 위에 소스처럼 값을쓰면 다시 입력받는게 안됩니다. (tx는되는데 rx는 안됩니다.)
어떤게 문제인가요 혹시 연결이 잘못된건가요?
관리자 답변
흐름제어에서 하드웨어가아니라 없음으로 해야합니다
그리고 거기 소스에서 있지만 자료실-기존자료실에서 scanf로 검색해서 해주세요
>위의 소스를 이용하여 AVR STUDIO에서 하이퍼 터미널 프로그램으로 문자를 전송하면 다시 같은값을 입력받는 소스입니다.
>
>컴퓨터COM4 -> USBSERIAL -> 시리얼케이블 연결하여서 개발보드USART0번에 연결하였습니다.
>
>뉴티씨자료실에 있는소스와 밑에소스  다 해보았는데
>
>mpu에서 하이퍼터미널에 값을 뿌리는건 되는데 위에 소스처럼 값을쓰면 다시 입력받는게 안됩니다. (tx는되는데 rx는 안됩니다.)
>
>어떤게 문제인가요 혹시 연결이 잘못된건가요?
|
||||
| 6101 | 답변완료USBISP V03 고장문의드립니다. | 허효성 | 2011-02-01 | 1,268 |
|
실수로 UART를 ISP핀에 연결을 해서 고장이 난듯 한데요
AVR 개발보드와 연결시 녹색불은 뜨고
USBISP를 통한 전원 공급도 되지만
PC에서 인식을 하지 못하네요 COM포트가 뜨지 않습니다.
열도 좀 나는 거 같구요.
수리기간과 비용 문의드려요
방문시 바로 수리 가능한가요??
오늘 방문수리 가능 한지 여쭤봅니다.
관리자 답변
안녕하세요. 고객님
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
현재는 구정 설인 관계로 전직원이. 충전중입니다.
다음주에 방문하여 주시면 바로 처리해드리겠습니다.
전 대리점도 모두 휴가 시간이어서 배송과 오프라인도 모두. 쉬고 있어서 대응이
현재는 좀 어려움을 양해해 주시기 바랍니다.
AS비용은 9900원이며, 현금 영수증 등이 발급 가능합니다.
감사합니다.
>실수로 UART를 ISP핀에 연결을 해서 고장이 난듯 한데요
>AVR 개발보드와 연결시 녹색불은 뜨고
>USBISP를 통한 전원 공급도 되지만
>PC에서 인식을 하지 못하네요 COM포트가 뜨지 않습니다.
>열도 좀 나는 거 같구요.
>수리기간과 비용 문의드려요
>방문시 바로 수리 가능한가요??
>오늘 방문수리 가능 한지 여쭤봅니다.
|
||||
| 6100 | 답변완료USART통신 소스인데 도저히 안되네요 | 이학경 | 2011-01-31 | 1,433 |
|
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/delay.h>
unsigned char uart_rx(void)
{
while(!(UCSR0A&(1<<RXC0)));
return UDR0;
}
void uart_tx(unsigned char data) //문자를 외부로 출력
{
while(!(UCSR0A&(1<<UDRE0))); //UDR register ready set//ready=>out
UDR0 = data;
}
void uart_init(void)
{
UCSR0A = 0;
UCSR0B = (1<<RXEN0)|(1<<TXEN0);
UCSR0C = (1<<UCSZ01)|(1<<UCSZ00);
UBRR0H = 0;
UBRR0L = 103;//9600=103
}
int main(void)
{
DDRE = 0xfe;
uart_init();
char eew=0;
while(1)
{
eew = uart_rx();
if(eew == 'a')
{
uart_tx('T');
uart_tx('X');
}
}
}
환장하겠습니다.. 벌써 일주일째 저걸못하네요
제품은 여기 개발보드랑 통신모듈이랑 USART케이블 연결했습니다.
tx값을 컴퓨터에 뿌리는건 되는데 MPU로 명령을 계속 못보내고 있네요
a를입력하면 TX가 터미널에 출력되는 프로그램입니다.
도저히 모르겠네요 .. .진짜 도움부탁간절합니다. ㅠㅠ
윈도우7이라서 밑에 첨부한 프로그램 사용하고 있습니다.
밑에 붙이는 소스도 다 안됩니다..
//////////////////////////////////////////////////////////////
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/delay.h>
volatile unsigned int rx_data, rx_flag;
ISR(USART0_RX_vect)
{
rx_data = UDR0;
rx_flag=1;
}
char uart_rx(void)
{
while(!(UCSR0A&(1<<RXC0)));
return UDR0;
}
void uart_tx(unsigned char data) //문자를 외부로 출력
{
while(!(UCSR0A&(1<<UDRE0)));
UDR0 = data;
}
void uart_init(void)
{
UCSR0A = 0;
UCSR0B = (1<<RXCIE0)|(1<<RXEN0)|(1<<TXEN0); //RX_complete interrupt
UCSR0C = (1<<UCSZ01)|(1<<UCSZ00);
UBRR0H = 0;
UBRR0L = 103; //9600bps
}
int main(void)
{
DDRE = 0xfe;
uart_init();
sei();
while(1)
{
if(rx_flag>0)
{
rx_flag=0;
uart_tx(rx_data);
}
}
}
//////////////////////////////////////////////////////////////
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
volatile char rx_data, rx_flag=0;
ISR(USART0_RX_vect)
{
rx_data=UDR0;
rx_flag=1;
}
void uart_tx(char data)
{
while(!(UCSR0A&0x20));
UDR0=data;
}
int main(void)
{
DDRE=0xfe;
UCSR0A=0;
UCSR0B=0x98;
UCSR0C=6;
UBRR0H=0;
UBRR0L=103; //9600
uart_tx('T');
uart_tx('E');
uart_tx('X');
uart_tx('T');
while(1)
{
if(rx_flag)
{
rx_flag=0;
uart_tx(rx_data);
}
}
}
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
아래 링크에 가시면, 답을 볼 수 있습니다.
사용하시는 컴파일러가 아마도 AVR Studio + WINAVR 이렇게 쓰시는 것 같은데요.
그런 경우,
fdevopen(Putchar,0);
static int Putchar(char c, FILE *stream)
{
while (((UCSR0A>>UDRE0)&0x01) == 0) ; // UDRE, data register empty
UDR0 = message;
return 0;
}
머 이런 것을 첨부해 줘야 해요.
특이하죠? 아래에 좀 더 자세한 내용이 있으니, 참고 바래요.
- 아래 -
http://newtc.co.kr/board/view.php?id=mega128_lecture&page=2&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=101
감사합니다.
>#include <avr/io.h>
>#include <avr/interrupt.h>
>#include <avr/delay.h>
>
>
>unsigned char uart_rx(void)
>{
> while(!(UCSR0A&(1<<RXC0)));
>
> return UDR0;
>}
>
>
>void uart_tx(unsigned char data) //문자를 외부로 출력
>{
> while(!(UCSR0A&(1<<UDRE0))); //UDR register ready set//ready=>out
> UDR0 = data;
>}
>
>
>
>void uart_init(void)
>{
> UCSR0A = 0;
> UCSR0B = (1<<RXEN0)|(1<<TXEN0);
> UCSR0C = (1<<UCSZ01)|(1<<UCSZ00);
>
> UBRR0H = 0;
> UBRR0L = 103;//9600=103
>}
>
>
>
>int main(void)
>{
> DDRE = 0xfe;
> uart_init();
>
> char eew=0;
>
> while(1)
> {
> eew = uart_rx();
> if(eew == 'a')
> {
> uart_tx('T');
> uart_tx('X');
> }
> }
>
>}
>
>
>
>
>
>환장하겠습니다.. 벌써 일주일째 저걸못하네요
>제품은 여기 개발보드랑 통신모듈이랑 USART케이블 연결했습니다.
>
>tx값을 컴퓨터에 뿌리는건 되는데 MPU로 명령을 계속 못보내고 있네요
>a를입력하면 TX가 터미널에 출력되는 프로그램입니다.
>
>도저히 모르겠네요 .. .진짜 도움부탁간절합니다. ㅠㅠ
>윈도우7이라서 밑에 첨부한 프로그램 사용하고 있습니다.
>
>
>밑에 붙이는 소스도 다 안됩니다..
>
>//////////////////////////////////////////////////////////////
>
>
>#include <avr/io.h>
>#include <avr/interrupt.h>
>#include <avr/delay.h>
>
>
>volatile unsigned int rx_data, rx_flag;
>
>ISR(USART0_RX_vect)
>{
> rx_data = UDR0;
> rx_flag=1;
>
>}
>
>char uart_rx(void)
>{
> while(!(UCSR0A&(1<<RXC0)));
>
> return UDR0;
>}
>
>
>
>void uart_tx(unsigned char data) //문자를 외부로 출력
>{
> while(!(UCSR0A&(1<<UDRE0)));
> UDR0 = data;
>}
>
>
>
>
>void uart_init(void)
>{
> UCSR0A = 0;
> UCSR0B = (1<<RXCIE0)|(1<<RXEN0)|(1<<TXEN0); //RX_complete interrupt
> UCSR0C = (1<<UCSZ01)|(1<<UCSZ00);
>
> UBRR0H = 0;
> UBRR0L = 103; //9600bps
>}
>
>
>int main(void)
>{
> DDRE = 0xfe;
> uart_init();
>sei();
>
> while(1)
> {
> if(rx_flag>0)
> {
> rx_flag=0;
> uart_tx(rx_data);
> }
> }
>
>}
>//////////////////////////////////////////////////////////////
>#include <avr/io.h>
>#include <avr/interrupt.h>
>#include <util/delay.h>
>
>volatile char rx_data, rx_flag=0;
>
>ISR(USART0_RX_vect)
>{
> rx_data=UDR0;
> rx_flag=1;
>}
>
>void uart_tx(char data)
>{
> while(!(UCSR0A&0x20));
> UDR0=data;
>}
>
>int main(void)
>{
> DDRE=0xfe;
> UCSR0A=0;
> UCSR0B=0x98;
> UCSR0C=6;
> UBRR0H=0;
> UBRR0L=103; //9600
>
> uart_tx('T');
> uart_tx('E');
> uart_tx('X');
> uart_tx('T');
>
> while(1)
> {
> if(rx_flag)
> {
> rx_flag=0;
> uart_tx(rx_data);
> }
> }
>}
>
>
>
>
|
||||
| 6099 | 답변완료USB TO ISP 변환케이블 동작 전압 문의 | 한경수 | 2011-01-31 | 1,423 |
|
---> AD-USBISP+ V4.0과 AD-USBISP-L 제품의 동작 전압이 3V에서도 사용 가능한가요?
ATMEGA 128L을 3V전압으로 사용하려고 하거든요...혹 동작이 안된다면, 3V에서 동작되는 전환 케이블 추천 부탁드립니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사드립니다.
네, 두 제품 모두 가능합니다.
감사합니다.
>---> AD-USBISP+ V4.0과 AD-USBISP-L 제품의 동작 전압이 3V에서도 사용 가능한가요?
>ATMEGA 128L을 3V전압으로 사용하려고 하거든요...혹 동작이 안된다면, 3V에서 동작되는 전환 케이블 추천 부탁드립니다.
|
||||
