Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 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에서 동작되는 전환 케이블 추천 부탁드립니다.
|
||||
| 6098 | 답변완료AVR Atmega pro 사용하고 있는데요~~오류 문의좀 드릴께요~ | 박규수 | 2011-01-31 | 1,481 |
|
AD_USBISP 를 사용해서 예제프로그램을 올리는 도중에 오류가 나서요...
ICCAVR에서 메뉴얼따라서 포트설정하고 ISP Option에서 STK500경로설정도 다했구요..
나머지도 메뉴얼따라 잘진행하였습니다. 그리고 나서 예제프로그램을 올려보려고
1.Cannot program or verify Flash 오류가 나네요..
2.FuseBit의 R버튼을 누르면 경고메시지가 아래와같이 나타나는데 어떤 의미인지 잘
모르겠습니다..
Avrstudio와 Codevision에서도 실행시켜보았는데 잘안되네요.
3.avr studio에서는 ISP mode Error가나네요~~ Q&A찾아보니 칩이 날아간현상이라고 하던데
칩은 USB 포트 연결하면 기본 프로그램 잘 동작하고 있는 상태입니다..
오늘 키트 받았는데 동작이 잘안되네요..ㅜ 바쁘시겠지만 빠른 답변 부탁드릴께요~~~~~~~~
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
제가 봐도 뭔가 문제가 생긴 것 같습니다. 본사로 보내서, 점검 받으시는 게 좋겠습니다.
2.1-2.6일까지는 설 휴가 기간입니다. 죄송하지만, 그 이후에 본사로 보내주시면 바로 체크하여 보내드리도록 하겠습니다.
감사합니다.
>
>AD_USBISP 를 사용해서 예제프로그램을 올리는 도중에 오류가 나서요...
>
>ICCAVR에서 메뉴얼따라서 포트설정하고 ISP Option에서 STK500경로설정도 다했구요..
>
>나머지도 메뉴얼따라 잘진행하였습니다. 그리고 나서 예제프로그램을 올려보려고
>
>1.Cannot program or verify Flash 오류가 나네요..
>
>2.FuseBit의 R버튼을 누르면 경고메시지가 아래와같이 나타나는데 어떤 의미인지 잘
>
>모르겠습니다..
>
>Avrstudio와 Codevision에서도 실행시켜보았는데 잘안되네요.
>
>3.avr studio에서는 ISP mode Error가나네요~~ Q&A찾아보니 칩이 날아간현상이라고 하던데
>칩은 USB 포트 연결하면 기본 프로그램 잘 동작하고 있는 상태입니다..
>
>오늘 키트 받았는데 동작이 잘안되네요..ㅜ 바쁘시겠지만 빠른 답변 부탁드릴께요~~~~~~~~
|
||||
| 6097 | 답변완료문의 드립니다. | 김유승 | 2011-01-31 | 1,345 |
|
제가 하는일이 배터리 재생을 하고 있는데 실시간을 상태를 파악하기 위한 방법을 고민하다 문의를 드려봅니다
매초당 흐르는 전류, 전압을 컴퓨터로 전송하는 장치를 만들고 싶습니다.
매인전압 직류 약60V 매인전류 약 50~200A를 상시 초단위로 컴퓨터로 전송 받고 싶습니다.
그리고 부가적으로 약24개 배터리를 직렬로 연결해 쓰는데 각 배터리의 전압도 알고 싶습니다.
위 사항을 채크하는 키트를 만들려면 어디서 부터 어떻게 공부하면 할수 있을지
자문을 부탁드립니다.
AVR ... 봐도 무슨 말인지.... 암튼 공부 시자갛고 싶은데.. 어떻게 하면 될지 길을 좀 알려 주시기 바랍니다.
고맙습니다.
관리자 답변
안녕하세요? 고객님,
일단, 전압의 경우, 스케일링을 하는 회로를 작성해서, PEAK치가 0~5V 사이로 들어가도록 시그널 컨디셔닝을 하신 후에, ADC (Analog Digital Converting) 해서 AVR에서 받으면 되겠구요.
방법은 간단하게는 저항분배 부터, 좋은 회로는 OPAMP 회로까지 다양하겠구요. 관련 서적은 교보 같은데 가서 찾아 보시면 많이 있습니다. 인터넷도 있지만, 좋은 회로들은 역시 책에 많은 것 같습니다.
그리고, 전류는 전류 센서들이 많이 나오니까, 전류 센서를 달아서 측정하여 보는 방법이 가장 좋겠습니다. 전류 센서 검색하면 많이 나옵니다. 선에 붙이거나 감아서 쓰는 타입이 일반적이니, 찾아서 사용하시면 되겠습니다.
각 베터리의 전압도 마찬가지로 위에 말씀드린 방법으로 알면 됩니다.
강좌->AVR 강좌에 가면 강의록 이라는 최근의 강좌들이 있으니, 참고하셔서 공부하시고, 자료실->기존 자료실에 각종 소스들이 많이 있으니, 공부하시면 됩니다.
본사까페에도 가입해서, 여러가지 자료들을 받아 보시면 도움이 되겠습니다.
AVR 첨 하시는 거라면, 전혀 감이 안오신다면 강좌->동영상 강좌를 보시면 됩니다.
KD-128PRO-C 킷트가 가장 공부하기 편리합니다.
수고하세요.
>제가 하는일이 배터리 재생을 하고 있는데 실시간을 상태를 파악하기 위한 방법을 고민하다 문의를 드려봅니다
>매초당 흐르는 전류, 전압을 컴퓨터로 전송하는 장치를 만들고 싶습니다.
>매인전압 직류 약60V 매인전류 약 50~200A를 상시 초단위로 컴퓨터로 전송 받고 싶습니다.
>그리고 부가적으로 약24개 배터리를 직렬로 연결해 쓰는데 각 배터리의 전압도 알고 싶습니다.
>
>위 사항을 채크하는 키트를 만들려면 어디서 부터 어떻게 공부하면 할수 있을지
>
>자문을 부탁드립니다.
>AVR ... 봐도 무슨 말인지.... 암튼 공부 시자갛고 싶은데.. 어떻게 하면 될지 길을 좀 알려 주시기 바랍니다.
>
>고맙습니다.
>
|
||||
| 6096 | 답변완료AVR studio와 ISP연결에 질문이 있습니다. | 전희균 | 2011-01-30 | 1,356 |
|
윈도우7에 64비트인 노트북인지라, ISP드라이버문제를
해결하는데 처음부터 어려움이 있었습니다. 뭐 이건 해결했는데,
문제는 다음이더라고요.
드라이버 인식도 옳바르게되고, ISP의 USB포트를 연결해
AVR로 하는데 여기까진 순조롭습니다. 그런데 이제
프로그램을 아트메가로 전송하거나, 퓨즈설정에서 문제점이 발생했습니다.
이곳 회사에서 공개해주신 PDF파일의 그 설명서를 읽어가면서 퓨즈설정을
했지만, 그래도 역시 오류가 나옵니다. 어떤 오류인지 사진으로 첨부했습니다.
1번사진에서 왼쪽은 설명서 파일에 나와있는데로 퓨즈설정에서
"0xFFD9EF"로 설정했을때의 상황입니다
오른쪽은 처음 ISP를 연결하고 바로 퓨즈메뉴를 눌렀을때의 모습입니다.
2번사진은 헥스 파일을 불러와 프로그램을 눌러줬을때의 오류입니다.
제가 사용하는 모듈은
아트메가 : AM-2561PRO
ISP : AD-USBISP-L
제가 아직 초보인만큼 문제점이 뭔지 정확히 모르겠고 아무리 인터넷을
뒤져봐 나오지 않아 답답한 마음에 이렇게 글을 쓰게 되었습니다.
답변 주시면 정말 감사합니다.
관리자 답변
안녕하세요? 고객님,
고생이 많으시네요. 드라이버는 잘 설치하신 것 같습니다.
그런데, 모듈에 퓨즈비트가 잘못 Write되어 모듈이 망가진게 아닌가 싶습니다.
인공호흡을 해서 살려주시면 됩니다.
1MHz ~4MHz 오실레이터(5V 전원 넣어주는 타입)를 XTAL1에 입력하시고, 퓨즈를 정상적으로 다시 입력해 주세요. 그럼, 잘 될겁니다. 안되면, 본사로 다시 문의하시기 바랍니다.
요즘에 택배가 구정 관계로 원활하지가 않음을 양해 바랍니다.
수고하세요.
>윈도우7에 64비트인 노트북인지라, ISP드라이버문제를
>해결하는데 처음부터 어려움이 있었습니다. 뭐 이건 해결했는데,
>문제는 다음이더라고요.
>
>드라이버 인식도 옳바르게되고, ISP의 USB포트를 연결해
>AVR로 하는데 여기까진 순조롭습니다. 그런데 이제
>
>프로그램을 아트메가로 전송하거나, 퓨즈설정에서 문제점이 발생했습니다.
>이곳 회사에서 공개해주신 PDF파일의 그 설명서를 읽어가면서 퓨즈설정을
>했지만, 그래도 역시 오류가 나옵니다. 어떤 오류인지 사진으로 첨부했습니다.
>
>1번사진에서 왼쪽은 설명서 파일에 나와있는데로 퓨즈설정에서
>"0xFFD9EF"로 설정했을때의 상황입니다
>오른쪽은 처음 ISP를 연결하고 바로 퓨즈메뉴를 눌렀을때의 모습입니다.
>2번사진은 헥스 파일을 불러와 프로그램을 눌러줬을때의 오류입니다.
>
>제가 사용하는 모듈은
>아트메가 : AM-2561PRO
>ISP : AD-USBISP-L
>
>제가 아직 초보인만큼 문제점이 뭔지 정확히 모르겠고 아무리 인터넷을
>뒤져봐 나오지 않아 답답한 마음에 이렇게 글을 쓰게 되었습니다.
>답변 주시면 정말 감사합니다.
|
||||
| 6095 | 답변완료USBISP-L 드라이버설치오류 | 노현석 | 2011-01-28 | 1,307 |
|
USBISPV03_For_Win7[1] 설치후 장치오류로 나와서
CP210x_VCP_Win2K_XP_S2K3.exe를 설치해는데도 장치오류가 해결이 안됩니다.
캡쳐해서 보내드리오니 참고하세요.
해당드라이버를 올려주시든지 메일로보내주시면 감사하겟습니다.
관리자 답변
안녕하세요? 고객님,
Win7의 경우 32비트냐, 64비트냐에 따라서, 드라이버가 다릅니다.
꼭 확인하셔서 하여야 합니다. 32비트의 경우에는 그냥 아래의 드라이버만 깔면 되지만,
64비트의 경우에는 해야할 일이 많습니다. 하기 어려우시다면, 본사로 보내주시거나 방문하여 주시기 바랍니다. 요즘은 설 시즌으로 택배 배송이 원활하지 않으므로, 가능하면, 내일(29일, 금요일)이나 31일(월)날 방문하셔서 하시는 게 좋겠습니다. 본사가 2.1 - 2.6일까지는 설 휴가 기간입니다.
그 안에 처리해야 처리가 가능합니다. 특별한 명절이므로, 이해하여 주시기 발바니다.
혹시, 그 이후에 하시게 되면, 설 이후에나 처리가 가능합니다. 명절로 전 직원들이 출근하지 않는 관계로 이해 바랍니다.
- 32비트의 경우 -
http://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=34
-64비트의 경우-
http://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=41
감사합니다.
>USBISPV03_For_Win7[1] 설치후 장치오류로 나와서
>CP210x_VCP_Win2K_XP_S2K3.exe를 설치해는데도 장치오류가 해결이 안됩니다.
>캡쳐해서 보내드리오니 참고하세요.
>해당드라이버를 올려주시든지 메일로보내주시면 감사하겟습니다.
|
||||
| 6094 | 답변완료AT M128 Fuse bit 설정이 안되요.. | 박종관 | 2011-01-28 | 1,306 |
|
올려주신 동영상강의랑 pdf자료 보고 그대로 따라하면서
거기서 알려주신 값을 넣었는데 W를 누르면
cannot open LPT1
please report to imagecraft, load driver message
라고 뜨네요;;
어떻게 해야되죠??
관리자 답변
안녕하세요
에러 메세지는 패럴러 방식의 ISP가 없다고 나오는 군요.
ISP종류에 따라 퓨즈셋팅 방법이 틀립니다.
다음부터는 사용하는 장비들의 명칭을 기입해 주시길 바랍니다.
USBISP일 경우 아래 링크를 참조하세요
http://www.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=27
수고하세요
>올려주신 동영상강의랑 pdf자료 보고 그대로 따라하면서
>
>거기서 알려주신 값을 넣었는데 W를 누르면
>
>cannot open LPT1
>please report to imagecraft, load driver message
>
>라고 뜨네요;;
>
>어떻게 해야되죠??
|
||||
