Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 773 | 답변완료AVR전반에 관한 질문입니다. | 문석봉 | 2008-02-28 | 1,954 |
|
지난 번에도 참 질문을 올렸는데 너무 자세하게 대답해주셔서 너무 감사드립니다.
AVR을 공부하다보니 몇가지 궁금증이 생겨서 게시판을 찾게 되었습니다.
1. Atmega128의 소형 개발보드에 12V아답터 연결을 하는 부분이 있는데요. 12V용 아답터를 구매하려고 합니다. 그런데 같은 12V의 경우에도 최대허용전류가 300, 500, 600, 1000mA등등 여러가지가 있는데 어떤 12V아답터를 구매해야할지 모르겠습니다.
2. 제가 확장용 DC모터를 구입해서 소형 개발보드에 연결하려고 하는데요. DC모터에는 따로 전압을 걸어주지 않아도 확장용 보드로부터의 전압이 공급되는것입니까?
3. 제가 이 회사에서 판매하는 병렬용(25핀) ISP 케이블을 샀는데요. 병렬용케이블로는 ICC-AVR과 Pony-Prog2000을 이용할 수 있고, USB케이블로는 ICC-AVR과 코드비전, AVR STUDIO를 사용할 수 있는 것으로 알고 있습니다. 그렇다면 데스크탑을 이용하여(병렬용 케이블) Pony-Prog2000으로 프로그래밍을 하다가 노트북을 이용해서 동작을 하기위해 USB케이블을 사용하려고 하면 Pony-Prog2000으로 프로그래밍 한 것은 무용지물이 되는 겁니까?
5. Pony-Prog2000, ICC-AVR, AVR STUDIO, codevision이 어셈블리어를 사용하는지, C언어를 사용하는지, GCC를 사용하는지 이 세가지 사항에 관해서 각각의 소프트웨어개발툴이 어떠한가를 간단히 설명해주시면 감사하겠습니다.
질문사항을 최대한 잘 풀어서 설명하려했지만 질문이 많고, 두서 없습니다.
이해해주시면 좋겠습니다.
돈도 없는 학생이라 아무거나 비싼 부품을 함부로 살수가 없어서 조심스러워서 그렇습니다.
좋은 답변 기대하겠습니다.
관리자 답변
안녕하세요? 고객님,
처음 AVR을 시작하게 되면, 궁금한 점도 많게 되고, 때론 말도 안되는 질문 같지만, 그것만 넘어가면 잘 하겠는 데 하는 생각이 들기도 합니다. 그렇지만, 주변에 답해줄 사람이 있느냐 없느냐에 따라서 빠른 진보가 있느냐, 거기서 멈춰서 못가느냐의 갈림길이 되죠. 이렇게 고객님이 질문하는 것도 용기가 많이 필요했을 것이고,열심히 하시는 모습이 참 보기 좋습니다. 그래서, 더 열심히 답변하게 됩니다.
질문하신 내용에 답해 드리죠.
1. 12V 든 9V 든 아답타를 연결하시면 되는 데, 어차피 레귤레이터에서 걸러서 5V를 만들어 주기 때문에 7.5V ~28V 정도면 이상없이 동작하게 됩니다.
전류는 최대 그 정도까지 흘를 수 있는 아답타를 연결해 주는 것이지, 최대 허용 전류가 얼마든 우리 보드 자체는 얼마 전류를 먹지 않습니다. 기껏해야 100~200mA 정도 먹겠지요. 그러므로, 어떤 걸 쓰셔도 상관 없습니다.
다만, 외부에 연결하는 모터나 외부기기가 필요로 하는 전류가 얼마인지 알아봐서,
그 전류를 충분히 흘릴 수 있는 것을 쓰는 게 좋겠지요.
일반적인 테스트들이라면, 그냥 첨에 대략 1A 12V 나 600mA 15V 정도를 사시면 좋을 듯 싶습니다.
2. DC 모터를 구동하시려면, DC모터 확장보드를 구매하시거나 유사한 구동모듈을 만들어 사용하셔야 합니다. 거기에 모터 구동용 전류를 별도로 넣어 주기도 하고, 메인에서 빼 쓰기도 하므로, 회로에 따라 다르겠습니다. 사용하시려는 확장보드의 메뉴얼을 참고 바랍니다. 우리 회사의 경우 소형 DC모터 구동모듈은 메인에서 10핀 헤더를 통해 전압 5V가 공급되고 있으므로, 별도로 따로 전압을 줄 필요가 없습니다. 그러나, 그외의 DC 모터 구동모듈은 모두 별도로 모터 구동 전압을 넣어주는 방식으로 되어 있습니다. 아답타의 전류가 충분하다면, 메인보드에서 빼서 연결해 주셔도 됩니다.
3. 소스는 USBISP용이나 포니 프로그 용이 따로 있는 게 아니라,
하나의 소스로 된 것을 컴파일 해서, hex 파일로 만든 후에 다운로드 하는 툴을 프린터 포트용을 쓰느냐 USBISP를 쓰느냐입니다. 그에 따라 지원하는 프로그램이 달라지는 것이지요.
많은 궁금증이 해결되셨나요?
열심히 하세요.
감사합니다.
>지난 번에도 참 질문을 올렸는데 너무 자세하게 대답해주셔서 너무 감사드립니다.
>AVR을 공부하다보니 몇가지 궁금증이 생겨서 게시판을 찾게 되었습니다.
>
>1. Atmega128의 소형 개발보드에 12V아답터 연결을 하는 부분이 있는데요. 12V용 아답터를 구매하려고 합니다. 그런데 같은 12V의 경우에도 최대허용전류가 300, 500, 600, 1000mA등등 여러가지가 있는데 어떤 12V아답터를 구매해야할지 모르겠습니다.
>
>
>2. 제가 확장용 DC모터를 구입해서 소형 개발보드에 연결하려고 하는데요. DC모터에는 따로 전압을 걸어주지 않아도 확장용 보드로부터의 전압이 공급되는것입니까?
>
>3. 제가 이 회사에서 판매하는 병렬용(25핀) ISP 케이블을 샀는데요. 병렬용케이블로는 ICC-AVR과 Pony-Prog2000을 이용할 수 있고, USB케이블로는 ICC-AVR과 코드비전, AVR STUDIO를 사용할 수 있는 것으로 알고 있습니다. 그렇다면 데스크탑을 이용하여(병렬용 케이블) Pony-Prog2000으로 프로그래밍을 하다가 노트북을 이용해서 동작을 하기위해 USB케이블을 사용하려고 하면 Pony-Prog2000으로 프로그래밍 한 것은 무용지물이 되는 겁니까?
>
>5. Pony-Prog2000, ICC-AVR, AVR STUDIO, codevision이 어셈블리어를 사용하는지, C언어를 사용하는지, GCC를 사용하는지 이 세가지 사항에 관해서 각각의 소프트웨어개발툴이 어떠한가를 간단히 설명해주시면 감사하겠습니다.
>
>질문사항을 최대한 잘 풀어서 설명하려했지만 질문이 많고, 두서 없습니다.
>이해해주시면 좋겠습니다.
>돈도 없는 학생이라 아무거나 비싼 부품을 함부로 살수가 없어서 조심스러워서 그렇습니다.
>좋은 답변 기대하겠습니다.
|
||||
| 772 | 답변완료kd-am16에서 스위치 입력을... | 최성근 | 2008-02-28 | 2,107 |
|
mega16보드에요 입력신호를 받아서 c포트에 led를 점등하려고
하는데요 이틀간 고생만 하고 있고 작동하지 않습니다.
나와 있기는 pb4,pb5라고 나와있는데 ...
코드비젼으로 다음과 같이 짰습니다.
void main(void)
{
unsigned char key;
DDRC=0xFF;
DDRB=0b00000010;
PORTC=0xFF;
while(1){
key=PINB & 0xF0;
switch(key){
case 0b00010000:
PORTC=0x00;
break;
case 0b00100000:
PORTC=0xFF;
break;
default:break;
}
}
}
관리자 답변
안녕하세요? 고객님,
지금 가지고 계시는 보드가 라인트레이서용 보드 같습니다.
저희 16보드가 두 종류가 있습니다. AB-M16-B라는 보드와 AB-TB16 보드가 그것입니다.
AB-M16-B 보드는 ATMEGA16 개발보드로 만들어 진 것이고,
AB-TB16 보드는 라인트레이서 전용으로 만들어진 것입니다.
AB-M16-B 보드에서는 첨부드린 소스와 같이 짜면 스위치와 LED가 잘 동작합니다.
하지만, 가지고 계신 AB-TB16 보드는 스위치 선이 연결되어 있지 않습니다. 필요한 곳에 연결하여 쓰실 수 있도록 연결하여 두지 않았습니다. 실크에만 연결된 것처럼 표기가 되어 있지요. 원하시는 포트와 연결하여 사용하시기 바랍니다.
불편하게 해 드려 죄송합니다. 그리고, 16 개발보드를 원하신다면 방문하시면 가지고 계시는 보드를 AB-M16-B 보드로 무료로 교체해 드리겠습니다.
감사합니다.
>mega16보드에요 입력신호를 받아서 c포트에 led를 점등하려고
>하는데요 이틀간 고생만 하고 있고 작동하지 않습니다.
>나와 있기는 pb4,pb5라고 나와있는데 ...
>
>코드비젼으로 다음과 같이 짰습니다.
>
>void main(void)
>{
> unsigned char key;
> DDRC=0xFF;
> DDRB=0b00000010;
> PORTC=0xFF;
>
> while(1){
> key=PINB & 0xF0;
> switch(key){
> case 0b00010000:
> PORTC=0x00;
> break;
> case 0b00100000:
> PORTC=0xFF;
> break;
> default:break;
> }
>}
>}
>
>
>
>
|
||||
| 771 | 답변완료확장보드 AM-CS2P | 배지현 | 2008-02-27 | 2,054 |
|
아래 답변 정말 감사드려요.
추가로 스테핑모터 구동모듈 AM-CS2P의 회로도는 어디에 있는지..
좀체 찾기 힘드네요 죄송해요 번거롭게 해 드려서..
관리자 답변
현재 CS2P 회로는 약간 다르게 설계되어 있지만,
CS2P와 거의 같은 형태로 설계된 보드는
강좌->라인트레이서강좌->모터구동부 강좌를 참고하시면 됩니다.
감사합니다.
|
||||
| 770 | 답변완료ATmega16 개발보드 질문입니다 | 배지현 | 2008-02-27 | 1,853 |
|
안녕하세요(__)
AM-M16 보드를 사용 중입니다.
1. 기판 정중앙에 16.000이라고 쓰인 은색 부품은 무엇인가요?
2. 이 보드의 회로도를 좀 올려 주시면 안되겠습니까?
관리자 답변
안녕하세요? 저희 뉴테크놀로지 컴패니 제품을 이용해 주셔서 감사드립니다.
1. 크리스탈이라는 부품입니다. 클럭을 발생시키죠. 자체 전원으로는 발생을 못 시켜서 AVR쪽에서 전원소스를 내 줘서 클럭을 발생시킵니다.
그 클럭으로 AVR은 동작 클럭으로 사용하게 됩니다.
2. 아래 링크를 들어가시면 회로를 보실수 있습니다.
http://www.newtc.co.kr/board/download.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=KR-DL16&select_arrange=headnum&desc=asc&no=41&filenum=1
감사합니다.
>안녕하세요(__)
>AM-M16 보드를 사용 중입니다.
>1. 기판 정중앙에 16.000이라고 쓰인 은색 부품은 무엇인가요?
>2. 이 보드의 회로도를 좀 올려 주시면 안되겠습니까?
>
|
||||
| 769 | 답변완료초보가 질문 올립니다 | 이상호 | 2008-02-26 | 1,806 |
|
안녕하세요.
제가 이번에 '장애물 인지 센서장착 RC카'를 만들어보려 합니다. 그래서 일단 DC모터(SE-DM) 2개와 L298 등을 구입하여 하드웨어 제작을 하려하는데, 완전 초보인지라 어디서 부터 어떻게 손을 대야할지를 모르겠습니다
그동안 여러방면으로 자료수집을 해봤는데 감이 잡히질 않습니다
그래서 이렇게 자문을 구해보려 합니다. 죄송하지만 혹시 회사에 방문하여 자문을 여쭈어도 괜찮을런지요?
답변 부탁드립니다.
관리자 답변
안녕하세요? 고객님,
전화 주시고, 약속 미리 잡으시고 방문하시면 됩니다.
감사합니다.
|
||||
| 768 | 답변완료reset 관련 질문입니다. | 이은환 | 2008-02-26 | 1,907 |
|
AVR MEGA 128 개발보드를 사용하고 있는데
reset 버튼을 누르는 것 말고
ICCAVR을 이용하여 소프트웨어적으로
reset을 할려면 어떻게 해야 하는지 궁금합니다.
관리자 답변
안녕하세요?
와치독 타미어를 잘 활용하시면 가능합니다.
감사합니다.
|
||||
| 767 | 답변완료lcd 관련 질문 한가지만 더 할께요~^^; | 김민회 | 2008-02-25 | 2,181 |
|
void lcd_disp(char x, char y)
{
LCD_RS(OFF);
LCD_RW(OFF);
if(y == 1)
y++;
else if(y == 2)
y--;
if(y <= 1)
{
PORTC = y*20+x+0x80;
}
else
{
y = 2;
PORTC = y*20+x+0xC0;
}
E_Pulse();
}
void write_lcd(char x, char y, char *str)
{
lcd_disp(x,y);
while(*str) write_char(*str++);
}
while(1)
{
write_lcd(0,0,"KIMMINHUE");
delay(1000);
clrscr();
write_lcd(0,3,"KJO");
delay(1000);
clrscr();
}
예제 소스 인데요~
제 생각에 여기서 보면 y값에 따라 lcd에 출력 할때 1번째 줄에 출력 할 것인지
두 번째 줄에 출력 할 것인지를 결정되는 것으로 생각 됩니다.
근데 y값에 1,2,3을 줘봤는데 lcd 두 번째줄에 출력이 안되는데 무엇 때문인가요~?
관리자 답변
안녕하세요?
LCD 종류를 알려 주시구요.
소스 전체를 올려봐 주시기 바랍니다.
감사합니다.
|
||||
| 766 | 답변완료강좌에 내용들이 대부분 다운로드는 물론 열리지가 않네요..ㅠㅠ | 김동희 | 2008-02-25 | 1,904 |
|
어떻게 된건지 강좌에 내용들을 좀 보려고 하는데
다운로드라던가 실행이 되지 않네요..
회원이 아니라서 그런가 싶어 회원가입하고 로그인 상태인데도 안되네요..
제 컴퓨터가 이상한건 아닌것 같은데 말입니다..ㅠㅠ
관리자 답변
안녕하세요? 고객님,
다운로드는 회원하고는 관계가 없구요.
아무나 다운로드 가능합니다.
다운로드가 간혹 안된다는 분이 계시는 데,
웹싸이트 게시판이 zero 보드로 되어 있는 데,
간혹 공유기 설정이나 보안설정이 잘못되어서,
그런 일이 발생한 것 같습니다.
고객님과 같은 분들을 위해서 조만간에 직접 다운로드 받으실 수 있도록 강좌 계시판을 개편할 예정입니다.
감사합니다.
|
||||
| 765 | 답변완료제품문의 | 황현석 | 2008-02-24 | 1,909 |
|
파워를 제어해야하는데요.
예를들어 채널 5개가 있으면
각각의 채널의 파워를 on/off 시켜 제어가능해야하며
타이머기능도 추가해야합니다.
그래서 다음의 사진 제품을 생각하는데
문제는
저희가 제어할려는 제품은
레이저다이오드라 5V 700mA의 작은 전류와 전압인데
사진의 제품은 대용량의 전압전류라 문제가 되지 않는지 모르겠습니다.
해결책이라도 있는지 여쭙고 싶습니다.
관리자 답변
안녕하세요? 고객님,
700mA이면 작은 전류는 아닙니다.
물론, 저희 최대 용량에 비해 작은 것은 사실이지만,
그 정도면 피크때는 1A를 쉽게 넘어갈겁니다.
제품 사용시 이상은 없을 것 같습니다.
대량 생산시, 제품을 개발하고 싶으시면, 개발 의뢰도 가능합니다. 소량(500개 미만) 생산시에는 그냥 사용하시는 것이
좋겠습니다. 감사합니다.
|
||||
| 764 | 답변완료AM-RB04-B 전원 보드 | 박형규 | 2008-02-23 | 2,179 |
|
졸작 하느라 위 전원 보드 구매할 예정인데요.
채널에 들어가는 케이블 모양은 어떤 걸로 해야 하나요??
제품 설명하는 부분(위에 사진)에는 연두색으로 나사로 고정된 뭔가?가 있던데...
그 부분도 구매할 수 있나요??
관리자 답변
안녕하세요? 고객님,
저희 뉴테크놀로지 컴패니 제품 구매를 고려해 주셔서 감사드립니다.
채널에 들어가는 케이블은 어떤 것이든 상관 없습니다.
연두색으로 나사로 고정된 뭔가 라고 표현하신 부분이 케이블 연결하는 커넥터를 말씀하시는 것 같은데, 사시면 각 채널당 한개씩 함께 안에 들어 있습니다. 감사합니다.
|
||||
| 763 | 답변완료포트 질문 올립니다. | 안형주 | 2008-02-22 | 2,078 |
|
#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 = 0x10;
DDRD = 0xF0;
PORTE = 0x00;
DDRE = 0x00;
PORTF = 0x00;
DDRF = 0x00;
PORTG = 0x00;
DDRG = 0x00;
}
//TIMER0 initialize - prescale:1024
// WGM: Normal
// desired value: 1uSec
// actual value: -1000000.000uSec (100000100.0%)
void timer0_init(void)
{
TCCR0 = 0x00; //stop
ASSR = 0x00; //set async mode
TCNT0 = 0x100; //set count
OCR0 = 0x00;
TCCR0 = 0x07; //start timer
}
//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 = 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
}
//
void main(void)
{
init_devices();
}
이렇게 소스를 구성하여 프로그램을 돌려본 결과
포트 D와 E만
led 테스트보드에 불이 사진과 같이 나옵니다....
다른 포트 A B F 는 5번 led에만 정상적으로 불이 들어옵니다...
이것은
소스구성에 있어서 문제는 없는 듯 싶은데 혹시
기기결함인지...... 포트 초기화의 문제인지...... 궁금하여 이렇게
질문을 올립니다.....
관리자 답변
사진을 직접 찍어 첨부파일에 올려놨습니다...
|
||||
| 762 | 답변완료다시 한번 감사드립니다. | 한병인 | 2008-02-22 | 2,011 |
|
전자공학의 꽃 마이콤을 익히면서
많은 힘을주고, 전망을 주신점 감사드립니다.
종종 시간있을 때 찾아 뵙겠습니다...
현재 정신적으로나 육체적으로 힘들어
정서적으로 안정이 안되어 있는 관게로
주변 정리가 되면, 마이콤을 정진해야지요...
인연이되어 감사합니다... 한병인 배상.//
관리자 답변
감사합니다. 늘 지켜보고 힘드실 때, 힘이 될 수 있는 사람과 회사가 되겠습니다. 언제든 찾아와 주세요.
|
||||
| 761 | 답변완료캐릭터lcd관련 질문 입니다. | 김민회 | 2008-02-21 | 2,128 |
|
avr128를 이용하여 lcd에 문자를 출력하려고 하는데요~
홈페이지에 있는데로 제어포트를 PORTA0~PORTA2까지 하고
데이터 포트는 PORTF0~PORTF7까지 하여 회로를 제작하고
//PORTA : RS:D0 RW:D1 E:D2
//PORTF : DATA
//ICC-AVR application builder : 2005-11-11 오후 12:05:38
// Target : M128
// Crystal: 16.000Mhz
#include <iom128v.h>
#include <macros.h>
#define ON 1
#define OFF 0
#define DELAYTIME 10
void port_init(void)
{
PORTA = 0x00;
DDRA = 0xFF;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00; //m103 output only
DDRC = 0x00;
PORTD = 0x00;
DDRD = 0xFF;
PORTE = 0x00;
DDRE = 0x00;
PORTF = 0x00;
DDRF = 0xFF;
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();
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
}
void delay(int dd){
int i,j;
for(i=0 ; i<1000 ; i++){
for(j=0 ; j<dd ; j++){
}
}
}
// RS : PORTA D0
void LCD_RS(int onoff){
if(onoff == ON)
PORTA = PORTA | 0x01;
else
PORTA = PORTA & 0xFE;
}
// RW : PORTA D1
void LCD_RW(int onoff){
if(onoff == ON)
PORTA = PORTA | 0x02;
else
PORTA = PORTA & 0xFD;
}
// RS : PORTA D2
void LCD_E(int onoff){
if(onoff == ON)
PORTA = PORTA | 0x04;
else
PORTA = PORTA & 0xFB;
}
void E_Pulse(void){
char i;
LCD_E(ON);
delay(DELAYTIME*10);
LCD_E(OFF);
delay(DELAYTIME*10);
}
void write_char(char s){
LCD_RS(ON);
delay(DELAYTIME);
LCD_RW(OFF);
delay(DELAYTIME);
LCD_E(ON);
delay(DELAYTIME);
PORTF = s;
delay(DELAYTIME);
LCD_E(OFF);
delay(DELAYTIME);
LCD_E(ON);
delay(DELAYTIME);
}
void clrscr(){
LCD_RS(OFF);
delay(DELAYTIME);
LCD_RW(OFF);
delay(DELAYTIME);
LCD_E(ON);
delay(DELAYTIME);
PORTF = 0x01;
delay(DELAYTIME);
LCD_E(OFF);
delay(DELAYTIME);
LCD_E(ON);
delay(DELAYTIME);
}
void returnhome(){
LCD_RS(OFF);
delay(DELAYTIME);
LCD_RW(OFF);
delay(DELAYTIME);
LCD_E(ON);
delay(DELAYTIME);
PORTF = 0x02;
delay(DELAYTIME);
LCD_E(OFF);
delay(DELAYTIME);
LCD_E(ON);
delay(DELAYTIME);
}
void LCDONOFF(int onoff){
LCD_RS(OFF);
delay(DELAYTIME);
LCD_RW(OFF);
delay(DELAYTIME);
LCD_E(ON);
delay(DELAYTIME);
if(onoff == ON){
PORTF = 0x0F;
}else{
PORTF = 0x08;
}
delay(DELAYTIME);
LCD_E(OFF);
delay(DELAYTIME);
LCD_E(ON);
delay(DELAYTIME);
}
void lcd_disp(char x, char y){
LCD_RS(OFF);
LCD_RW(OFF);
if(y==1)y++;
else if(y==2) y--;
if(y<=1){
PORTF=y*20+x+0x80;
}
else{
y=2;
PORTF=y*20+x+0xc0;
}
E_Pulse();
}
void write_lcd(char x, char y, char *str){
lcd_disp(x,y);
while(*str) write_char(*str++);
}
void main(void){
int i;
init_devices();
returnhome();
clrscr();
while(1){
LCDONOFF(ON);
delay(1000);
write_char('s');
LCDONOFF(OFF);
delay(1000);
}
}
/* while(1){
write_lcd(0,0,"Hello");
delay(300);
// clrscr();
write_lcd(0,0,"Test");
delay(300);
// clrscr();
}
}*/
이렇게 프로그램을 했는데
lcd 위줄만 ■■■■■■■■■■■■■■■■
이렇게 나와요~~정말 4일동안 여러 소스를 보고 고쳐 봤는데 작동이 안되네요~
lcd는 캐릭터 LCD(16216D-4-B102A)이거를 썼고
퓨즈비트 설정은 0xFF99FE로 하였습니다~
답변기다리겠습니다...ㅜㅜ
관리자 답변
안녕하세요? 고객님,
퓨즈비트 셋팅이 틀렸네요. 0xFFD9EF로 하세요.
고객님이 셋팅하신 퓨즈로 하니까 동작이 안됩니다.
그리고, 가변 저항값을 돌려서, LCD 바이어스를 맞춰 주셔야 글이 표시 됩니다.
본 소스는 잘 돌아 가네요. 제가 바로 돌려 보았습니다.
감사합니다.
>avr128를 이용하여 lcd에 문자를 출력하려고 하는데요~
>
>홈페이지에 있는데로 제어포트를 PORTA0~PORTA2까지 하고
>
>데이터 포트는 PORTF0~PORTF7까지 하여 회로를 제작하고
>
>//PORTA : RS:D0 RW:D1 E:D2
>//PORTF : DATA
>
>//ICC-AVR application builder : 2005-11-11 오후 12:05:38
>// Target : M128
>// Crystal: 16.000Mhz
>
>#include <iom128v.h>
>#include <macros.h>
>
>#define ON 1
>#define OFF 0
>#define DELAYTIME 10
>
>void port_init(void)
>{
> PORTA = 0x00;
> DDRA = 0xFF;
> PORTB = 0x00;
> DDRB = 0x00;
> PORTC = 0x00; //m103 output only
> DDRC = 0x00;
> PORTD = 0x00;
> DDRD = 0xFF;
> PORTE = 0x00;
> DDRE = 0x00;
> PORTF = 0x00;
> DDRF = 0xFF;
> 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();
>
> 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
>}
>void delay(int dd){
> int i,j;
>
> for(i=0 ; i<1000 ; i++){
> for(j=0 ; j<dd ; j++){
> }
> }
>}
>
>// RS : PORTA D0
>void LCD_RS(int onoff){
> if(onoff == ON)
> PORTA = PORTA | 0x01;
> else
> PORTA = PORTA & 0xFE;
>}
>// RW : PORTA D1
>void LCD_RW(int onoff){
> if(onoff == ON)
> PORTA = PORTA | 0x02;
> else
> PORTA = PORTA & 0xFD;
>}
>// RS : PORTA D2
>void LCD_E(int onoff){
> if(onoff == ON)
> PORTA = PORTA | 0x04;
> else
> PORTA = PORTA & 0xFB;
>}
>
>void E_Pulse(void){
> char i;
> LCD_E(ON);
> delay(DELAYTIME*10);
> LCD_E(OFF);
> delay(DELAYTIME*10);
>}
>
>void write_char(char s){
> LCD_RS(ON);
> delay(DELAYTIME);
> LCD_RW(OFF);
> delay(DELAYTIME);
> LCD_E(ON);
> delay(DELAYTIME);
> PORTF = s;
> delay(DELAYTIME);
> LCD_E(OFF);
> delay(DELAYTIME);
> LCD_E(ON);
> delay(DELAYTIME);
>}
>
>void clrscr(){
> LCD_RS(OFF);
> delay(DELAYTIME);
> LCD_RW(OFF);
> delay(DELAYTIME);
> LCD_E(ON);
> delay(DELAYTIME);
> PORTF = 0x01;
> delay(DELAYTIME);
> LCD_E(OFF);
> delay(DELAYTIME);
> LCD_E(ON);
> delay(DELAYTIME);
>}
>
>void returnhome(){
> LCD_RS(OFF);
> delay(DELAYTIME);
> LCD_RW(OFF);
> delay(DELAYTIME);
> LCD_E(ON);
> delay(DELAYTIME);
> PORTF = 0x02;
> delay(DELAYTIME);
> LCD_E(OFF);
> delay(DELAYTIME);
> LCD_E(ON);
> delay(DELAYTIME);
>}
>
>void LCDONOFF(int onoff){
> LCD_RS(OFF);
> delay(DELAYTIME);
> LCD_RW(OFF);
> delay(DELAYTIME);
> LCD_E(ON);
> delay(DELAYTIME);
> if(onoff == ON){
> PORTF = 0x0F;
> }else{
> PORTF = 0x08;
> }
> delay(DELAYTIME);
> LCD_E(OFF);
> delay(DELAYTIME);
> LCD_E(ON);
> delay(DELAYTIME);
>}
>
>
>void lcd_disp(char x, char y){
>LCD_RS(OFF);
>LCD_RW(OFF);
>if(y==1)y++;
>else if(y==2) y--;
>if(y<=1){
> PORTF=y*20+x+0x80;
>}
>else{
> y=2;
> PORTF=y*20+x+0xc0;
>}
>E_Pulse();
>}
>
>void write_lcd(char x, char y, char *str){
>lcd_disp(x,y);
>while(*str) write_char(*str++);
>}
>
>void main(void){
> int i;
> init_devices();
> returnhome();
> clrscr();
> while(1){
> LCDONOFF(ON);
> delay(1000);
> write_char('s');
> LCDONOFF(OFF);
> delay(1000);
>
> }
>}
>
>/* while(1){
> write_lcd(0,0,"Hello");
> delay(300);
>// clrscr();
> write_lcd(0,0,"Test");
> delay(300);
>// clrscr();
> }
>}*/
>
>이렇게 프로그램을 했는데
>
>lcd 위줄만 ■■■■■■■■■■■■■■■■
>
>이렇게 나와요~~정말 4일동안 여러 소스를 보고 고쳐 봤는데 작동이 안되네요~
>
>lcd는 캐릭터 LCD(16216D-4-B102A)이거를 썼고
>
>퓨즈비트 설정은 0xFF99FE로 하였습니다~
>
>답변기다리겠습니다...ㅜㅜ
|
||||
| 760 | 답변완료ATMEGA128관련 질문 | 문석봉 | 2008-02-21 | 2,035 |
|
오늘 ATmega128 PRO을 샀습니다.
제가 해야할 것은 모터를(서보모터든 디씨모터든 암튼) 30개정도를 서로 제어해야합니다. (30개의 모터를 동시에 어떤 조합으로든지 서로 다르게 움직일수있어야합니다.)
그래서 몇가지 조언을 부탁합니다.
제가 AVR에 관해서 잘 모르기때문에 일단은 공부를 해야할 텐데요.
첫번째, 위에서 말씀드린 대로 ATmega128를 가지고 30개의 모터를 어떤 조합으로든지 제어를 할 수는 있는 겁니까? 그것이 어려운일인지 그리 어렵지 않은지, 쉬운지 궁금합니다.
두번째, 지금 딸랑 ATmega128 PRO과 PC에서 AVR로 코드를 집어넣을수있는 케이블만 샀는데요. 기판같은것은 어떻게 해야합니까? 갖가지 저항이라든지 소자를 붙여서 일종의 회로를 구성해야만 제가 원하는 것을 할수 있는 겁니까?
세번째, 프로그래밍을 해야하는데 컴퓨터에 무엇을(어떤 프로그램) 깔아야 하는겁니까?
네번째, 세번째 질문에서 컴퓨터에 프로그램을 깔았을때 그갓을 가지고 C언어로 짤수있는겁니까? 아님 기계어를 써야하는겁니까?
좋은 답변 부탁드립니다.
관리자 답변
안녕하세요? 저희 뉴테크놀로지 컴패니 제품을 이용해 주셔서 감사드립니다.
질문에서 AVR을 공부하겠다는 열의가 느껴졌습니다. 화이팅입니다.
우선, AVR 한개로 DC 모터를 30개 제어하는 것은 쉽지 않아 보입니다.
불가능한 것은 아니지만, 쉬운 일도 아니지요. 또한, 어떤 DC 모터냐에 따라 다르겠습니다. 전류량 때문이지요.
우선, 우리 회사에서 서보 모터를 24개까지 자유자재로 다룰 수 있는 기본 C소스 코드를 무료로 제공하고 있습니다. 자료실->기존자료실에서 쉽게 다운로드 가능합니다. CSVP를 3개 사서 전류량을 늘릴 수 있도록 개조하고(방법은 회사로 방문하시면 보여드리겠습니다. 방열판을 늘리고, 7805를 78T05로 바꾸면 됩니다.)
서보 모터를 24개 연결하면 되지만, 전류량을 충분히 공급해 줘야 합니다. 서보 모터는 움직일 때 전류를 많이 먹거든요. 각 모터에 걸리는 부하가 어느정도냐에 따라서, 서보모터 선정도 달라지겠지요. 본사를 방문하여 자문 받으시기를 권합니다.
AVR을 처음 하신다면 KD-128PRO 킷트를 구매하시기를 권장합니다.
그 안에 보시면, 예제 등이 준비되어 있습니다. 일단, 예제를 충실히 해 보신 후에,
본인이 하시려는 것을 확장 보드를 준비하거나 빵판을 준비하여 실습하시면서 만들어 보시면 되겠습니다.
프로그래밍 하실 때는 크로스컴파일러와 다운로더용 프로그램 등을 까셔야 하는 데, 보통 두개가 한 프로그램안에 함께 있습니다. 따로 있는 것도 있구요.
크로스 컴파일러로는 ICCAVR, Codevision, IARC, WINAVR(GCC계열) 등이 있는 데요. 우리 회사에서는 사용이 편리하고 데모 버전도 구하기 쉬운 ICCAVR을 권합니다. 강좌->AVR강좌에 가시면 ICCAVR 사용법 및 다운로딩 법 프로그래밍할 때 방법 등이 나와 있습니다. KD-128PRO 강좌를 다운로드 하세요. C로도 가능하구요. ASM도 가능합니다.
감사합니다.
>오늘 ATmega128 PRO을 샀습니다.
>제가 해야할 것은 모터를(서보모터든 디씨모터든 암튼) 30개정도를 서로 제어해야합니다. (30개의 모터를 동시에 어떤 조합으로든지 서로 다르게 움직일수있어야합니다.)
>
>그래서 몇가지 조언을 부탁합니다.
>제가 AVR에 관해서 잘 모르기때문에 일단은 공부를 해야할 텐데요.
>
>첫번째, 위에서 말씀드린 대로 ATmega128를 가지고 30개의 모터를 어떤 조합으로든지 제어를 할 수는 있는 겁니까? 그것이 어려운일인지 그리 어렵지 않은지, 쉬운지 궁금합니다.
>
>두번째, 지금 딸랑 ATmega128 PRO과 PC에서 AVR로 코드를 집어넣을수있는 케이블만 샀는데요. 기판같은것은 어떻게 해야합니까? 갖가지 저항이라든지 소자를 붙여서 일종의 회로를 구성해야만 제가 원하는 것을 할수 있는 겁니까?
>
>세번째, 프로그래밍을 해야하는데 컴퓨터에 무엇을(어떤 프로그램) 깔아야 하는겁니까?
>
>네번째, 세번째 질문에서 컴퓨터에 프로그램을 깔았을때 그갓을 가지고 C언어로 짤수있는겁니까? 아님 기계어를 써야하는겁니까?
>
>좋은 답변 부탁드립니다.
|
||||
| 759 | 답변완료[견적 의뢰]견적좀 부탁드립니다 | 노현우 | 2008-02-21 | 1,920 |
|
저는 작년에 eleparts를 통해서 DC모터 사용한 라인트레이서를 구매하였는데요
이번에 그 라인트레이서를 변형하여 다른 작품을 만들려고 합니다.
DC모터를 스텝모터로 바꾸고 이런저런 변형을 좀 가하고 싶은데 eleparts 에 이야기 하였더니 이곳을 알려줘서 메일 남깁니다.
일단 제가 하고싶은것은 아무 라인이나 그려놓으면 라인트레이서가 라인을 따라서 이동하고 실시간으로 노트북 화면에 그 라인을 그려주는것입니다.
그래서 일단 스텝모터로 교체를 해야하고 무선통신 모듈을 사용하여 실시간으로 스텝모터의 회전수를 전달하여 화면으로 보여줘야하는데요... 제가 이런쪽에 문외한인지라 도움을 좀 받았으면 합니다.
우선 알고싶은것은 하드웨어적인 부품과 회로도는 구매 가능한듯 싶은데... 스텝모터,스텝코터 제어장치, 무선통신모듈 이렇게 이고요 그에따른 DC모터 라인트레이서에 어떻게 적용해야하는지 하는 회로도 입니다.
또 그에따른 소프트 웨어도 가능한지 알고싶습니다.
이 모든것에 대한 상세 견적을 받아볼수 있을까요?
제가 지금 외국에 있어서 통화는 안되고 메일로만 연락이 가능합니다.
혹시 가능하다면 모든것이 가능하도록 도움을 좀 받고 싶은데요...
가급적 좀 빠른 답변과 견적을 부탁드립니다.
감사합니다.
관리자 답변
안녕하세요? 저희 뉴테크놀로지 컴패니 제품을 이용해 주셔서 감사드립니다.
우선, 이메일이 없어서 견적을 보내드리기가 어렵네요.
ATMEGA16을 이용한 스테핑 라인트레이서(KR-SL16),
ATMEGA128을 이용한 스테핑 라인트레이서(KR-SL128) 등을 구매하시면
라인트레이서 소스와 회로도, 강좌 등 모든 것이 들어 있습니다.
그리고, 무선 통신 모듈은 블루투스 시리얼 모듈(HPS-120 : 165,000원)입니다.
각각 모듈만 구매하셔서 프로그램은 직접 짜넣으셔도 가능합니다.
저희 스테핑 라인트레이서 킷트를 구매하시면 안에 다 들어 있습니다만, 직접 짜시게 되면 아무래도 가지고 계신 16보드를 활용하실 수 있어서 좋으실 것 같습니다만 그 경우, 구매하셔야 하는 리스트는
IRS4D 센서보드, 모터 구동부(CS2P), 2x520 1개, 2x505 1개, 2핀 전원연장선, 스테핑모터용 바퀴, 스테핑 모터 2개, 스테핑트레이서용 바디 등입니다.
ISP는 가지고 계실 테니 리스트에는 넣지 않았습니다.
또한, PC용으로 선을 따라가면서 노트북 화면에 그 라인을 그려주는 것은
프로그램 스펙이 확정되어야 정확한 견적이 가능할 듯 합니다. 블루투스 모듈은 가격을 미리 말씀 드렸구요. 블루투스 모듈과 연결하는 보드는 직접 제작하시거나 하셔야 할겁니다.
감사합니다.
>저는 작년에 eleparts를 통해서 DC모터 사용한 라인트레이서를 구매하였는데요
>이번에 그 라인트레이서를 변형하여 다른 작품을 만들려고 합니다.
>DC모터를 스텝모터로 바꾸고 이런저런 변형을 좀 가하고 싶은데 eleparts 에 이야기 하였더니 이곳을 알려줘서 메일 남깁니다.
>일단 제가 하고싶은것은 아무 라인이나 그려놓으면 라인트레이서가 라인을 따라서 이동하고 실시간으로 노트북 화면에 그 라인을 그려주는것입니다.
>그래서 일단 스텝모터로 교체를 해야하고 무선통신 모듈을 사용하여 실시간으로 스텝모터의 회전수를 전달하여 화면으로 보여줘야하는데요... 제가 이런쪽에 문외한인지라 도움을 좀 받았으면 합니다.
>우선 알고싶은것은 하드웨어적인 부품과 회로도는 구매 가능한듯 싶은데... 스텝모터,스텝코터 제어장치, 무선통신모듈 이렇게 이고요 그에따른 DC모터 라인트레이서에 어떻게 적용해야하는지 하는 회로도 입니다.
>또 그에따른 소프트 웨어도 가능한지 알고싶습니다.
>이 모든것에 대한 상세 견적을 받아볼수 있을까요?
>제가 지금 외국에 있어서 통화는 안되고 메일로만 연락이 가능합니다.
>혹시 가능하다면 모든것이 가능하도록 도움을 좀 받고 싶은데요...
>가급적 좀 빠른 답변과 견적을 부탁드립니다.
>감사합니다.
|
||||
