Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 1968 | 답변완료타이머요 | 강민석 | 2008-11-16 | 1,414 |
|
지난번에 1초 발생하는 타이머 소스를 작성 해주셔서
감사했습니다 (avr128 로 avredit를 컴파일러로 해서 만들어 주셨습니다)ㅎㅎ
혹시 제가 원하는 만큼 인터럽트를 발생 시킬수 있습니까??
예를 들어
7번 인터럽트를 발생시키고
8번째는 인터러트가 정지 되어서
계속 작동 안하는거요 ㅋㅋ
동작을 정지 시키는 원리를 알고 싶습니다
관리자 답변
안녕하세요?
지난 번에 좀 도움이 되었나보네요.
그런데, 지난 번에 짜드린 소스로 공부를 안하셨나 보네요.
ㅠ.ㅠ
타이머에서 다음번 타이머를 동작시키려면,
타이머 값을 초기화 하잖아요...예를 들어서 TCNT0 = 0XFE;
머 이런식으로,
그걸 안하면 정지되죠.
발생할 때마다, 변수 하나의 값을 증가하다가, 물론 volatile로 선언해야 합니다.
8개가 되면, 정지하면 되겠죠.
수고하세요.
>지난번에 1초 발생하는 타이머 소스를 작성 해주셔서
>
>감사했습니다 (avr128 로 avredit를 컴파일러로 해서 만들어 주셨습니다)ㅎㅎ
>
>혹시 제가 원하는 만큼 인터럽트를 발생 시킬수 있습니까??
>예를 들어
>
>7번 인터럽트를 발생시키고
>
>8번째는 인터러트가 정지 되어서
>
>계속 작동 안하는거요 ㅋㅋ
>
>동작을 정지 시키는 원리를 알고 싶습니다
|
||||
| 1967 | 답변완료^^질문있어요.. | 윤영석 | 2008-11-15 | 1,498 |
|
^^현재 회로도를 보고... 스위치 모듈이랑 led모듈을 만들려고 하는데요..
거기 보면 어레이저항있잖아요..
스위치모듈 4.7kn
led모듈 RN551 이라고 되어있는데요.. 4.7kn은 4.7k옴이란거죠?
RN551은 550옴인가요??
그리고, 4.7k옴짜리가 없는데.. 혹시 얼마짜리까지 가능할가요??
DC모터 구동모듈은 좀 더 공부한 후에 구매해야겠구요.. 차근차근..
DC라인트레이서는 오늘 9볼트 건전지 사서 작동시켜봤는데요..
첨에는 직진하다가... 계속 한쪽만 작동되네여.. (이건 뭐 제가 좀 더 가지고 놀아봐야겠지만서도...)
적외선 2채널과 4채널의 차이일까요??
^^ 답변 부탁드리구요~ 감사합니다.
행복한 주말 맞이하세요/
관리자 답변
안녕하세요? 반갑습니다.
4.7K가 맞구요.
dc 라인트레이서는 처음에 동작시킬 때, 아날로그 타입은 바닥에 놓은 상태에서
켜야 합니다. 바닥 상태를 인식해서, 검정 라인 따라 가거든요.
아날로그랑 디지탈이랑 프로그램 이 좀 다르니, 참고바랍니다.
수고하세요.
>^^현재 회로도를 보고... 스위치 모듈이랑 led모듈을 만들려고 하는데요..
>
>거기 보면 어레이저항있잖아요..
>
>스위치모듈 4.7kn
>led모듈 RN551 이라고 되어있는데요.. 4.7kn은 4.7k옴이란거죠?
>RN551은 550옴인가요??
>
>그리고, 4.7k옴짜리가 없는데.. 혹시 얼마짜리까지 가능할가요??
>
>DC모터 구동모듈은 좀 더 공부한 후에 구매해야겠구요.. 차근차근..
>
>DC라인트레이서는 오늘 9볼트 건전지 사서 작동시켜봤는데요..
>첨에는 직진하다가... 계속 한쪽만 작동되네여.. (이건 뭐 제가 좀 더 가지고 놀아봐야겠지만서도...)
>적외선 2채널과 4채널의 차이일까요??
>
>^^ 답변 부탁드리구요~ 감사합니다.
>
>행복한 주말 맞이하세요/
|
||||
| 1966 | 답변완료타이머/ 인터럽트에 대해 질문드리고 싶네요 | 유준영 | 2008-11-14 | 1,421 |
|
2초 동안 어떤 신호가 계속 들어오면 모터를 작동하고자 합니다
이렇게 하고 싶다면 타임 인터럽터를 사용하여 할수 있을까요?
안되다면 어떤 걸 써야 될지 질문드립니다.
그리고 아랫코드는 1초로 되어있는데 2초 3초는 어디 수치를
바꾸어야 되나요? 이 질문은 그냥 궁금해서 배우고 싶어 질문
드립니다 수고하세용^^
#pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
void timer0_ovf_isr(void)
{
TCNT0 = 0x38; //reload counter value
if(cnt++ > 10000){
cnt=0;
PORTB++;
}
}
이런 식으로 하시면 되구요.
초기화 부분에
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x01;
이렇게는 해 주셔야 겠지요.
풀소스는 예전 답변을 참고하세요.
수고하세요.
관리자 답변
if(cnt++ > 10000) 이 부분에서, 10000 이라는 부분을 20000으로 고치면 2초가 되겠고, 30000으로 고치면 3초가 되겠지요.
그리고, 2초동안 어떤 신호가 계속 들어온다고 하셨는 데, 어떤 형태의 신호인지 타이머로 검사하고 있으면 가능하겠네요.
수고하세요.
>2초 동안 어떤 신호가 계속 들어오면 모터를 작동하고자 합니다
>
>이렇게 하고 싶다면 타임 인터럽터를 사용하여 할수 있을까요?
>안되다면 어떤 걸 써야 될지 질문드립니다.
>그리고 아랫코드는 1초로 되어있는데 2초 3초는 어디 수치를
>바꾸어야 되나요? 이 질문은 그냥 궁금해서 배우고 싶어 질문
>드립니다 수고하세용^^
>
>#pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
>void timer0_ovf_isr(void)
>{
>TCNT0 = 0x38; //reload counter value
>if(cnt++ > 10000){
> cnt=0;
> PORTB++;
>}
>}
>
>이런 식으로 하시면 되구요.
>
>초기화 부분에
>
>MCUCR = 0x00;
>GICR = 0x00;
>TIMSK = 0x01;
>
>이렇게는 해 주셔야 겠지요.
>풀소스는 예전 답변을 참고하세요.
>
>수고하세요.
>
|
||||
| 1965 | 답변완료AD-usbisp v02 드라이버가 설정되지 않습니다. | timedoit | 2008-11-14 | 1,446 |
|
안녕하십니까?
ad-usbisp v02 를 사용하기 위해, 드라이버를 잡으려하는데,
com port로만 잡히고, 드라이드 명이 나오지 않습니다.
처리방법을 알려 주십시오.
그리고 winavr버전이 업그레이드 되어, isp도 프로그램이 업그레이드
해야 한다고 하는데, hex 파일을 지원하지 않으시네요..
isp 업그레이드를 통해 해결이 가능하다면, hex 파일도 보내 주시기 바랍니다.
감사합니다.
.
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사합니다.
원래 USBISP 드라이버는 COM PORT로 잡히게 되어 있습니다.
그런 사항은 메뉴얼을 보시면 나와 있구요.
그리고, USBISP V02는 이미 업그레이드가 다 되어 있는 제품입니다.
업그레이드를 더이상 안하셔도 됩니다.
감사합니다.
>안녕하십니까?
>
>ad-usbisp v02 를 사용하기 위해, 드라이버를 잡으려하는데,
>
>com port로만 잡히고, 드라이드 명이 나오지 않습니다.
>
>처리방법을 알려 주십시오.
>
>그리고 winavr버전이 업그레이드 되어, isp도 프로그램이 업그레이드
>
>해야 한다고 하는데, hex 파일을 지원하지 않으시네요..
>
>isp 업그레이드를 통해 해결이 가능하다면, hex 파일도 보내 주시기 바랍니다.
>
>감사합니다.
>
>.
>
|
||||
| 1964 | 답변완료usb isp 문의 | 이종민 | 2008-11-14 | 1,468 |
|
안녕하세요^^
AD-USBISP V02를 사용중 입니다...
코드비젼 사용중 입니다.
usbisp 가 연결이 잘되다가 도
사용중 연결이 되질않고 컴퓨터가 계속 기다리는상태가 됩니다.
이런경우에는 코드비젼 닫기도 않되구
컴퓨터를 off 도 안되어 Reset 시켜야만 됩니다.
빠른답변 바랍니다..
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사합니다.
드라이버 문제인 것 같은데요, 자료실에서 최신 드라이버를
다운받아서, 다시 설치해 보세요.
문제가 계속 지속되면, 본사로 가져 오시면 교체해 드리겠습니다.
감사합니다.
>안녕하세요^^
>AD-USBISP V02를 사용중 입니다...
>
>코드비젼 사용중 입니다.
>usbisp 가 연결이 잘되다가 도
>사용중 연결이 되질않고 컴퓨터가 계속 기다리는상태가 됩니다.
>이런경우에는 코드비젼 닫기도 않되구
>컴퓨터를 off 도 안되어 Reset 시켜야만 됩니다.
>
>빠른답변 바랍니다..
>
|
||||
| 1963 | 답변완료혹시 회로도 구할 수 있을까요? | 윤영석 | 2008-11-14 | 1,459 |
|
먼저 어제 친절한 답변 감사합니다.
ㅋㅋ 아직 모르는게 많은 초보인지라... ^^
그리고, 다름아니라..
DC구동모듈(AM-DC2-2D) 및 LT적외선센서모듈(4Ch)에 대한 회로도를 구할 수 있을까 싶어서요..
쩝.. 돈 주고 사면 좋겠지만.. 어제 질문글에서처럼 여기 제품 키트 2개를 구매해서리.. 출혈이 심하네요..
혹시나 회로도를 구해서 만들어볼 수 있을까 싶어서요..
간단하게 구매하면 그만이겠지만... 출혈도 부담되고.. 그리고, 따라 만들면서 공부도 하고 싶어서 그러거든여...
도움 부탁드립니다.
감사합니다. 행복한 하루 되세요~
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사합니다.
디지털 적외선 센서인 IRS4D에 관한 회로도는 아래에 공개되어 있습니다.
- 아래 -
http://www.newtc.co.kr/board/view.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=IRS4D&select_arrange=headnum&desc=asc&no=256
하지만, DC 모터 구동 모듈인 DC2-2D는 회로를 공개하지 않고 있습니다.
직접 만드시려면, 기본적인 L298 데이터 시트를 보시고, 회로를 구성하시기 바랍니다. 하지만, 2-2D는 본사의 기술과 노하우가 들어 있는 제품이라, 공개하지 않음을 양해 바랍니다.
감사합니다.
>먼저 어제 친절한 답변 감사합니다.
>
>ㅋㅋ 아직 모르는게 많은 초보인지라... ^^
>
>그리고, 다름아니라..
>DC구동모듈(AM-DC2-2D) 및 LT적외선센서모듈(4Ch)에 대한 회로도를 구할 수 있을까 싶어서요..
>
>쩝.. 돈 주고 사면 좋겠지만.. 어제 질문글에서처럼 여기 제품 키트 2개를 구매해서리.. 출혈이 심하네요..
>
>혹시나 회로도를 구해서 만들어볼 수 있을까 싶어서요..
>간단하게 구매하면 그만이겠지만... 출혈도 부담되고.. 그리고, 따라 만들면서 공부도 하고 싶어서 그러거든여...
>
>도움 부탁드립니다.
>
>감사합니다. 행복한 하루 되세요~
|
||||
| 1962 | 답변완료MEGA64 | SIK | 2008-11-14 | 1,337 |
|
AVR용 USB-ISP 라이트 사용자입니다..
MEGA64를 사용하는데 128을 사용할때는 잘되는데,,
64에 연결하면 다운이 안되네요,,
혹시 64는 안되나요?
아님 설정하는게 있는건지,,
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사합니다.
물론 같은 AVR 계열인 ATMEGA64도 잘 됩니다.
혹시, ISP 핀은 잘 맞추셨는 지 확인하시구요.
ATMEGA64로 컴파일러 Option에서 맞추셔야 하는 데,
맞추셨는 지 확인하시고,
다운로드 하시면 잘 될겁니다.
안되시면, 한 번 가지고 와보세요.
원인을 알려 드릴께요.
수고하세요.
>AVR용 USB-ISP 라이트 사용자입니다..
>
>MEGA64를 사용하는데 128을 사용할때는 잘되는데,,
>
>64에 연결하면 다운이 안되네요,,
>
>혹시 64는 안되나요?
>
>아님 설정하는게 있는건지,,
|
||||
| 1961 | 답변완료타이머/카운터 인터럽트 관련 재질문 드립니다. | 이병희 | 2008-11-14 | 1,416 |
|
답변 잘 보았습니다. 그런데 제가 궁금한것은 AVR Studio가 아닌 ICCAVR에서 어떻게 타이머/카운터를 이용해서 인터럽트를 실행시키는가 입니다. 소스를 보시면 아시겠지만, 최초에 LED가 켜져 있는 상태이기 때문에, 시간이 지나서 인터럽트가 걸리면 꺼져야 합니다. 그런데 꺼지지가 않고 계속해서 켜져 있는 상태입니다. 이것은 인터럽트가 제데로 걸리지가 않았다는 말인데요....한번이라도 인터럽트로 들어갔다면 소스상 LED가 꺼지는것이 맞을 겁니다. 지금 제가 해메는 것은 ICCAVR에서 인터럽트로 들어가는 방법입니다.
#pragma interrupt_handler timer0_handler: iv_TIMER0_OVF
void timer0_handler(void)
인터럽트 함수부분을 이렇게 써주는 것이 맞는지, 틀리다면 어떻게 써야하는지를 알고 싶습니다.
>안녕하세요? 고객님,
>저희 N.T.C 제품을 이용해 주셔서 감사합니다.
>
>우선, 대부분의 저희 회사 예제가 ATMEGA128 기준으로 작성되어 있어서,
>16 제품을 가지실 경우, 예제의 다양성에 어려움이 있을 수 있는 데요.
>물론, 응용하면 되기 때문에, 본 자료실->기존자료실의 예제를 조금 바꾸면, 쉽게 구현이 가능하지만, 구래도 타이머로 1초에 한번씩 LED B0가 껏다 켜졌다 하는 예제를 구현해 보았습니다. 이 예제는 테스트는 안해봤지만, 잘 동작할 걸로 예상됩니다. 해 보시구요.
>수고하세요.
>
>>KR-SL16 제품을 구매하고 현재 타이머/카운터를 공부하고 있는데요......
>>보드에 있는 LED 두개를 0.5초에 한번씩 껐다 켜볼려고 합니다.
>>그런데 계속 초기값으로만 있는것을 보니 정해진 시간이 지나도 인터럽트가 발생하지 않는것 같습니다.
>>소스는 다음과 같습니다.
>>
>>// PORTB에 있는 LED 두개를 on/off 반복하기
>>#include <iom16v.h>
>>#include <macros.h>
>>
>>unsigned char led = 0xFF, cnt; // 처음 LED 켜짐
>>
>>// 타이머/카운터 오버플로0 서비스 루틴
>>#pragma interrupt_handler timer0_handler: iv_TIMER0_OVF
>>void timer0_handler(void)
>>{
>> CLI();
>> cnt++;
>>
>>// atmega16은 11.0592 Mhz를 사용하므로
>> if(cnt == 21){ // 21*((256*1024)/11059200) = 0.5sec
>> if(led == 0xFF) // LED가 켜져 있을경우 끈다
>> led == 0x00;
>> else // LED가 꺼져 있을경우 킨다
>> led == 0xFF;
>>
>> PORTB = led;
>> cnt = 0;
>> }
>> TCNT0 = 0x0a;
>> SEI();
>>}
>>
>>void main(void)
>>{
>> CLI();
>> timer0_handler();
>> DDRB = 0xFF; // B포트 모든 핀 출력으로 설정
>> PORTB = led; // B포트에 초기값 출력
>> cnt = 0;
>>
>> TIMSK = 0x01; // Timer0 overflow interrupt MASK
>> TIFR = 0x00;
>> TCCR0 = 0x05; // system clock/1024
>> TCNT0 = 0x0a; // 11059200*(1/1024)*0.001 = 10.8 고로 0x0a
>>
>> SREG = 0x80;
>>
>> SEI();
>>
>> while(1);
>>}
>>
>>1. 쉬운거라도 좋으니 ICCAVR을 이용한 타이머/카운터, 인터럽트 예제좀 주실수 있습니까?! 아니면 구할데라도 있나요?!
>>2. 특히 TCNT 값을 구하는데 제가 구한 값이 맞는건가요?!!
>> 11.0592 Mhz를 1024 클럭으로 해주어서 위와같이 나왔습니다. 맞는건가요?!
>> 바쁘신데 죄송합니다. 하지만 꼭 좀 부탁드립니다.!!
>
관리자 답변
안녕하세요? 고객님,
제가 지난 번에 올려드린 답변에 ICCAVR용 소스도 함께 올려 드렸는 데요.
거기에 있는 거지만, 다시 올려 드립니다.
#pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
void timer0_ovf_isr(void)
{
TCNT0 = 0x38; //reload counter value
if(cnt++ > 10000){
cnt=0;
PORTB++;
}
}
이런 식으로 하시면 되구요.
초기화 부분에
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x01;
이렇게는 해 주셔야 겠지요.
풀소스는 예전 답변을 참고하세요.
수고하세요.
>답변 잘 보았습니다. 그런데 제가 궁금한것은 AVR Studio가 아닌 ICCAVR에서 어떻게 타이머/카운터를 이용해서 인터럽트를 실행시키는가 입니다. 소스를 보시면 아시겠지만, 최초에 LED가 켜져 있는 상태이기 때문에, 시간이 지나서 인터럽트가 걸리면 꺼져야 합니다. 그런데 꺼지지가 않고 계속해서 켜져 있는 상태입니다. 이것은 인터럽트가 제데로 걸리지가 않았다는 말인데요....한번이라도 인터럽트로 들어갔다면 소스상 LED가 꺼지는것이 맞을 겁니다. 지금 제가 해메는 것은 ICCAVR에서 인터럽트로 들어가는 방법입니다.
>
>#pragma interrupt_handler timer0_handler: iv_TIMER0_OVF
>void timer0_handler(void)
>
>인터럽트 함수부분을 이렇게 써주는 것이 맞는지, 틀리다면 어떻게 써야하는지를 알고 싶습니다.
>
>
>>안녕하세요? 고객님,
>>저희 N.T.C 제품을 이용해 주셔서 감사합니다.
>>
>>우선, 대부분의 저희 회사 예제가 ATMEGA128 기준으로 작성되어 있어서,
>>16 제품을 가지실 경우, 예제의 다양성에 어려움이 있을 수 있는 데요.
>>물론, 응용하면 되기 때문에, 본 자료실->기존자료실의 예제를 조금 바꾸면, 쉽게 구현이 가능하지만, 구래도 타이머로 1초에 한번씩 LED B0가 껏다 켜졌다 하는 예제를 구현해 보았습니다. 이 예제는 테스트는 안해봤지만, 잘 동작할 걸로 예상됩니다. 해 보시구요.
>>수고하세요.
>>
>>>KR-SL16 제품을 구매하고 현재 타이머/카운터를 공부하고 있는데요......
>>>보드에 있는 LED 두개를 0.5초에 한번씩 껐다 켜볼려고 합니다.
>>>그런데 계속 초기값으로만 있는것을 보니 정해진 시간이 지나도 인터럽트가 발생하지 않는것 같습니다.
>>>소스는 다음과 같습니다.
>>>
>>>// PORTB에 있는 LED 두개를 on/off 반복하기
>>>#include <iom16v.h>
>>>#include <macros.h>
>>>
>>>unsigned char led = 0xFF, cnt; // 처음 LED 켜짐
>>>
>>>// 타이머/카운터 오버플로0 서비스 루틴
>>>#pragma interrupt_handler timer0_handler: iv_TIMER0_OVF
>>>void timer0_handler(void)
>>>{
>>> CLI();
>>> cnt++;
>>>
>>>// atmega16은 11.0592 Mhz를 사용하므로
>>> if(cnt == 21){ // 21*((256*1024)/11059200) = 0.5sec
>>> if(led == 0xFF) // LED가 켜져 있을경우 끈다
>>> led == 0x00;
>>> else // LED가 꺼져 있을경우 킨다
>>> led == 0xFF;
>>>
>>> PORTB = led;
>>> cnt = 0;
>>> }
>>> TCNT0 = 0x0a;
>>> SEI();
>>>}
>>>
>>>void main(void)
>>>{
>>> CLI();
>>> timer0_handler();
>>> DDRB = 0xFF; // B포트 모든 핀 출력으로 설정
>>> PORTB = led; // B포트에 초기값 출력
>>> cnt = 0;
>>>
>>> TIMSK = 0x01; // Timer0 overflow interrupt MASK
>>> TIFR = 0x00;
>>> TCCR0 = 0x05; // system clock/1024
>>> TCNT0 = 0x0a; // 11059200*(1/1024)*0.001 = 10.8 고로 0x0a
>>>
>>> SREG = 0x80;
>>>
>>> SEI();
>>>
>>> while(1);
>>>}
>>>
>>>1. 쉬운거라도 좋으니 ICCAVR을 이용한 타이머/카운터, 인터럽트 예제좀 주실수 있습니까?! 아니면 구할데라도 있나요?!
>>>2. 특히 TCNT 값을 구하는데 제가 구한 값이 맞는건가요?!!
>>> 11.0592 Mhz를 1024 클럭으로 해주어서 위와같이 나왔습니다. 맞는건가요?!
>>> 바쁘신데 죄송합니다. 하지만 꼭 좀 부탁드립니다.!!
>>
>
|
||||
| 1960 | 답변완료포트제어와 핀제어에 대해 | 유준영 | 2008-11-14 | 1,296 |
|
avr 보트 atmega128 소형 보드 사용중인데요
포트제어와 핀제어를 해줄때에
어떻게 다른지 잘 모르겠습니다
예를 들어
핀제어는
PINB & 0x01 == 1번 핀에 작동하라는...
포트 제어는
PORTD = PORTD & 0x01 하는데
이것도 핀제어와 같은 1번핀을 작동하라는...
지금 약간 포트제어와 핀제어 개념이 헷갈리네요
그리고 그와 관련된 강좌도 어디에 있는지 알려주셨으면 합니다
공부하게요 감사합니다
관리자 답변
안녕하세요. 고객님..
저희 NTC제품을 이용해 주셔서 감사합니다.
ATmeag128의 대부분의 핀들은 입출력 기능과 특수 기능을 함께 하고 있습니다.
입출력 핀으로 사용할때는 A ~ E까지의 핀들에 대해 DDRX(X는 A~E), PORTX, PINX를 적절히 설정함으로써 입력으로 사용할지 출력으로 사용할지를 결정합니다.
DDRX의 각 비트에 0이면 입력, 즉 PINX로 받아 들이고...DDRX의 각 비트에 1이면 출력, 즉 PORTX의 값을 출력하는 것입니다. 따라서 고객님께서 문의하신
>핀제어는
>PINB & 0x01 == 1번 핀에 작동하라는...
>
>포트 제어는
>
>PORTD = PORTD & 0x01 하는데..
이 예제는 DDRB의 값이 0이냐 1이냐에 따라 PINB냐 PORTB냐를 결정하겠지요.
자세한 내용은 저희 사이트 강좌란에 잘 설명되어 있으니깐 찾아보시기 바랍니다.
감사합니다.
>avr 보트 atmega128 소형 보드 사용중인데요
>
>포트제어와 핀제어를 해줄때에
>
>어떻게 다른지 잘 모르겠습니다
>
>예를 들어
>
>핀제어는
>PINB & 0x01 == 1번 핀에 작동하라는...
>
>포트 제어는
>
>PORTD = PORTD & 0x01 하는데
>
>이것도 핀제어와 같은 1번핀을 작동하라는...
>
>지금 약간 포트제어와 핀제어 개념이 헷갈리네요
>
>그리고 그와 관련된 강좌도 어디에 있는지 알려주셨으면 합니다
>공부하게요 감사합니다
>
>
>
|
||||
| 1959 | 답변완료avr과 am-3axis연결 | 지니 | 2008-11-13 | 1,372 |
|
atmega128L과 am-3axis를 연결하려고 합니다.
avr은 vcc에 5v 연결되어 있고 vref에 3.3v를 연결하려고 합니다.
1. avr의 adc포트에 3axis(3.3v연결)를 연결시 avr이 입력 핀이라 그냥 연결해도 무방한지요?
보니 전원에는 콘덴서를 달아주던데요.. 맞나요?
2. 그러면 입력값은 0~3.3v 범위에서 움직일텐데요..
al4 = ADCL;
ah4 = ADCH;
ch4 += al4+ah4*256;
그럼 위의 계산의 최종 ch4에는 0~3.3v 사이의 전압값이 입력 되는 것이 맞나요?
아님 1024 ladder중 몇번째 다라는 것만 알려주는 것인가요?
따라서 adc=Vin*1024/Vref식에 대입해야 하나요
즉, adc= ch4 *1024/3.3 이런식으로요?
3. 기본값인 1.5g, 800[mV/g]로 사용할 경우
Zero g는 A/D를 0~3.3V range설정시 1.65V값이 됩니다.
1.5g : 800[mV/g]
2g : 600[mV/g]
4g : 300[mV/g]
6g : 200[mV/g]
위의 1.5g*800mv/g = 1.2v, 2g*600mv/g=1.2v로 모두 1.65v를 기준으로
위로(+) 1.65+1.2=2.85v
아래로(-) 1.65-1.2=0.45v가 되는 것이 맞나요?
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사합니다.
답변해 드릴께요.
1. 무방합니다. 그리고, 전원에 있는 컨덴서는 전원 안정용입니다.
2, ch4에는 1024단계 중에서 알맞는 값이 나오겠지요. 이 때, Vref에 반드시 3.3V를 넣어 주셔야 0~3.3V를 1024 단계로 나누겠지요. 기본은 5V로 풀업 되어 있으니, 참고 바라구요. Vref 핀에 3.3V를 연결하면 3.3V가 되도록 되어 있습니다.
3. 맞습니다.
수고하세요.
>atmega128L과 am-3axis를 연결하려고 합니다.
>
>avr은 vcc에 5v 연결되어 있고 vref에 3.3v를 연결하려고 합니다.
>
>1. avr의 adc포트에 3axis(3.3v연결)를 연결시 avr이 입력 핀이라 그냥 연결해도 무방한지요?
> 보니 전원에는 콘덴서를 달아주던데요.. 맞나요?
>
>2. 그러면 입력값은 0~3.3v 범위에서 움직일텐데요..
> al4 = ADCL;
> ah4 = ADCH;
> ch4 += al4+ah4*256;
>그럼 위의 계산의 최종 ch4에는 0~3.3v 사이의 전압값이 입력 되는 것이 맞나요?
>아님 1024 ladder중 몇번째 다라는 것만 알려주는 것인가요?
>따라서 adc=Vin*1024/Vref식에 대입해야 하나요
>즉, adc= ch4 *1024/3.3 이런식으로요?
>
>3. 기본값인 1.5g, 800[mV/g]로 사용할 경우
>Zero g는 A/D를 0~3.3V range설정시 1.65V값이 됩니다.
>
>1.5g : 800[mV/g]
>2g : 600[mV/g]
>4g : 300[mV/g]
>6g : 200[mV/g]
>
>위의 1.5g*800mv/g = 1.2v, 2g*600mv/g=1.2v로 모두 1.65v를 기준으로
>위로(+) 1.65+1.2=2.85v
>아래로(-) 1.65-1.2=0.45v가 되는 것이 맞나요?
>
|
||||
| 1958 | 답변완료타이머/카운터 관련 | 이병희 | 2008-11-13 | 1,413 |
|
KR-SL16 제품을 구매하고 현재 타이머/카운터를 공부하고 있는데요......
보드에 있는 LED 두개를 0.5초에 한번씩 껐다 켜볼려고 합니다.
그런데 계속 초기값으로만 있는것을 보니 정해진 시간이 지나도 인터럽트가 발생하지 않는것 같습니다.
소스는 다음과 같습니다.
// PORTB에 있는 LED 두개를 on/off 반복하기
#include <iom16v.h>
#include <macros.h>
unsigned char led = 0xFF, cnt; // 처음 LED 켜짐
// 타이머/카운터 오버플로0 서비스 루틴
#pragma interrupt_handler timer0_handler: iv_TIMER0_OVF
void timer0_handler(void)
{
CLI();
cnt++;
// atmega16은 11.0592 Mhz를 사용하므로
if(cnt == 21){ // 21*((256*1024)/11059200) = 0.5sec
if(led == 0xFF) // LED가 켜져 있을경우 끈다
led == 0x00;
else // LED가 꺼져 있을경우 킨다
led == 0xFF;
PORTB = led;
cnt = 0;
}
TCNT0 = 0x0a;
SEI();
}
void main(void)
{
CLI();
timer0_handler();
DDRB = 0xFF; // B포트 모든 핀 출력으로 설정
PORTB = led; // B포트에 초기값 출력
cnt = 0;
TIMSK = 0x01; // Timer0 overflow interrupt MASK
TIFR = 0x00;
TCCR0 = 0x05; // system clock/1024
TCNT0 = 0x0a; // 11059200*(1/1024)*0.001 = 10.8 고로 0x0a
SREG = 0x80;
SEI();
while(1);
}
1. 쉬운거라도 좋으니 ICCAVR을 이용한 타이머/카운터, 인터럽트 예제좀 주실수 있습니까?! 아니면 구할데라도 있나요?!
2. 특히 TCNT 값을 구하는데 제가 구한 값이 맞는건가요?!!
11.0592 Mhz를 1024 클럭으로 해주어서 위와같이 나왔습니다. 맞는건가요?!
바쁘신데 죄송합니다. 하지만 꼭 좀 부탁드립니다.!!
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용해 주셔서 감사합니다.
우선, 대부분의 저희 회사 예제가 ATMEGA128 기준으로 작성되어 있어서,
16 제품을 가지실 경우, 예제의 다양성에 어려움이 있을 수 있는 데요.
물론, 응용하면 되기 때문에, 본 자료실->기존자료실의 예제를 조금 바꾸면, 쉽게 구현이 가능하지만, 구래도 타이머로 1초에 한번씩 LED B0가 껏다 켜졌다 하는 예제를 구현해 보았습니다. 이 예제는 테스트는 안해봤지만, 잘 동작할 걸로 예상됩니다. 해 보시구요.
수고하세요.
>KR-SL16 제품을 구매하고 현재 타이머/카운터를 공부하고 있는데요......
>보드에 있는 LED 두개를 0.5초에 한번씩 껐다 켜볼려고 합니다.
>그런데 계속 초기값으로만 있는것을 보니 정해진 시간이 지나도 인터럽트가 발생하지 않는것 같습니다.
>소스는 다음과 같습니다.
>
>// PORTB에 있는 LED 두개를 on/off 반복하기
>#include <iom16v.h>
>#include <macros.h>
>
>unsigned char led = 0xFF, cnt; // 처음 LED 켜짐
>
>// 타이머/카운터 오버플로0 서비스 루틴
>#pragma interrupt_handler timer0_handler: iv_TIMER0_OVF
>void timer0_handler(void)
>{
> CLI();
> cnt++;
>
>// atmega16은 11.0592 Mhz를 사용하므로
> if(cnt == 21){ // 21*((256*1024)/11059200) = 0.5sec
> if(led == 0xFF) // LED가 켜져 있을경우 끈다
> led == 0x00;
> else // LED가 꺼져 있을경우 킨다
> led == 0xFF;
>
> PORTB = led;
> cnt = 0;
> }
> TCNT0 = 0x0a;
> SEI();
>}
>
>void main(void)
>{
> CLI();
> timer0_handler();
> DDRB = 0xFF; // B포트 모든 핀 출력으로 설정
> PORTB = led; // B포트에 초기값 출력
> cnt = 0;
>
> TIMSK = 0x01; // Timer0 overflow interrupt MASK
> TIFR = 0x00;
> TCCR0 = 0x05; // system clock/1024
> TCNT0 = 0x0a; // 11059200*(1/1024)*0.001 = 10.8 고로 0x0a
>
> SREG = 0x80;
>
> SEI();
>
> while(1);
>}
>
>1. 쉬운거라도 좋으니 ICCAVR을 이용한 타이머/카운터, 인터럽트 예제좀 주실수 있습니까?! 아니면 구할데라도 있나요?!
>2. 특히 TCNT 값을 구하는데 제가 구한 값이 맞는건가요?!!
> 11.0592 Mhz를 1024 클럭으로 해주어서 위와같이 나왔습니다. 맞는건가요?!
> 바쁘신데 죄송합니다. 하지만 꼭 좀 부탁드립니다.!!
|
||||
| 1957 | 답변완료이번에 KD-128Pro-C 라는 제품 및 DC 라인트레이서 킷트을 구매했는데요.. | 윤영석 | 2008-11-13 | 1,389 |
|
엘레파츠를 통해 구매하여 어제 배송받았습니다.
이제부터 AVR을 공부하기 위한 준비는 다 되었네요..^^
아직 DC라인트레이서는 작동유무 확인전이구요~
KD-128Pro-C 제품은 전원 인가후 작동유무는 확인했습니다.
그리고, 이제 하나씩 공부하려고 하다보니... 사진과 제품이 약간 다르더군요.
KD-128Pro-A 제품 사진에는 분명 전원잭/온오프스위치쪽에 부저(스피커)가 달려있던데요..
제가 받은 제품은 그 자리에 콘덴서가 있네요...
스피커 예제 샘플 및 응용을 하려면 어케해야합니까??
제가 제품을 잘못 받은건 아니죠??
답변 부탁드립니다.
수고하세요
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사합니다.
우선, 사진을 자세히 보시면, 그 스피커라는 것이 스피커가 아니구요.
전원부의 브릿지 다이오드입니다.
원래 아답타를 거꾸로 꽂을 때를 대비하여, 넣어둔 브릿지 다이오드가 오히려 좋지 않은 효과를 내는 경우가 간혹 있어서, 회로에서 빼면서 오히려, 전해커패시터를 하나 넣어서, 더욱 안정화 효과를 높인 것입니다.
한마디로, 업그레이드 된것이지요.
제품 사진이 예전 모델이라 그런 것 같구요.
더욱 여러가지로, 눈에 보이지는 않지만, 좋아진 제품이니, 걱정 마시고 쓰시면 됩니다.
스피커 예제는 원래 외부에 스피커를 별도로 장착하셔야 가능한 제품입니다.
감사합니다.
>엘레파츠를 통해 구매하여 어제 배송받았습니다.
>이제부터 AVR을 공부하기 위한 준비는 다 되었네요..^^
>
>아직 DC라인트레이서는 작동유무 확인전이구요~
>KD-128Pro-C 제품은 전원 인가후 작동유무는 확인했습니다.
>
>그리고, 이제 하나씩 공부하려고 하다보니... 사진과 제품이 약간 다르더군요.
>KD-128Pro-A 제품 사진에는 분명 전원잭/온오프스위치쪽에 부저(스피커)가 달려있던데요..
>
>제가 받은 제품은 그 자리에 콘덴서가 있네요...
>스피커 예제 샘플 및 응용을 하려면 어케해야합니까??
>
>제가 제품을 잘못 받은건 아니죠??
>
>답변 부탁드립니다.
>
>수고하세요
|
||||
| 1956 | 답변완료KR-DL16 질문요. | 김재진 | 2008-11-12 | 1,395 |
|
KR-DL16
이 킷트에
모터는 그냥 DC모터를 쓰고
센서를 적외선 센서를 쓰지 않고
초음파 센서를 사용하여..
자율 이동 장애물 회피 로봇을 만들려고 하는 중인데요..
이럴경우 초음파 센서를 그냥..
적외선 센서 처럼 LM324를 사용 하지 않고
그냥 바로 포트에 연결 하면 적용이 될까요
초음파 센서는 SRF-04입니다..
그리구 죄송하지만 이렇게 할시에
소스좀.. 부탁드릴게요
아직 미흡한 부분이 너무 많아서..
대충.. 틀이라도 짜주시면 감사 하겠습니다..
초음파 센서를 그냥 연결하고 하는데..자꾸.;;
작동이 안되네요 그리구 초음파 센서를 만약 그냥 포트에 연결이 된다면
에코는 atmega16 기준으로 3번 포트인가? 초록색 LED가 있는
그 포트에 연결해주고
출력 트리거는 그 가변 저항이 달려잇는 핀에 넣어 주면 될까여?
관리자 답변
안녕하세요? 고객님,
ATMEGA128에서 초음파 센서 SRF04를 이용한 예제는 아래에 있으니, 참조하여, 소스를 만드시는 것이 좋겠습니다. 소스를 짜드리진 않습니다. 그건 공부하여, 고객님이 하실 몫인것 같네요. 다만, 하다가 하다가 안되서 질문하시면 도와드릴 순 있겠지요?
- 아래 -
http://www.newtc.co.kr/board/view.php?id=pds&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=261
수고하세요.
>KR-DL16
>이 킷트에
>모터는 그냥 DC모터를 쓰고
>센서를 적외선 센서를 쓰지 않고
>초음파 센서를 사용하여..
>자율 이동 장애물 회피 로봇을 만들려고 하는 중인데요..
>이럴경우 초음파 센서를 그냥..
>적외선 센서 처럼 LM324를 사용 하지 않고
>그냥 바로 포트에 연결 하면 적용이 될까요
>초음파 센서는 SRF-04입니다..
>그리구 죄송하지만 이렇게 할시에
>소스좀.. 부탁드릴게요
>아직 미흡한 부분이 너무 많아서..
>대충.. 틀이라도 짜주시면 감사 하겠습니다..
>초음파 센서를 그냥 연결하고 하는데..자꾸.;;
>작동이 안되네요 그리구 초음파 센서를 만약 그냥 포트에 연결이 된다면
>에코는 atmega16 기준으로 3번 포트인가? 초록색 LED가 있는
>그 포트에 연결해주고
>출력 트리거는 그 가변 저항이 달려잇는 핀에 넣어 주면 될까여?
|
||||
| 1955 | 답변완료AM-RFMOD 진행중인데요... | 유준영 | 2008-11-12 | 1,372 |
|
안녕하세요 오늘 다녀갔던 유준영입니다
숙제 다 해결했는데 사장님이 주신 선으로
연결하여 스위치에 따라 led 가 제어가 됩니다
근데 AM-RFMOD 끼고 해 보았더니 안됩니다
자세히 보니까 tx rx 에 불이 안들어오고 계속
op에만 머물러 있네요 ㅠㅠ
통신 모듈에 문제가 있는거 같습니다
아님 세팅 문제 인가요?
관리자 답변
안녕하세요?
잘 가셨어요?
숙제를 다 하셨다니, 열심히 하셨나 봅니다.
혹시, 통신 속도를 얼마로 하셨는 지 송신용, 수신용 모두 소스를 한 번 올려 보세요. 수고하세요.
>안녕하세요 오늘 다녀갔던 유준영입니다
>
>숙제 다 해결했는데 사장님이 주신 선으로
>연결하여 스위치에 따라 led 가 제어가 됩니다
>
>근데 AM-RFMOD 끼고 해 보았더니 안됩니다
>
>자세히 보니까 tx rx 에 불이 안들어오고 계속
>op에만 머물러 있네요 ㅠㅠ
>
>통신 모듈에 문제가 있는거 같습니다
>아님 세팅 문제 인가요?
>
|
||||
| 1954 | 답변완료퓨즈비트설정에서요..// | 김기목 | 2008-11-12 | 1,452 |
|
AVR MEGA 128 모듈 M-128PRO사용중이구요..
avr두개 중에 하나가 avr studio에서 퓨즈비트 설정 오류가 나네요...
다른 하나는 제대로 작동 되구요.....
관리자 답변
안녕하세요? 고객님,
저희 N.T.C 제품을 이용하여 주셔서 감사합니다.
AVR 칩이 나간게 아닌가 싶습니다.
가능하면 방문하셔서 자세한 것은 직접 테스트 받아 보시는 게 좋겠네요.
수고하세요.
>AVR MEGA 128 모듈 M-128PRO사용중이구요..
>
>avr두개 중에 하나가 avr studio에서 퓨즈비트 설정 오류가 나네요...
>
>다른 하나는 제대로 작동 되구요.....
|
||||
