Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 5078 | 답변완료포트이용 | 정혜현 | 2010-05-09 | 1,467 |
|
안녕하세요
예제소스에서 모터는 C
릴레이보드도 C에 되어있길래
저는 지금 릴레이보드를 포트 C
모터모듈은 포트 A에 연결하였는데 이래도 되는거죠?
이상하게........
PORTC=0x00;
해놓고 다른 별다른 설정안했는데
그리고 그냥 모터만 동작시킬려고 PORTA를 제어했더니..
갑자기 팬이 돌아가서요;;
혹시 포트를 제가 잘못하용한건지 궁금해서 질문합니다. ㅜㅜ
//ICC-AVR application builder : 2005-05-06 오후 10:36:45
// Target : M128
// Crystal: 16Mhz
#include <iom128v.h>
#include <macros.h>
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00; //m103 output only
DDRC = 0x00;
PORTD = 0x00;
DDRD = 0x00;
PORTE = 0x00;
DDRE = 0x00;
PORTF = 0x00;
DDRF = 0x00;
PORTG = 0x00;
DDRG = 0x03;
}
//UART0 initialize
// desired baud rate: 9600
// actual: baud rate:9600 (0.0%)
// char size: 8 bit
// parity: Disabled
void uart0_init(void)
{
UCSR0B = 0x00; //disable while setting baud rate
UCSR0A = 0x00;
UCSR0C = 0x06;
// UBRR0L = 0x2F; //set baud rate lo 7.3728 MHz
// UBRR0L = 0x47; //set baud rate lo 11.0592 Mhz
UBRR0L = 0x67; //set baud rate lo 16Mhz
UBRR0H = 0x00; //set baud rate hi
UCSR0B = 0x08;
}
//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(); // UART 0 초기화
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
}
#define MOTOR_PORT PORTA
#define MOTOR_DDR DDRA
#define PWM1_ON (MOTOR_PORT|=0x01)
#define PWM1_OFF (MOTOR_PORT&=0xFE)
#define DIR1_ON (MOTOR_PORT|=0x02)
#define DIR1_OFF (MOTOR_PORT&=0xFD)
#define ENABLE1_OFF (MOTOR_PORT|=0x04)
#define ENABLE1_ON (MOTOR_PORT&=0xFB)
#define PWM2_ON (MOTOR_PORT|=0x10)
#define PWM2_OFF (MOTOR_PORT&=0xEF)
#define DIR2_ON (MOTOR_PORT|=0x20)
#define DIR2_OFF (MOTOR_PORT&=0xDF)
#define ENABLE2_ON (MOTOR_PORT|=0x40)
#define ENABLE2_OFF (MOTOR_PORT&=0xBF)
\\
void main (void)
{
int i, d, count=1;
init_devices();
delay(1000);
delay(1000);
MOTOR_DDR = 0xff; // 모터포트 초기화
ENABLE1_ON;
DIR1_ON;
for(i=0; i<10; i++)
{
PWM1_ON;
delay(1000);
PWM1_OFF;
delay(10000);
}
ENABLE1_OFF;
PWM1_OFF;
delay(10000000);
}
// 시간 지연 함수
void delay(int n)
{
volatile int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<100;j++);
}
}
이렇게 했는데 이상하게 PORTC에 연결된 릴레이보드가 동작해서 팬이 구동이 됩니다;;
PORTC출력설정을 하지 않은것 같은데;;
혹시 외그러는걸까요;;
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
KD-128PRO-C 킷트를 사용하시는 것 같네요. 맞나요?
그 킷트의 경우, 포트 A와 C 포트가 세븐세그먼트에 연결되어 있습니다.
그래서, 풀업된 효과를 가져옵니다.
그런 것들의 영향을 받지 않으려면, AB-M128-B(소형) 보드를 이용하시면, 포트에 아무것도 붙어있지 않으므로, 어떤 영향도 받지 않아서 좋습니다. 그래서, 프로젝트 시에는 이 보드를 사용하는 것도 좋습니다.
수고하세요.
>안녕하세요
>예제소스에서 모터는 C
>릴레이보드도 C에 되어있길래
>
>저는 지금 릴레이보드를 포트 C
>모터모듈은 포트 A에 연결하였는데 이래도 되는거죠?
>
>이상하게........
>PORTC=0x00;
>
>해놓고 다른 별다른 설정안했는데
>그리고 그냥 모터만 동작시킬려고 PORTA를 제어했더니..
>
>갑자기 팬이 돌아가서요;;
>
>혹시 포트를 제가 잘못하용한건지 궁금해서 질문합니다. ㅜㅜ
>
>
>
>//ICC-AVR application builder : 2005-05-06 오후 10:36:45
>// Target : M128
>// Crystal: 16Mhz
>
>#include <iom128v.h>
>#include <macros.h>
>
>void port_init(void)
>{
> PORTA = 0x00;
> DDRA = 0x00;
> PORTB = 0x00;
> DDRB = 0x00;
> PORTC = 0x00; //m103 output only
> DDRC = 0x00;
> PORTD = 0x00;
> DDRD = 0x00;
> PORTE = 0x00;
> DDRE = 0x00;
> PORTF = 0x00;
> DDRF = 0x00;
> PORTG = 0x00;
> DDRG = 0x03;
>}
>
>//UART0 initialize
>// desired baud rate: 9600
>// actual: baud rate:9600 (0.0%)
>// char size: 8 bit
>// parity: Disabled
>void uart0_init(void)
>{
> UCSR0B = 0x00; //disable while setting baud rate
> UCSR0A = 0x00;
> UCSR0C = 0x06;
>// UBRR0L = 0x2F; //set baud rate lo 7.3728 MHz
>// UBRR0L = 0x47; //set baud rate lo 11.0592 Mhz
> UBRR0L = 0x67; //set baud rate lo 16Mhz
>
> UBRR0H = 0x00; //set baud rate hi
> UCSR0B = 0x08;
>}
>
>//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(); // UART 0 초기화
>
> 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
>}
>
>#define MOTOR_PORT PORTA
>#define MOTOR_DDR DDRA
>#define PWM1_ON (MOTOR_PORT|=0x01)
>#define PWM1_OFF (MOTOR_PORT&=0xFE)
>#define DIR1_ON (MOTOR_PORT|=0x02)
>#define DIR1_OFF (MOTOR_PORT&=0xFD)
>#define ENABLE1_OFF (MOTOR_PORT|=0x04)
>#define ENABLE1_ON (MOTOR_PORT&=0xFB)
>#define PWM2_ON (MOTOR_PORT|=0x10)
>#define PWM2_OFF (MOTOR_PORT&=0xEF)
>#define DIR2_ON (MOTOR_PORT|=0x20)
>#define DIR2_OFF (MOTOR_PORT&=0xDF)
>#define ENABLE2_ON (MOTOR_PORT|=0x40)
>#define ENABLE2_OFF (MOTOR_PORT&=0xBF)
>
>\\
>
>void main (void)
>{
> int i, d, count=1;
> init_devices();
>
> delay(1000);
> delay(1000);
>
> MOTOR_DDR = 0xff; // 모터포트 초기화
> ENABLE1_ON;
> DIR1_ON;
> for(i=0; i<10; i++)
> {
> PWM1_ON;
> delay(1000);
> PWM1_OFF;
> delay(10000);
> }
> ENABLE1_OFF;
> PWM1_OFF;
> delay(10000000);
>
>}
>
>// 시간 지연 함수
>void delay(int n)
>{
> volatile int i,j;
> for(i=0;i<n;i++)
> {
> for(j=0;j<100;j++);
> }
>}
>
>
>이렇게 했는데 이상하게 PORTC에 연결된 릴레이보드가 동작해서 팬이 구동이 됩니다;;
>PORTC출력설정을 하지 않은것 같은데;;
>혹시 외그러는걸까요;;
|
||||
| 5077 | 답변완료모터모듈 | 정혜현 | 2010-05-09 | 1,407 |
|
안녕하세요
AM-DC2-2D 모터 모듈을 사용하고있습니다.
이걸통해
DC모터 두개를 동시에 제어하려고 합니다.
문개폐를 하고 싶어서 종이를 돌돌마는식으로 문을 열고닫을려고하는데
그럴려면 DC모터두개를 동시에 같은방향으로 돌려야 합니다.
예제파일을 돌려보았습니다.
#define MOTOR_PORT PORTC
#define MOTOR_DDR DDRC
#define PWM1_ON (MOTOR_PORT|=0x01)
#define PWM1_OFF (MOTOR_PORT&=0xFE)
#define DIR1_ON (MOTOR_PORT|=0x02)
#define DIR1_OFF (MOTOR_PORT&=0xFD)
#define ENABLE1_OFF (MOTOR_PORT|=0x04)
#define ENABLE1_ON (MOTOR_PORT&=0xFB)
#define PWM2_ON (MOTOR_PORT|=0x10)
#define PWM2_OFF (MOTOR_PORT&=0xEF)
#define DIR2_ON (MOTOR_PORT|=0x20)
#define DIR2_OFF (MOTOR_PORT&=0xDF)
#define ENABLE2_ON (MOTOR_PORT|=0x40)
#define ENABLE2_OFF (MOTOR_PORT&=0xBF)
void main (void)
{
int i, d, count=1;
init_devices();
delay(1000);
delay(1000);
MOTOR_DDR = 0xff; // 모터포트 초기화
ENABLE1_ON;
ENABLE2_ON;
while(1){
//
DIR1_ON; // Ch1 정방향
DIR2_ON; // Ch2 정방향
for(d=0; d<10; d++){ // 10 단계로 속도 조절
for(i=0; i<1000; i++){ // 100 번 PWM 발생
PWM1_ON; // PWM1 신호 1
PWM2_ON; // PWM2 신호 1
delay(10-d);
PWM1_OFF; // PWM1 신호 0
PWM2_OFF; // PWM2 신호 0
delay(d);
}
}
DIR1_OFF; // Ch1 역방향
DIR2_OFF; // Ch2 역방향
for(d=0; d<10; d++){ // 10 단계로 속도 조절
for(i=0; i<1000; i++){ // 100 번 PWM 발생
PWM1_ON; // PWM1 신호 1
PWM2_ON; // PWM2 신호 1
delay(10-d);
PWM1_OFF; // PWM1 신호 0
PWM2_OFF; // PWM2 신호 0
delay(d);
}
}
}
}
이런식으로 되어이짜나요
그러면 ch1 ch2 동시에 DC모터가 연결되었으면 모터가 다 같이 돌아가야하는거아닌가요 ㅜㅜ?
이상해요 한개만돌아가요
어쩔땐 ch1만 돌아가고 어쩔댄 ch2만돌아가고
막 자기멋대로에요
어떨땐 ch2만 동작하게했을때 ch1에 관련된걸 다 주석처리하고 실행을해도
돌아갈때도있고 안돌아갈때도있고 이러고
마찬가지 반대로 ch1만 동작하게 했을대 ch2에 관련된걸 다 주석처리하고 실행을해도
돌아갈때있고 안돌아갈때가있어요
도대체 외그러는걸까요 ㅜㅜ?
아무리 찾아바도 모르겠네요 ㅜㅜ
참고로 저희가 구동하려는 DC모터는
http://www.devicemart.co.kr/mart7/mall.php?cat=017012002&query=view&no=33521
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
PWM 하는 부분이 main문에서 하게 되면, 중간중간에 인터럽트 함수 등이 실행되거나 시스템이 다른 동작을 할 경우, 불안정하게 동작하게 됩니다. 따라서, 아래와 같이 PWM을 타이머를 이용하여 하는 게 좋겠습니다.
- 아래 -
http://www.newtc.co.kr/board/view.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=DC&select_arrange=headnum&desc=asc&no=312
수고하세요.
>안녕하세요
>
>AM-DC2-2D 모터 모듈을 사용하고있습니다.
>이걸통해
>DC모터 두개를 동시에 제어하려고 합니다.
>
>문개폐를 하고 싶어서 종이를 돌돌마는식으로 문을 열고닫을려고하는데
>
>그럴려면 DC모터두개를 동시에 같은방향으로 돌려야 합니다.
>
>예제파일을 돌려보았습니다.
>
>
>#define MOTOR_PORT PORTC
>#define MOTOR_DDR DDRC
>#define PWM1_ON (MOTOR_PORT|=0x01)
>#define PWM1_OFF (MOTOR_PORT&=0xFE)
>#define DIR1_ON (MOTOR_PORT|=0x02)
>#define DIR1_OFF (MOTOR_PORT&=0xFD)
>#define ENABLE1_OFF (MOTOR_PORT|=0x04)
>#define ENABLE1_ON (MOTOR_PORT&=0xFB)
>#define PWM2_ON (MOTOR_PORT|=0x10)
>#define PWM2_OFF (MOTOR_PORT&=0xEF)
>#define DIR2_ON (MOTOR_PORT|=0x20)
>#define DIR2_OFF (MOTOR_PORT&=0xDF)
>#define ENABLE2_ON (MOTOR_PORT|=0x40)
>#define ENABLE2_OFF (MOTOR_PORT&=0xBF)
>
>
>
>void main (void)
>{
> int i, d, count=1;
> init_devices();
>
> delay(1000);
> delay(1000);
>
> MOTOR_DDR = 0xff; // 모터포트 초기화
> ENABLE1_ON;
> ENABLE2_ON;
>
> while(1){
> //
>
> DIR1_ON; // Ch1 정방향
> DIR2_ON; // Ch2 정방향
> for(d=0; d<10; d++){ // 10 단계로 속도 조절
> for(i=0; i<1000; i++){ // 100 번 PWM 발생
> PWM1_ON; // PWM1 신호 1
> PWM2_ON; // PWM2 신호 1
> delay(10-d);
> PWM1_OFF; // PWM1 신호 0
> PWM2_OFF; // PWM2 신호 0
> delay(d);
> }
>
> }
>
> DIR1_OFF; // Ch1 역방향
> DIR2_OFF; // Ch2 역방향
> for(d=0; d<10; d++){ // 10 단계로 속도 조절
> for(i=0; i<1000; i++){ // 100 번 PWM 발생
> PWM1_ON; // PWM1 신호 1
> PWM2_ON; // PWM2 신호 1
> delay(10-d);
> PWM1_OFF; // PWM1 신호 0
> PWM2_OFF; // PWM2 신호 0
> delay(d);
> }
> }
> }
>
>}
>
>
>이런식으로 되어이짜나요
>
>그러면 ch1 ch2 동시에 DC모터가 연결되었으면 모터가 다 같이 돌아가야하는거아닌가요 ㅜㅜ?
>이상해요 한개만돌아가요
>어쩔땐 ch1만 돌아가고 어쩔댄 ch2만돌아가고
>막 자기멋대로에요
>어떨땐 ch2만 동작하게했을때 ch1에 관련된걸 다 주석처리하고 실행을해도
>돌아갈때도있고 안돌아갈때도있고 이러고
>마찬가지 반대로 ch1만 동작하게 했을대 ch2에 관련된걸 다 주석처리하고 실행을해도
>돌아갈때있고 안돌아갈때가있어요
>
>도대체 외그러는걸까요 ㅜㅜ?
>아무리 찾아바도 모르겠네요 ㅜㅜ
>
>
>참고로 저희가 구동하려는 DC모터는
>http://www.devicemart.co.kr/mart7/mall.php?cat=017012002&query=view&no=33521
>
>
|
||||
| 5076 | 답변완료WINAVR에서 AD-USBISP사용 avrdude관련 | 김인호 | 2010-05-09 | 1,376 |
|
안녕하세요.
귀사의 USBISP사용자입니다.
AVR studio를 사용해서 다운로드는 됩니다만.
Winavr만을 사용해서 프로그램을 다운시키려 합니다.
물론 usbsip가 연결된포트확인 후 Makefile수정하였습니다.
avrdude -p atmega8 -P com3 -c stk500 -U flash:w:main.hex
avrdude: stk500_getsync(): not in sync: resp=0x00
make.exe: *** [program] Error -1073741819
이런 메시지를 출력하네요.
Makefile을 첨부하였습니다.
도와주세요!!!
관리자 답변
안녕하세요? 고객님,
아래와 같이 STK500v2로 놓고 해보세요.
- 아래 -
# Programming support using avrdude. Settings and variables.
# Programming hardware: alf avr910 avrisp bascom bsd
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500
#
# Type: avrdude -c ?
# to get a full listing.
#
AVRDUDE_PROGRAMMER = stk500v2
# com1 = serial port. Use lpt1 to connect to parallel port.
AVRDUDE_PORT = com5 # programmer connected to serial device
#AVRDUDE_PORT = /dev/ttyS0 # programmer connected to serial device
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
# Uncomment the following if you want avrdude's erase cycle counter.
# Note that this counter needs to be initialized first using -Yn,
# see avrdude manual.
#AVRDUDE_ERASE_COUNTER = -y
# Uncomment the following if you do /not/ wish a verification to be
# performed after programming the device.
#AVRDUDE_NO_VERIFY = -V
# Increase verbosity level. Please use this when submitting bug
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
# to submit bug reports.
#AVRDUDE_VERBOSE = -v -v
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
수고하세요.
>안녕하세요.
>귀사의 USBISP사용자입니다.
>
>AVR studio를 사용해서 다운로드는 됩니다만.
>
>Winavr만을 사용해서 프로그램을 다운시키려 합니다.
>물론 usbsip가 연결된포트확인 후 Makefile수정하였습니다.
>
>avrdude -p atmega8 -P com3 -c stk500 -U flash:w:main.hex
>avrdude: stk500_getsync(): not in sync: resp=0x00
>make.exe: *** [program] Error -1073741819
>
>이런 메시지를 출력하네요.
>
>Makefile을 첨부하였습니다.
>
>도와주세요!!!
|
||||
| 5075 | 답변완료ATtiny13을 처음 사용하는대요 | 이문학 | 2010-05-09 | 1,287 |
|
ATtiny13을 처음 사용하는대요
장비명 : AD-USBISP
S/W : AVR STUDIO 4.17
최초에 장비를 연결하고
AVR STUDIO WRITE 화면 MAIN에서
Device and Signature Byte 화면에서
최초에 read Signature을 클릭하면
디바이스 코드 : 0X1E 0X90 0X07이라고 표시가 됩니다.
그러나 프로그램을 라이트하고나면
디바이스 코드가를 읽으면 : 0X00 0X00 0X00 표시되고
아래 화면에
wARNING : Signature does not match selected device!
라고 화면에 표시가 됩니다
정상일때는 MISO 신호가 0V~5V로 레벨로 변화하나
에러가 나고 부터는 0~0.5V밖에 변화가 생기질 않습니다.
MISO 신호가 죽어버린건지 궁굼함.
USB-ISP 장비가 tiny13을 지원을 못하는것인지
확인을 부탁드립니다.
참고로 atmega16이나 atmega128은 잘 사용하고 있습니다.
빠른 답변부탁드립니다.
감사합니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
tiny13도 지원됩니다. ISP Mode로 놓고 사용하시면 됩니다.
아무래도 tiny13 쪽이 망가진 게 아닌가 싶은데요.
퓨즈비트 설정을 중간에 잘못하신게 아닌지요?
USBISP 버전은 어떻게 되시는 지요? V03이 아니시라면, 펌웨어 업그레이드를 권장해 드립니다.
V03이 아닌 경우 본사로 보내서 펌웨어 업그레이드 받아서 사용하시면 좀 더 빠르고, 정확한 기능으로 사용하실 수 있습니다.
수고하세요.
>ATtiny13을 처음 사용하는대요
>
>장비명 : AD-USBISP
>S/W : AVR STUDIO 4.17
>
>최초에 장비를 연결하고
>AVR STUDIO WRITE 화면 MAIN에서
>Device and Signature Byte 화면에서
>최초에 read Signature을 클릭하면
>디바이스 코드 : 0X1E 0X90 0X07이라고 표시가 됩니다.
>그러나 프로그램을 라이트하고나면
>
>디바이스 코드가를 읽으면 : 0X00 0X00 0X00 표시되고
>아래 화면에
>wARNING : Signature does not match selected device!
>라고 화면에 표시가 됩니다
>
>정상일때는 MISO 신호가 0V~5V로 레벨로 변화하나
>에러가 나고 부터는 0~0.5V밖에 변화가 생기질 않습니다.
>MISO 신호가 죽어버린건지 궁굼함.
>
>USB-ISP 장비가 tiny13을 지원을 못하는것인지
>확인을 부탁드립니다.
>
>참고로 atmega16이나 atmega128은 잘 사용하고 있습니다.
>
>빠른 답변부탁드립니다.
>
>감사합니다.
>
|
||||
| 5074 | 답변완료ad_usbisp_v03 포트설정 | 정유준 | 2010-05-08 | 1,384 |
|
드라이버 설치까지 다 했는데 장치관리자에 포트 설정이 안되있어요.
관리자 답변
안녕하세요? 고객님,
드라이버 프로그램을 깔았다는 얘기인데요.
PC에 따라서 바로 잡히지 않는 경우가 있습니다.
그럴 때는 USBISP를 뺏다가 꼽으시면, 다시 설치가 안되었다고 다시 잡아달라고 뜰 겁니다.
그러면, c:\\NEWTC\\DriverInstall\\x86 폴더에 Silabser.sys가 있으니, 그 쪽으로 폴더를 지정하여 주면 됩니다.
그러면 설치가 잘 될겁니다.
혹 안되시면, 안되시는 화면에서 캡쳐하여 올려주세요~
수고하세요.
>드라이버 설치까지 다 했는데 장치관리자에 포트 설정이 안되있어요.
|
||||
| 5073 | 답변완료글 10431에서 몇 가지 질문합니다. | 이석근 | 2010-05-08 | 1,292 |
|
먼저 폴링과 인터럽트의 개념을 생각해 볼때,
폴링은 라인트레이서가 라인를 따라 가다가 리모콘을 눌렀을 경우,
그 일을(리몬콘으로 받은 대이터) 잠시 대기 시켜놓고,
라인트레이서의 라인이 없을 경우에 동작 하는거 아닙니까???
범용I/O를(핀이 있는 곳 이면) 폴링 방식으로 어떻게 사용 하는지가 궁금합니다.
제 짧은 생각으론 먼저 제기 했던 폴링의 의미가 일단 주어진 일을 다해놓고 대기됬던 일을 처리
하는 것이므로 이벤트가 걸릴것 같지 않습니다.
올려 주신 소스가 어려워서 이해 하기가 쉽지 않네요.
간단하게나마 주석을 달아 주셨으면 감사하겠습니다.
관리자 답변
안녕하세요?
올린 소스는 단순합니다.
while ( 1 )
{
if ( IR_IN == IR_LOW ){
data = Ir_Data_Out ( );
switch( data ){
case 0x4 : Input =0x10;
break;
case 0x5 : Input =0x20;
즉, IR 신호가 들어오면 Ir_Data_Out ()함수에서 무슨 데이터가 들어왔는 지 판단해서, data라는 변수로 넘겨준 후에, data 값이 뭔지에 따라서, Input값을 바꿔주는 식으로 진행됩니다. 이 과정은 항상 빠른 속도로 감시하고 있는 폴링으로 이루어지게 되죠.
그런 후에, Timer0 오버플로우 인터럽트 함수에서 Input값에 따라서, switch문을 판단해서 모터 동작을 달리 해주는 것입니다. 아래와 같이요.
#pragma interrupt_handler timer0_ovf_isr:17
void timer0_ovf_isr(void)
{
...........
switch(Input){
//printf("[0x%x]",Input);
case 0x01:
Status=0;
S_MOTOR = 0xff;
break;
case 0x02:
Status=0;
S_MOTOR = 0x11;
수고하세요.
>먼저 폴링과 인터럽트의 개념을 생각해 볼때,
>
>폴링은 라인트레이서가 라인를 따라 가다가 리모콘을 눌렀을 경우,
>
>그 일을(리몬콘으로 받은 대이터) 잠시 대기 시켜놓고,
>
>라인트레이서의 라인이 없을 경우에 동작 하는거 아닙니까???
>
>범용I/O를(핀이 있는 곳 이면) 폴링 방식으로 어떻게 사용 하는지가 궁금합니다.
>
>제 짧은 생각으론 먼저 제기 했던 폴링의 의미가 일단 주어진 일을 다해놓고 대기됬던 일을 처리
>
>하는 것이므로 이벤트가 걸릴것 같지 않습니다.
>
>올려 주신 소스가 어려워서 이해 하기가 쉽지 않네요.
>
>간단하게나마 주석을 달아 주셨으면 감사하겠습니다.
>
>
>
>
|
||||
| 5072 | 답변완료내부 메모리 질문입니다. | 소광래 | 2010-05-07 | 1,385 |
|
AB-M128-B를 사용중입니다.
프로그램을 넣어도 MCU가 동작하지 않는데요
pony prog2000으로 device 와 flash 그리고 eeprom을 읽으면 020000부터 이상한 값들이 들어가있는데요 아무리 이레이져 해도 이 윗부분은 깨끗하게 지워지는데 이부분은 안지워지내요
어떻게 지울수 있죠?
이부분에 이상한 값들이 기록되어있어서 프로그램을 짜서 넣어도 동작하지 않는것 같아서 이렇게
질문 드립니다.
관리자 답변
어떻게 어떻게 해서 다 지웠는데 device 를 read 하면 모두 ff 상태이고 옆에나오는 "..... "도 전부 "....."인데 MCU가 동작 안하는 이유는 무엇때문일까요??;;
잘동작 하던게 이러니깐 답다해 죽겠네요....
|
||||
| 5071 | 답변완료USB-ISP V03을 사용하는데 ATmega2560에서 다운로드가 안되네요 | 정재원 | 2010-05-07 | 1,275 |
|
USB-ISP V03을 사용하는데 ATmega2560에서 다운로드가 안되네요
avrstudio4 사용중이구요
헥사파일이 다운로딩이 되지 않고 에러가 계속 뜨네요
2560 지원이 안되는건가요?
페러럴포트용 isp를 사용해서 포니프로그로는 정상적으로 다운로드가 되거든요
USB-ISP V03는 avrstudio에서 안되네요;
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
답변이 늦어서 죄송합니다. 질문이 너무 많아서, 간혹 지나가는 경우가 있습니다. 하지만, 이제라도 발견이 되어서 다행입니다.
본사에서도 KD-2560PRO 라는 킷트를 판매중입니다. 거기에 USBISP가 들어가 있습니다.
2560에서도 잘 동작하기 때문에 판매하는 거죠.
고객님의 경우 뭔가 ISP 핀연결에 문제가 있지 않나 싶습니다. 핀이름들을 보고, 제대로 연결한 것이 맞는 지 확인하여 보세요.
수고하세요.
>USB-ISP V03을 사용하는데 ATmega2560에서 다운로드가 안되네요
>avrstudio4 사용중이구요
>헥사파일이 다운로딩이 되지 않고 에러가 계속 뜨네요
>2560 지원이 안되는건가요?
>
>페러럴포트용 isp를 사용해서 포니프로그로는 정상적으로 다운로드가 되거든요
>USB-ISP V03는 avrstudio에서 안되네요;
>
|
||||
| 5070 | 답변완료atmega128 프로그램을 넣으려고 하는데 | 김광록 | 2010-05-07 | 1,431 |
|
처음에 플래쉬 프로그래밍이라고 들어가는것 같은데 그 이후에 이러한 메시지가 뜹니다.
관리자 답변
안녕하세요
저 경고문구는 다운로드할때 프로그램 올 버튼을 사용하시듯 합니다.
eeprom 및 플래쉬메모리에 전부 다운로드하는 버튼입니다.
eeprom 경고는 들어갈 데이터가 없어서 생긴것입니다. 보통 플래쉬를 사용하기 때문입니다.
무시하시거나 툴바에 프로그램 플래쉬 라이트를 선택하시면 됩니다.
수고하세요
>처음에 플래쉬 프로그래밍이라고 들어가는것 같은데 그 이후에 이러한 메시지가 뜹니다.
|
||||
| 5069 | 답변완료아트메가 독립전원.. | 노영래 | 2010-05-07 | 1,285 |
|
안녕하세요 ^^..또 질문을 드리게 되네요..
굵은선 으로 바꿔도 모터가 안돌아서..
TR로 전류를 증폭하는걸 찾고있는데
회로도쪽은 너무약해서... 참 이게 아니지..
질문드리겠습니다..
Pro키트 우측하단과 우측상단쯤에 독립전원이라고 해야하나..
5V 2개와 12V 두개가 있는데요..
그거 출력되는 전류이 몇 mA 인가요??
그리고 왼쪽 상단에 전원 어탭터 꼽는 부분아래..
DC MOTOR 라고 있던데요..
그건 몇 볼트고, 전류는 얼마나 될까요??
감사합니다! 수고하셨어요(?)!!!
관리자 답변
안녕하세요? 고객님,
소프트웨어적으로 Enable은 하셨는 지요?
DC Input 이라고 적힌 것을 말씀하시나 보네요.
그건 아답타의 전압이 그대로 나오는 겁니다.
그냥 선으로 이어져 있습니다.
아답타의 용량이 얼마냐에 관련 되겠지요.
모터를 돌릴 떄는 모터 돌리는 데, 충분한 전원을 넣어줘야 합니다.
전압, 전류가 다 맞아야 해요.
다시 좀 더 자세히 올려 주세요.
수고하세요.
>안녕하세요 ^^..또 질문을 드리게 되네요..
>굵은선 으로 바꿔도 모터가 안돌아서..
>TR로 전류를 증폭하는걸 찾고있는데
>회로도쪽은 너무약해서... 참 이게 아니지..
>
>질문드리겠습니다..
>Pro키트 우측하단과 우측상단쯤에 독립전원이라고 해야하나..
>5V 2개와 12V 두개가 있는데요..
>그거 출력되는 전류이 몇 mA 인가요??
>
>그리고 왼쪽 상단에 전원 어탭터 꼽는 부분아래..
>DC MOTOR 라고 있던데요..
>그건 몇 볼트고, 전류는 얼마나 될까요??
>
>감사합니다! 수고하셨어요(?)!!!
|
||||
| 5068 | 답변완료질문입니다ㅠ | 이기우 | 2010-05-07 | 1,292 |
|
안녕하세요
개발보드 소형 사용중입니다
궁금한건
그라운드가 여러개 있잖아요 각 포트마다도 있고
근데 어차피 5v이건 12v 이건
맨처음 들어오는 아답터의 그라운드로 다 똑같은거죠?
관리자 답변
안녕하세요
DC일경우만,
5볼트, 12볼트, 어떤한 DC전압이라도 그라운드를 공통으로 묶어서 사용해야합니다.
GND는 전위차의 기준점이 됩니다.
그래야 5볼트,12볼트 전위차에 의해 전압이 생겨납니다.
수고하세요
>안녕하세요
>개발보드 소형 사용중입니다
>궁금한건
>그라운드가 여러개 있잖아요 각 포트마다도 있고
>근데 어차피 5v이건 12v 이건
>맨처음 들어오는 아답터의 그라운드로 다 똑같은거죠?
>
>
|
||||
| 5067 | 답변완료노란색 LED 두개가 자꾸 둘다 불이 들어와있습니다. | 김정치 | 2010-05-07 | 1,315 |
|
AB-M128-B를 사용하고 있고요
이거때문에 프로그램을 넣어도 실행이 안되는것 같은데 어디가 문제인거죠?
관리자 답변
안녕하세요
질문이 이해가 잘 안됩니다.
http://newtc.co.kr/board/view.php?id=qna&page=1&sn1=&divpage=3&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=3119
위 링크를 보시고 질문을 해주시길 바랍니다.
수고하세요
>AB-M128-B를 사용하고 있고요
>이거때문에 프로그램을 넣어도 실행이 안되는것 같은데 어디가 문제인거죠?
|
||||
| 5066 | 답변완료문의드립니다. | 최종열 | 2010-05-07 | 1,361 |
|
저희가 이번에 연구과제를
gps를 이용한 자율주행 자동차를 제작할려고 합니다.
혹시 여기서 gps정보를 받아 그 위치까지 주행가능한 제품구매가 가능한지 궁금합니다.
관리자 답변
안녕하세요
본사에서는 gps정보를 받아 그 위치까지 주행가능한 제품은 없습니다.^^;
수고하세요
>저희가 이번에 연구과제를
>gps를 이용한 자율주행 자동차를 제작할려고 합니다.
>혹시 여기서 gps정보를 받아 그 위치까지 주행가능한 제품구매가 가능한지 궁금합니다.
|
||||
| 5065 | 답변완료3축 가속도 센서 이동 거리 계산 | 성길호 | 2010-05-07 | 1,885 |
|
안녕하세요.
3축 가속도 센서에서 이동거리 계산하는 법을 칩개발사에서 자료를 적용해서 했는데요.
잘 안되네요..
우선, 센서 출력 데이터에다 캘리브레이션 데이터를 뱄고요.
이 데이터를 가속도라고 생각하고, 속도에다 적분했고요..
속도를 갖고 거리를 계산해서 적분했는데요..
처음 이동위치인지, 다른 위치인지 알수가 없어서요...
거리 이동은 되는것 같은데, 어느 위치에 가 있는지를 모르겠네요..
질문이 잘 되었나 모르겠네요.
쉽게 이야기하면 제가 손으로 센서를 잡고 위로 올렸다가 제자리로 돌아오는 것인데요
Z축만 이용을 하고요 2차원 그래프로 Y축으로 표시하는데 할때마다 달라요.
관리자 답변
안녕하세요? 고객님,
읽어보면 동적 가속도만 남겨서, 적분하여 값을 얻으시려는 것 같습니다.
아래를 참고하셔서, 데이터 값을 보정하여 사용하셔야 합니다.
가속도 센서가 아무리 잘만들어도, 이동, 온도, 압력 등에 의하여 약간씩 특어지게 되는 데,
결과 값이 많이 달라지게 됩니다. 아래를 참고 바랍니다.
- 아래 -
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=26
수고하세요.
>안녕하세요.
>
>3축 가속도 센서에서 이동거리 계산하는 법을 칩개발사에서 자료를 적용해서 했는데요.
>잘 안되네요..
>
>우선, 센서 출력 데이터에다 캘리브레이션 데이터를 뱄고요.
>이 데이터를 가속도라고 생각하고, 속도에다 적분했고요..
>속도를 갖고 거리를 계산해서 적분했는데요..
>
>처음 이동위치인지, 다른 위치인지 알수가 없어서요...
>거리 이동은 되는것 같은데, 어느 위치에 가 있는지를 모르겠네요..
>
>질문이 잘 되었나 모르겠네요.
>
>쉽게 이야기하면 제가 손으로 센서를 잡고 위로 올렸다가 제자리로 돌아오는 것인데요
>Z축만 이용을 하고요 2차원 그래프로 Y축으로 표시하는데 할때마다 달라요.
>
|
||||
| 5064 | 답변완료ICC AVR 관련 에러 질문 | 황인식 | 2010-05-07 | 1,397 |
|
AD-USBISP V03와 ATMEGA128 Pro A 구매해서
ICC AVR을 귀사의 메뉴얼 대로 하는데
첨부파일의 에러가 납니다.
ISP보드의 드라이버는 "문제 발생시"의 파일로 깔았습니다.
빠른 답변 부탁드립니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
현재 상황으로 보면, 메뉴얼대로 진행되지 않았습니다. 수정해서 될 가능성이 많습니다.^^
아래 USBISP 사용법 메뉴얼을 참고하세요. 따라하기로 되어 있습니다.
- 아래 -
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=100
잘못된 부분은, ICCAVR 사용시에 일단 ATMEL의 AVR Studio를 설치하여야 하고(이건 하셨는 지 확인해 보세요.) 그리고, STK500으로 잡아야 하고, COM 포트도 맞춰야 하고,
아래에 AVR Studio의 STK500.exe 링크를 제대로 설정하여 알려 줘야 하고, -dAtmega128도 적어줘야 합니다.
메뉴얼 보면 자세히 나옵니다.
수고하세요.
>AD-USBISP V03와 ATMEGA128 Pro A 구매해서
>ICC AVR을 귀사의 메뉴얼 대로 하는데
>첨부파일의 에러가 납니다.
>ISP보드의 드라이버는 "문제 발생시"의 파일로 깔았습니다.
>빠른 답변 부탁드립니다.
|
||||
