Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 3248 | 답변완료stepping motor 관련 | 최명수 | 2009-07-01 | 1,412 |
|
수고하십니다.
현재 귀사의 AB-M16-B를 사용하고 있습니다만,
보내드린 소스에서 모타의 스피드를 높이고 싶은데요...
더이상 속도가 올릴 수 가 없어서 도움을 청합니다.
현재보다 5배 정도 속도를 올리고 싶은데요,
value 값을 0xFF 이상 올릴수가 없어서요...
부탁합니다.
감사합니다
//ICC-AVR application builder : 2009-02-25 오전 10:19:16
// Target : M16
// Crystal: 16.000Mhz
#include <iom16v.h>
#include <macros.h>
#define Motor PORTC
//volatile unsigned int Count=0, ;
volatile unsigned char Step=0, Value=0x77, Input=0, Status=0;
unsigned char RBACK[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
unsigned char RGO[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
unsigned char LGO[8]={0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90};
unsigned char LBACK[8]={0x90,0x80,0xc0,0x40,0x60,0x20,0x30,0x10};
void port_init(void)
{
PORTA = 0xff;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00; //m103 output only
DDRC = 0xFF;
PORTD = 0x00;
DDRD = 0x00;
}
//TIMER0 initialize - prescale:256
// WGM: Normal
// desired value: 1KHz
// actual value: 1.008KHz (0.8%)
void timer0_init(void)
{
TCCR0 = 0x00; //stop
TCNT0 = 0xf0; //set count
OCR0 = 0x10; //set compare
TCCR0 = 0x03; //start timer
}
//#pragma interrupt_handler timer0_ovf_isr:10
//#pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
#pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
void timer0_ovf_isr(void)
{
TCNT0 = Value; //reload counter value
switch(Status){
case 1: Motor = RGO[Step]|LGO[Step]; break;
case 2: Motor = RBACK[Step]|LBACK[Step]; break;
case 3: Motor = RGO[Step]|LBACK[Step]; break;
case 4: Motor = RBACK[Step]|LBACK[Step]; break;
default : break;
}
Step++;
if(Step>7) Step=0;
Input = ~PINA;
switch(Input){
//printf("[0x%x]",Input);
case 0x01:
Status=0;
Motor = 0xff;
break;
case 0x02:
Status=0;
Motor = 0x11;
break;
case 0x04: Status=1; break;
case 0x08: Status=2; break;
case 0x10: Value=0x11; break;
case 0x20: Value=0x77; break;
case 0x40: Value=0xC2; break;
case 0x80: Value=0xff; break;
default : break;
}
}
//UART0 initialize
// desired baud rate: 115200
// actual: baud rate:111111 (3.7%)
// char size: 8 bit
// parity: Disabled
void uart0_init(void)
{
UCSRB = 0x00; //disable while setting baud rate
UCSRA = 0x00;
UCSRC = BIT(URSEL) | 0x06;
UBRRL = 0x08; //set baud rate lo
UBRRH = 0x00; //set baud rate hi
UCSRB = 0x18;
}
//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
port_init();
timer0_init();
//uart0_init();
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x01; //timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
//
void main(void)
{
init_devices();
// printf("****");
while(1){
}
}
관리자 답변
안녕하세요?
타이머를 하나만 쓰시는 것 같은데,
타이머 두개로 분할하여 나누어 사용하면 속도를 올려 쓸 수 있을 것 같네요.
수고하세요.
>수고하십니다.
>현재 귀사의 AB-M16-B를 사용하고 있습니다만,
>보내드린 소스에서 모타의 스피드를 높이고 싶은데요...
>더이상 속도가 올릴 수 가 없어서 도움을 청합니다.
>현재보다 5배 정도 속도를 올리고 싶은데요,
>value 값을 0xFF 이상 올릴수가 없어서요...
>부탁합니다.
>감사합니다
>
>
>
>//ICC-AVR application builder : 2009-02-25 오전 10:19:16
>// Target : M16
>// Crystal: 16.000Mhz
>
>#include <iom16v.h>
>#include <macros.h>
>
>#define Motor PORTC
>
>//volatile unsigned int Count=0, ;
>volatile unsigned char Step=0, Value=0x77, Input=0, Status=0;
>
>unsigned char RBACK[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
>unsigned char RGO[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
>unsigned char LGO[8]={0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90};
>unsigned char LBACK[8]={0x90,0x80,0xc0,0x40,0x60,0x20,0x30,0x10};
>
>void port_init(void)
>{
> PORTA = 0xff;
> DDRA = 0x00;
> PORTB = 0x00;
> DDRB = 0x00;
> PORTC = 0x00; //m103 output only
> DDRC = 0xFF;
> PORTD = 0x00;
> DDRD = 0x00;
>}
>
>//TIMER0 initialize - prescale:256
>// WGM: Normal
>// desired value: 1KHz
>// actual value: 1.008KHz (0.8%)
>void timer0_init(void)
>{
> TCCR0 = 0x00; //stop
> TCNT0 = 0xf0; //set count
> OCR0 = 0x10; //set compare
> TCCR0 = 0x03; //start timer
>}
>
>//#pragma interrupt_handler timer0_ovf_isr:10
>//#pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
>#pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
>void timer0_ovf_isr(void)
>{
> TCNT0 = Value; //reload counter value
> switch(Status){
> case 1: Motor = RGO[Step]|LGO[Step]; break;
> case 2: Motor = RBACK[Step]|LBACK[Step]; break;
> case 3: Motor = RGO[Step]|LBACK[Step]; break;
> case 4: Motor = RBACK[Step]|LBACK[Step]; break;
> default : break;
> }
> Step++;
> if(Step>7) Step=0;
> Input = ~PINA;
> switch(Input){
> //printf("[0x%x]",Input);
> case 0x01:
> Status=0;
> Motor = 0xff;
> break;
> case 0x02:
> Status=0;
> Motor = 0x11;
>
> break;
> case 0x04: Status=1; break;
> case 0x08: Status=2; break;
> case 0x10: Value=0x11; break;
> case 0x20: Value=0x77; break;
> case 0x40: Value=0xC2; break;
> case 0x80: Value=0xff; break;
> default : break;
> }
>
>}
>
>//UART0 initialize
>// desired baud rate: 115200
>// actual: baud rate:111111 (3.7%)
>// char size: 8 bit
>// parity: Disabled
>void uart0_init(void)
>{
> UCSRB = 0x00; //disable while setting baud rate
> UCSRA = 0x00;
> UCSRC = BIT(URSEL) | 0x06;
> UBRRL = 0x08; //set baud rate lo
> UBRRH = 0x00; //set baud rate hi
> UCSRB = 0x18;
>}
>
>//call this routine to initialize all peripherals
>void init_devices(void)
>{
> //stop errant interrupts until set up
> CLI(); //disable all interrupts
> port_init();
> timer0_init();
> //uart0_init();
>
> MCUCR = 0x00;
> GICR = 0x00;
> TIMSK = 0x01; //timer interrupt sources
> SEI(); //re-enable interrupts
> //all peripherals are now initialized
>}
>
>//
>void main(void)
>{
> init_devices();
>// printf("****");
> while(1){
>
> }
>
>}
>
|
||||
| 3247 | 답변완료질문 | 신상훈 | 2009-07-01 | 1,365 |
|
3축 마우스 예제 소스(구버전)를 공부하고 있습니다.
가속도 센서의 x, y축의 전압 출력값을 측정해보니
-90도: 0.8v
0도: 1.6v
90도: 2.4v
대략 이렇게 나왔습니다.
이 값들이 다음의 adc과정을 거치게 되는데
ADCSRA &= 0x7f;
ADMUX = 0x40;
ADCSRA |= 0xC0;
while((ADCSRA & 0x10) != 0x10);
al2 = ADCL;
ah2 = ADCH;
ch2 += al2+ah2*256;
어떤식으로 계산해서 ADCL값과 ADCH값을 구할 수 있는지 궁금합니다.
책을 보니 0.8V이면 0100, 1.0V이면 0101 이런식으로 된다고 하는데 뭔가 설명이 부족합니다.
자세한 설명 부탁립니다.
관리자 답변
안녕하세요?
ADC 하기 전에 ADC 관련 환경 설정을 하게 됩니다.
즉, 채널 선택하고, 2바이트에 데이터 10비트를 받게 될 때 좌측 정렬해서 10비트를 받을 건지, 우측 정렬해서 10비트를 받을 건지 선택하고, 데이터를 받아서 처리하고, 다시 채널 변경하여 다시 받고, 그런 식으로 하게 되겠지요.
그 값이 0~5V가 int 형으로 받으면 0~1024의 값에 대응하겠지요?
그 값을 전압으로 환산할 수 있으니까, 비교하면 g 값이 나오게 되지요.
ADC 관련된 내용이 궁금한 것 같은데, 강좌->AVR 강좌의 ADC 강좌를 참고하세요.
수고하세요.
>3축 마우스 예제 소스(구버전)를 공부하고 있습니다.
>
>가속도 센서의 x, y축의 전압 출력값을 측정해보니
>
>-90도: 0.8v
> 0도: 1.6v
> 90도: 2.4v
>
>대략 이렇게 나왔습니다.
>
>이 값들이 다음의 adc과정을 거치게 되는데
>
> ADCSRA &= 0x7f;
> ADMUX = 0x40;
> ADCSRA |= 0xC0;
> while((ADCSRA & 0x10) != 0x10);
> al2 = ADCL;
> ah2 = ADCH;
> ch2 += al2+ah2*256;
>
>어떤식으로 계산해서 ADCL값과 ADCH값을 구할 수 있는지 궁금합니다.
>
>책을 보니 0.8V이면 0100, 1.0V이면 0101 이런식으로 된다고 하는데 뭔가 설명이 부족합니다.
>
>자세한 설명 부탁립니다.
>
|
||||
| 3246 | 답변완료스테핑 모터 , l297 | 김진석 | 2009-07-01 | 1,365 |
|
귀사에서 주문한 스테핑모터(1.6)를
구동 모듈이 아닌 l297을 이용해 구동할려고 합니다.
학교 졸작이라 모듈을 쓸 수 없어서 그런데 귀사의 모듈은 12v~24v전압인데
l297은 최대 허용전압이 10v입니다. l297로 구동가능한건가요?
관리자 답변
안녕하세요? 고객님,
구동 모듈을 L297을 쓰더라도 뭔가 구동 모듈 역할을 하는 쪽을 또 만들어 써야 합니다. 회로도는 강좌->로봇 제작 강좌에 보면 스테핑 모터 구동부 관련 강좌가 있는 데, 참고하기 바랍니다.
원래 L297과 SLA7026 연결해서 많이 씁니다.
참고하세요.
수고하세요.
>귀사에서 주문한 스테핑모터(1.6)를
>구동 모듈이 아닌 l297을 이용해 구동할려고 합니다.
>
>학교 졸작이라 모듈을 쓸 수 없어서 그런데 귀사의 모듈은 12v~24v전압인데
>
>l297은 최대 허용전압이 10v입니다. l297로 구동가능한건가요?
|
||||
| 3245 | 답변완료AD-USBISP V03로 디버깅 하는거 또 질문입니다. | 김민석 | 2009-07-01 | 1,319 |
|
usbisp 2번째 스위치 올리고 가르쳐 주신데로 연결했는데
하이퍼 터미널에는 아무것도 안뜨네요 ;;
RX TX를 꺼꾸로 연결하면 쓰레기 값이 계속 뜨는데;; 정상적으로 연결하면
아무것도 안뜨네요 ;; 파일은 강좌에 있는데로 했는데요 ;;
usbisp 에 5V연결해도 안연결했을때와 마찬가지네요 ;;
avr 128 ram 모듈이 뜨거워 지는것도 정상인가요 ?파워보드
am- mp533도 마찬가지로 뜨겁고요;;
관리자 답변
안녕하세요?
제가 지난 번에 분명히 TTL(5V) LEVEL 이니까
3핀이랑 연결하면 안된다고 말씀 드렸는 데, 시리얼 3핀과 연결하셨네요.
그 쪽은 12V 레벨입니다.ㅠ.ㅠ
어쩌면 망가졌을 수도 있습니다.
그리고, 128RAM 모듈도 마찬가지로 뜨거워지면 안되구요. 망가질 수도 있을 것 같네요.
내용을 자세히 읽고 하셔야 합니다.
일단, 본사 방문이 가능하면 방문하여 점검 받는 것이 좋을 것 같습니다.
수고하세요.
>usbisp 2번째 스위치 올리고 가르쳐 주신데로 연결했는데
>하이퍼 터미널에는 아무것도 안뜨네요 ;;
>RX TX를 꺼꾸로 연결하면 쓰레기 값이 계속 뜨는데;; 정상적으로 연결하면
>아무것도 안뜨네요 ;; 파일은 강좌에 있는데로 했는데요 ;;
>usbisp 에 5V연결해도 안연결했을때와 마찬가지네요 ;;
>avr 128 ram 모듈이 뜨거워 지는것도 정상인가요 ?파워보드
>am- mp533도 마찬가지로 뜨겁고요;;
>
>
|
||||
| 3244 | 답변완료보드가 맛탱이가 가버렸어요 ;;; | 차주헌 | 2009-07-01 | 1,230 |
|
7만원짜리 ATMega128 을 구매해서 잘 쓰고 있었습니다.
귀사의 AVR ATMega128 PRO 입니다. 완제품으로 샀구요.
부가세 포함 77,000 원에 샀어요.
PONYPROG2000 으로 PC 와 하이퍼터미널 UART0 통신을 할려고
프로그램을 넣었는데요.
LED 2개가 갑자기 켜져 버리네요. 소스에는 LED 를 건들지도 않았거든요.
그리고 128CHIP 근처에 노란색 LED 가 주기적으로 깜박였던 걸로 기억합니다.
정상동작 할때에요.
그런데 갑자기 그것도 깜박이지 않아요.
포니프로그2000 으로 리셋할려고 해도 갑자기 디바이스를 읽을 수 없다고 해요.
write all 을 선택하면 device missing or unknown device[-24] 라고 나옵니다..
PC 와 통신속도를 9600 으로 할때는 잘 됐다가 제가 1200 으로 바꾸어서 한번
해볼라고 했더니 갑자기 에러났어요.
처음부터 안됐던 것은 아니고, 갑자기 안되네요.
관리자 답변
안녕하세요? 고객님,
저희 NewTC 제품을 이용하여 주셔서 감사합니다.
아마도, 퓨즈 비트를 잘못 건드신 것 같으네요.
아니면, 뭔가 모르게 보드 뒤쪽에서 쇼트가 나서, 망가졌을 수도 있습니다.
본사로 가져 오시거나, A/S 절차에 따라서 A/S 해서 쓰시면 될 것 같구요.
일단은 권고 사항은 인공호흡을 해 보세요. 그런 경우는 살아날 가능성도 좀 있어 보입니다. 인공호흡이 어려우면, 본사로 A/S 보내거나 방문하면 정확한 원인을 알 수 있고, 저렴하게 수리 가능합니다.
감사합니다.
>7만원짜리 ATMega128 을 구매해서 잘 쓰고 있었습니다.
>귀사의 AVR ATMega128 PRO 입니다. 완제품으로 샀구요.
>부가세 포함 77,000 원에 샀어요.
>
>PONYPROG2000 으로 PC 와 하이퍼터미널 UART0 통신을 할려고
>
>프로그램을 넣었는데요.
>
>LED 2개가 갑자기 켜져 버리네요. 소스에는 LED 를 건들지도 않았거든요.
>
>그리고 128CHIP 근처에 노란색 LED 가 주기적으로 깜박였던 걸로 기억합니다.
>정상동작 할때에요.
>
>그런데 갑자기 그것도 깜박이지 않아요.
>
>포니프로그2000 으로 리셋할려고 해도 갑자기 디바이스를 읽을 수 없다고 해요.
>write all 을 선택하면 device missing or unknown device[-24] 라고 나옵니다..
>PC 와 통신속도를 9600 으로 할때는 잘 됐다가 제가 1200 으로 바꾸어서 한번
>
>해볼라고 했더니 갑자기 에러났어요.
>
>처음부터 안됐던 것은 아니고, 갑자기 안되네요.
>
>
|
||||
| 3243 | 답변완료인터럽트 질문입니다. | 김상락 | 2009-06-30 | 1,446 |
|
안녕하십니까? 운영자님
KT-M128 키트 사용자입니다.
아래 소스는 조도 센서값을 읽어서 밝기에 따라
스테핑모트를 작동(정회전,역회전)시키는 소스입니다.
* 아래 소스에 추가 작업을 하고 싶습니다.
리셋 버튼을 클릭할 경우 인터럽트 기능을 하게 만들어서
스테핑 모터 동작을 일시 정지시킬려고 합니다.
죄송하지만 운영자님께서
아래 소스에 추가 작업 내용 소스를 업데이트 해 주시면
고맙겠습니다.
수고하십시오
-----------------------------------------------------------------
#include <iom128v.h>
#include <macros.h>
#include <stdio.h>
#define Control (*(volatile unsigned char *)0x8001)
#define Data (*(volatile unsigned char *)0x8000)
#define EX_STEPPING (*(volatile unsigned char *)0x8009)
#define EX_LED (*(volatile unsigned char *)0x8008)
#define LCD_EN_ON (Control = (Controller |= 0x04)) //LCD 0100
#define LCD_EN_OFF (Control = (Controller &= 0x0b)) //LCD 1011
#define LCD_RW_ON (Control = (Controller |= 0x02))
#define LCD_RW_OFF (Control = (Controller &= 0x0d))
#define LCD_RS_ON (Control = (Controller |= 0x01))
#define LCD_RS_OFF (Control = (Controller &= 0x0e))
#define SCR_L_SHFT 0x18 //Screen Cursor Left shift
#define SCR_R_SHFT 0x1c
char Controller;
volatile unsigned int bright = 800; // 정회전 역회전 조도값 기준
volatile unsigned int value; //저항값을 넘기고 받기 위해사용하는 스태틱
volatile unsigned int cycleCondition = 0; // 정회전 역회전 컨디션
volatile unsigned int cycletime = 7000; // 모터 돌아가는 시간 지정
volatile unsigned char stepleft=0, stepright=0;
//ADC 초기화(처음에 쓰레기 값 지우기)
void adc_init(void)
{
ADCSRA = 0x00; //disable adc
ADMUX = 0x00; //select adc input 0
ACSR = 0x80;
ADCSRA = 0x87;
}
//포트 초기화
void port_init(void)
{
PORTA = 0x00;
DDRA = 0xff;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00;
DDRC = 0x03;
PORTD = 0x00;
DDRD = 0x00;
PORTE = 0x00;
DDRE = 0x00;
PORTF = 0x00;
DDRF = 0x00;
PORTG = 0x00;
DDRG = 0x03;
}
//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //인터럽트 불능
XDIV = 0x00; //xtal divider
XMCRA = 0x00; //external memory
port_init(); //포트초기화
adc_init(); //ADC초기화
//uart0_init();
MCUCR = 0x80; //MCU메모리 클리어
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
}
//시간지연
void delay(int cnt)
{
int i, j;
for (i=0; i<cnt; i++)
for (j=0; j<600; j++) {;}
}
//LCD 프롬프트 위치 지정
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);
}
//Write_Str 함수에서 받은 문자열을
//처리하는 함수
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);
}
//출력할 문자를 받아서 Write_Data 함수에 전송
void Write_Str(char *Str)
{
while (*Str) {
Write_Data(*Str++);
}
}
//Lcd 문자열 출력 좌표지정
void lcd_gotoxy(unsigned char x, unsigned char y)
{
switch(y)
{
case 1:
{
Write_Controller(0x80+x-1);
delay(30);
break;
}
case 2 :
{
Write_Controller(0xc0+x-1);
delay(30);
break;
}
}
}
int putchar(char c)
{
Write_Data(c);
}
//Lcd 초기화
void lcd_init(){
Write_Controller(0x38);
Write_Controller(0x0e);
Write_Controller(0x06);
}
//Lcd 값 Display함수
//LCD에 값을 출력하기 위해 값을 받는 함수
void printf_Lcd(int lin, int can, char *Str)
{
Write_Controller(0x38);
lcd_gotoxy(can, lin);
Write_Str(Str);
}
/////////////////////////////////////
//센서 저항신호를 디지털값으로 변환
int Adc_Data( unsigned char Admux )
{
unsigned int tempL, tempH;
delay(15);
value=0;
ADCSRA &=0x1f;
ADMUX = Admux;
ADCSRA |= 0xC0;
delay(5);
tempL = ADCL;
tempH = ADCH;
value = tempL + tempH*256;
delay(5);
delay(2000);
lcd_init();
Write_Controller(0x01);
Write_Controller(0x02);
printf_Lcd(0,7,"Brightness: ");
printf(" %d", value);
return value;
}
/////////////////////////////
/////////////////////////////////
/* Stepping Motor derive---------------------------*/
unsigned char LEFTmotorOneClock(unsigned char step, char dir)
{
step = step & 0x0f;
if(dir){
switch(step){
case 0x09: step=0x01; break;
case 0x01: step=0x03; break;
case 0x03: step=0x02; break;
case 0x02: step=0x06; break;
case 0x06: step=0x04; break;
case 0x04: step=0x0c; break;
case 0x0c: step=0x08; break;
case 0x08: step=0x09; break;
default: step=0x0c; break;
}
}else{
switch(step){
case 0x09: step=0x08; break;
case 0x01: step=0x09; break;
case 0x03: step=0x01; break;
case 0x02: step=0x03; break;
case 0x06: step=0x02; break;
case 0x04: step=0x06; break;
case 0x0c: step=0x04; break;
case 0x08: step=0x0c; break;
default: step=0x0c; break;
}
}
return step;
}
/* Stepping Motor derive---------------------------*/
unsigned char RIGHTmotorOneClock(unsigned char step, char dir)
{
step = step & 0xf0;
if(dir){
switch(step){
case 0x90: step=0x10; break;
case 0x10: step=0x30; break;
case 0x30: step=0x20; break;
case 0x20: step=0x60; break;
case 0x60: step=0x40; break;
case 0x40: step=0xc0; break;
case 0xc0: step=0x80; break;
case 0x80: step=0x90; break;
default: step=0xc0; break;
}
}else{
switch(step){
case 0x90: step=0x80; break;
case 0x10: step=0x90; break;
case 0x30: step=0x10; break;
case 0x20: step=0x30; break;
case 0x60: step=0x20; break;
case 0x40: step=0x60; break;
case 0xc0: step=0x40; break;
case 0x80: step=0xc0; break;
default: step=0xc0; break;
}
}
return step;
}
//조도센서의 저항에 따른 모터 정회전,역회전 함수
//센서값이 900보다 클 경우 3초동안 정회전하고
//센서값이 900보다 작을 경우 3초동안 역회전 한다.
void Motor_play(int sensor){
int i = 0;
int inverse = 1;
int reverse = 0;
if(sensor > bright && cycleCondition == 0){
cycleCondition = 1;
while(i < cycletime){
stepright = RIGHTmotorOneClock(stepright, inverse);
stepleft = LEFTmotorOneClock(stepleft, reverse);
delay(5);
EX_STEPPING = stepleft|stepright;
i++;
}
}
else if(sensor < bright && cycleCondition != 0){
cycleCondition = 0;
while(i < cycletime){
stepright = RIGHTmotorOneClock(stepright, reverse);
stepleft = LEFTmotorOneClock(stepleft, inverse);
delay(5);
EX_STEPPING = stepleft|stepright;
i++;
}
}
}
//////////////////////////////////////
void main(void)
{
int count=0;
int sensor = 0;
int i,j;
init_devices();
lcd_init();
//init_devices2();
//insert your functional code here...
//while(1) playMusic();
while(1){
sensor = Adc_Data(0X43); //조도센서와 ADC연결(0X43)
Motor_play(sensor); //조도센서에서 받은 값을 넘겨줌
//for(i=0; i<8; i+=2){
// EX_LED = 0x01<<i;
// delay(2000);
// }
}
i = 0;
}
관리자 답변
안녕하세요? 고객님,
저희 NewTC 제품을 이용하여 주셔서 감사합니다.
그런데, 본사에서 소스를 고쳐 드리거나 짜드리거나 하지는 않습니다.
본사에서 예제로 소스를 제공하고는 있지만,
고객님이 필요한 방향으로 수정하여 드리는 서비스 까지는 해드리지 않고 있음을 양해해 주시기 바랍니다.
다만, 힌트를 드리면, PORT에서 스위치 버튼 입력을 받도록 해서, 그 입력을 받으면, 다음번 키가 눌릴 때 까지는 모터가 도는 부분을 돌지 않도록 하면 되겠지요.
예를 들어서, main의 while문안에 있는 문장 중에서,
Motor_play(sensor); //조도센서에서 받은 값을 넘겨줌
를 아래와 같이 수정하면,
if(onoff){
Motor_play(sensor); //조도센서에서 받은 값을 넘겨줌
}
만약 onoff가 int onoff;로 선언되어 있다면,
onoff가 0이면 Motor_play가 동작하지 않을 테니, 안돌 거구요.
다시 한 번 키가 눌리면 1로 되도록 하면 계속 모터가 돌겠지요.
수고하세요.
>
>안녕하십니까? 운영자님
>KT-M128 키트 사용자입니다.
>아래 소스는 조도 센서값을 읽어서 밝기에 따라
>스테핑모트를 작동(정회전,역회전)시키는 소스입니다.
>
>* 아래 소스에 추가 작업을 하고 싶습니다.
>리셋 버튼을 클릭할 경우 인터럽트 기능을 하게 만들어서
>스테핑 모터 동작을 일시 정지시킬려고 합니다.
>죄송하지만 운영자님께서
>아래 소스에 추가 작업 내용 소스를 업데이트 해 주시면
>고맙겠습니다.
>
>수고하십시오
>
>-----------------------------------------------------------------
>#include <iom128v.h>
>#include <macros.h>
>#include <stdio.h>
>
>
>#define Control (*(volatile unsigned char *)0x8001)
>#define Data (*(volatile unsigned char *)0x8000)
>
>#define EX_STEPPING (*(volatile unsigned char *)0x8009)
>#define EX_LED (*(volatile unsigned char *)0x8008)
>
>
>#define LCD_EN_ON (Control = (Controller |= 0x04)) //LCD 0100
>#define LCD_EN_OFF (Control = (Controller &= 0x0b)) //LCD 1011
>#define LCD_RW_ON (Control = (Controller |= 0x02))
>#define LCD_RW_OFF (Control = (Controller &= 0x0d))
>#define LCD_RS_ON (Control = (Controller |= 0x01))
>#define LCD_RS_OFF (Control = (Controller &= 0x0e))
>
>#define SCR_L_SHFT 0x18 //Screen Cursor Left shift
>#define SCR_R_SHFT 0x1c
>
>char Controller;
>volatile unsigned int bright = 800; // 정회전 역회전 조도값 기준
>volatile unsigned int value; //저항값을 넘기고 받기 위해사용하는 스태틱
>volatile unsigned int cycleCondition = 0; // 정회전 역회전 컨디션
>volatile unsigned int cycletime = 7000; // 모터 돌아가는 시간 지정
>volatile unsigned char stepleft=0, stepright=0;
>
>
>
>
>//ADC 초기화(처음에 쓰레기 값 지우기)
>void adc_init(void)
>{
> ADCSRA = 0x00; //disable adc
> ADMUX = 0x00; //select adc input 0
> ACSR = 0x80;
> ADCSRA = 0x87;
>}
>
>//포트 초기화
>void port_init(void)
>{
>
> PORTA = 0x00;
> DDRA = 0xff;
> PORTB = 0x00;
> DDRB = 0x00;
> PORTC = 0x00;
> DDRC = 0x03;
> PORTD = 0x00;
> DDRD = 0x00;
> PORTE = 0x00;
> DDRE = 0x00;
> PORTF = 0x00;
> DDRF = 0x00;
> PORTG = 0x00;
> DDRG = 0x03;
>
>}
>
>
>
>
>//call this routine to initialize all peripherals
>void init_devices(void)
>{
> //stop errant interrupts until set up
> CLI(); //인터럽트 불능
> XDIV = 0x00; //xtal divider
> XMCRA = 0x00; //external memory
> port_init(); //포트초기화
> adc_init(); //ADC초기화
> //uart0_init();
> MCUCR = 0x80; //MCU메모리 클리어
> 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
>}
>
>//시간지연
>void delay(int cnt)
>{
> int i, j;
> for (i=0; i<cnt; i++)
> for (j=0; j<600; j++) {;}
>}
>
>//LCD 프롬프트 위치 지정
>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);
>}
>
>//Write_Str 함수에서 받은 문자열을
>//처리하는 함수
>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);
>}
>
>//출력할 문자를 받아서 Write_Data 함수에 전송
>void Write_Str(char *Str)
>{
> while (*Str) {
> Write_Data(*Str++);
> }
>}
>
>//Lcd 문자열 출력 좌표지정
>void lcd_gotoxy(unsigned char x, unsigned char y)
>{
> switch(y)
> {
> case 1:
> {
> Write_Controller(0x80+x-1);
> delay(30);
> break;
> }
> case 2 :
> {
> Write_Controller(0xc0+x-1);
> delay(30);
> break;
> }
>
> }
>}
>
>int putchar(char c)
>{
> Write_Data(c);
>}
>
>//Lcd 초기화
>void lcd_init(){
> Write_Controller(0x38);
> Write_Controller(0x0e);
> Write_Controller(0x06);
> }
>
>//Lcd 값 Display함수
>//LCD에 값을 출력하기 위해 값을 받는 함수
>void printf_Lcd(int lin, int can, char *Str)
>{
> Write_Controller(0x38);
> lcd_gotoxy(can, lin);
> Write_Str(Str);
>}
>
>/////////////////////////////////////
>//센서 저항신호를 디지털값으로 변환
>int Adc_Data( unsigned char Admux )
>{
> unsigned int tempL, tempH;
> delay(15);
> value=0;
> ADCSRA &=0x1f;
> ADMUX = Admux;
> ADCSRA |= 0xC0;
> delay(5);
>
> tempL = ADCL;
> tempH = ADCH;
> value = tempL + tempH*256;
> delay(5);
>
> delay(2000);
> lcd_init();
> Write_Controller(0x01);
> Write_Controller(0x02);
> printf_Lcd(0,7,"Brightness: ");
> printf(" %d", value);
>
> return value;
>}
>/////////////////////////////
>/////////////////////////////////
>/* Stepping Motor derive---------------------------*/
>unsigned char LEFTmotorOneClock(unsigned char step, char dir)
>{
> step = step & 0x0f;
> if(dir){
> switch(step){
> case 0x09: step=0x01; break;
> case 0x01: step=0x03; break;
> case 0x03: step=0x02; break;
> case 0x02: step=0x06; break;
> case 0x06: step=0x04; break;
> case 0x04: step=0x0c; break;
> case 0x0c: step=0x08; break;
> case 0x08: step=0x09; break;
> default: step=0x0c; break;
> }
> }else{
> switch(step){
> case 0x09: step=0x08; break;
> case 0x01: step=0x09; break;
> case 0x03: step=0x01; break;
> case 0x02: step=0x03; break;
> case 0x06: step=0x02; break;
> case 0x04: step=0x06; break;
> case 0x0c: step=0x04; break;
> case 0x08: step=0x0c; break;
> default: step=0x0c; break;
> }
> }
> return step;
>
>}
>/* Stepping Motor derive---------------------------*/
>unsigned char RIGHTmotorOneClock(unsigned char step, char dir)
>{
> step = step & 0xf0;
> if(dir){
> switch(step){
> case 0x90: step=0x10; break;
> case 0x10: step=0x30; break;
> case 0x30: step=0x20; break;
> case 0x20: step=0x60; break;
> case 0x60: step=0x40; break;
> case 0x40: step=0xc0; break;
> case 0xc0: step=0x80; break;
> case 0x80: step=0x90; break;
> default: step=0xc0; break;
> }
> }else{
> switch(step){
> case 0x90: step=0x80; break;
> case 0x10: step=0x90; break;
> case 0x30: step=0x10; break;
> case 0x20: step=0x30; break;
> case 0x60: step=0x20; break;
> case 0x40: step=0x60; break;
> case 0xc0: step=0x40; break;
> case 0x80: step=0xc0; break;
> default: step=0xc0; break;
> }
> }
> return step;
>}
>
>//조도센서의 저항에 따른 모터 정회전,역회전 함수
>//센서값이 900보다 클 경우 3초동안 정회전하고
>//센서값이 900보다 작을 경우 3초동안 역회전 한다.
>void Motor_play(int sensor){
>int i = 0;
>int inverse = 1;
>int reverse = 0;
>if(sensor > bright && cycleCondition == 0){
> cycleCondition = 1;
> while(i < cycletime){
> stepright = RIGHTmotorOneClock(stepright, inverse);
> stepleft = LEFTmotorOneClock(stepleft, reverse);
> delay(5);
> EX_STEPPING = stepleft|stepright;
> i++;
> }
> }
>else if(sensor < bright && cycleCondition != 0){
> cycleCondition = 0;
> while(i < cycletime){
> stepright = RIGHTmotorOneClock(stepright, reverse);
> stepleft = LEFTmotorOneClock(stepleft, inverse);
> delay(5);
> EX_STEPPING = stepleft|stepright;
> i++;
> }
> }
>}
>
>//////////////////////////////////////
>void main(void)
>{
> int count=0;
> int sensor = 0;
>
> int i,j;
>
> init_devices();
> lcd_init();
>
> //init_devices2();
> //insert your functional code here...
> //while(1) playMusic();
>
> while(1){
> sensor = Adc_Data(0X43); //조도센서와 ADC연결(0X43)
> Motor_play(sensor); //조도센서에서 받은 값을 넘겨줌
>
> //for(i=0; i<8; i+=2){
> // EX_LED = 0x01<<i;
> // delay(2000);
> // }
> }
>
> i = 0;
>
>
>}
>
>
>
>
>
>
>
>
>
>
>
>
|
||||
| 3242 | 답변완료AD-USBISP V03로 디버깅 하는거 다시 질문입니다. | 김민석 | 2009-06-30 | 1,300 |
|
디버깅을 하기위해서는 UART 커넥터를 사용해야된다는 말씀 같은데요 ;;
AM-128RAM V01에 UART0과 UART1에 핀이 세개있고 AD-USBISP V03에
ISP연결하는 부분은 6핀으로 이루어져 있고 그윗부분에 4핀 짜리로
나온게 있던데 그걸 연결 하는건가요 ? UART 핀 3개랑 그 윗부분 4개짜리 핀을
어떻게 연결하면 되는건가요 ?
UART0 이나 UART1에 연결 하는 별매 serial cable을 이용 해서 하는건가요 ? serial cable은 어디서 살수 있나요 ?
관리자 답변
AM-128RAM의 UART0및 UART1의 3핀 커넥터는 15V 정도의 레벨 출력인 PC 레벨의 RS-232C 이구요. 옆의 16*2의 커넥터 두개에서 UART0 및 UART1에 대응하는 커넥터인 PORTE0,1번과 PORTD2,3 번을 빼서 연결하면 되겠구요.
본사의 메인보드를 쓸 경우는 이미 UART0와 UART1의 TTL Level용 4핀 커넥터가 나와 있으니, 그거랑 1:1로 연결하여 쓰면 되겠습니다.
커넥터 배치는 아래와 같습니다. USBISP는 UART 커넥터를 자기 기준으로 RX, TX가 적혀 있습니다. AVR과 연결시는 RX, TX 가 cross 될 수 있도록 하는 데, 그렇게 하려면, 4핀 1:1 케이블을 쓰면 되도록 이미 PCB에서 cross 되어 있습니다.
그냥 1:1로 연결하면 되는 데, 이런 케이블은 SE-MIN1 케이블을 4개 쓰면 되는 데, 이는 본사나 에스와이 전자에서 구매 가능하구요. 또한, 본사에 방문하면 4핀 케이블 하나 정도는 그냥 드릴 수도 있겠습니다. 현재 위치가 이전되어 홈페이지 아래에 있는 주소로 찾아 오셔야 합니다.
아직, 약도가 업데이트 되지 않았으니, 꼭 주소로 찾아 오세요.
수고하세요.
>디버깅을 하기위해서는 UART 커넥터를 사용해야된다는 말씀 같은데요 ;;
>AM-128RAM V01에 UART0과 UART1에 핀이 세개있고 AD-USBISP V03에
>ISP연결하는 부분은 6핀으로 이루어져 있고 그윗부분에 4핀 짜리로
>나온게 있던데 그걸 연결 하는건가요 ? UART 핀 3개랑 그 윗부분 4개짜리 핀을
>어떻게 연결하면 되는건가요 ?
>UART0 이나 UART1에 연결 하는 별매 serial cable을 이용 해서 하는건가요 ? serial cable은 어디서 살수 있나요 ?
>
|
||||
| 3241 | 답변완료부품부족분 청구 요청 | 공영근 | 2009-06-30 | 1,320 |
|
어제 부품 부족때문에 청구한 사람입니다.
세라믹 콘덴서 9개 (한개도 없으니 9개가 맞을겁니다)
LED 1개
그이외에는 다 있습니다.
택배 주소지
경남 창원시 가음정동 LG 생활관 202동 238호 공영근
위쪽으로 보내주시면 감사하겠습니다..
수고하세요~~
관리자 답변
고객님, 택배를 보내려면 전화번호도 함께 남기셔야 합니다.
연락처 부탁합니다.
전화 번호 안남기셔서, 114에 물어봐서 LG전자 1공장 안내에 전화해서
성함 물어보니까, 사무실 전화번호를 알려 주셔서, 그 쪽으로 전화를 하는 데, 안받으시네요. 다들 어디 나가셨나 봐요.
일단은 연락이 안되서, 택배 발송을 그 전화 번호로 함께 하니, 받으시기 바랍니다.
수고하세요.
>어제 부품 부족때문에 청구한 사람입니다.
>
>
>세라믹 콘덴서 9개 (한개도 없으니 9개가 맞을겁니다)
>LED 1개
>
>그이외에는 다 있습니다.
>
>택배 주소지
>경남 창원시 가음정동 LG 생활관 202동 238호 공영근
>
>위쪽으로 보내주시면 감사하겠습니다..
>
>수고하세요~~
|
||||
| 3240 | 답변완료안녕하세요 | bgt | 2009-06-30 | 1,442 |
|
AM-SLCD 에 관한 질문입니다
LC1641(기존쓰는 제품임) 또는 4X16 LCD 는 모두 가능한지 알고싶습니다
혹 2X16 이나 4X16 이나 모든 캐릭터 LCD는 초기화 명령은 같고
나머지 line 수만 틀린건가요 그렇다면 이모듈도 지원되겠네요
관리자 답변
안녕하세요? 저희 N.T.C 제품에 관한 질문시 유의사항입니다.
저희 Q&A 게시판은 저희 N.T.C 제품을 사용하시는 분들을 위한 질문과 답변을 해 드리는 게시판입니다.
또한, 반드시 본명을 사용하여 질문하셔야 합니다.
이상의 내용을 지켜 주시면, 언제든 질문은 환영이고, 늘 최선을 다하여 답변 드리겠습니다.
하지만, 이번만 답변하여 드릴께요.^^ 다음에는 꼭 본명으로부탁드립니다.
일단, 스펙을 찾아보니 핀 배열은 동일합니다. 따라서, 사용 가능할 것 같습니다만, 초기화 방법 등이 LCD마다 약간씩 타이밍에 차이가 있습니다. 거의 같지만요.
정확한 것은 LCD와 본사의 SLCD와 테스트를 해봐야 알 것 같습니다.
말씀하신 것처럼 라인 수만 다른 겁니다.
감사합니다.
>AM-SLCD 에 관한 질문입니다
>
>LC1641(기존쓰는 제품임) 또는 4X16 LCD 는 모두 가능한지 알고싶습니다
>혹 2X16 이나 4X16 이나 모든 캐릭터 LCD는 초기화 명령은 같고
>나머지 line 수만 틀린건가요 그렇다면 이모듈도 지원되겠네요
>
|
||||
| 3239 | 답변완료스텝 모터 드라이버 관련 | 박영순 | 2009-06-30 | 1,436 |
|
안녕하세요. NTC의 스텝모터 드라이버를 사용하려고 하는데요. 예전에 구입으란 제품을 사용하려 합니다.
그런데 홈페이지를 보니 두가지 종류의 드라이버가 있는데 어느 드라이버인지 몰라서 두가지 방식중에 어느 것으로 사용할지 결정을 못하고 있습니다.
그래서 어느 모델인지 좀 알려 주셨으면 합니다.
감사합니다.
관리자 답변
안녕하세요? 고객님,
구매하신 드라이버는 AM-CS2P 입니다.
- 참고 소스 1 -
http://www.newtc.co.kr/board/view.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=CS2P&select_arrange=headnum&desc=asc&no=289
- 참고 소스 2 -
http://www.newtc.co.kr/board/view.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=CS2P&select_arrange=headnum&desc=asc&no=206
감사합니다.
>안녕하세요. NTC의 스텝모터 드라이버를 사용하려고 하는데요. 예전에 구입으란 제품을 사용하려 합니다.
>
>그런데 홈페이지를 보니 두가지 종류의 드라이버가 있는데 어느 드라이버인지 몰라서 두가지 방식중에 어느 것으로 사용할지 결정을 못하고 있습니다.
>
>그래서 어느 모델인지 좀 알려 주셨으면 합니다.
>
>감사합니다.
>
|
||||
| 3238 | 답변완료문의사항 | 변성훈 | 2009-06-30 | 1,388 |
|
AB-M128-A,AD-USBISP V03 -L , AM-TLCD-P
구성을 해서 들어있는 설명서와 자료실에 있는 기초 자료로 LCD 테스트 소스로
구동을 하려하는데 안되네요.. 설정은 ISP부에 나와있는데로 했는데...
잘 안되서 문의를 드립니다.
관리자 답변
안녕하세요? 고객님,
연결은 어떻게 구성하셨는 지요?
어떤 포트에 뭘 연결했는 지..
그리고, 어떤 것이 안되는 지 구체적으로 질문 부탁드립니다.
컴파일러는 뭘 썼는 지 어떤 소스를 참고하셨는 지도 남겨 주세요.
감사합니다.
>AB-M128-A,AD-USBISP V03 -L , AM-TLCD-P
>
>구성을 해서 들어있는 설명서와 자료실에 있는 기초 자료로 LCD 테스트 소스로
>
>구동을 하려하는데 안되네요.. 설정은 ISP부에 나와있는데로 했는데...
>
>잘 안되서 문의를 드립니다.
|
||||
| 3237 | 답변완료AB-M16-B 보드에 관한 셈플소스 | 이종국 | 2009-06-30 | 1,483 |
|
제목과 같은 질문입니다.
AVR을 처음 사용해보는 사람입니다..(MCU에대해서 완전 문외한 입니다)
AB-M16-B 보드에 기본 기능으로 달려있는 RS-232라던가 Uart 통신에 관한 셈플 소스가 있는지 궁금합니다..
기본적인 I/O제어하는 소스도 있다면 좋을것같구요..
말씀드린 자료가 있다면 메일로 좀 보내주십시오..
감사합니다.
관리자 답변
안녕하세요? 고객님,
저희 NewTC 제품을 이용하여 주셔서 감사합니다.
자료실->기존자료실에 가서 16 이라고 치면 소스들이 나올겁니다.
- 아래 -
포트 I/O 예제
http://www.newtc.co.kr/board/view.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=16&select_arrange=headnum&desc=asc&no=244
- DL16 라인트레이서소스 -
http://www.newtc.co.kr/board/view.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=16&select_arrange=headnum&desc=asc&no=182
ATMEGA16으로 짠 UART 소스는 첨부하였습니다.
감사합니다.
>
>제목과 같은 질문입니다.
>
>AVR을 처음 사용해보는 사람입니다..(MCU에대해서 완전 문외한 입니다)
>
>AB-M16-B 보드에 기본 기능으로 달려있는 RS-232라던가 Uart 통신에 관한 셈플 소스가 있는지 궁금합니다..
>
>기본적인 I/O제어하는 소스도 있다면 좋을것같구요..
>
>말씀드린 자료가 있다면 메일로 좀 보내주십시오..
>
>감사합니다.
>
>
|
||||
| 3236 | 답변완료JTAG커넥터 연결 질문입니다. | 황순곤 | 2009-06-30 | 1,487 |
|
안녕하십니까
AB-M128PRO-A 제품 구매자 입니다.
다름이 아니라 JTAG커넥터 연결이 안되어서 이렇게 질문 올립니다.
JTAG문제 인가 싶어서 다른 제품들까지 빌려서 총 3가지 제품으로
연결을 시도해 보왔습니다. 하지만 JTAG커넥터 연결이 되지가 않고 있습니다.
기타 타회사의 ATmega128보드도 사용하고 있는데 이 제품은 연결이 바로
되는데 현재 구매한 AB-M128PRO-A 제품은 연결이 안되고 있습니다
사용 프로그램은 AVR Studio 4.13을 사용하고 있습니다. 혹시나 싶어서
ICCAVR로 연결을 시도해 보왔습니다. 현재는 제품 초기결함으로 판단하고
A/S를 맞겼으면 합니다.
두번째 질문입니다.
택배로 보낼시 CJ택배로 뉴테크놀로지 로 보냅니다.라고 하면 택배비가 2200원
정도라고 되어있는데 그냥 기재되어있는 주소 적어놓고 기사분 오시면 그렇게
말하면 되는것인지도 궁금 합니다.
관리자 답변
안녕하세요? 고객님,
저희 NewTC 제품을 이용하여 주셔서 감사합니다.
고객님의 경우는 제품의 결함이 아니구요. 우선, JTAG을 쓰시려면 퓨즈비트의 JTAG EN 을 0으로 셋팅(체크)하여 주셔야 합니다. 본사의 제품은 일반적인 편의상 JTAG EN 핀이 셋팅되어 있지 않습니다.
그 이유는 JTAG 을 ENABLE 하게 되면 F 포트의 일부를 사용하지 못하게 되므로, F 포트를 전체 다 사용하게 하도록 하기 위하여 사용이 안되도록 되어 있습니다.
퓨즈 비트를 변경하셔서, JTAG EN을 셋팅하면 이상 없이 사용이 가능합니다.
셋팅하여 사용하시면 이상 없이 쓰실 수 있겠습니다.
ATMEGA128은 ICCAVR에서 0xff19ef 나 0xff99ef로 변경하여 사용하면 됩니다.
수고하세요.
>안녕하십니까
>
>AB-M128PRO-A 제품 구매자 입니다.
>
>다름이 아니라 JTAG커넥터 연결이 안되어서 이렇게 질문 올립니다.
>
>JTAG문제 인가 싶어서 다른 제품들까지 빌려서 총 3가지 제품으로
>
>연결을 시도해 보왔습니다. 하지만 JTAG커넥터 연결이 되지가 않고 있습니다.
>
>기타 타회사의 ATmega128보드도 사용하고 있는데 이 제품은 연결이 바로
>
>되는데 현재 구매한 AB-M128PRO-A 제품은 연결이 안되고 있습니다
>
>사용 프로그램은 AVR Studio 4.13을 사용하고 있습니다. 혹시나 싶어서
>
>ICCAVR로 연결을 시도해 보왔습니다. 현재는 제품 초기결함으로 판단하고
>
>A/S를 맞겼으면 합니다.
>
>두번째 질문입니다.
>
>택배로 보낼시 CJ택배로 뉴테크놀로지 로 보냅니다.라고 하면 택배비가 2200원
>
>정도라고 되어있는데 그냥 기재되어있는 주소 적어놓고 기사분 오시면 그렇게
>
>말하면 되는것인지도 궁금 합니다.
|
||||
| 3235 | 답변완료안녕하세요..퓨즈셋팅 관련해서 질문드려요... | 이경남 | 2009-06-30 | 1,383 |
|
N.T.C에서 atmega128 모듈을 12를 구매하였는데...
그런데 2개의 CPU만 퓨즈셋팅이 안되네요..
왜그런지 궁금합니다....
관리자 답변
안녕하세요? 이경남 고객님,
저희 NewTC 제품을 이용하여 주셔서 감사합니다.
제품을 택배로 본사로 보내주세요.
테스트 하여 보도록 하겠습니다.
원래 모듈의 경우는 100% 테스트 하여 출고하고 있습니다만,
테스트 한 후에 새 제품으로 교환하여 드리도록 하겠습니다.
감사합니다.
>N.T.C에서 atmega128 모듈을 12를 구매하였는데...
>
>그런데 2개의 CPU만 퓨즈셋팅이 안되네요..
>
>왜그런지 궁금합니다....
>
>
|
||||
| 3234 | 답변완료usb-isp v03을 이용하여 디버깅을 할수 있나요 ? | 김민석 | 2009-06-30 | 1,390 |
|
자료실에서 시리얼 포트를 이용하여 디버깅을 하는것이
나왔는데 그것과 같이 했는데 하이퍼터미널을 키고
F9 을 누르면 error 창이 뜨면서
Unable to detect STK500 device.
Aborting ISP function
이라고 뜨는데요 ..
하이퍼 터미널을 안켰을때는 정상적으로 디버깅되고요 .
관리자 답변
안녕하세요? 고객님,
저희 NewTC 제품을 이용하여 주셔서 감사합니다.
USBISP V03에는 ISP 기능과 USB to UART 기능이 함께 포함되어 있습니다.
하지만, 동시에 같은 AVR에 연결하여 사용은 불가합니다.
이유는 AVR 자체가 같은 핀을 여러가지 기능으로 쓰는 데,
동시에 사용은 불가하기 때문입니다.
ISP 커넥터를 꽂아 사용할 때는 UART용 커넥터는 빼셔야 하구요.
UART 커넥터를 사용하실 때는 ISP 커넥터를 뺴고 하셔야 합니다.
수고하세요.
> 자료실에서 시리얼 포트를 이용하여 디버깅을 하는것이
>나왔는데 그것과 같이 했는데 하이퍼터미널을 키고
>F9 을 누르면 error 창이 뜨면서
>Unable to detect STK500 device.
>Aborting ISP function
>이라고 뜨는데요 ..
> 하이퍼 터미널을 안켰을때는 정상적으로 디버깅되고요 .
>
>
|
||||
