Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 8828 | 답변완료안녕하세요 타이머를 사용한 스텝모터 2개 제어하는데 궁금한게 있어서 올립니다. | 지능시스템연구실 | 2014-06-13 | 1,410 |
|
현재 스텝모터2개와 ADC센서를 이용해서 ATMEGA 128보드에서 라인트레이서를 구현하려고 합니다.
스텝모터 드라이버는 AM-CS2P이고 스텝모터는 2-phase 스텝모터입니다.
왼쪽으로 회전시 오른쪽 모터를 더 돌리고 왼쪽 모터는 기본만큼만돌고 , 오른쪽으로 회전시 왼쪽 모터를 더 돌리고 오른쪽모터는 기본만큼만 도는 코드를 구현하려고하는데.
드라이버를 한개 사용하고 포트도 하나 사용해서 타이머 오버플로우 루틴으로 제어했습니다.
두 모터를 같이 제어하는것은 타이머 오버플로우 루틴한개만으로도 가능한데.
두개를 따로 제어하려고 하니 어떻게 해야될지 모르겠어서 이렇게 질문 올립니다.
아래 코드입니다. 현재 모터는 PORTC로 ADC는 PORTA로 넣어논 상태입니다.
타이머 루틴을 두개를 따로 돌려서 모터를 제어해야 할거 같은데, 레지스터에 대한 부분을 건드려줘야될것 같은데..
잘모르겠습니다 ㅠ 도와주세요 ㅠ
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdio.h>
#define MOTOR_PORT PORTC
#define MOTOR_PORT_DDR DDRC
#define LEFT 0
#define RIGHT 1
#define SW_PORT PINA
#define SW_PORT_DDR DDRA
#define SPEED_H_LIMIT 200
#define SPEED_L_LIMIT 0
#define LSPEEDUP 1
#define RSPEEDUP 1
#define OK 1
#define NOOK 0
volatile int TURN, LSPEED, RSPEED, timer0_expired=NOOK, timer2_expired=NOOK, lcounter=0, rcounter=0;
volatile unsigned char stepleft=0, stepright=0;
static int Putchar(char c, FILE *stream);
void tx0Char(char message);
void tx1Char(char message);
void timer0_init(void);
static int Putchar(char c, FILE *stream)
{
tx0Char(c);
tx1Char(c);
return 0;
}
// scanf 함수 사용시 추가할 것.
int Getchar(void)
{
while ((UCSR0A & 0x80) == 0);
return UDR0;
}
// UART0 을 이용한 출력
void tx0Char(char message)
{
while (((UCSR0A>>UDRE0)&0x01) == 0) ; // UDRE, data register empty
UDR0 = message;
}
// UART1 을 이용한 출력
void tx1Char(char message)
{
while (((UCSR1A>>UDRE1)&0x01) == 0) ; // UDRE, data register empty
UDR1 = message;
}
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00; //m103 output only
DDRC = 0xFF;
PORTD = 0x00;
DDRD = 0x00;
PORTE = 0x00;
DDRE = 0x00;
PORTF = 0x00;
DDRF = 0x33;
PORTG = 0x00;
DDRG = 0x03;
}
//UART0 initialize
// desired baud rate: 9600
// actual: baud rate:9615 (0.2%)
// char size: 8 bit
// parity: Disabled
void uart0_init(void)
{
UCSR0B = 0x00; //disable while setting baud rate
UCSR0A = 0x00;
UCSR0C = 0x06;
UBRR0L = 0x67; //set baud rate lo
UBRR0H = 0x00; //set baud rate hi
UCSR0B = 0x18;
}
//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();
fdevopen(Putchar,0);
timer2_init();
timer3_init();
MCUCR = 0x00;
EICRA = 0x00; //extended ext ints
EICRB = 0x00; //extended ext ints
EIMSK = 0x00;
TIMSK = 0x40; //timer interrupt sources
ETIMSK = 0x04; //extended timer interrupt sources
/*
MCUCR = 0x00;
EICRA = 0x00; //extended ext ints
EICRB = 0x00; //extended ext ints
EIMSK = 0x00;
TIMSK = 0x01; //timer interrupt sources
ETIMSK = 0x00; //extended timer interrupt sources
*/
sei(); //re-enable interrupts
//all peripherals are now initialized
}
/* 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;
}
void delay(int n)
{
volatile int i,j;
for(i=1;i<n;i++)
{
for(j=1;j<300;j++);
}
}
//TIMER0 initialize - prescale:8
// WGM: Normal
// desired value: 200KHz
// actual value: 200.000KHz (0.0%)
void timer0_init(void)
{
TCCR0 = 0x00; //stop
ASSR = 0x00; //set async mode
TCNT0 = 0xF6; //set count
OCR0 = 0x0A;
TCCR0 = 0x02; //start timer
}
ISR(TIMER0_OVF_vect)
{
TCNT0 = 0xF6; //reload counter value
if(lcounter < (SPEED_H_LIMIT - LSPEED))
{
lcounter++;
}
else
{
timer0_expired = OK;
}
if(timer0_expired == OK)
{
//stepright = RIGHTmotorOneClock(stepright, TURN);
stepleft = LEFTmotorOneClock(stepleft, TURN);
MOTOR_PORT = stepleft;
timer0_expired = NOOK;
lcounter = 0;
}
}
void timer2_init(void)
{
TCCR2 = 0x00; //stop
//ASSR = 0x00; //set async mode
TCNT2 = 0xF6; //set count
OCR2 = 0x0A;
TCCR2 = 0x02; //start timer
}
ISR(TIMER2_OVF_vect)
{
TCNT2 = 0xF6; //reload counter value
if(rcounter < (SPEED_H_LIMIT - RSPEED))
{
rcounter++;
}
else
{
timer2_expired = OK;
}
if(timer2_expired == OK)
{
stepright = RIGHTmotorOneClock(stepright, TURN);
//stepleft = LEFTmotorOneClock(stepleft, TURN);
MOTOR_PORT = stepright;
timer2_expired = NOOK;
rcounter = 0;
}
}
int main(void)
{
init_devices();
//insert your functional code here...
printf(" \n\n\rStepping Motor test program...\n\r");
MOTOR_PORT_DDR = 0xff;
SW_PORT_DDR = 0x00;
LSPEED = 50;
RSPEED = 50;
TURN = RIGHT;
while(1)
{
switch(SW_PORT)
{
case 0x01: TURN = RIGHT;
printf("RIGHT!!\r\n");
break;
case 0x02: TURN = LEFT;
printf("LEFT!!\r\n");
break;
case 0x04: LSPEED += LSPEEDUP;
RSPEED = RSPEED;
if(LSPEED >=SPEED_H_LIMIT)
{
LSPEED = SPEED_H_LIMIT;
RSPEED = RSPEED;
}
delay(1);
printf("SPEED UP\r\n");
break;
default : break;
}
}
return 0;
}
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용해 주셔서 감사합니다.
타이머 오버플로우 구문 안에서
if (right) 오른쪽 한번 돌리기
If (left) 왼쪽 한번 돌리기
이렇게 넣고 메인의 while문에서 센서 감지시에
right나 left값을 바꾸면되죠.
감사합니다.
>
>
> 현재 스텝모터2개와 ADC센서를 이용해서 ATMEGA 128보드에서 라인트레이서를 구현하려고 합니다.
>
>
>
> 스텝모터 드라이버는 AM-CS2P이고 스텝모터는 2-phase 스텝모터입니다.
>
>
>
> 왼쪽으로 회전시 오른쪽 모터를 더 돌리고 왼쪽 모터는 기본만큼만돌고 , 오른쪽으로 회전시 왼쪽 모터를 더 돌리고 오른쪽모터는 기본만큼만 도는 코드를 구현하려고하는데.
>
>
>
> 드라이버를 한개 사용하고 포트도 하나 사용해서 타이머 오버플로우 루틴으로 제어했습니다.
>
>
>
> 두 모터를 같이 제어하는것은 타이머 오버플로우 루틴한개만으로도 가능한데.
>
>
>
> 두개를 따로 제어하려고 하니 어떻게 해야될지 모르겠어서 이렇게 질문 올립니다.
>
>
>
> 아래 코드입니다. 현재 모터는 PORTC로 ADC는 PORTA로 넣어논 상태입니다.
>
>
>
> 타이머 루틴을 두개를 따로 돌려서 모터를 제어해야 할거 같은데, 레지스터에 대한 부분을 건드려줘야될것 같은데..
>
>
>
> 잘모르겠습니다 ㅠ 도와주세요 ㅠ
>
>
>
> #include <avr/io.h>
> #include <avr/interrupt.h>
> #include <stdio.h>
>
>
> #define MOTOR_PORT PORTC
> #define MOTOR_PORT_DDR DDRC
>
> #define LEFT 0
> #define RIGHT 1
>
> #define SW_PORT PINA
> #define SW_PORT_DDR DDRA
>
> #define SPEED_H_LIMIT 200
> #define SPEED_L_LIMIT 0
> #define LSPEEDUP 1
> #define RSPEEDUP 1
> #define OK 1
> #define NOOK 0
>
> volatile int TURN, LSPEED, RSPEED, timer0_expired=NOOK, timer2_expired=NOOK, lcounter=0, rcounter=0;
> volatile unsigned char stepleft=0, stepright=0;
>
> static int Putchar(char c, FILE *stream);
> void tx0Char(char message);
> void tx1Char(char message);
> void timer0_init(void);
>
>
> static int Putchar(char c, FILE *stream)
> {
> tx0Char(c);
> tx1Char(c);
> return 0;
>
> }
>
>
> // scanf 함수 사용시 추가할 것.
> int Getchar(void)
> {
> while ((UCSR0A & 0x80) == 0);
> return UDR0;
> }
>
>
> // UART0 을 이용한 출력
> void tx0Char(char message)
> {
> while (((UCSR0A>>UDRE0)&0x01) == 0) ; // UDRE, data register empty
> UDR0 = message;
> }
>
> // UART1 을 이용한 출력
> void tx1Char(char message)
> {
> while (((UCSR1A>>UDRE1)&0x01) == 0) ; // UDRE, data register empty
> UDR1 = message;
> }
>
>
> void port_init(void)
> {
> PORTA = 0x00;
> DDRA = 0x00;
> PORTB = 0x00;
> DDRB = 0x00;
> PORTC = 0x00; //m103 output only
> DDRC = 0xFF;
> PORTD = 0x00;
> DDRD = 0x00;
> PORTE = 0x00;
> DDRE = 0x00;
> PORTF = 0x00;
> DDRF = 0x33;
> PORTG = 0x00;
> DDRG = 0x03;
> }
>
> //UART0 initialize
> // desired baud rate: 9600
> // actual: baud rate:9615 (0.2%)
> // char size: 8 bit
> // parity: Disabled
> void uart0_init(void)
> {
> UCSR0B = 0x00; //disable while setting baud rate
> UCSR0A = 0x00;
> UCSR0C = 0x06;
> UBRR0L = 0x67; //set baud rate lo
> UBRR0H = 0x00; //set baud rate hi
> UCSR0B = 0x18;
> }
>
> //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();
> fdevopen(Putchar,0);
> timer2_init();
> timer3_init();
> MCUCR = 0x00;
> EICRA = 0x00; //extended ext ints
> EICRB = 0x00; //extended ext ints
> EIMSK = 0x00;
> TIMSK = 0x40; //timer interrupt sources
> ETIMSK = 0x04; //extended timer interrupt sources
> /*
> MCUCR = 0x00;
> EICRA = 0x00; //extended ext ints
> EICRB = 0x00; //extended ext ints
> EIMSK = 0x00;
> TIMSK = 0x01; //timer interrupt sources
> ETIMSK = 0x00; //extended timer interrupt sources
> */
> sei(); //re-enable interrupts
> //all peripherals are now initialized
> }
>
>
>
>
> /* 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;
> }
>
>
> void delay(int n)
> {
> volatile int i,j;
> for(i=1;i<n;i++)
> {
> for(j=1;j<300;j++);
> }
> }
>
> //TIMER0 initialize - prescale:8
> // WGM: Normal
> // desired value: 200KHz
> // actual value: 200.000KHz (0.0%)
> void timer0_init(void)
> {
> TCCR0 = 0x00; //stop
> ASSR = 0x00; //set async mode
> TCNT0 = 0xF6; //set count
> OCR0 = 0x0A;
> TCCR0 = 0x02; //start timer
> }
>
> ISR(TIMER0_OVF_vect)
> {
> TCNT0 = 0xF6; //reload counter value
> if(lcounter < (SPEED_H_LIMIT - LSPEED))
> {
> lcounter++;
> }
> else
> {
> timer0_expired = OK;
> }
>
> if(timer0_expired == OK)
> {
> //stepright = RIGHTmotorOneClock(stepright, TURN);
> stepleft = LEFTmotorOneClock(stepleft, TURN);
> MOTOR_PORT = stepleft;
> timer0_expired = NOOK;
> lcounter = 0;
> }
> }
>
> void timer2_init(void)
> {
> TCCR2 = 0x00; //stop
> //ASSR = 0x00; //set async mode
> TCNT2 = 0xF6; //set count
> OCR2 = 0x0A;
> TCCR2 = 0x02; //start timer
> }
>
> ISR(TIMER2_OVF_vect)
> {
> TCNT2 = 0xF6; //reload counter value
> if(rcounter < (SPEED_H_LIMIT - RSPEED))
> {
> rcounter++;
> }
> else
> {
> timer2_expired = OK;
> }
>
> if(timer2_expired == OK)
> {
> stepright = RIGHTmotorOneClock(stepright, TURN);
> //stepleft = LEFTmotorOneClock(stepleft, TURN);
> MOTOR_PORT = stepright;
> timer2_expired = NOOK;
> rcounter = 0;
> }
> }
>
> int main(void)
> {
> init_devices();
> //insert your functional code here...
>
> printf(" \n\n\rStepping Motor test program...\n\r");
>
> MOTOR_PORT_DDR = 0xff;
> SW_PORT_DDR = 0x00;
> LSPEED = 50;
> RSPEED = 50;
> TURN = RIGHT;
>
> while(1)
> {
> switch(SW_PORT)
> {
> case 0x01: TURN = RIGHT;
> printf("RIGHT!!\r\n");
> break;
> case 0x02: TURN = LEFT;
> printf("LEFT!!\r\n");
> break;
> case 0x04: LSPEED += LSPEEDUP;
> RSPEED = RSPEED;
> if(LSPEED >=SPEED_H_LIMIT)
> {
> LSPEED = SPEED_H_LIMIT;
> RSPEED = RSPEED;
> }
> delay(1);
> printf("SPEED UP\r\n");
> break;
> default : break;
> }
> }
> return 0;
> }
>
|
||||
| 8827 | 답변완료avr과 와이파이모듈 연결에 대해 문의 드립니다. | 김찬우 | 2014-06-12 | 2,897 |
|
atmega128
WIFI-RS232C 변환모듈V
atmega128 와 안드로이드 앱 간의 통신에 wifi모듈을 사용하고 있습니다.
avr소스는 uart0를 사용해서 1,2,3,4,q,w,e,r 와 같은 문자를 송, 수신하여 키트를 제어할 예정입니다.
하이퍼터미널을 사용하여 문자를 보내면 원하는 동작이 되고 송, 수신 되는 것을 확인하였습니다.
모듈을 연결하여 실제 통신을 하려 하면 문제가 발생합니다.
와이파이가 연결 되면 키트의 기능들이 지 멋대로 동작 됩니다.
하이퍼터미널로 정상 동작 한다고 하면 이런 문제가 발생하는데 있어서
avr 소스 쪽의 문제는 전혀 없는 게 맞나요?
그리고 와이파이 모듈이 3.3v의 전압 인가가 필요합니다.
vcc에 3.3v가 인가 되어야 하는 건 알겠습니다.
avr의 tx와 와이 파이 모듈의 rx 를 연결하는데 있어서도
전압 분배 회로를 꾸며주어야 하나요?
마지막으로 5v에서 3.3v로 낮춰주기 위해서 2k옴과 1k옴을
사용하여 전압 분배 회로를 꾸몄습니다.
꾸민 회로를 avr과 연결 했을 때는 멀티미터로 찍어보니까
저희가 원하는 부분에 출력 전압이 3.2v정도 나왔습니다.
그런데 모듈과 연결을 하면 1v정도로 떨어지던데 꼭 레귤레이터를 사용해주어야 하나요?
관리자 답변
안녕하세요? 고객님,
AVR쪽과 와이파이쪽의 읽지 전압이 맞지 않아서 생기는 문제 같네요.
전압 레벨을 맞춰주세요.
한쪽은 3.3V 한쪽은 5V이면 문제가 생겨요.
잘 맞춰주세요.
감사합니다.
감사합니다.
>
>
> atmega128
> WIFI-RS232C 변환모듈V
>
> atmega128 와 안드로이드 앱 간의 통신에 wifi모듈을 사용하고 있습니다.
>
> avr소스는 uart0를 사용해서 1,2,3,4,q,w,e,r 와 같은 문자를 송, 수신하여 키트를 제어할 예정입니다.
>
> 하이퍼터미널을 사용하여 문자를 보내면 원하는 동작이 되고 송, 수신 되는 것을 확인하였습니다.
>
> 모듈을 연결하여 실제 통신을 하려 하면 문제가 발생합니다.
>
> 와이파이가 연결 되면 키트의 기능들이 지 멋대로 동작 됩니다.
>
> 하이퍼터미널로 정상 동작 한다고 하면 이런 문제가 발생하는데 있어서
>
> avr 소스 쪽의 문제는 전혀 없는 게 맞나요?
>
>
>
> 그리고 와이파이 모듈이 3.3v의 전압 인가가 필요합니다.
>
> vcc에 3.3v가 인가 되어야 하는 건 알겠습니다.
>
> avr의 tx와 와이 파이 모듈의 rx 를 연결하는데 있어서도
>
> 전압 분배 회로를 꾸며주어야 하나요?
>
>
>
> 마지막으로 5v에서 3.3v로 낮춰주기 위해서 2k옴과 1k옴을
>
> 사용하여 전압 분배 회로를 꾸몄습니다.
>
> 꾸민 회로를 avr과 연결 했을 때는 멀티미터로 찍어보니까
>
> 저희가 원하는 부분에 출력 전압이 3.2v정도 나왔습니다.
>
> 그런데 모듈과 연결을 하면 1v정도로 떨어지던데 꼭 레귤레이터를 사용해주어야 하나요?
>
|
||||
| 8826 | 답변완료[FuseBit]ATmega128A Fuse Bit 복구 방법 | 김용태 | 2014-06-11 | 1,402 |
|
KT M128KIT 를 가지고 있으며, AD_USBISP 및 JTAG ICE mkII 를 가지고 잇습니다.
불행히도 Atmega128A 제작B/D 에 AVRstudio6.2로 제가 Fuse Bit (SPIEN, JTAG EN을 disable 시켜) Device Signature 를 읽지 못해, download 및 debugger가 불가능한 상황입니다.
Fuse bit 를 복구하는 방법에 대해 문의드립니다.
AD_USBISP 에 있는 USB-Serial 4 pin 커넥터와 특정 복구 프로그램으로 복구가 가능할 것 같은데, 방법을 잘 모르겠습니다.
Atmega128A 의 위의 Fuse Bit 를 잘 못 셋팅했을때 복구를 하는 방법 문의드립니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨제품을 이용해 주셔서 감사합니다.
온라인 강의에서 AVR강의실에 가서 인공호흡을 찾아보세요.
잘 안되시면 본사에서 as받으세요.
감사합니다.
>
>
> KT M128KIT 를 가지고 있으며, AD_USBISP 및 JTAG ICE mkII 를 가지고 잇습니다.
>
> 불행히도 Atmega128A 제작B/D 에 AVRstudio6.2로 제가 Fuse Bit (SPIEN, JTAG EN을 disable 시켜) Device Signature 를 읽지 못해, download 및 debugger가 불가능한 상황입니다.
>
> Fuse bit 를 복구하는 방법에 대해 문의드립니다.
>
> AD_USBISP 에 있는 USB-Serial 4 pin 커넥터와 특정 복구 프로그램으로 복구가 가능할 것 같은데, 방법을 잘 모르겠습니다.
>
> Atmega128A 의 위의 Fuse Bit 를 잘 못 셋팅했을때 복구를 하는 방법 문의드립니다.
>
|
||||
| 8825 | 답변완료128pro-A 간단 테스트 질문요!ㅠㅠ | 박현호 | 2014-06-10 | 1,356 |
|
간단히 led에 불이 들어오게 하려는데
컴파일러에서 'STK500 error entering programming mode'가 자꾸 뜹니다 ㅠ
설정을 잘 못한거 같은데 결선도 문제가 있는지 싶어 문의 드립니다 ㅠ
먼저 MCU모듈은 Atmega128A 이구요, 메인보드는 AM128pro-A, 컴파일러는 코드비전 2.05.6 버젼입니다.
usbisp 드라이버 설치는 끝냈고 com포트도 확인했고 메인보드 메뉴얼대로 설정은 다 끝낸거 같은데
build all, program the chip 하면 다운로드가 안되네요 ㅠ
혹시 외부전원을 안주면 usbisp에서 전원공급 모드로 바꿔줘야 다운로드도 가능한지,
메인보드 on/off 스위치도 다운로드할때 on시켜줘야 다운로드가 되는건지,
그 외 정상적인 다운로드를 위해서 기본적인 셋팅방법 좀 부탁드립니다 ㅠ
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용해 주셔서 감사합니다.
메인보드에 전원은 당연히 들어와야해요.
아답타 등으로 전원을 주지 않으면,
usbisp에서 전원스위치를 넣어주면됩니다.
USBISP V03.6의 경우는 딥스위치 중 안쪽 스위치를 ON 으로 하고 쓰세요.
감사합니다.
>
>
> 간단히 led에 불이 들어오게 하려는데
>
> 컴파일러에서 'STK500 error entering programming mode'가 자꾸 뜹니다 ㅠ
> 설정을 잘 못한거 같은데 결선도 문제가 있는지 싶어 문의 드립니다 ㅠ
>
> 먼저 MCU모듈은 Atmega128A 이구요, 메인보드는 AM128pro-A, 컴파일러는 코드비전 2.05.6 버젼입니다.
>
> usbisp 드라이버 설치는 끝냈고 com포트도 확인했고 메인보드 메뉴얼대로 설정은 다 끝낸거 같은데
> build all, program the chip 하면 다운로드가 안되네요 ㅠ
>
> 혹시 외부전원을 안주면 usbisp에서 전원공급 모드로 바꿔줘야 다운로드도 가능한지,
> 메인보드 on/off 스위치도 다운로드할때 on시켜줘야 다운로드가 되는건지,
>
> 그 외 정상적인 다운로드를 위해서 기본적인 셋팅방법 좀 부탁드립니다 ㅠ
>
|
||||
| 8824 | 답변완료[AB-S52]8051 개발보드 구입 관련 | 고경문 | 2014-06-10 | 1,432 |
|
8051을 공부하기 위해 EVB를 찾던 중 엘레파츠에서 AB-S52 상품을 발견했습니다.
하지만 품절이라 구매가 불가능해서 문의를 드립니다.
더 이상 제작하여 판매할 계획은 없는지요?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용해주셔서 감사합니다.
본사에서만 소량구매가능합니다.
지속적으로 한동안은 소량전화주문만은 가능합니다.
시간이 며칠걸리지만 금주내로 발송가능합니다.
본사에 전화주문해주세요.
감사합니다.
>
>
> 8051을 공부하기 위해 EVB를 찾던 중 엘레파츠에서 AB-S52 상품을 발견했습니다.
> 하지만 품절이라 구매가 불가능해서 문의를 드립니다.
> 더 이상 제작하여 판매할 계획은 없는지요?
>
|
||||
| 8823 | 답변완료ab-m128-b Lipo배터리 | 김세용 | 2014-06-09 | 1,443 |
|
11.1v Lipo배터리로 ab-m128-b 소형개발보드에 연결해서
전원 공급하면 아무 문제 없나요?
관리자 답변
안녕하세요? 고객님,
네, 전원입력 아답타 커넥터 바로 옆의 2핀 커넥터나 아답타 커넥터 입력 쪽이나
그 쪽으로 입력하면 아무런 문제가 없겠습니다.
충전 잘해서 쓰세요.
감사합니다.
>
>
> 11.1v Lipo배터리로 ab-m128-b 소형개발보드에 연결해서
> 전원 공급하면 아무 문제 없나요?
>
|
||||
| 8822 | 답변완료도트 매트 10*10 | 이영배 | 2014-06-09 | 1,394 |
|
이걸 소스는 어떻게 찾아보던가 하면 되긴할듯한데
이 매트릭스에 대한 데이터시트 같은게 있나요?
이 매트릭스를 결국 atmega128에 연결을 하게되는데
그라운드, 파워는 몇 V이며 어디 핀에 꽂아야하는지 모르겠습니다.
이 도트 매트릭스를 한 atmega128에서 몇개까지 돌아가는지 궁금합니다
그리고 sel[번호] 에 해당하는 포트와 data[숫자]를 포트에 순서대로꽂아야하는지
아니면 역으로 해야하는지 아예 꽂는 방법을 몰라서 질문드립니다 ㅜㅜ
관리자 답변
안녕하세요? 고객님,
메뉴얼 : 자료실에서 AM-M4211 로 검색하면 나옵니다.
강좌 : 온라인강의->AVR 강의에서 도트메트릭스 로 검색하면 나옵니다.
여기에 연결방법 등도 나와 있습니다.
일반적인 LED는 5V에 연결하게 되면 330옴, 3.3V에 연결해서 쓰게 되면 200옴을 기본으로 씁니다.
이 도트 매트릭스를 한 atmega128에서 몇개까지 돌아가는지 궁금합니다
==> 무슨 말인지 잘 이해가 안갑니다. 자세히 질문해 주세요.
꽂는 것은 강좌내용을 잘 보고 하시면 될 것 같습니다.
소스는 지난 번 답변에 첨부되어 있습니다.
감사합니다.
>
>
> 이걸 소스는 어떻게 찾아보던가 하면 되긴할듯한데
>
> 이 매트릭스에 대한 데이터시트 같은게 있나요?
>
> 이 매트릭스를 결국 atmega128에 연결을 하게되는데
>
> 그라운드, 파워는 몇 V이며 어디 핀에 꽂아야하는지 모르겠습니다.
>
> 이 도트 매트릭스를 한 atmega128에서 몇개까지 돌아가는지 궁금합니다
>
> 그리고 sel[번호] 에 해당하는 포트와 data[숫자]를 포트에 순서대로꽂아야하는지
>
> 아니면 역으로 해야하는지 아예 꽂는 방법을 몰라서 질문드립니다 ㅜㅜ
>
|
||||
| 8821 | 답변완료다시 am-128pro 질문드려요 | 장민규 | 2014-06-08 | 1,402 |
|
http://www.newtc.co.kr/dpshop/bbs/board.php?bo_table=m48&wr_id=621
여기 링크해주신 곳 이 곳은 원래 아는거구요
제 말은 윈도우 7 32비트 운영체제에서도 이 드라이버 사용할 수 있는 거를 여쭈어본겁니다
깔아보니까 안 되는 것 같아서요
만약에 윈도우7 32비트에서도 가능하다면 드라이버 x64를 깔아야 하나요 x86을깔아야하나요
x32는 없는 것 같은데
관리자 답변
안녕하세요? 고객님,
사용이 가능하구요.
x86이 32비트입니다. 같은 말입니다.
그것으로 설치하면 됩니다.
감사합니다.
>
>
> http://www.newtc.co.kr/dpshop/bbs/board.php?bo_table=m48&wr_id=621
> 여기 링크해주신 곳 이 곳은 원래 아는거구요
>
> 제 말은 윈도우 7 32비트 운영체제에서도 이 드라이버 사용할 수 있는 거를 여쭈어본겁니다
> 깔아보니까 안 되는 것 같아서요
> 만약에 윈도우7 32비트에서도 가능하다면 드라이버 x64를 깔아야 하나요 x86을깔아야하나요
> x32는 없는 것 같은데
>
|
||||
| 8820 | 답변완료음성인식으로 스테핑모터를 구동시키는 소스좀 도와주세요 | 김준섭 | 2014-06-06 | 1,429 |
|
음성인식으로 엘리베이터 구동을 하는 작품을 만들고있습니다.
간단히 음성인식 모듈에 숫자를 말하면 그 층으로 이동하는 구문인데
올라가는 소스는 동작을 하는데 반면 역회전에서 애를 먹고있습니다.
뉴티씨 기본구문을 이용하고 있구요 int main부터가 저희가 손본 부분입니다
참고로 저희는 atmega128pro를 사용해 1.7kg급 스테핑모터와 모듈을 돌리고 있구요
음성인식모듈은 jt-2000을 사용하고 있습니다.
참고로 저희는 RIGHT모터쪽만 사용하고 있구요 모터는 PORTC, 음성인식부분은 PROTD를 쓰고있습니다.
저희가 해석한 결과론 if구문에서 else if부분을 불러와 실행시키는 것이 문제인데
어떻게 손봐야 할지 모르겠더라구요 int main부분에서 있는 건 음성인식부분만 써서 위에 값을 불러오려고 해논건데 올라가는건 그냥 실행시키면 if 값이 실행되니까 그런가보다 그런데
elseif는 어떻게 불러오는지 모르겠어요 ㅠㅠ 역회전 시키는 것좀 도와주세요
#include <avr/io.h>
#include <avr/interrupt.h>
#define MOTOR_PORT PORTC
#define MOTOR_PORT_DDR DDRC
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00; //m103 output only
DDRC = 0xff;
PORTD = 0x00;
DDRD = 0x00;
PORTE = 0x00;
DDRE = 0x00;
PORTF = 0x00;
DDRF = 0x00;
PORTG = 0x00;
DDRG = 0x00;
}
//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
cli(); //disable all interrupts
XMCRA = 0x00; //external memory
XMCRB = 0x00; //external memory
port_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
}
/* Stepping Motor derive---------------------------*/
unsigned char RIGHTmotorOneClock(unsigned char step, char dir)
{
step = step & 0xf0;
if(dir){
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;
}
}else{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;
}
}
return step;
}
void delay(int n)
{
volatile int i,j;
for(i=1;i<n;i++)
{
for(j=1;j<1000;j++);
}
}
//
int main(void)
{
volatile unsigned char stepleft=0, stepright=0;
DDRD = 0x00;
unsigned char button = 0x00;
unsigned char back_button = 0x00;
int state = 0;
int temp = 0;
init_devices();
//insert your functional code here...
DDRG = 0xff;
MOTOR_PORT_DDR = 0xff;
while(1){
button = PIND;
if(button != back_button)
{
if(((button&0b00000100) == 0b00000100))
{
temp = 1;
state = 0;
}
else if((temp == 1) && ((button&0b00001000) == 0b00001000))
{
stepright = RIGHTmotorOneClock(stepright, 1);
state++;
delay(3);
MOTOR_PORT = stepleft|stepright;
if(state >= 400)
{
temp = 2;
MOTOR_PORT = 0x00;
}
}
else if((temp == 1) && ((button&0b00010000) == 0b00010000))
{
stepright = RIGHTmotorOneClock(stepright, 1);
state++;
delay(3);
MOTOR_PORT = stepleft|stepright;
if(state >= 1200)
{
temp = 4;
MOTOR_PORT = 0x00;
}
}
else if((temp == 2) && ((button&0b00000100) == 0b00000100))
{
stepright = RIGHTmotorOneClock(stepright, 0);
state++;
delay(3);
MOTOR_PORT = stepright|stepleft;
if(state >= 400)
{
temp = 1;
MOTOR_PORT = 0x00;
}
}
else if((temp == 2) && ((button&0b00010000) == 0b00010000))
{
stepright = RIGHTmotorOneClock(stepright, 1);
state++;
delay(3);
MOTOR_PORT = stepleft|stepright;
if(state >= 800)
{
temp = 4;
MOTOR_PORT = 0x00;
}
}
}
}
return 0;
}
관리자 답변
안녕하세요? 고객님,
예를 들어서 설명하면,
RIGHTmotorOneClock(stepright, 1);
여기에서
RIGHTmotorOneClock(stepright, 0);
이렇게 하면 방향이 반대가 되요.
감사합니다.
>
>
> 음성인식으로 엘리베이터 구동을 하는 작품을 만들고있습니다.
> 간단히 음성인식 모듈에 숫자를 말하면 그 층으로 이동하는 구문인데
> 올라가는 소스는 동작을 하는데 반면 역회전에서 애를 먹고있습니다.
> 뉴티씨 기본구문을 이용하고 있구요 int main부터가 저희가 손본 부분입니다
> 참고로 저희는 atmega128pro를 사용해 1.7kg급 스테핑모터와 모듈을 돌리고 있구요
> 음성인식모듈은 jt-2000을 사용하고 있습니다.
> 참고로 저희는 RIGHT모터쪽만 사용하고 있구요 모터는 PORTC, 음성인식부분은 PROTD를 쓰고있습니다.
>
> 저희가 해석한 결과론 if구문에서 else if부분을 불러와 실행시키는 것이 문제인데
> 어떻게 손봐야 할지 모르겠더라구요 int main부분에서 있는 건 음성인식부분만 써서 위에 값을 불러오려고 해논건데 올라가는건 그냥 실행시키면 if 값이 실행되니까 그런가보다 그런데
> elseif는 어떻게 불러오는지 모르겠어요 ㅠㅠ 역회전 시키는 것좀 도와주세요
>
>
>
> #include <avr/io.h>
> #include <avr/interrupt.h>
>
>
> #define MOTOR_PORT PORTC
> #define MOTOR_PORT_DDR DDRC
>
> void port_init(void)
> {
> PORTA = 0x00;
> DDRA = 0x00;
> PORTB = 0x00;
> DDRB = 0x00;
> PORTC = 0x00; //m103 output only
> DDRC = 0xff;
> PORTD = 0x00;
> DDRD = 0x00;
> PORTE = 0x00;
> DDRE = 0x00;
> PORTF = 0x00;
> DDRF = 0x00;
> PORTG = 0x00;
> DDRG = 0x00;
> }
>
>
> //call this routine to initialize all peripherals
> void init_devices(void)
> {
> //stop errant interrupts until set up
> cli(); //disable all interrupts
> XMCRA = 0x00; //external memory
> XMCRB = 0x00; //external memory
> port_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
> }
>
>
> /* Stepping Motor derive---------------------------*/
> unsigned char RIGHTmotorOneClock(unsigned char step, char dir)
> {
> step = step & 0xf0;
> if(dir){
> 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;
> }
>
> }else{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;
> }
>
> }
> return step;
> }
>
>
> void delay(int n)
> {
> volatile int i,j;
> for(i=1;i<n;i++)
> {
> for(j=1;j<1000;j++);
> }
> }
>
> //
> int main(void)
> {
> volatile unsigned char stepleft=0, stepright=0;
> DDRD = 0x00;
> unsigned char button = 0x00;
> unsigned char back_button = 0x00;
> int state = 0;
> int temp = 0;
> init_devices();
> //insert your functional code here...
> DDRG = 0xff;
>
> MOTOR_PORT_DDR = 0xff;
> while(1){
> button = PIND;
> if(button != back_button)
> {
> if(((button&0b00000100) == 0b00000100))
> {
> temp = 1;
> state = 0;
> }
>
> else if((temp == 1) && ((button&0b00001000) == 0b00001000))
> {
> stepright = RIGHTmotorOneClock(stepright, 1);
>
> state++;
> delay(3);
> MOTOR_PORT = stepleft|stepright;
> if(state >= 400)
> {
> temp = 2;
> MOTOR_PORT = 0x00;
> }
> }
> else if((temp == 1) && ((button&0b00010000) == 0b00010000))
> {
> stepright = RIGHTmotorOneClock(stepright, 1);
>
> state++;
> delay(3);
> MOTOR_PORT = stepleft|stepright;
> if(state >= 1200)
> {
> temp = 4;
> MOTOR_PORT = 0x00;
> }
> }
>
> else if((temp == 2) && ((button&0b00000100) == 0b00000100))
> {
> stepright = RIGHTmotorOneClock(stepright, 0);
>
> state++;
> delay(3);
> MOTOR_PORT = stepright|stepleft;
> if(state >= 400)
> {
> temp = 1;
> MOTOR_PORT = 0x00;
> }
> }
> else if((temp == 2) && ((button&0b00010000) == 0b00010000))
> {
> stepright = RIGHTmotorOneClock(stepright, 1);
>
> state++;
> delay(3);
> MOTOR_PORT = stepleft|stepright;
> if(state >= 800)
> {
> temp = 4;
> MOTOR_PORT = 0x00;
> }
> }
>
> }
> }
> return 0;
> }
>
|
||||
| 8819 | 답변완료JTAG 사용법 문의드리러 방문 했던 사람입니다. | 권재영 | 2014-06-06 | 1,420 |
|
말씀해주신대로 Fuse bit쪽의 HIGH쪽을 0x19로 설정을 하니 다운로드는 되는것 같은데
마지막에서 아래와 같은 메시지가 나타나고 있습니다.
---------------------------
JTAG Mode Error
---------------------------
A problem occured when executing the command. See the command output for more info.
The troubleshooting section in the help system contains more information on what may
have caused the problems. To open the help system, click the Help button below.
Quick Tips: Check that the JTAG header is oriented correctly in the target connector
and make sure that the JTAG interface of the target device is enabled.
위 내용이 어떨때 나타나는지 모르겠습니다.
그리고 확인시 ISP 케이블을 꼽아서 가지고 갔는데 집에 와서 보니 ISP케이블이 없네요..
JTAG도 안되는것 같고 ISP케이블도 없어 다운로드 못하고 있어요 ㅜㅜ
월요일(9일) 오후 전화드리겠습니다.
감사합니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
퓨즈비트를 0xFF19EF와 같이 하면 JTAGEN의 비트를 셋팅하게 됩니다.
그 이후에만 JTAG의 사용이 가능해 집니다.
케이블은 월요일에 본사 방문해 주시면 돌려 드리도록 하겠습니다.
JTAG헤더 방향이 틀리게 꼽았다고 나오는 데요.
방향을 제대로 꽂았는 지, 또 JTAG 포트에 JTAG을 꽂은 것인지 확인 바랍니다.
일반 PORTA ~ PORTF까지 커넥터가 나와 있고, JTAG 포트도 모양은 똑같이 생겼지만, PCB의 JTAG 커넥터 밑에 JTAG이라고 써 있습니다.
감사합니다.
>
>
> 말씀해주신대로 Fuse bit쪽의 HIGH쪽을 0x19로 설정을 하니 다운로드는 되는것 같은데
> 마지막에서 아래와 같은 메시지가 나타나고 있습니다.
>
> ---------------------------
> JTAG Mode Error
> ---------------------------
> A problem occured when executing the command. See the command output for more info.
>
> The troubleshooting section in the help system contains more information on what may
> have caused the problems. To open the help system, click the Help button below.
>
> Quick Tips: Check that the JTAG header is oriented correctly in the target connector
> and make sure that the JTAG interface of the target device is enabled.
>
>
> 위 내용이 어떨때 나타나는지 모르겠습니다.
> 그리고 확인시 ISP 케이블을 꼽아서 가지고 갔는데 집에 와서 보니 ISP케이블이 없네요..
> JTAG도 안되는것 같고 ISP케이블도 없어 다운로드 못하고 있어요 ㅜㅜ
> 월요일(9일) 오후 전화드리겠습니다.
> 감사합니다.
>
|
||||
| 8818 | 답변완료AM-CS2P과 KD-128PRO 질문 | 강현구 | 2014-06-06 | 1,460 |
|
안녕하세요. 마이크로프로세서를 수강하고있는 대학생입니다.
자사의 KD-128PRO와 AM-CS2P, 스텝모터를 사용해 작품을 만들려고하는데
KD-128PRO의 J122AM전원포트와 AM-CS2P의 JB04전원포트 별도의 장비없이 바로 전선으로
연결해서 작동이 되는지 궁금합니다. 대학물품이라 고장의 우려도 있고, 아직 아트메가 경험이 부족하여
무엇을 조심해야할지 모르겠습니다. 아트메가와 모터모듈을 연결해 사용할때 주의해야할점도 알려주셨으면
감사하겠습니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
KD-128PRO 메인보드인 AB-M128PRO-A 보드의 전원핀 12V 출력 핀들을 CS2P에 연결해 쓰려고 하는 거죠? 네, 가능합니다.
그런 목적으로 만들어진 핀이니 연결만 잘 하여 쓰시면 됩니다.
다만, 거꾸로 꽂으면 쇼트나서 망가지니까 주의하시고, 쇼트되지 않도록도 주의하여 연결하세요.
연결되는 즉시, 망가질 수 있습니다.
감사합니다.
>
>
> 안녕하세요. 마이크로프로세서를 수강하고있는 대학생입니다.
>
> 자사의 KD-128PRO와 AM-CS2P, 스텝모터를 사용해 작품을 만들려고하는데
>
> KD-128PRO의 J122AM전원포트와 AM-CS2P의 JB04전원포트 별도의 장비없이 바로 전선으로
>
> 연결해서 작동이 되는지 궁금합니다. 대학물품이라 고장의 우려도 있고, 아직 아트메가 경험이 부족하여
>
> 무엇을 조심해야할지 모르겠습니다. 아트메가와 모터모듈을 연결해 사용할때 주의해야할점도 알려주셨으면
>
> 감사하겠습니다.
>
|
||||
| 8817 | 답변완료am-128pro 드라이버 문의드려요~! | 장민규 | 2014-06-05 | 1,453 |
|
cp210x usb to uart bridge 드라이버 설치하려고하는데
64비트 86비트밖에 없어서
윈도우 7 32비트 운영체제에 안 깔리더라구요
혹시 깔리는데 제가 못까는건가요?
받을 수 있는 드라이버 파일있다면 링크걸어주시면
감사드리겠습니다^^
관리자 답변
안녕하세요? 고객님,
USBISP V03.6을 가지고 계신가 봅니다.
USBISP용 드라이버 링크를 올려드립니다.
http://www.newtc.co.kr/dpshop/bbs/board.php?bo_table=m48&wr_id=621
감사합니다.
>
>
> cp210x usb to uart bridge 드라이버 설치하려고하는데
> 64비트 86비트밖에 없어서
> 윈도우 7 32비트 운영체제에 안 깔리더라구요
> 혹시 깔리는데 제가 못까는건가요?
>
> 받을 수 있는 드라이버 파일있다면 링크걸어주시면
> 감사드리겠습니다^^
>
|
||||
| 8816 | 답변완료도트매트릭스 10*10 에 관하여 | 이영배 | 2014-06-05 | 1,412 |
|
몇일전에 도트매트릭스를 구입하였습니다
매뉴얼에 써진대로 c언어를 작성했는데
EX_DM_SEL과 EX_DM_DATA를 알수 없다고 하는군요
이부분을 어떻게 수정해야할까요
회로도 구성관련해서 포트를 연결하는 법도 있었으면 좋겠습니다
아니면 예시나 그런 사진들을 부탁드려도 될런지요
관리자 답변
안녕하세요? 고객님,
http://www.newtc.co.kr/dpshop/bbs/board.php?bo_table=m32&wr_id=120&sca=&sfl=wr_subject&stx=%EB%A9%94%ED%8A%B8%EB%A6%AD%EC%8A%A4&sop=and
여기 가 보세요.
강좌가 있습니다.
또한, 해당 소스를 첨부합니다.
KT-M128용이라서 메모리맵드 IO구조로 확장되어 있습니다.. 고객님의 환경에 맞게 좀 고치셔야 할 겁니다.
감사합니다.
//ICC-AVR application builder : 2008-12-17 오후 9:02:44
// Target : M128
// Crystal: 16.000Mhz
#include <iom128v.h>
#include <macros.h>
#define EX_DM_SEL (*(volatile unsigned int *)0x8004)
#define EX_DM_DATA (*(volatile unsigned int *)0x8006)
//int dm_heart_data[10] = {0x000, 0x0cc, 0x132, 0x201, 0x205, 0x10a, 0x084, 0x048, 0x030, 0x000};
int dm_data[10] = {0x000, 0x0cc, 0x1fe, 0x3ff, 0x3ff, 0x1fe, 0x0fc, 0x078, 0x030, 0x000};
int dm_data_1[10] = {0x3ff, 0x333, 0x201, 0x000, 0x000, 0x201, 0x303, 0x387, 0x3cf, 0xfff};
int dmi=0;
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 = 0x00;
}
//TIMER0 initialize - prescale:64
// WGM: Normal
// desired value: 10KHz
// actual value: 10.000KHz (0.0%)
void timer0_init(void)
{
TCCR0 = 0x00; //stop
ASSR = 0x00; //set async mode
TCNT0 = 0xE7; //set count
OCR0 = 0x19;
TCCR0 = 0x04; //start timer
}
void runDotMatrix(void)
{
EX_DM_SEL = (1<<dmi);
EX_DM_DATA = dm_data[dmi++];
//DX_DM_DATA = dm_data_1[dmi++];
if(dmi>9){
dmi=0;
}
}
#pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
void timer0_ovf_isr(void)
{
TCNT0 = 0xE7; //reload counter value
runDotMatrix();
}
//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();
timer0_init();
MCUCR = 0x80;
EICRA = 0x00; //extended ext ints
EICRB = 0x00; //extended ext ints
EIMSK = 0x00;
TIMSK = 0x01; //timer interrupt sources
ETIMSK = 0x00; //extended timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
void main(void)
{
init_devices();
while(1){
;
}
}
>
>
> 몇일전에 도트매트릭스를 구입하였습니다
>
> 매뉴얼에 써진대로 c언어를 작성했는데
>
> EX_DM_SEL과 EX_DM_DATA를 알수 없다고 하는군요
>
> 이부분을 어떻게 수정해야할까요
>
> 회로도 구성관련해서 포트를 연결하는 법도 있었으면 좋겠습니다
>
> 아니면 예시나 그런 사진들을 부탁드려도 될런지요
>
|
||||
| 8815 | 답변완료견적서 요청드립니다 | 최재영 | 2014-06-05 | 1,397 |
|
회사에서 구입하는 것이라 메일로 견적서 부탁드립니다.
회사명: 제닉스주식회사
담당자 : 최재영
품명 : AVR용 USB-JTAG / AD-JTAG V02
수량 : 1개
전화번호 : 070-4035-5141
메일주소 : [email protected]
감사합니다.
관리자 답변
네, 잘 알겠습니다.
금요일 휴무라서, 월요일 오전에 보내드리겠습니다.
감사합니다.
>
>
> 회사에서 구입하는 것이라 메일로 견적서 부탁드립니다.
>
> 회사명: 제닉스주식회사
> 담당자 : 최재영
> 품명 : AVR용 USB-JTAG / AD-JTAG V02
> 수량 : 1개
> 전화번호 : 070-4035-5141
>
> 메일주소 : [email protected]
>
> 감사합니다.
>
|
||||
| 8814 | 답변완료안녕하세요 배송관련문의좀요 | 김림선 | 2014-06-05 | 1,441 |
|
제가 현재 SE-STB랑 SE-WST2가 각각 1개씩, 모터 MS2 2개가 있습니다.
그래서 스태핑라인트레이서를 만들기위해서 SE-WST2 1개를 더 구매할 생각인데요.
3mm나사랑 서포터(하얀색기둥) 그게 구하기가 힘들더라구요..
제가 사는 지역도 광주라서 찾아뵙기엔 거리가 너무멀구요.ㅜㅜ
그래서 제가 오늘 SE-WST2 1개를 주문을 하려고하는데 혹시 서포터랑 3mm나사를
같이 택배로 보내주실수 있으신지요?
스태핑모터트레이서를 만들수잇게끔 충분히 보내주실수있으신지요? 부탁드립니다.(__)
관리자 답변
안녕하세요. 김림선 고객님
저희 제품을 이용해주셔서 감사합니다.
고객님께서 요청하신 3mm나사와 서포터는 원래 추가 비용이 발생이 됩니다.
이번에 한해서는 고객님께서 요청하신 3mm나사와 서포터를 보내 드리겠습니다.
감사합니다.
>
>
> 제가 현재 SE-STB랑 SE-WST2가 각각 1개씩, 모터 MS2 2개가 있습니다.
>
> 그래서 스태핑라인트레이서를 만들기위해서 SE-WST2 1개를 더 구매할 생각인데요.
>
> 3mm나사랑 서포터(하얀색기둥) 그게 구하기가 힘들더라구요..
>
> 제가 사는 지역도 광주라서 찾아뵙기엔 거리가 너무멀구요.ㅜㅜ
>
> 그래서 제가 오늘 SE-WST2 1개를 주문을 하려고하는데 혹시 서포터랑 3mm나사를
>
> 같이 택배로 보내주실수 있으신지요?
>
> 스태핑모터트레이서를 만들수잇게끔 충분히 보내주실수있으신지요? 부탁드립니다.(__)
>
|
||||
