Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 4668 | 답변완료128 AB-M128-B | 안녕하세요 | 2010-03-09 | 1,270 |
|
우리가 AVR MEGA 128 AB-M128-B (avr보드)를 이용해 프로젝트를 수행중인데
센서와 모터를 사용하는데 있어서 확장모듈이 필요합니까?
필요하지않다면 어떻게 해야하는가?(빵판,저항,트랜지스터이런게 필요한가요?)
확장센서모듈을 사용하면 1개당 몇개의 센서를 사용할수있나
여러개를 사용할수있다면 몇개까지 가능한가요.
확장센서모듈사용시 각 센서를 연결하는 방법.
LCD확장모듈이 필요한가? 현재 LCD만 가지고있는데 LCD모듈이 필요하다면 모듈만 따로구입가능한가요?
그리고 SE-DS350(DC 모터)이 모터를구매하엿는데 사용하는방법을모르겟어요 선이 두개나와있는데 이건 전원인거같은데 그럼 프로그램을 넣을때는 어떻게 넣는지 궁금합니다.
그리고 모터드라이버는 또어떻게 사용하는지두요
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
사용하는 센서.
UST_SNR-FSR
(압력센서)
DS18S20
(온도센서)
LC1621-TRNS6
(캐릭터 LCD)
CDS센서(조도 센서)
CDS CELL(GL5549)
관리자 답변
안녕하세요
>센서와 모터를 사용하는데 있어서 확장모듈이 필요합니까?
센서와 모터에 관련된 회로 설계가 가능하시면 부품판매하는 곳에
구입하여 직접 제작이 가능합니다.
>확장센서모듈사용시 각 센서를 연결하는 방법.
센서가 출력이 방식에 따라 연결법이 ( ADC,I2C,SPI등 ) 있습니다.
ATMEGA128 - ADC 포트는 8 개 , I2C 1개 SPI 1개 ,UART 2개 있습니다.
센서 스펙 및 을 ATMEGA128 데이터시트를 보시고 확인하시길 바랍니다.
>LCD확장모듈이 필요한가? 현재 LCD만 가지고있는데 LCD모듈이 필요하다면 모듈만 따로구입가능한가요?
LCD모듈은 128 AB-M128-B 와의 연결 10 박스 헤더 2개로 바로 연결이 가능하면 따로
하드웨어 구성이 필요가 없습니다.
LCD와 모듈을 따로 판매하지 않고 있습니다.
본 게시판은 여러사람이 함께 사용하는 공간으로 본명으로 질문하셔야 답변이 가능합니다.
다음에는 꼭 본명으로 질문하여 주시기 바랍니다.
수고하세요
>우리가 AVR MEGA 128 AB-M128-B (avr보드)를 이용해 프로젝트를 수행중인데
>
>센서와 모터를 사용하는데 있어서 확장모듈이 필요합니까?
>필요하지않다면 어떻게 해야하는가?(빵판,저항,트랜지스터이런게 필요한가요?)
>
>확장센서모듈을 사용하면 1개당 몇개의 센서를 사용할수있나
>여러개를 사용할수있다면 몇개까지 가능한가요.
>확장센서모듈사용시 각 센서를 연결하는 방법.
>
>LCD확장모듈이 필요한가? 현재 LCD만 가지고있는데 LCD모듈이 필요하다면 모듈만 따로구입가능한가요?
>
>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>사용하는 센서.
>
>UST_SNR-FSR
>(압력센서)
>
>
>DS18S20
>(온도센서)
>
>
>LC1621-TRNS6
>(캐릭터 LCD)
>
>
>CDS센서(조도 센서)
>CDS CELL(GL5549)
>
|
||||
| 4667 | 답변완료isp mode error 관련 질문입니다. | 주성희 | 2010-03-09 | 1,376 |
|
isp로는 AD-USBISP V03사용하고
칩은 ATmaga8l-8pu 를 사용하고
툴은 AVR studio 를 사용했습니다.
그런데 계속 isp mode error 이 뜨네요 칩을 ATmaga128 로 해봐도 똑같고
소장하는 다른 isp로 해도 똑같은데 이유를 도무지 찾을수가없네요....
테스터기로 확인해봐도 이상은 없어보이고 컴퓨터 까지 바꿔서해봐도 안되네요..
혹여나 여기서 더 확인해봐야 할거나 다른 이유가 있다면 조금이라도 도움이 될수있게
알려드리길 부탁드립니다.
관리자 답변
ISP 선이 지나치게 길다거나,(보통 30-40cm 지만, 상태가 좋으면 1m 정도까지는 정상동작 하더군요.) 만든 AVR 보드의 SCK 라인의 배선이 노이즈에 매우 약하게 배선되어 있거나, 하는 경우가 많습니다. 그리고, 가지고 계신 보드들의 칩들이 모두 정상인지도 확인하셔야 겠구요.
배선이 잘못되면, 일부 그런 경우도 있을 수 있습니다.
가장 좋은 방법은 다른데서 되는 경우에 여기서 안된다면, 무엇이 문제인 지 문제가 확실해 지니까, 그런 식으로 우선적으로 점검해 가는 게 좋겠습니다.
수고하세요.
>isp로는 AD-USBISP V03사용하고
>칩은 ATmaga8l-8pu 를 사용하고
>툴은 AVR studio 를 사용했습니다.
>그런데 계속 isp mode error 이 뜨네요 칩을 ATmaga128 로 해봐도 똑같고
>소장하는 다른 isp로 해도 똑같은데 이유를 도무지 찾을수가없네요....
>테스터기로 확인해봐도 이상은 없어보이고 컴퓨터 까지 바꿔서해봐도 안되네요..
>혹여나 여기서 더 확인해봐야 할거나 다른 이유가 있다면 조금이라도 도움이 될수있게
>알려드리길 부탁드립니다.
|
||||
| 4666 | 답변완료하나기술(RS232C) | 하나기숳 | 2010-03-08 | 1,390 |
|
안녕하세요 다름아니오라
rs232c 을 사용 하려하는데
장치관리자에 USB_seriai N.T.C (COM5)
설치되어 있으면 되나요
AD-USBISP 입니다 그리고 .사용CPU는 ATMEGA8 입니다. 그리고 져이물건에 RS232C IC각 연결이 되어 있어야 하나요
관리자 답변
안녕하세요.
아래는 USBISP 메뉴얼입니다.
http://www.newtc.co.kr/download/AD-USBISP/AD-USBISP_V03.pdf
3번째장에 있는 그림을 보시면 4개핀이 존재합니다.
1. 5VCC <--------------> 타겟보드가 따로 전원을 사용하면 연결 X
2. TXD <--------------> MCU RX
3. RXD <--------------> MCU TX
4. GND <--------------> GND
컴퓨터의 RS232 레벨(약 15볼트)통신이 아닙니다.
3볼트 또는 5볼트 통신입니다. 마이컴에 UART에 바로 붙혀서 사용합니다.
만약 컴퓨터와 컴퓨터간의 통신을 하시다면
컴퓨터1 <-----USBSERIAL + MAX232------------> 컴퓨터2
또는
컴퓨터1 <-----USBSERIAL + USBSERIAL------------> 컴퓨터2
본 게시판은 여러사람이 함께 사용하는 공간으로 본명으로 질문하셔야 답변이 가능합니다.
다음에는 꼭 본명으로 질문하여 주시기 바랍니다.
수고하세요
>안녕하세요 다름아니오라
>rs232c 을 사용 하려하는데
>장치관리자에 USB_seriai N.T.C (COM5)
>설치되어 있으면 되나요
>
>AD-USBISP 입니다 그리고 .사용CPU는 ATMEGA8 입니다. 그리고 져이물건에 RS232C IC각 연결이 되어 있어야 하나요
>
>
|
||||
| 4665 | 답변완료Device ID가 Return 되지 않는다고 메시지가 뜨네요. | 깃발 | 2010-03-08 | 1,564 |
|
AB-M128Pro-A 보드에 JTAG를 연결 하려니 DEVICE ID가 return 되지 않는현상이 발생 하는군요,
어떻게 조치를 해야 하나요.
관리자 답변
안녕하세요 , 고객님.
아래는 JTAGICE 설명서입니다.
http://www.newtc.co.kr/download/AD-JTAG/AVR-JTAG_Ver11.pdf
메뉴얼의 2번째장에 AVRJTAG 사용준비에 관련된 내용있습니다.
거기에 보시면 퓨즈비트를 0xff19EF로 변경해야 사용이 가능합니다.
ISP 라는 다운로드 장비로 FUSEBIT를 변경후 JTAG이 사용이 가능합니다.
본 게시판은 여러사람이 함께 사용하는 공간으로 본명으로 질문하셔야 답변이 가능합니다.
다음에는 꼭 본명으로 질문하여 주시기 바랍니다.
수고하세요
>AB-M128Pro-A 보드에 JTAG를 연결 하려니 DEVICE ID가 return 되지 않는현상이 발생 하는군요,
>
>어떻게 조치를 해야 하나요.
|
||||
| 4664 | 답변완료ATMega 128 라인트레이서 | 강민수 | 2010-03-08 | 1,411 |
|
귀사의 제품중에 KR-SL16이라는 라인트레이서 키트의 경우
ATMega16 기반하여 제작된 것 같습니다.
저의 경우는 ATMega 128을 사용하고자 합니다.
SE-SLT 알미늄 바디 소개 자료에 보면 ATMega128을 이용한 라인트레이서 키트 그림이
소개되고 있는데 제품소개란에는 없습니다.
단지 데모용인지 알고 싶습니다.
제품이 있다면 가격, 소스코드 등등의 정보 부탁합니다.
관리자 답변
안녕하세요
KR-SL16은 MEGA16 기반입니다.
ATMEGA128 로 사용하실려면 PCB사이즈가 동일한 AB-M128-B 이제품이 가능합니다.
라인트레이서
스테핑 라인트레이서 키트 KR-SL16 완제 231,000원
- AVR MEGA 16 개발보드 AB-M16-B -19,800원
+ AB-M128-B +38,500원
AVR 다운로드장비
컴퓨터에 패럴러 포트가없을경우는 아래장비
AVR용 USB-ISP 라이트 AD-USBISP-L 29,700원
MEGA128용 라인트레이서 예제코드는 CD로 제공됩니다.
수고하세요
>귀사의 제품중에 KR-SL16이라는 라인트레이서 키트의 경우
>ATMega16 기반하여 제작된 것 같습니다.
>
>저의 경우는 ATMega 128을 사용하고자 합니다.
>
>SE-SLT 알미늄 바디 소개 자료에 보면 ATMega128을 이용한 라인트레이서 키트 그림이
>소개되고 있는데 제품소개란에는 없습니다.
>단지 데모용인지 알고 싶습니다.
>
>제품이 있다면 가격, 소스코드 등등의 정보 부탁합니다.
|
||||
| 4663 | 답변완료AVRISP mkII Boot 가 없으면. | 문제아 | 2010-03-08 | 1,408 |
|
AVRISP mkII ISP 펌웨어 업데이트 도중 boot가 날라 간것 같습니다.
파워 리섹을 하니 Res/Orange 순으로 LED가 Blinking 되며.
AVR Studio에서 펌웨어 업데이트를 수행하면
no boot image메시지가 나오는데 대처법을 알려 주시면 감사 하겠습니다.
KIT를 구매해서 ISP 연결 하려다가 이런일이 발생 하였네요.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
AVRISP의 펌웨어가 날라갔다는 말씀 같은데요.
본사 제품이 아니라서, 죄송하지만, 저희가 알 수 없는 내용입니다.
제조사로 문의 하시기 바랍니다.
본사에도 유사 제품이 있습니다.
AD-USBISP 라는 제품이 그것인데요, 이 제품의 경우 업그레이드도 본사에서 무상으로 지원하고 있습니다. 이 경우 택배비는 발생할 수 있습니다. A/S 발생시에도 저렴한 비용으로 A/S 가능합니다.
문의 하신 내용은 킷트와는 무관한 내용으로 보입니다.
다른 문의 사항 있으시면, 본사 Q&A로 올려 주시기 바랍니다. 그리고, 본사의 Q&A는 반드시 본명으로 질문하시는 것을 원칙으로 하고 있습니다. 다음엔 꼭 본명으로 질문하여 주시는 에티켓 부탁드립니다.
감사합니다.
>AVRISP mkII ISP 펌웨어 업데이트 도중 boot가 날라 간것 같습니다.
>
>파워 리섹을 하니 Res/Orange 순으로 LED가 Blinking 되며.
>
>AVR Studio에서 펌웨어 업데이트를 수행하면
>
>no boot image메시지가 나오는데 대처법을 알려 주시면 감사 하겠습니다.
>
>KIT를 구매해서 ISP 연결 하려다가 이런일이 발생 하였네요.
>
>
|
||||
| 4662 | 답변완료AB-M128-B에서 ADC문제 | 김영기 | 2010-03-08 | 1,287 |
|
코드는 다음과 같습니다.
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
int out_val;
unsigned char i;
PORTC = 0xff;
DDRC = 0xff;
SREG |= 0x80;
// ADMUX = 0x00; // ADC0를 사용하고 Vref = AREF사용
ADMUX = 0b01000001; // 0x40;ADC0를 사용하고 Vref = AVCC용
ADCSRA = 0x83; // ADEN = 1 , 분주비는 ?
_delay_ms(10);
for(;;)
{
ADCSRA = 0xC7; // ADSC = 1 , 변환시작
while((ADCSRA & 0x10) == 0);
out_val=0;
for(i=0;i<16;i++)
{
out_val+= (int)ADCH*256 + (int)ADCL;
out_val = out_val >> 4; // 16으로 나누어 평균값을 구한다.
}
if ( out_val < 6*1) PORTC =0b11111110;
else if (out_val<6*2) PORTC =0b11111101;
else if (out_val<6*3) PORTC =0b11111011;
else if (out_val<6*4) PORTC =0b11110111;
else if (out_val<6*5) PORTC =0b11101111;
else if (out_val<6*6) PORTC =0b11011111;
else if (out_val<6*7) PORTC =0b10111111;
else if (out_val<6*8) PORTC =0b01111111;
else if (out_val<6*9) PORTC =0b01111110;
else if (out_val<6*10) PORTC =0b01111110;
else if (out_val<6*11) PORTC =0b01111100;
else if (out_val<6*12) PORTC =0b01111000;
else if (out_val<6*13) PORTC =0b01110000;
else if (out_val<6*14) PORTC =0b01000000;
else PORTC =0b00000000;
}
}
위 코드의 의도는 VR을 ADC에 달아 출력 V에 따라 LED로 확인하는 코드입니다.
ARef전원은 보드가 0R으로 VCC에 연결되었다고 보고 5V ADC의 분해도가 1024는 나와야 된다고 봅니다.
그런데, 보시다 시피 6*1 ~ 6.14 범위에 있고, 문제는 VR를 높였다 줄였다하면, 죽어버리는 현상입니다.
Vref문제인지, 알수가 없습니다.
살펴주시기 바랍니다.
관리자 답변
안녕하세요
하드웨어 및 예제 코드에 대해서는 써포트를 하지만
직접 작성 하신 코드에 대해서는 써포트를 하지않고 있습니다.^^;
아래링크는 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
예제 코드 다운로드하여 칩의 adc가 이상 없이 되는지를 확인 하길 바랍니다.
수고하세요
>코드는 다음과 같습니다.
>
>#include <avr/io.h>
>#include <util/delay.h>
>
>int main(void)
> {
> int out_val;
> unsigned char i;
> PORTC = 0xff;
> DDRC = 0xff;
> SREG |= 0x80;
>// ADMUX = 0x00; // ADC0를 사용하고 Vref = AREF사용
> ADMUX = 0b01000001; // 0x40;ADC0를 사용하고 Vref = AVCC용
> ADCSRA = 0x83; // ADEN = 1 , 분주비는 ?
> _delay_ms(10);
>
>
> for(;;)
> {
> ADCSRA = 0xC7; // ADSC = 1 , 변환시작
> while((ADCSRA & 0x10) == 0);
>
> out_val=0;
>
> for(i=0;i<16;i++)
> {
> out_val+= (int)ADCH*256 + (int)ADCL;
> out_val = out_val >> 4; // 16으로 나누어 평균값을 구한다.
> }
>
> if ( out_val < 6*1) PORTC =0b11111110;
> else if (out_val<6*2) PORTC =0b11111101;
> else if (out_val<6*3) PORTC =0b11111011;
> else if (out_val<6*4) PORTC =0b11110111;
> else if (out_val<6*5) PORTC =0b11101111;
> else if (out_val<6*6) PORTC =0b11011111;
> else if (out_val<6*7) PORTC =0b10111111;
> else if (out_val<6*8) PORTC =0b01111111;
> else if (out_val<6*9) PORTC =0b01111110;
> else if (out_val<6*10) PORTC =0b01111110;
> else if (out_val<6*11) PORTC =0b01111100;
> else if (out_val<6*12) PORTC =0b01111000;
> else if (out_val<6*13) PORTC =0b01110000;
> else if (out_val<6*14) PORTC =0b01000000;
>
> else PORTC =0b00000000;
>
>
>
> }
> }
>
>
>
>위 코드의 의도는 VR을 ADC에 달아 출력 V에 따라 LED로 확인하는 코드입니다.
>ARef전원은 보드가 0R으로 VCC에 연결되었다고 보고 5V ADC의 분해도가 1024는 나와야 된다고 봅니다.
>
>그런데, 보시다 시피 6*1 ~ 6.14 범위에 있고, 문제는 VR를 높였다 줄였다하면, 죽어버리는 현상입니다.
>
>Vref문제인지, 알수가 없습니다.
>살펴주시기 바랍니다.
>
>
|
||||
| 4661 | 답변완료lcd질문 입니다! | 이학경 | 2010-03-07 | 1,224 |
|
#define Control PORTB
#define Data PORTD
#define LCD_EN_ON (Control |=0x04)
#define LCD_EN_OFF (Control &=0x0b)
#define LCD_RW_ON (Control |=0x02)
#define LCD_RW_OFF (Control &=0x0d)
#define LCD_RS_ON (Control |=0x01)
#define LCD_RS_OFF (Control &=0x0e)
#define SCR_CLR Write_Controller(0x01)
#define FIR_HOME Write_Controller(0x02)
#define SEC_HOME Write_Controller(0xc0)
#define SCR_L_SHIFT Write_Controller(0x18)
#define SCR_R_SHIFT Write_Controller(0x1c)
#define CUR_LEFT Write_Controller(0x10)
#define CUR_RIGHT Write_Controller(0x14)
void delay(int cnt)
{int i,j;
for(i=0; i<cnt; i++){
for(j=0; j<600; j++);
}}
void Write_Controller(char value)
{
LCD_EN_OFF;
delay(1);
LCD_RS_OFF;
delay(1);
LCD_RW_OFF;
delay(1);
LCD_EN_ON;
delay(1);
Data=value;
delay(1);
LCD_EN_OFF;
delay(1);
}
void Write_Data(char value)
{
LCD_EN_OFF;
delay(1);
LCD_RS_ON;
delay(1);
LCD_RW_OFF;
delay(1);
LCD_EN_ON;
delay(1);
Data=value;
delay(1);
LCD_EN_OFF;
delay(1);
}
void lcd_init(){
Write_Controller(0x38);
Write_Controller(0x0e);
Write_Controller(0x06);
}
void main(){
init_devices();
DDRB=DDRD=0xff;
lcd_init();
SCR_CLR;
FIR_HOME;
Write_Data('H');delay(500);
Write_Data('A');delay(500);
Write_Data('K');delay(500);
Write_Data('-');delay(500);
Write_Data('K');delay(500);
Write_Data('Y');delay(500);
Write_Data('U');delay(500);
Write_Data('N');delay(500);
Write_Data('G');delay(500);
Write_Data(' ');delay(500);
Write_Data('H');delay(500);
Write_Data('e');delay(500);
Write_Data('l');delay(500);
Write_Data('l');delay(500);
Write_Data('o');delay(500);
Write_Data('w');delay(500);
Write_Controller(0xc0);delay(500);
Write_Data('N');delay(500);
Write_Data('E');delay(500);
Write_Data('W');delay(500);
Write_Data(' ');delay(500);
Write_Data('W');delay(500);
Write_Data('O');delay(500);
Write_Data('R');delay(500);
Write_Data('L');delay(500);
Write_Data('D');delay(500);
Write_Data('/');delay(500);
Write_Data('1');delay(500);
Write_Data('0');delay(500);
Write_Data('0');delay(500);
Write_Data('3');delay(500);
Write_Data('0');delay(500);
Write_Data('7');delay(500);
}
///////////////////////////////////////////
위 사이트에서 초보용으로 제공한 lcd소스인데요
맨위의 define 부분에서
#define LCD_EN_ON (Control |=0x04)
#define LCD_EN_OFF (Control &=0x0b)
#define LCD_RW_ON (Control |=0x02)
#define LCD_RW_OFF (Control &=0x0d)
#define LCD_RS_ON (Control |=0x01)
#define LCD_RS_OFF (Control &=0x0e)
이렇게 정의했는데
Control |=, &=
왜 이런식으로 뒤에 =을 붙이는지 모르겠습니다.
그냥 |랑 &만쓰면 안되나해서 해봤는데 안먹더라구요
=이 무슨의미를 갖는건지요...
책보면서 이해할떄는 그냥 &랑 |만 있으면 되겠구나 했거든요
&는 0값을 고정값으로 주고싶을떄 사용하는거고
|는 1값을 고정값으로 주고싶을떄 사용하는거고
여기서도 그렇게 사용한거같은데
다른 dc모터 제어할떄 와 다르게 =을 붙이는지 ,
이게 무슨뜻이고 왜 안붙이면 인식을 못하는지를
모르겠습니다.
그리고
write controller 부분에서
XXXX X000 (en rs rw ->off)
XXXX X100 (en->on, rs,rw->off)
DATA = 0x38 (데이타값 입력)
XXXX X000 (en하강 엣지 부분에서 데이터전달)
이런식으로 진행되는게 맞나요?
제가 재대로 이해한게 맞는지 모르겠습니다
도움 감사드립니다!
관리자 답변
안녕하세요? 이학경 고객님,
질문하시는 내용으로 보아, 타이밍도 관련해서 많은 발전이 있었던 것 같아서, 흐뭇하네요.
Write Controller는 흐름이 그런 식으로 진행되는 게 맞구요.
하지만, 밑에 그 문장만 가지고 되는 게 아니라, 전에 설명한 타이밍도 전체 흐름이 모두 필요한 겁니다. 알고 계신 것 같긴 한데, 혹시나 해서 남겨 봅니다.
그리고, DC 모터 때는 다른 비트들을 DC 모터 에서 사용하지 않으니까 괜찮았지만,
LCD는 여러가지 비트를 사용하기 때문에, 반드시 다른 비트들도 동시에 사용해야 하는 거죠.
그래서, 중간에 다른 비트들의 값이 변하게 되면, 당연히 동작이 안 되겠죠?
그래서, 그 비트만 제어하는 것이 임베디드 쪽에서 많이 사용됩니다.
다시 한 번 아래 링크를 꼼꼼히 읽어 보기 바랍니다.
- 아래 -
http://www.newtc.co.kr/board/view.php?id=faq&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=36
SET, CLEAR 라고 흔히 설명하죠.
SET은 OR 연산을 통해서 특정비트 1을 만드는 것을 말하구요.
CLEAR는 AND 연산을 통해서 특정비트 0을 만드는 것입니다.
수고하세요.
>
>#define Control PORTB
>#define Data PORTD
>
>#define LCD_EN_ON (Control |=0x04)
>#define LCD_EN_OFF (Control &=0x0b)
>#define LCD_RW_ON (Control |=0x02)
>#define LCD_RW_OFF (Control &=0x0d)
>#define LCD_RS_ON (Control |=0x01)
>#define LCD_RS_OFF (Control &=0x0e)
>
>#define SCR_CLR Write_Controller(0x01)
>#define FIR_HOME Write_Controller(0x02)
>#define SEC_HOME Write_Controller(0xc0)
>#define SCR_L_SHIFT Write_Controller(0x18)
>#define SCR_R_SHIFT Write_Controller(0x1c)
>#define CUR_LEFT Write_Controller(0x10)
>#define CUR_RIGHT Write_Controller(0x14)
>
>
>void delay(int cnt)
>{int i,j;
>for(i=0; i<cnt; i++){
>for(j=0; j<600; j++);
>}}
>
>
>void Write_Controller(char value)
>{
>LCD_EN_OFF;
>delay(1);
>LCD_RS_OFF;
>delay(1);
>LCD_RW_OFF;
>delay(1);
>LCD_EN_ON;
>delay(1);
>Data=value;
>delay(1);
>LCD_EN_OFF;
>delay(1);
>}
>
>void Write_Data(char value)
>{
>LCD_EN_OFF;
>delay(1);
>LCD_RS_ON;
>delay(1);
>LCD_RW_OFF;
>delay(1);
>LCD_EN_ON;
>delay(1);
>Data=value;
>delay(1);
>LCD_EN_OFF;
>delay(1);
>}
>
>void lcd_init(){
>Write_Controller(0x38);
>Write_Controller(0x0e);
>Write_Controller(0x06);
>}
>
>
>
>void main(){
>init_devices();
>DDRB=DDRD=0xff;
>lcd_init();
>SCR_CLR;
>FIR_HOME;
>
>Write_Data('H');delay(500);
>Write_Data('A');delay(500);
>Write_Data('K');delay(500);
>Write_Data('-');delay(500);
>Write_Data('K');delay(500);
>Write_Data('Y');delay(500);
>Write_Data('U');delay(500);
>Write_Data('N');delay(500);
>Write_Data('G');delay(500);
>Write_Data(' ');delay(500);
>Write_Data('H');delay(500);
>Write_Data('e');delay(500);
>Write_Data('l');delay(500);
>Write_Data('l');delay(500);
>Write_Data('o');delay(500);
>Write_Data('w');delay(500);
>
>Write_Controller(0xc0);delay(500);
>Write_Data('N');delay(500);
>Write_Data('E');delay(500);
>Write_Data('W');delay(500);
>Write_Data(' ');delay(500);
>Write_Data('W');delay(500);
>Write_Data('O');delay(500);
>Write_Data('R');delay(500);
>Write_Data('L');delay(500);
>Write_Data('D');delay(500);
>Write_Data('/');delay(500);
>Write_Data('1');delay(500);
>Write_Data('0');delay(500);
>Write_Data('0');delay(500);
>Write_Data('3');delay(500);
>Write_Data('0');delay(500);
>Write_Data('7');delay(500);
>}
>
>///////////////////////////////////////////
>
>위 사이트에서 초보용으로 제공한 lcd소스인데요
>
>맨위의 define 부분에서
>#define LCD_EN_ON (Control |=0x04)
>#define LCD_EN_OFF (Control &=0x0b)
>#define LCD_RW_ON (Control |=0x02)
>#define LCD_RW_OFF (Control &=0x0d)
>#define LCD_RS_ON (Control |=0x01)
>#define LCD_RS_OFF (Control &=0x0e)
>
>
>이렇게 정의했는데
>Control |=, &=
>왜 이런식으로 뒤에 =을 붙이는지 모르겠습니다.
>
>그냥 |랑 &만쓰면 안되나해서 해봤는데 안먹더라구요
>
>=이 무슨의미를 갖는건지요...
>
>책보면서 이해할떄는 그냥 &랑 |만 있으면 되겠구나 했거든요
>
>&는 0값을 고정값으로 주고싶을떄 사용하는거고
>|는 1값을 고정값으로 주고싶을떄 사용하는거고
>여기서도 그렇게 사용한거같은데
>
>다른 dc모터 제어할떄 와 다르게 =을 붙이는지 ,
>이게 무슨뜻이고 왜 안붙이면 인식을 못하는지를
>모르겠습니다.
>
>
>그리고
>
>write controller 부분에서
>
>XXXX X000 (en rs rw ->off)
>XXXX X100 (en->on, rs,rw->off)
>DATA = 0x38 (데이타값 입력)
>XXXX X000 (en하강 엣지 부분에서 데이터전달)
>
>이런식으로 진행되는게 맞나요?
>
>제가 재대로 이해한게 맞는지 모르겠습니다
>
>
>도움 감사드립니다!
|
||||
| 4660 | 답변완료AM-DC1-3D모델에서 24V 100W DC모타사용이 가능한지요 | 김영기 | 2010-03-06 | 1,470 |
|
제목데로 입니다.
불가하다면 PWM으로 콘트롤하는 대체 IC좀 소개해 주세요.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사드립니다.
보통 3A 정도까지 이용하는 정도로는 사용 가능하지만, 60W 정도죠.
가끔씩 순간적으로는 100W 모터도 사용 할 수 있지만, 풀토크로 연속적으로 사용하는 것은 모터 구동부가 망가지게 됩니다. 그리고, 이 경우 AM-DC1-3D 모델에서 방열판을 장착하여야 사용이 가능합니다.
따라서, 전체적으로 보면, 사용이 불가하겠습니다.
여러개의 MOSFET + H Bridge controller를 사용하여 컨트롤 하는 것이 좋겠습니다.
정확한 파트넘버까지 찾으려면, 개발 의뢰로 진행하시는 것이 좋겠습니다.
개발 의뢰를 하실 경우 홈페이지 상단의 Contact us 를 선택하시면 이메일로 연결됩니다.
수고하세요.
>제목데로 입니다.
>불가하다면 PWM으로 콘트롤하는 대체 IC좀 소개해 주세요.
>
|
||||
| 4659 | 답변완료안녕하세요 LCD질문 올립니다. | 이학경 | 2010-03-05 | 1,441 |
|
안녕하세요. 이제막 입문한 초보입니다.
다름이 아니라 avr키트를 구매하고 이걸 lcd에 연결하여 공부를 하고잇는데요
초보 강좌에서 제공한 소스
=============
#include <iom128v.h>
#include <macros.h>
//LCD define//
#define Control PORTB
#define Data PORTC
#define LCD_EN_ON (Control |=0x04)
#define LCD_EN_OFF (Control &=0x0b)
#define LCD_RW_ON (Control |=0x02)
#define LCD_RW_OFF (Control &=0x0d)
#define LCD_RS_ON (Control |=0x01)
#define LCD_RS_OFF (Control &=0x0e)
#define SCR_CLR Write_Controller(0x01)
#define FIR_HOME Write_Controller(0x02)
#define SEC_HOME Write_Controller(0xc0)
#define SCR_L_SHIFT Write_Controller(0x18)
#define SCR_R_SHIFT Write_Controller(0x1c)
#define CUR_LEFT Write_Controller(0x10)
#define CUR_RIGHT Write_Controller(0x14)
void delay(int cnt)
{int i,j;
for(i=0; i<cnt; i++){
for(j=0; j<600; j++);
}}
void Write_Controller(char value)
{
LCD_EN_OFF;
delay(1);
LCD_RS_OFF;
delay(1);
LCD_RW_OFF;
delay(1);
LCD_EN_ON;
delay(1);
Data=value;
delay(1);
LCD_EN_OFF;
delay(1);
}
void Write_Data(char value)
{
LCD_EN_OFF;
delay(1);
LCD_RS_ON;
delay(1);
LCD_RW_OFF;
delay(1);
LCD_EN_ON;
delay(1);
Data=value;
delay(1);
LCD_EN_OFF;
delay(1);
}
void lcd_init(){
Write_Controller(0x38);
Write_Controller(0x0e);
Write_Controller(0x06);
}
void main(){
init_devices();
DDRB=DDRC=0xff;
lcd_init();
SCR_CLR;
FIR_HOME;
Write_Data('H');
Write_Data('i');
Write_Controller(0xc0);
Write_Data('H');
Write_Data('A');
Write_Data('K');
Write_Data(' ');
Write_Data('J');
Write_Data('I');
Write_Data('N');
}
==============================
중에서 이해가 안되는 부분이 있어서 질문 드립니다.
void Write_Controller(char value)
{
LCD_EN_OFF;
delay(1);
LCD_RS_OFF;
delay(1);
LCD_RW_OFF;
delay(1);
LCD_EN_ON;
delay(1);
Data=value;
delay(1);
LCD_EN_OFF;
delay(1);
}
바로 이부분인데요
LCD_EN_OFF; -> 여기서 위의 #define에 적용한 값을 불러오게되면
(Control &=0x0b)값이 되고
control도 #define Control PORTB라고 했으니
결국 대입하면 PORTB&=0x0b가 되는거 아닙니까?
이게 어떤 의미를 갖는건지 이해가 되질 않습니다.
왜 굳이 이렇게 어렵게 써야하는지
이게 무슨뜻인지를 아에 모르겠습니다....
어떤걸 공부해야 할수있을까요
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
(and)&와 (or)| 연산을 통하여 그런 식으로 하는 것은,
그 특정 비트만 제어하기 위해서 사용하는 겁니다. 다른 비트의 값은 안건드리는 거죠.
아래를 참고해 보세요. 임베디드에서 사용하는 거라서, 일반 C 사용하는 분들은 잘 안쓰는 기능이긴 하죠. 하지만, 임베디드 쪽에서 익숙해 지시려면, 이렇게 쓰셔야 합니다.
#define 선언하는 것은 사실 함수로 쓸 수도 있는 데, 왜 define으로 굳이 하는 지 궁금하지 않으세요? 일단, 연산 속도가 매우 빠릅니다. 그 외에도 사용하기가 편리하구요. 일일이 계산할 필요가 없으니까요. 컴파일된 결과도 작게 만들수 있으니까요.
- 아래 -
http://www.newtc.co.kr/board/view.php?id=faq&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=36
수고하세요.
>안녕하세요. 이제막 입문한 초보입니다.
>
>다름이 아니라 avr키트를 구매하고 이걸 lcd에 연결하여 공부를 하고잇는데요
>
>초보 강좌에서 제공한 소스
>
>=============
>#include <iom128v.h>
>#include <macros.h>
>
>//LCD define//
>
>#define Control PORTB
>#define Data PORTC
>
>#define LCD_EN_ON (Control |=0x04)
>#define LCD_EN_OFF (Control &=0x0b)
>#define LCD_RW_ON (Control |=0x02)
>#define LCD_RW_OFF (Control &=0x0d)
>#define LCD_RS_ON (Control |=0x01)
>#define LCD_RS_OFF (Control &=0x0e)
>
>#define SCR_CLR Write_Controller(0x01)
>#define FIR_HOME Write_Controller(0x02)
>#define SEC_HOME Write_Controller(0xc0)
>#define SCR_L_SHIFT Write_Controller(0x18)
>#define SCR_R_SHIFT Write_Controller(0x1c)
>#define CUR_LEFT Write_Controller(0x10)
>#define CUR_RIGHT Write_Controller(0x14)
>
>
>void delay(int cnt)
>{int i,j;
>for(i=0; i<cnt; i++){
>for(j=0; j<600; j++);
>}}
>
>
>void Write_Controller(char value)
>{
>LCD_EN_OFF;
>delay(1);
>LCD_RS_OFF;
>delay(1);
>LCD_RW_OFF;
>delay(1);
>LCD_EN_ON;
>delay(1);
>Data=value;
>delay(1);
>LCD_EN_OFF;
>delay(1);
>}
>
>void Write_Data(char value)
>{
>LCD_EN_OFF;
>delay(1);
>LCD_RS_ON;
>delay(1);
>LCD_RW_OFF;
>delay(1);
>LCD_EN_ON;
>delay(1);
>Data=value;
>delay(1);
>LCD_EN_OFF;
>delay(1);
>}
>
>void lcd_init(){
>Write_Controller(0x38);
>Write_Controller(0x0e);
>Write_Controller(0x06);
>}
>
>void main(){
>init_devices();
>DDRB=DDRC=0xff;
>lcd_init();
>SCR_CLR;
>FIR_HOME;
>Write_Data('H');
>Write_Data('i');
>Write_Controller(0xc0);
>Write_Data('H');
>Write_Data('A');
>Write_Data('K');
>Write_Data(' ');
>Write_Data('J');
>Write_Data('I');
>Write_Data('N');
>}
>
>==============================
>
>중에서 이해가 안되는 부분이 있어서 질문 드립니다.
>
>void Write_Controller(char value)
>{
>LCD_EN_OFF;
>delay(1);
>LCD_RS_OFF;
>delay(1);
>LCD_RW_OFF;
>delay(1);
>LCD_EN_ON;
>delay(1);
>Data=value;
>delay(1);
>LCD_EN_OFF;
>delay(1);
>}
>바로 이부분인데요
>
>LCD_EN_OFF; -> 여기서 위의 #define에 적용한 값을 불러오게되면
>
>(Control &=0x0b)값이 되고
>
>control도 #define Control PORTB라고 했으니
>
>결국 대입하면 PORTB&=0x0b가 되는거 아닙니까?
>
>이게 어떤 의미를 갖는건지 이해가 되질 않습니다.
>
>왜 굳이 이렇게 어렵게 써야하는지
>이게 무슨뜻인지를 아에 모르겠습니다....
>
>어떤걸 공부해야 할수있을까요
|
||||
| 4658 | 답변완료AVR Studio4에서 usbisp 사용하는데 다운로딩이 이상합니다. | 이학경 | 2010-03-05 | 1,362 |
|
여차여차 해서 usbisp와 avr키트를 연결해서 소스를 입력하려고하는데
이놈이 웃긴게
알트+f7을 누르면 바로 소스가 입력되서 적용이안되고
알트+f7을 누른후에 tool매뉴의 connect에서 hex파일을 program해주어야만 적용이됩니다.
.... 난감한데 도움좀 주세요
왜이렇게 되는걸까요
바로 알트+f7누르면 적용되게는 못하나요?
관리자 답변
안녕하세요? 고객님,
저도 예전에 시도해 보았었는 데, 방법이 없는 것 같더군요.
VC++ 같은 곳에서는 단축키 누르면 컴파일만 시킬 수도 있고, 컴파일 후 바로 다운로드 되는 것도 있는 데, AVR Studio에서는 어떤 것일까 하는 거였죠. 질문이 맞나요? 질문 내용을 무슨 말인지 파악하려고 대략 10번 정도 읽어 봤습니다. 다음에는 자세히 남겨 주시면 좋겠네요. 옆에서 보고 있는 게 아니니까요. AVR Studio는 컴파일러가 아니고, WinAVR의 컴파일러를 AVR Studio가 링크 시켜서 사용하는 것이라서, 두가지를 연동해 놓지는 않은 듯 합니다.
제가 질문을 잘못 파악하여 잘못 알고 있는 것일 수도 있으니, 혹시 알게되면, 답글 남겨 주세요.
수고하세요.
>여차여차 해서 usbisp와 avr키트를 연결해서 소스를 입력하려고하는데
>
>이놈이 웃긴게
>
>알트+f7을 누르면 바로 소스가 입력되서 적용이안되고
>
>알트+f7을 누른후에 tool매뉴의 connect에서 hex파일을 program해주어야만 적용이됩니다.
>
>.... 난감한데 도움좀 주세요
>
>왜이렇게 되는걸까요
>
>
>바로 알트+f7누르면 적용되게는 못하나요?
|
||||
| 4657 | 답변완료JTAG V1.1을 가지고있습니다.. 뭐좀 여쭤보고싶네요.. | 이근후 | 2010-03-05 | 1,363 |
|
RS232에 연결했을시에 빨간 불이 들어와야하나요..?
제껀 들어오질않아서;;;
AVR Studio V4.18에서 사용예정입니다..
avr studio에서 설정을 어떻게 해야하는지좀 알려주세요..
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
아래와 같이 이용하시면 됩니다.
- 아래 -
http://www.newtc.co.kr/board/view.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=jtag&select_arrange=headnum&desc=asc&no=298
LED 관련해서는 두개가 있는 데, 하나는 타겟 보드와 연결되면 불이 들어오구요.
나머지 하나는 프로그램과 연결되서 로드 되면 들어오게 됩니다.
수고하세요.
>
>
>RS232에 연결했을시에 빨간 불이 들어와야하나요..?
>
>제껀 들어오질않아서;;;
>
>AVR Studio V4.18에서 사용예정입니다..
>
>avr studio에서 설정을 어떻게 해야하는지좀 알려주세요..
|
||||
| 4656 | 답변완료AVR Studio4에서 usbisp 사용하는방법 | 이학경 | 2010-03-05 | 1,277 |
|
기본 128키트와 usbisp를 여기서 구매한 사람입니다.
avr studio4에서 usbisp를 이용하고싶은데
어떻게 해야하는지 가르쳐주실수 있는지요
관리자 답변
안녕하세요
아래 링크는 USBISP 사용법에 관한 메뉴얼 입니다.
컴파일별로 있습니다. 참조하시고요
http://www.newtc.co.kr/board/data/faq/AD_USBISP_V03_사용법.pdf
기본예제는 자료실에 있습니다.
초보자이시면 강좌를 보시면서 학습하시길 바랍니다.^^
수고하세요
>기본 128키트와 usbisp를 여기서 구매한 사람입니다.
>
>avr studio4에서 usbisp를 이용하고싶은데
>
>어떻게 해야하는지 가르쳐주실수 있는지요
|
||||
| 4655 | 답변완료아답터 잭의 크기에 대해서... | 이승철 | 2010-03-04 | 1,426 |
|
NTC의 아답터 잭을 보면 J609라고 되어있는데요
인터넷을 뒤지면 J709나 J609는 팔지 않고
DC-012 2파이
이런식으로 써있습니다.
J609가 뜻하는 바가 무엇인지
그리고 그 구경의 크기가 2파이인지 2,5파인지에 대해
알려주세요;;
관리자 답변
안녕하세요? 고객님,
저희 (주)뉴티씨 제품을 이용하여 주셔서 감사합니다.
본사에서 사용하는 아답타 잭은 DC-005(내경 2.0)입니다.
국내 유통되는 대부분의 아답타 들이 2파이를 지원합니다.
J609는 커넥터로 회로도 상에서 사용하는 식별번호입니다.
PCB 상에는 실크 스크린으로 J609 이런 식으로 써 있지요.
저항이면 R100 머 이런 식으로 쓰여지게 됩니다.
감사합니다.
>NTC의 아답터 잭을 보면 J609라고 되어있는데요
>
>인터넷을 뒤지면 J709나 J609는 팔지 않고
>
>DC-012 2파이
>
>이런식으로 써있습니다.
>
>J609가 뜻하는 바가 무엇인지
>
>그리고 그 구경의 크기가 2파이인지 2,5파인지에 대해
>
>알려주세요;;
>
>
|
||||
| 4654 | 답변완료KR-DL16-S 이 제품을 샀는데요 물어볼것이 있어서요 | 김진욱 | 2010-03-04 | 1,378 |
|
KR-DL16-S 이 제품의
부품 목록을 알 수가 없어서요
부품 목록좀 얻을 수 있을까요?
관리자 답변
안녕하세요
아래 링크는 사용자 메뉴얼입니다. 안에 부품리스트가 포함되어 있습니다.
http://www.newtc.co.kr/board/data/pds/1152807925/KR_DL16_(DC모터_라인트레이서)_사용자_메뉴얼.pdf
수고하세요.
>KR-DL16-S 이 제품의
>
>부품 목록을 알 수가 없어서요
>
>부품 목록좀 얻을 수 있을까요?
|
||||
