Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 9098 | 답변완료printf 질문 드립니다. | 이현승 | 2015-03-09 | 1,417 |
|
안녕하세요?
printf라는 함수는 제가 알기로는 흔히 UART 통신에서 정의된 대로 사용되어 지는 것으로
알고 있는데, 아래의 코드에서는 특별히 정의된 부분도 없는데, 어째서 printf라는 함수가
문자LCD로 문자를 보내는 함수로 쓰이는 지 알고 싶습니다.
그리고, scanf 함수 사용하는 예제 좀 부탁합니다.
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdio.h>
#include "i2c.h"
#define Control (*(volatile unsigned char *)0x8001)
#define Data (*(volatile unsigned char *)0x8000)
#define LCD_EN_ON (Control = (Controller |= 0x04))
#define LCD_EN_OFF (Control = (Controller &= 0x0b))
#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
#define SCR_R_SHFT 0x1c
#define T unsigned char
char Controller;
int Putchar(char c)
{
Write_Data(c);
return c;
}
void Write_Data(char value)
{
LCD_EN_OFF;
delay(1);
LCD_RS_ON;
delay(1);
LCD_RW_OFF;
delay(1);
LCD_EN_ON;
delay(1);
Data = value;
delay(1);
LCD_EN_OFF;
delay(1);
}
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00;
DDRC = 0x00;
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
XDIV = 0x00; //xtal divider
XMCRA = 0x00; //external memory
port_init();
fdevopen(Putchar,0);
MCUCR = 0x80;
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_us(unsigned int dt)
{
unsigned int dc;
for(dc=0;dc<dt;dc++)
{
asm volatile("nop"::);
asm volatile("nop"::);
asm volatile("nop"::);
}
}
void delay(unsigned int dt)
{
unsigned int dc;
for(dc=0;dc<dt;dc++)
{
delay_us(1100);
}
}
void set_watch(T year, T month, T day, T hour, T minute, T second){
writebyte(0, second);
writebyte(1, minute);
writebyte(2, hour);
writebyte(4, day);
writebyte(5, month);
writebyte(6, year);
}
void Write_Controller(char value)
{
LCD_EN_OFF;
delay(1);
LCD_RS_OFF;
delay(1);
LCD_RW_OFF;
delay(1);
LCD_EN_ON;
delay(1);
Data = value;
delay(1);
LCD_EN_OFF;
delay(1);
}
void Write_Str(char *Str)
{
while (*Str) {
Write_Data(*Str++);
}
}
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;
}
}
}
void lcd_init(){
Write_Controller(0x38);
Write_Controller(0x0e);
Write_Controller(0x06);
}
void printf_Lcd(int lin, int can, char *Str)
{
Write_Controller(0x38);
lcd_gotoxy(can, lin);
Write_Str(Str);
}
int main(void)
{
unsigned char status, second, minute, hour, day, month, year;
//unsigned char year_1, month_1, day_1, hour_1, minute_1, second_1;
init_devices();
lcd_init();
init_ds1307();
Write_Controller(0x01);
Write_Controller(0x02);
delay(10);
printf_Lcd(1,1,"NewTC..");
delay(10);
printf_Lcd(2,1,"I2C DS1307");
delay(100);
set_watch(0x09, 0x01, 0x02, 0x09, 0x00, 0x0);
while(1){
second=readbyte(0x00);
minute=readbyte(0x01);
hour=readbyte(0x02);
day=readbyte(0x04);
month=readbyte(0x05);
year=readbyte(0x06);
if(second!=status){
Write_Controller(0x02);
//printf_Lcd(1,1,"");
printf("200%x : %x : %x ", year, month, day);
Write_Controller(0xc0);
//printf_Lcd(2,1,"");
printf("%x : %x : %x ",hour, minute, second);
delay(10);
status=second;}
//delay(10);
}
return 0;
}
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
우선, printf 함수는 임베디드에서 종종 putchar 함수를 내장함수로 채용하고 있습니다.
여기에서 fdevopen(Putchar,0); 이라는 내용이 중간에 나오는 데,
이 부분에서 printf를 열어준 겁니다.
또한, putchar 함수는 Write_Data(c);를 열어주고 있으며,
이를 통하여 LCD의 DDRAM에 데이터를 써 주는 역할을 합니다.
즉, LCD 화면에 나오게 되는 거죠.
결론적으로 printf 내용이 LCD로 출력되는 겁니다.
이는 printf 함수를 매우 다양한 방법으로 활용할 수 있음을 의미합니다.
마찬가지로 scanf 함수 사용 예는 첨부해 드립니다.
참고로, scanf의 내장 함수는 getchar입니다.
제가 직접 만든 두 가지 방식의 예를 보여 드리니,
편리한데로 사용하시기 바랍니다.
참고로, 여러 문자 수신시 scanf_memory를 사용하는 것이 보다 좋습니다.
감사합니다.
>
>
> 안녕하세요?
> printf라는 함수는 제가 알기로는 흔히 UART 통신에서 정의된 대로 사용되어 지는 것으로
> 알고 있는데, 아래의 코드에서는 특별히 정의된 부분도 없는데, 어째서 printf라는 함수가
> 문자LCD로 문자를 보내는 함수로 쓰이는 지 알고 싶습니다.
> 그리고, scanf 함수 사용하는 예제 좀 부탁합니다.
> #include <avr/io.h>
> #include <avr/interrupt.h>
> #include <stdio.h>
> #include "i2c.h"
>
> #define Control (*(volatile unsigned char *)0x8001)
> #define Data (*(volatile unsigned char *)0x8000)
>
>
> #define LCD_EN_ON (Control = (Controller |= 0x04))
> #define LCD_EN_OFF (Control = (Controller &= 0x0b))
> #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
> #define SCR_R_SHFT 0x1c
> #define T unsigned char
>
> char Controller;
>
> int Putchar(char c)
> {
> Write_Data(c);
> return c;
> }
>
> void Write_Data(char value)
> {
> LCD_EN_OFF;
> delay(1);
> LCD_RS_ON;
> delay(1);
> LCD_RW_OFF;
> delay(1);
> LCD_EN_ON;
> delay(1);
> Data = value;
> delay(1);
> LCD_EN_OFF;
> delay(1);
> }
>
> void port_init(void)
> {
>
> PORTA = 0x00;
> DDRA = 0x00;
> PORTB = 0x00;
> DDRB = 0x00;
> PORTC = 0x00;
> DDRC = 0x00;
> 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
> XDIV = 0x00; //xtal divider
> XMCRA = 0x00; //external memory
> port_init();
> fdevopen(Putchar,0);
>
> MCUCR = 0x80;
> 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_us(unsigned int dt)
> {
> unsigned int dc;
> for(dc=0;dc<dt;dc++)
> {
> asm volatile("nop"::);
> asm volatile("nop"::);
> asm volatile("nop"::);
> }
> }
>
> void delay(unsigned int dt)
> {
> unsigned int dc;
> for(dc=0;dc<dt;dc++)
> {
> delay_us(1100);
> }
> }
>
> void set_watch(T year, T month, T day, T hour, T minute, T second){
> writebyte(0, second);
> writebyte(1, minute);
> writebyte(2, hour);
> writebyte(4, day);
> writebyte(5, month);
> writebyte(6, year);
> }
>
> void Write_Controller(char value)
> {
> LCD_EN_OFF;
> delay(1);
> LCD_RS_OFF;
> delay(1);
> LCD_RW_OFF;
> delay(1);
> LCD_EN_ON;
> delay(1);
> Data = value;
> delay(1);
> LCD_EN_OFF;
> delay(1);
> }
>
>
> void Write_Str(char *Str)
> {
> while (*Str) {
> Write_Data(*Str++);
> }
> }
> 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;
> }
>
> }
> }
>
>
>
> void lcd_init(){
> Write_Controller(0x38);
> Write_Controller(0x0e);
> Write_Controller(0x06);
> }
>
> void printf_Lcd(int lin, int can, char *Str)
> {
> Write_Controller(0x38);
> lcd_gotoxy(can, lin);
> Write_Str(Str);
> }
>
> int main(void)
> {
> unsigned char status, second, minute, hour, day, month, year;
> //unsigned char year_1, month_1, day_1, hour_1, minute_1, second_1;
> init_devices();
> lcd_init();
> init_ds1307();
>
>
> Write_Controller(0x01);
> Write_Controller(0x02);
> delay(10);
> printf_Lcd(1,1,"NewTC..");
> delay(10);
> printf_Lcd(2,1,"I2C DS1307");
> delay(100);
> set_watch(0x09, 0x01, 0x02, 0x09, 0x00, 0x0);
>
> while(1){
> second=readbyte(0x00);
> minute=readbyte(0x01);
> hour=readbyte(0x02);
> day=readbyte(0x04);
> month=readbyte(0x05);
> year=readbyte(0x06);
>
> if(second!=status){
> Write_Controller(0x02);
> //printf_Lcd(1,1,"");
> printf("200%x : %x : %x ", year, month, day);
> Write_Controller(0xc0);
> //printf_Lcd(2,1,"");
> printf("%x : %x : %x ",hour, minute, second);
> delay(10);
> status=second;}
> //delay(10);
> }
>
> return 0;
> }
>
|
||||
| 9097 | 답변완료AB-M128-B 제품의 이더넷 송수신 기능에 대해서 | 정상길 | 2015-03-09 | 1,472 |
|
제품의 기능에 대해서 질문드리려고 합니다.
원거리의 제어콘솔로부터 이더넷을 통해 명령을 받아서 디지털 IO포트로 신호를 출력하는 기능을 구현하고자 합니다.
또한 디지털 IO 포트의 출력상태를 모니터링하여 다시 이더넷을 통해 제어콘솔로 상태정보를 보내려고합니다.
여기서 궁금한 점은 AB-M128-B 보드에 이더넷을 연결하여 위와 같은 기능을 구현할 수 있는지 궁금합니다.
제 연락처는 010-8623-3145입니다.
연락부탁드립니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사드립니다.
통신 중에 이더넷 투 시리얼 같은 것들이 있습니다.
예를 들면,
http://www.devicemart.co.kr/goods/list.php?category=002039004
[NTRexLAB] Ethernet2Serial
이런 것들을 이용하시면 UART에 붙여서 사용하시면 되겠습니다.
감사합니다.
>
>
> 제품의 기능에 대해서 질문드리려고 합니다.
> 원거리의 제어콘솔로부터 이더넷을 통해 명령을 받아서 디지털 IO포트로 신호를 출력하는 기능을 구현하고자 합니다.
> 또한 디지털 IO 포트의 출력상태를 모니터링하여 다시 이더넷을 통해 제어콘솔로 상태정보를 보내려고합니다.
>
> 여기서 궁금한 점은 AB-M128-B 보드에 이더넷을 연결하여 위와 같은 기능을 구현할 수 있는지 궁금합니다.
> 제 연락처는 010-8623-3145입니다.
> 연락부탁드립니다.
>
|
||||
| 9096 | 답변완료AM-128USB V2.0 회로도 | 이승헌 | 2015-03-08 | 1,443 |
|
안녕하세요 AM-128USB V2.0 사용하고 있습니다.
그런데 L2 1602 커페시터가 태워 버렸습니다.
회로도가 없어 어느 부분이 이상이 있어 타 버렸는지 ..??
L2 커페시터는 몇인지? 제가 수리하도록 하겠습니다..
회로도좀 알려주세요. 수고하십시오.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
L2는 1uH로 USB의 VCC와 연결되어 있습니다. 이는 첨부된 그림과 같이 연결되어 있습니다.
따라서, USB 전원을 무리하여 사용하였거나, 순간 쇼트된 경우에 이를 막기 위하여 회로의 그 부분이 타버리면서 그렇게 될 수 있습니다.
USB 2.0으로는 전원을 당겨쓸 경우 최대 500mA까지만 쓸 수 있는 규격이 되며, 일반적으로는 300mA정도까지만 사용하는 것을 추천합니다.
USB 부분을 제외한 회로도는 올려드렸습니다.
감사합니다.
>
>
> 안녕하세요 AM-128USB V2.0 사용하고 있습니다.
>
> 그런데 L2 1602 커페시터가 태워 버렸습니다.
>
> 회로도가 없어 어느 부분이 이상이 있어 타 버렸는지 ..??
>
> L2 커페시터는 몇인지? 제가 수리하도록 하겠습니다..
>
> 회로도좀 알려주세요. 수고하십시오.
>
|
||||
| 9095 | 답변완료DM-USB to Serial V1.0 보드 테스트 중 | 김우영 | 2015-03-06 | 1,334 |
|
안녕하십니까?
현재 atmega328p를 꾸며서 테스트 중 입니다.
DM-USB to Serial V1.0 메뉴얼 대로 결선 후 업로드를 하니
첨부 화일과 같은 메세지가 나오네요
어디가 잘못 된 것 일까요?
알려 주시면 감사하겟습니다
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
직접 보드를 꾸며서 하시는 것이 하드웨어 적으로 많은 공부가 됩니다.
물론, 중간 과정에서 이런 문제가 터질 때 어려움이 있죠.
우선, DM-USB2SERIAL 보드의 1번핀이 DTR핀인데, 사진은 메뉴얼 3페이지에 보면 1번핀의 위치가 잘 나와 있습니다. 그 핀이 UNO 보드의 DTR/RST 핀과 연결되게 됩니다.
우노보드에 보면, 해당 핀은 ATMEGA328P의 RESET_L 핀과 연결되게 되는데, 그 사이에 보통 0.1uF 정도의 커패시터가 달려 있습니다.
직접 만드시는 보드이므로, 반드시 ATMEGA328P의 RESET_L핀에서 커패시터를 0.1uF 연결하고, 직렬로, 그 USB2SERIAL 보드의 DTR핀과 연결해 주세요.
또한, 특이하게도, 리셋핀에 리셋회로를 구성할 때, 4.7k정도로 풀업만 걸어주시고,
절대 GND와의 사이에 커패시터는 달면 안됩니다.
아두이노의 특별한 부분인데, 이 부분을 달게되면 자동다운로드가 되지 않습니다.
그러고 나서는 ATMEGA328P에 UNO부트로더를 USBISP를 이용하여 한번은 구워줘야 합니다.
USBISP가 반드시 필요한 부분입니다.
아니면, UNO 부트로더가 구워져 있는 CPU도 판매하던데, 그런 것을 쓰시면 되구요.
이 부분을 하지 않아도 자동 다운로드가 되지 않습니다.
감사합니다.
>
>
> 안녕하십니까?
>
> 현재 atmega328p를 꾸며서 테스트 중 입니다.
>
> DM-USB to Serial V1.0 메뉴얼 대로 결선 후 업로드를 하니
>
> 첨부 화일과 같은 메세지가 나오네요
>
> 어디가 잘못 된 것 일까요?
>
> 알려 주시면 감사하겟습니다
>
|
||||
| 9094 | 답변완료DM-USB to Serial V1.0 보드를 구매했습니다. | 김우영 | 2015-03-05 | 1,341 |
|
안녕하세요.
DM-USB to Serial V1.0 보드를 구매했습니다.
6개의 핀 중 DTR 핀은 ATMEGA328P 어디와 연결해야 합니까?
전화를 두 번하고 들은 답변이 게시판에 질문을 올리라고 해서 올리는데...
가능한 바른 답변 부탁드립니다
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
지금 Arduino UNO 학습 중이신가 봅니다.
직접 보드를 제작하고 계신 것인지, 아니면 UNO 보드를 사용중이신지에 따라서,
답변이 조금 달라질 수는 있습니다.
우선, DM-USB2SERIAL 보드의 1번핀이 DTR핀인데, 사진은 메뉴얼 3페이지에 보면 1번핀의 위치가 잘 나와 있습니다.
그 핀이 UNO 보드의 DTR/RST 핀과 연결되게 됩니다.
해당 핀은 ATMEGA328P의 RESET_L 핀과 연결되게 되는데, 그 사이에 보통 0.1uF 정도의 커패시터가 달려 있습니다.
참고하시기 바랍니다.
저희 회사에서는 현재 19,000건 가까이 질문과 답변을 통해 많은 고객님들을 도움을 드리고 있습니다.
또한, 온라인강의-->Arduino At Heart에 보면 해당 강의가 있으니, 참고하셔서 보시면 도움이 되시겠습니다.
결정적으로는 매우 우수한 품질의 교재가 두 권 준비되어 있습니다.
해당 교재는 6개월만에 3쇄를 발간할 정도로 인기가 높습니다.
매우 잘 설명되어 있고, 전자전산 전문서적 출판사인 J-PUB 출판사와 제휴하고,
허경용 교수님의 저술로 작성되어 있습니다. 교재를 참고하여 보시면 또한 많은 도움 되시겠습니다.
네이버 까페 중 http://cafe.naver.com/newtc 에 가시면 허경용 교수님이 직접 쓰신 아두이노 관련
강의자료들도 많이 올라와 있으니, 참고하시기 바랍니다.
혹시 답변이 부족하시다면 답글로 올려주시면 답변 드리겠습니다.
감사합니다.
>
>
> 안녕하세요.
>
> DM-USB to Serial V1.0 보드를 구매했습니다.
>
> 6개의 핀 중 DTR 핀은 ATMEGA328P 어디와 연결해야 합니까?
>
> 전화를 두 번하고 들은 답변이 게시판에 질문을 올리라고 해서 올리는데...
>
> 가능한 바른 답변 부탁드립니다
>
|
||||
| 9093 | 답변완료라인트레이서 문의 드립니다. | 이현승 | 2015-03-04 | 1,508 |
|
안녕하십니까?
KT-M128-LT 사용자입니다.
적외선센서가 각각 PORTF의 어느 핀에 할당 되는 지 알고 싶습니다.
그리고 터미널에 글자가 깨져서 표시되는데 아래의 코드중에서 잘 못된 점이 있으면
자세한 조언 좀 부탁 드리겠읍니다.
제품을 구매할 때 받은 CD엔 미완성의 라인트레이서 소스가 있는데,
완성된 라인트레이서 소스를 구할 수 있읍니까?
현재 모터만 돌리고 별 진전이 없읍니다.
// LineTracer Application
// Target : M128
// Crystal: 11.059Mhz
// Programed by Minsuk Kim
#include <iom128v.h>
#include <macros.h>
#include <stdio.h>
#define FAST_SPEED 0x80 // 센서가 감지되었을때 빠른 바퀴의 센서값
#define SLOW_SPEED 0x10 // 센서가 감지되었을때 느린 바퀴의 센서값
#define THRESHOLD 17 // 센서의 라인 감지 임계값
#define EX_LCD_DATA (*(volatile unsigned char *)0x8000)
#define EX_LCD_CONTROL (*(volatile unsigned char *)0x8001)
#define EX_SS_DATA (*(volatile unsigned char *)0x8002)
#define EX_SS_SEL (*(volatile unsigned char *)0x8003)
#define EX_DM_SEL (*(volatile unsigned int *)0x8004)
#define EX_DM_DATA (*(volatile unsigned int *)0x8006)
#define EX_LED (*(volatile unsigned char *)0x8008)
#define EX_STEPPING (*(volatile unsigned char *)0x8009)
#define EX_DCMOTOR (*(volatile unsigned char *)0x800A)
#define EX_SERVO (*(volatile unsigned char *)0x800B)
#define MOTOR_PORT EX_STEPPING
//unsigned char motorOneClock(unsigned char, char);
unsigned char l_speed=0, r_speed=0; // 모터를 구동 위한 타이머 값
unsigned char motorOneClock(unsigned char step, char dir)
{
unsigned char test;
step = step & 0x0f;
if(dir){
switch(step){
case 0x03 : step=0x06; break;
case 0x06 : step=0x0c; break;
case 0x0c : step=0x09; break;
case 0x09 : step=0x03; break;
default : step=0x03; break;
}
}else{
switch(step){
case 0x03 : step=0x09; break;
case 0x06 : step=0x03; break;
case 0x0c : step=0x06; break;
case 0x09 : step=0x0c; break;
default : step=0x03; break;
}
}
return step;
}
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00;
DDRC = 0x00;
PORTD = 0x00;
DDRD = 0xff; // Stepping Motor Port Left, Right
PORTE = 0x00;
DDRE = 0x00;
PORTF = 0x00;
DDRF = 0x00; // LED Port PF1, PF2
PORTG = 0x00;
DDRG = 0x00;
}
//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 = 0x47; //set baud rate lo
UBRR0H = 0x00; //set baud rate hi
UCSR0B = 0x08;
}
//ADC initialize
// Conversion time: 75uS
void adc_init(void)
{
ADCSRA = 0x00; //disable adc
ADMUX = 0x00; //select adc input 0
ACSR = 0x80;
ADCSRA = 0xC6;
}
//TIMER2 initialize - prescale:64
// WGM: Normal
// desired value: 1KHz
// actual value: 1.008KHz (0.8%)
void timer2_init(void)
{
TCCR2 = 0x00; //stop
TCNT2 = 0xF1; //setup
OCR2 = 0x0F;
TCCR2 = 0x04; //start
}
#pragma interrupt_handler timer2_ovf_isr:11
void timer2_ovf_isr(void)
{
unsigned char temp;
CLI(); //disable all interrupts
temp = MOTOR_PORT & 0x0f;
TCNT2 = l_speed; //reload counter value
if(l_speed == 0){
temp = temp;
}else{
temp = motorOneClock(temp, 1);
}
MOTOR_PORT = temp | (MOTOR_PORT & 0xf0);
SEI(); //re-enable interrupts
}
//TIMER3 initialize - prescale:64
// WGM: 0) Normal, TOP=0xFFFF
// desired value: 1KHz
// actual value: 1.008KHz (0.8%)
void timer3_init(void)
{
TCCR3B = 0x00; //stop
TCNT3H = 0xFF; //setup
TCNT3L = 0xF1;
OCR3AH = 0x00;
OCR3AL = 0x0F;
OCR3BH = 0x00;
OCR3BL = 0x0F;
OCR3CH = 0x00;
OCR3CL = 0x0F;
ICR3H = 0x00;
ICR3L = 0x0F;
TCCR3A = 0x00;
TCCR3B = 0x04; //start Timer
}
#pragma interrupt_handler timer3_ovf_isr:30
void timer3_ovf_isr(void)
{
unsigned char temp;
CLI(); //disable all interrupts
//TIMER3 has overflowed
TCNT3H = 0xFF; //reload counter high value
temp = (MOTOR_PORT & 0xf0)>>4;
TCNT3L = r_speed; //reload counter low value
if(r_speed == 0){
temp = temp;
}else{
temp = motorOneClock(temp, 0);
}
MOTOR_PORT = (temp<<4) | (MOTOR_PORT & 0x0f);
SEI(); //re-enable interrupts
}
//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();
adc_init();
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
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
int putchar(char c)
{
while (((UCSR0A>>UDRE0)&0x01) == 0) ; // UDRE, data register empty
UDR0 = c;
return c;
}
// scanf 함수 사용시 추가할 것.
int getchar(void)
{
while ((UCSR0A & 0x80) == 0);
return UDR0;
}
/* Analog Converter--------------------------------*/
void startConvertion(unsigned char ch)
{
ADCSRA = ADCSRA & 0x3f;
ADMUX = 0x60 | (ch & 0x0f); // 원래는 0x20
ADCSRA = ADCSRA | 0xc7;
}
unsigned char readConvertData(void)
{
volatile unsigned char temp;
while((ADCSRA & 0x10)==0);
ADCSRA = ADCSRA | 0x10;
temp = ADCL;
temp = ADCH;
return temp;
}
/*-------------------------------------------------*/
void delay(int n)
{
volatile int i,j;
for(i=1;i<n;i++)
{
for(j=1;j<600;j++);
}
}
/* Stepping Motor derive---------------------------*/
/* main function-----------------------------------*/
void main(void)
{
volatile unsigned char temp, l_sensor, r_sensor;
volatile unsigned char step=0;
init_devices();
//insert your functional code here...
printf(" \n\n\rtest program...\n\r");
EX_LED = 0x03;
delay(1000);
EX_LED = 0x00;
delay(1000);
EX_LED = 0x03;
while(1){
l_sensor = 0;
r_sensor = 0;
startConvertion(0); // Left sensor Converting
l_sensor = readConvertData();
startConvertion(3); // Right sensor Converting
r_sensor = readConvertData();
EX_LED = 0x03;
if(l_sensor > THRESHOLD && r_sensor < THRESHOLD){
l_speed = SLOW_SPEED;
r_speed = FAST_SPEED;
EX_LED = 0x01;
}else if(l_sensor < THRESHOLD && r_sensor > THRESHOLD){
l_speed = FAST_SPEED;
r_speed = SLOW_SPEED;
EX_LED = 0x02;
}else{
l_speed = FAST_SPEED;
r_speed = FAST_SPEED;
}
printf("ch6 :%d ch7 : %d\n\r", l_sensor, r_sensor);
}
}
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 젶무을 이용하여 주셔서 감사합니다.
현재 사용중이신 라인트레이서에 달린 센서가 4개짜리인지, 2개짜리인지 제품명을 체크해 보세요.
초기에는 아날로그 타입의 센서 2개짜리(AM-IRS)가 장착되어 출시되었었고,
그 당시에는 F 포트를 사용하여 ADC를 해서 썻습니다.
지금 보는 소스도 아날로그 타입이네요.
현재는 디지탈센서 타입으로 센서 4개짜리(AM-IRS4D)가 장착되어 출시되었고,
현재에도 F 포트를 사용하여 ADC를 해서 쓰고 있습니다만,
Digital 입출력 포트로 해서 입력받아 사용하고 있습니다.
어떤 센서를 쓰는가에 따라서, 사용법이 다릅니다.
현재의 디지털 방식 센서를 쓰는 경우의 예제는 남기신 이메일로
송부해드리겠습니다.
감사합니다.
>
>
> 안녕하십니까?
> KT-M128-LT 사용자입니다.
> 적외선센서가 각각 PORTF의 어느 핀에 할당 되는 지 알고 싶습니다.
> 그리고 터미널에 글자가 깨져서 표시되는데 아래의 코드중에서 잘 못된 점이 있으면
> 자세한 조언 좀 부탁 드리겠읍니다.
> 제품을 구매할 때 받은 CD엔 미완성의 라인트레이서 소스가 있는데,
> 완성된 라인트레이서 소스를 구할 수 있읍니까?
> 현재 모터만 돌리고 별 진전이 없읍니다.
>
>
> // LineTracer Application
> // Target : M128
> // Crystal: 11.059Mhz
> // Programed by Minsuk Kim
>
>
>
> #include <iom128v.h>
> #include <macros.h>
> #include <stdio.h>
>
> #define FAST_SPEED 0x80 // 센서가 감지되었을때 빠른 바퀴의 센서값
>
> #define SLOW_SPEED 0x10 // 센서가 감지되었을때 느린 바퀴의 센서값
>
> #define THRESHOLD 17 // 센서의 라인 감지 임계값
>
> #define EX_LCD_DATA (*(volatile unsigned char *)0x8000)
> #define EX_LCD_CONTROL (*(volatile unsigned char *)0x8001)
> #define EX_SS_DATA (*(volatile unsigned char *)0x8002)
> #define EX_SS_SEL (*(volatile unsigned char *)0x8003)
> #define EX_DM_SEL (*(volatile unsigned int *)0x8004)
> #define EX_DM_DATA (*(volatile unsigned int *)0x8006)
> #define EX_LED (*(volatile unsigned char *)0x8008)
> #define EX_STEPPING (*(volatile unsigned char *)0x8009)
> #define EX_DCMOTOR (*(volatile unsigned char *)0x800A)
> #define EX_SERVO (*(volatile unsigned char *)0x800B)
>
> #define MOTOR_PORT EX_STEPPING
>
> //unsigned char motorOneClock(unsigned char, char);
>
>
>
> unsigned char l_speed=0, r_speed=0; // 모터를 구동 위한 타이머 값
>
> unsigned char motorOneClock(unsigned char step, char dir)
> {
> unsigned char test;
> step = step & 0x0f;
> if(dir){
> switch(step){
> case 0x03 : step=0x06; break;
> case 0x06 : step=0x0c; break;
> case 0x0c : step=0x09; break;
> case 0x09 : step=0x03; break;
> default : step=0x03; break;
> }
> }else{
> switch(step){
> case 0x03 : step=0x09; break;
> case 0x06 : step=0x03; break;
> case 0x0c : step=0x06; break;
> case 0x09 : step=0x0c; break;
> default : step=0x03; break;
> }
> }
> return step;
> }
>
>
> void port_init(void)
> {
> PORTA = 0x00;
> DDRA = 0x00;
> PORTB = 0x00;
> DDRB = 0x00;
> PORTC = 0x00;
> DDRC = 0x00;
> PORTD = 0x00;
> DDRD = 0xff; // Stepping Motor Port Left, Right
> PORTE = 0x00;
> DDRE = 0x00;
> PORTF = 0x00;
> DDRF = 0x00; // LED Port PF1, PF2
> PORTG = 0x00;
> DDRG = 0x00;
> }
> //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 = 0x47; //set baud rate lo
> UBRR0H = 0x00; //set baud rate hi
> UCSR0B = 0x08;
> }
> //ADC initialize
> // Conversion time: 75uS
> void adc_init(void)
> {
> ADCSRA = 0x00; //disable adc
> ADMUX = 0x00; //select adc input 0
> ACSR = 0x80;
> ADCSRA = 0xC6;
> }
> //TIMER2 initialize - prescale:64
> // WGM: Normal
> // desired value: 1KHz
> // actual value: 1.008KHz (0.8%)
> void timer2_init(void)
> {
> TCCR2 = 0x00; //stop
> TCNT2 = 0xF1; //setup
> OCR2 = 0x0F;
> TCCR2 = 0x04; //start
> }
> #pragma interrupt_handler timer2_ovf_isr:11
> void timer2_ovf_isr(void)
> {
> unsigned char temp;
> CLI(); //disable all interrupts
> temp = MOTOR_PORT & 0x0f;
> TCNT2 = l_speed; //reload counter value
>
> if(l_speed == 0){
> temp = temp;
> }else{
> temp = motorOneClock(temp, 1);
> }
>
> MOTOR_PORT = temp | (MOTOR_PORT & 0xf0);
> SEI(); //re-enable interrupts
> }
> //TIMER3 initialize - prescale:64
> // WGM: 0) Normal, TOP=0xFFFF
> // desired value: 1KHz
> // actual value: 1.008KHz (0.8%)
> void timer3_init(void)
> {
> TCCR3B = 0x00; //stop
> TCNT3H = 0xFF; //setup
> TCNT3L = 0xF1;
> OCR3AH = 0x00;
> OCR3AL = 0x0F;
> OCR3BH = 0x00;
> OCR3BL = 0x0F;
> OCR3CH = 0x00;
> OCR3CL = 0x0F;
> ICR3H = 0x00;
> ICR3L = 0x0F;
> TCCR3A = 0x00;
> TCCR3B = 0x04; //start Timer
> }
> #pragma interrupt_handler timer3_ovf_isr:30
> void timer3_ovf_isr(void)
> {
> unsigned char temp;
> CLI(); //disable all interrupts
> //TIMER3 has overflowed
> TCNT3H = 0xFF; //reload counter high value
> temp = (MOTOR_PORT & 0xf0)>>4;
> TCNT3L = r_speed; //reload counter low value
> if(r_speed == 0){
> temp = temp;
> }else{
> temp = motorOneClock(temp, 0);
> }
> MOTOR_PORT = (temp<<4) | (MOTOR_PORT & 0x0f);
> SEI(); //re-enable interrupts
> }
> //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();
> adc_init();
> 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
> SEI(); //re-enable interrupts
> //all peripherals are now initialized
> }
>
> int putchar(char c)
> {
> while (((UCSR0A>>UDRE0)&0x01) == 0) ; // UDRE, data register empty
>
> UDR0 = c;
> return c;
> }
>
> // scanf 함수 사용시 추가할 것.
> int getchar(void)
> {
> while ((UCSR0A & 0x80) == 0);
> return UDR0;
> }
>
> /* Analog Converter--------------------------------*/
> void startConvertion(unsigned char ch)
> {
> ADCSRA = ADCSRA & 0x3f;
> ADMUX = 0x60 | (ch & 0x0f); // 원래는 0x20
> ADCSRA = ADCSRA | 0xc7;
> }
> unsigned char readConvertData(void)
> {
> volatile unsigned char temp;
> while((ADCSRA & 0x10)==0);
> ADCSRA = ADCSRA | 0x10;
> temp = ADCL;
> temp = ADCH;
> return temp;
> }
> /*-------------------------------------------------*/
> void delay(int n)
> {
> volatile int i,j;
> for(i=1;i<n;i++)
> {
> for(j=1;j<600;j++);
> }
> }
> /* Stepping Motor derive---------------------------*/
>
> /* main function-----------------------------------*/
> void main(void)
> {
> volatile unsigned char temp, l_sensor, r_sensor;
> volatile unsigned char step=0;
> init_devices();
> //insert your functional code here...
> printf(" \n\n\rtest program...\n\r");
> EX_LED = 0x03;
> delay(1000);
> EX_LED = 0x00;
> delay(1000);
> EX_LED = 0x03;
> while(1){
> l_sensor = 0;
> r_sensor = 0;
> startConvertion(0); // Left sensor Converting
> l_sensor = readConvertData();
> startConvertion(3); // Right sensor Converting
> r_sensor = readConvertData();
> EX_LED = 0x03;
> if(l_sensor > THRESHOLD && r_sensor < THRESHOLD){
> l_speed = SLOW_SPEED;
> r_speed = FAST_SPEED;
> EX_LED = 0x01;
> }else if(l_sensor < THRESHOLD && r_sensor > THRESHOLD){
> l_speed = FAST_SPEED;
> r_speed = SLOW_SPEED;
> EX_LED = 0x02;
> }else{
> l_speed = FAST_SPEED;
> r_speed = FAST_SPEED;
> }
> printf("ch6 :%d ch7 : %d\n\r", l_sensor, r_sensor);
> }
> }
>
|
||||
| 9092 | 답변완료8051보드 궁금한게 있습니다. | 김선동 | 2015-03-04 | 1,421 |
|
8051 보드를 고민하고 있는데요
8051 누르니 보드가 2가지 있는데요
AB-S52 하고 AB-S52K 하고 있는데요
차이가 무엇인가요?
보드는 같아보이는데 금액이 달라서요...
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용해주셔서 감사드립니다.
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사드립니다.
AB-S52K는 킷트 제품으로 첨부한 그림의 내용이 들어 있습니다.
다른 하나는 메인보드만 들어 있습니다.
감사합니다.
>
>
> 8051 보드를 고민하고 있는데요
> 8051 누르니 보드가 2가지 있는데요
> AB-S52 하고 AB-S52K 하고 있는데요
> 차이가 무엇인가요?
> 보드는 같아보이는데 금액이 달라서요...
>
|
||||
| 9091 | 답변완료AVR Studio6.2 에서 사용시 AD-USB-ISP 문의 드립니다. | 김길현 | 2015-03-02 | 1,460 |
|
안녕하세요.
AVR Studio6.2 이전 버전으로 ISP를 잘 사용하고 있는데요.
이번에 웹에서 AVR Studio6.2 버전을 새로 받아서 설치 해서 하면 add target에서
나타나지 않거나 참부된 사진 처럼 프로그램 할 수 없는 것 처럼 작동합니다.
ISP는 다른 곳에서 잘 작동 합니다.
몇 대 컴퓨터에서 확인 해보았는데, AVR 최신 버전을 설치 한 곳에서 이런 현상이 일어나는 것 같습니다.
확인 부탁드립니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
USBISP V03.6은 atmel studio v6.xx에서 사용가능하지만,
타겟전압체크는 하지 못합니다.
V4.0이상의 제품 즉, 현재는 USBISP V6.0은 전체 기능을 모두 제공합니다.
따라서 그 부분의 불편함은 V6.0으로 해결이 가능합니다.
V03.6은 앞으로 펌업을 통하여 해당부문 문제가 일어나지 않도록 해드릴 예정입니다만, 향후 5월말까지 예정되어 있습니다.
그 부분이 나와도 사용에는 문제가 없으시므로, 펌업을 기다려주세요.
펌업시 본사에서 별도로 이곳에 공지합니다.
감사합니다.
>
>
> 안녕하세요.
>
> AVR Studio6.2 이전 버전으로 ISP를 잘 사용하고 있는데요.
>
> 이번에 웹에서 AVR Studio6.2 버전을 새로 받아서 설치 해서 하면 add target에서
>
> 나타나지 않거나 참부된 사진 처럼 프로그램 할 수 없는 것 처럼 작동합니다.
>
> ISP는 다른 곳에서 잘 작동 합니다.
>
> 몇 대 컴퓨터에서 확인 해보았는데, AVR 최신 버전을 설치 한 곳에서 이런 현상이 일어나는 것 같습니다.
>
> 확인 부탁드립니다.
>
|
||||
| 9090 | 답변완료serial to usb | 주연정 | 2015-02-27 | 1,462 |
|
안녕하세요.
USB to Serial V02 변환 보드를 구매했습니다.
사용목적은 ttl 레벨의 serial 통신을 쉽게 사용하고자 함이었습니다.
stm32 보드를 사용중이고, 거기서 다른 usb to uart 기기를 사용했을 경우 통신이 제대로 되었습니다.
그런데 USB to Serial V02 변환 보드에서 테스트를 할때는 글자가 깨져서 나옵니다.
bps, 포트 이런 거는 다 확인을 했고, 다른 usb to uart기를 사용하면서 완벽하게 테스트 된 상황입니다.
그런데 유독 이 보드만 거치면 이러네요... 메뉴얼을 읽어보았으나 별다른 방법을 찾지 못해 문의 남겨봅니다.
사용시에, 다른 방법이 있는건가요? 아니면 A/S를 보내야 할까요?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
혹시, 어떤 커넥터를 사용하셨나요?
AD-USBSERIAL V02의 4핀 커넥터(J3)를 사용하시면 TTL Level이고,
3핀 커넥터(J4)와 9핀 DSUB커넥터는 RS-232C Level입니다.
혹시 3핀 커넥터 쪽에 연결하신 것은 아닌지요?
3핀 커넥터 연결시 그럴 수는 있을 것 같습니다.
저희도 내부에서 STM32F....칩으로 개발을 많이 하고 있습니다만,
본 제품 사용시 아무런 문제가 없습니다. 또한, 최신 칩셋을 채용하고 있어서
현존하는 해당 칩들 중 가장 좋은 스펙으로 알고 있습니다.
따라서, 아마도, 위의 문제가 아니라면, 제품 불량의 소지가 있어 보입니다.
해당 젶무은 1:1로 테스트되어 나가고 있어서 그럴 소지는 작긴 합니다만, 사람이 하는 일이라
제품에 이상이 있을 가능성도 있습니다.
위에 말씀드린 문제를 일단 확인하신 후, 글을 남겨 주세요.
본사에서 좀 더 자세한 내용을 듣기 위하여 전화를 드렸으나, 유선, 무선 모두 받지 않고 계십니다.
감사합니다.
>
>
> 안녕하세요.
>
> USB to Serial V02 변환 보드를 구매했습니다.
>
> 사용목적은 ttl 레벨의 serial 통신을 쉽게 사용하고자 함이었습니다.
>
> stm32 보드를 사용중이고, 거기서 다른 usb to uart 기기를 사용했을 경우 통신이 제대로 되었습니다.
>
> 그런데 USB to Serial V02 변환 보드에서 테스트를 할때는 글자가 깨져서 나옵니다.
>
> bps, 포트 이런 거는 다 확인을 했고, 다른 usb to uart기를 사용하면서 완벽하게 테스트 된 상황입니다.
>
> 그런데 유독 이 보드만 거치면 이러네요... 메뉴얼을 읽어보았으나 별다른 방법을 찾지 못해 문의 남겨봅니다.
>
> 사용시에, 다른 방법이 있는건가요? 아니면 A/S를 보내야 할까요?
>
|
||||
| 9089 | 답변완료AB-S52 질문좀.. | 안지혁 | 2015-02-26 | 1,441 |
|
안녕하세여 AB-S52를 구매해서 공부중인데요..
8051에는 adc가 없는건가요?? 데이터 시트를 보니 port0가 adc포트로 사용하는거 같은데...
avr이나 pic처럼 adc레지스터는 없더라구여..
있다면 adc 관련 자료는 없나여??
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
타사의 8051 계열 등에는 일부 ADC 기능이 포함된 것들도 있습니다만,
ATMEL사의 AT89S52에는 ADC 기능이 없습니다.
AT89S52과 함께는 ADC0809같은 ADC 칩을 사용하시기를 권고합니다.
감사합니다.
>
>
> 안녕하세여 AB-S52를 구매해서 공부중인데요..
>
> 8051에는 adc가 없는건가요?? 데이터 시트를 보니 port0가 adc포트로 사용하는거 같은데...
>
> avr이나 pic처럼 adc레지스터는 없더라구여..
>
> 있다면 adc 관련 자료는 없나여??
>
|
||||
| 9088 | 답변완료소프트웨어 문의 | 윤성식 | 2015-02-26 | 1,475 |
|
현재 판매중이신 iccavr8 제품이
icc 홈페이지에서는 jump starter 제품으로 바뀐거 같은데
jump starter 는 판매 안 하시나요?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
질문에 답변 드리겠습니다.
> 현재 판매중이신 iccavr8 제품이
> icc 홈페이지에서는 jump starter 제품으로 바뀐거 같은데
> jump starter 는 판매 안 하시나요?
==> 같은 제품입니다. 예전의 이름으로 판매하고 있습니다.
이름만 바뀐 상태입니다. 제품소개에 해당부분 추가하여 고쳐두도록 하겠습니다.
감사합니다.
|
||||
| 9087 | 답변완료USB ISP 드라이버 설치 문제 | 강호은 | 2015-02-25 | 1,419 |
|
안녕하세요
답변해주신 대로 이전에 설치된 드라이버를 삭제하고 알려주신 사이트에서 새로운 드라이버 받아서 설치했는데, 동일하게 현상입니다.
캡쳐화면 첨부했습니다. 도움 부탁드립니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
답변 드리겠습니다.
> 안녕하세요
> 답변해주신 대로 이전에 설치된 드라이버를 삭제하고 알려주신 사이트에서 새로운 드라이버 받아서 설치했는데, 동일하게 현상입니다.
> 캡쳐화면 첨부했습니다. 도움 부탁드립니다.
==> 그 드라이버를 설치해도 안되는 경우는, 두 가지 정도가 가정됩니다.
한 가지는 CP2103 칩 불량인 경우가 있고,
==> 이런 경우는
두 번째는 시간 동기화를 안하시면, OS의 보안 설정상 그런 경우가 있을 수 있습니다.
따라서, 이 경우는 화면
오른쪽 아래 시계에서 "날짜 및 시간설정변경"==> 인터넷시간 ==> 설정변경 ==>
인터넷서버와 동기화를 체크하신 후, 지금업데이트를 하면 그 이후에,
드라이버를 지우고, 다시 깔아보세요.
그런 경우, 보안설정에 통과되서 드라이버가 깔릴 수도 있습니다.
이것은 노트북인 경우 그런 경우가 많은데, 노트북에 따라서, 그런 설정을 막는
보안설정을 디폴트로 해 놓는 경우가 있어서입니다.
그래도 안되면, 본사로 제품을 보내서 점검받아 보시기 바랍니다.
감사합니다.
|
||||
| 9086 | 답변완료제품 문의 드립니다. | 정덕관 | 2015-02-25 | 1,458 |
|
AVR용 USB-ISP V03.6스페셜 (일반용) , AVR MEGA 128 모듈 라이트
위 제품 2개를 구입하려고 합니다.
이제 막 avr을 공부를 시작하는 것이기 때문에 자세한 것을 알고싶습니다.
위 제품 2개만 있으면
프로그래밍만 하면 되는지.
추가적인 전원 입력은 필요 없는지 필요하다면 전원입력을 몇볼트로 해야되는지.
output으로는 몇 볼트가 나오는지.
알고 싶습니다.
감사합니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
답변 드리겠습니다.
> AVR용 USB-ISP V03.6스페셜 (일반용) , AVR MEGA 128 모듈 라이트
> 위 제품 2개를 구입하려고 합니다.
> 이제 막 avr을 공부를 시작하는 것이기 때문에 자세한 것을 알고싶습니다.
>
> 위 제품 2개만 있으면
> 프로그래밍만 하면 되는지.
==> 네, 가능합니다.
> 추가적인 전원 입력은 필요 없는지 필요하다면 전원입력을 몇볼트로 해야되는지.
==> USBISP V03.6의 USB로 5V를 AVR에 전원입력을 줄 수 있고,
USBISP V6.0의 USB로 5V 또는 3.3V를 AVR에 전원입력을 줄 수 있습니다.
따라서, 추가적인 전원은 없어도 됩니다만, 모터 등을 돌리신다면,
USB 2.0 규정상 500mA를 넘을 수 없고, PC 설계에 따라 실제로는 350mA 정도를 넘지 못하므로,
그 떄에는 외부 전원을 별도로 줘야 합니다.
> output으로는 몇 볼트가 나오는지.
> 알고 싶습니다.
> 감사합니다.
==> 감사합니다.
|
||||
| 9085 | 답변완료windows 8.1에서 USBISP 드라이버 설치가 안됩니다. | 강호은 | 2015-02-24 | 1,437 |
|
안녕하세요.
windows 8.1 에서 usb isp 드라이버가 설치가 안되네요.
자료실에 있는 "CP210x_VCP_WindowsXPServer 2003Vista_W7W8 (v6.6.1).zip" 받아서 설치했는데, 드라이버가 잡히 않고, "장치관리자 -> 기타 장치" 에 "?" 표시가 나타납니다.
이전 windows 7에서는 정상 설치되면 "장치관리자 -> 포트(COM&LPT)"에 표시되었습니다.
해결 방법이 있으면 알려주십시오.
관리자 답변
안녕하십니까?
기존 것은 제어판 프로그램 추가삭제에서 반드시 모두 제거하시고, 최신 드라이버로 깔아 보세요.
windows 8.1용: http://www.silabs.com/Support%20Documents/Software/CP210x_VCP_Windows.zip
반응 보시고, 다시 올려 주세요.
감사합니다.
>
>
> 안녕하세요.
>
> windows 8.1 에서 usb isp 드라이버가 설치가 안되네요.
> 자료실에 있는 "CP210x_VCP_WindowsXPServer 2003Vista_W7W8 (v6.6.1).zip" 받아서 설치했는데, 드라이버가 잡히 않고, "장치관리자 -> 기타 장치" 에 "?" 표시가 나타납니다.
> 이전 windows 7에서는 정상 설치되면 "장치관리자 -> 포트(COM&LPT)"에 표시되었습니다.
>
> 해결 방법이 있으면 알려주십시오.
>
|
||||
| 9084 | 답변완료AD-USBISP V03.6 관련문의 | 조남이 | 2015-02-24 | 1,427 |
|
AD-USBISP V03.6 드라이버 설치하여 Port 에 잡힌거 확인하였습니다.
이후 진행에서 atmel studio 6.2의 Device programming에서 Tool과 Device에 아무것도 잡히지 않네요...
드라이버 재설치해봐도 똑같네요...
add target까지는 port가 뜹니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
Add target 에서 STK500 포트가 나타난 뒤 Apply 버튼을 누르셔야 합니다.
이 과정이 제대로 되었다면 View 메뉴의 Available Atmel Tools 메뉴를 선택하여 해당하는 STK500 이 등록되었는지 확인하셔야 합니다. 등록이 되었다면 해당 등록된 메뉴를 오른 클릭한 후 Device Programming 메뉴를 선택하여 프로그램 설정 메뉴에 진입할 수 있습니다.
이 과정에서 마찬가지로 문제가 발생한다면 Atmel Studio 6.2 설치 과정에 문제가 발생하였거나 관련 파일이 손상된 경우입니다. 따라서 이 경우 Atmel Studio 6.2 를 재설치하는 것을 권장드립니다.
감사합니다.
>
>
> AD-USBISP V03.6 드라이버 설치하여 Port 에 잡힌거 확인하였습니다.
>
> 이후 진행에서 atmel studio 6.2의 Device programming에서 Tool과 Device에 아무것도 잡히지 않네요...
>
> 드라이버 재설치해봐도 똑같네요...
>
> add target까지는 port가 뜹니다.
>
|
||||
