Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 9213 | 답변완료KT-M128 회로에 관한 질문입니다. | 김병우 | 2015-06-22 | 1,458 |
|
저희 학교에서 KT-M128 키트를 사용하는데 이 키트를 사용하기 위해
#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)
이하 생략
이러한 정의를 하는데 이를 이용하기 위해 MCUCR=0x80까지 사용하는건 알았습니다. SRE레지스터를 건드리면 AD0~7,A8~15,ALE,WR or RD를 통해 외부메모리를 사용할수 있다는것 까지 이해를 하였는데요 이 다음이 이해가 잘 되지 않습니다. 0x8000을 예로 들면 이부분이 어떤식으로 들어가는건지 최종적으로는 mcu_cs0를 인에블 시켜준다는걸 추측 할 수 있는데 그 과정이 이해가 가질 않습니다. 참고할만한 자료가 없을까요??
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
저 부분은 메모리의 특정 번지를 변수처럼 사용하기 위해 선언한 것입니다.
외부 메모리 관련 설정과 MCUCR 레지스터를 활성화하면 말씀하신 포트들이 모두 외부 메모리 기능을 사용하도록 변경되면서, 외부 메모리의 특정 번지에 접근(access) 가능합니다.
#define EX_LCD_DATA (*(volatile unsigned char *)0x8000)
구문을 사용한 뒤
EX_LCD_DATA = 0x0F;
구문을 호출하면, '외부 메모리의 0x8000 번지' 에 해당 데이터 (0x0F) 이 기입되는 것입니다.
PORTA 를 헤더에서 찾아보면 다음과 같은 정의를 하고 있습니다.
#define PORTA (*(volatile unsigned char *)0x3B)
<ICCAVR V8 기준>
메모리의 0x3B 번지에 특정한 값을 기록하도록 되어 있는데, 이것은 A포트에 특정한 값을 출력하도록 도와줍니다.
#define 으로 EX_LCD_DATA 등을 선언하는 과정은 KT-M128 키트에서 외부 메모리 번지를 마치 포트처럼 (PORTA, PORTB...) 작용하도록 도와줍니다.
더 궁금하신 점이 있으시다면, KT-M128을 활용하는 교재를 제품소개 -> 소프트웨어 & 교재 코너에서 구매하실 수 있습니다.
감사합니다.
>
>
> 저희 학교에서 KT-M128 키트를 사용하는데 이 키트를 사용하기 위해
> #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)
> 이하 생략
> 이러한 정의를 하는데 이를 이용하기 위해 MCUCR=0x80까지 사용하는건 알았습니다. SRE레지스터를 건드리면 AD0~7,A8~15,ALE,WR or RD를 통해 외부메모리를 사용할수 있다는것 까지 이해를 하였는데요 이 다음이 이해가 잘 되지 않습니다. 0x8000을 예로 들면 이부분이 어떤식으로 들어가는건지 최종적으로는 mcu_cs0를 인에블 시켜준다는걸 추측 할 수 있는데 그 과정이 이해가 가질 않습니다. 참고할만한 자료가 없을까요??
>
|
||||
| 9212 | 답변완료AB-M128PRO-A V03 회로도 관련 | 안용범 | 2015-06-22 | 1,480 |
|
AB-M128PRO-A V03 를 구매해서 사용중입니다.
회로도를 보고 싶은데 메뉴얼에 있는것은 PDF 파일을 캡처해서 올린건지
확대를 하면 깨져서 볼수가 없네요.
회로도 자료 좀 부탁드립니다.
coolpis6@naver.com
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
회로도 요청은 고객지원 -> A/S 신청에 제품을 구매한 영수증을 첨부하여 글을 올려주신다면, 회로도를 E-Mail 로 보내드리고 있습니다.
회로도 관련 부분은 그 쪽으로 신청 부탁드립니다.
감사합니다.
>
>
> AB-M128PRO-A V03 를 구매해서 사용중입니다.
>
> 회로도를 보고 싶은데 메뉴얼에 있는것은 PDF 파일을 캡처해서 올린건지
>
> 확대를 하면 깨져서 볼수가 없네요.
>
> 회로도 자료 좀 부탁드립니다.
>
> coolpis6@naver.com
>
|
||||
| 9211 | 답변완료AM-IRS4D 유아트 관련해서 질문있습니다 | 김성식 | 2015-06-21 | 1,459 |
|
AM-IRS4D를 이용하여 F포트에 센서 아웃풋을 연결하고 자료실에서 예제소스를 받아서 그대로 돌렸더니
키트 상단의 녹색 LED로 확인해봤을 때는 불이 잘 들어옵니다. 그런데 테라텀을 통해 확인해봤더니
Nothing 글자만 나오는데 테라텀이 아닌 다른 프로그램을 이용해야할까요
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
센서에 있는 가변저항을 돌려서 손끝을 대었다가 떼면 irs4d의 그 가변 저항의 포트핀 LED가 꺼지고켜지는 그 포인트를 잡으시고서,모든 가변저항을 돌려 각 센서 조정포인트를 잡아주고 해보세요.
감사합니다.
>
>
> AM-IRS4D를 이용하여 F포트에 센서 아웃풋을 연결하고 자료실에서 예제소스를 받아서 그대로 돌렸더니
>
> 키트 상단의 녹색 LED로 확인해봤을 때는 불이 잘 들어옵니다. 그런데 테라텀을 통해 확인해봤더니
>
> Nothing 글자만 나오는데 테라텀이 아닌 다른 프로그램을 이용해야할까요
>
|
||||
| 9210 | 답변완료SM_SAM7S UART 관련 문의 | 소찬영 | 2015-06-18 | 1,395 |
|
안녕하세요.
SM_SAM7S에서 UART0 커넥터를 통해 PC 하이퍼 터미널로 통신을 하고자 합니다.
메뉴얼에는 RS-232 level(+12V)이라고 되어 있는데 USB-to-Sereal 어댑터(PL2303HX)로는 사용할 수 없는 건가요?
만일 그렇다면 USB 포트와 연결할 수 있는 방법을 알려 주시면 감사하겠습니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
해당 제품에 본사의 AD-USBSERIAL V02 를 사용하여
본사의 제품소개(기구부)의 se-min1 uart 3P 커넥터끼리 서로연결하시거나 (Rx-Tx는 교차 연결이 필요합니다)
SE-3T9를 사용하여
- SM-SAM7S 보드에는 3P 를 연결하시고,
- AD-USBSERIAL 쪽에는 9P DSUB커넥터를 연결하시면 됩니다.
또는
AD-USBSERIAL 쪽의 흰색4핀 커넥터와 메인보드의 4핀 커넥터를 1:1케이블로 연결하거나,
또는
AD-USBISP V03.6의 흰색4핀 커넥터와 메인보드의 4핀 커넥터를 1:1커넥터로연결하거나 하시면됩니다.
각 관련 제품 링크는 다음과 같습니다.
AD-USBSERIAL V02 : http://www.newtc.co.kr/dpshop/shop/item.php?it_id=1350285399
SE-3T9 : http://www.newtc.co.kr/dpshop/shop/item.php?it_id=1314666582
SE-MIN1 : http://www.newtc.co.kr/dpshop/shop/item.php?it_id=1348610116
AD-USBISP V03.6 : http://www.newtc.co.kr/dpshop/shop/item.php?it_id=1314600013
감사합니다.
>
>
> 안녕하세요.
> SM_SAM7S에서 UART0 커넥터를 통해 PC 하이퍼 터미널로 통신을 하고자 합니다.
> 메뉴얼에는 RS-232 level(+12V)이라고 되어 있는데 USB-to-Sereal 어댑터(PL2303HX)로는 사용할 수 없는 건가요?
> 만일 그렇다면 USB 포트와 연결할 수 있는 방법을 알려 주시면 감사하겠습니다.
>
|
||||
| 9209 | 답변완료2축 자이로 센서 플러스 모듈( Model : AM-GYRO-P ) 동작이 이상합니다. | 김호영 | 2015-06-17 | 1,394 |
|
센서를 아무리 흔들어도 adc값이 변화가 없고,
오실로스코프를 통해, 출력핀의 파형을 보는데도 전압이 일정하게 출력됩니다.
전압값은 1.35V가 좀 모자랄 때에도 있고, 1V보다 작을 때도 있습니다.
게다가 Vref핀에서의 출력을 확인하였는데,
데이터시트대로라면 1.35V가 나와야하는데, 오실로스코프에서는 그냥 아무것도 측정이 안되네요.
불량인건가요?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
제품에 이상이 있는 것으로 보입니다. 본사에 점검을 보내주시기 바랍니다.
감사합니다.
>
>
> 센서를 아무리 흔들어도 adc값이 변화가 없고,
> 오실로스코프를 통해, 출력핀의 파형을 보는데도 전압이 일정하게 출력됩니다.
> 전압값은 1.35V가 좀 모자랄 때에도 있고, 1V보다 작을 때도 있습니다.
>
> 게다가 Vref핀에서의 출력을 확인하였는데,
> 데이터시트대로라면 1.35V가 나와야하는데, 오실로스코프에서는 그냥 아무것도 측정이 안되네요.
>
> 불량인건가요?
>
|
||||
| 9208 | 답변완료atmega2560(AB-M2560) 통신에 관한 질문입니다. | 박연재 | 2015-06-17 | 1,408 |
|
USART 통신은 도움 주셔서 잘 해결 하였는데요.. 이제 SPI 통신과 TWI 통신을 해볼려고 하는데
여지 없이 막혀서요.
우선 질문 올릴께요.
제가 지금 사용하는 것이 AB-M2560 입니다.
이가 TWI통신을 할려면 우선 각 모듈의 PORTD.0,PORTD.1을 각각 연결 하고 서로 모듈의 그라운드를
연결하였습니다. 추가적으로 다른것은 연결 하지 않았습니다.
질문1. 추가적으로 연결할것이 있을까요?
질문2. SPI 통신을 할때 SCK핀 끼리 연결 한 상태로 2560프로그램을 올릴려고 하면 첫번쨰 첨부 파일 같은 오류가 나타 납니다. 클럭 문제 인것 같은데 어떻게 해결 할수가 있나요? 아니면 원래 연결한 상태로 안하고 프로그램을 올린 다음에 연결 해야 하는 것인가요?
질문3. TWI 통신 할때 제가 128에서 사용하던 코드를 그대로 가져다 썼습니다. 물론 128에서는 되는 프로그램 이구요. 2560에서는 어떻게 바꿔야 할것이 있을까요?
질문4. 두번째 첨부 파일은 지금 제가 프로그램을 2560에 올릴려고 할때 나타나는 퓨즈설정입니다. 혹시 퓨즈 설정 때문에 TWI 통신이 안되는걸까요?
질문이 좀 많아서 죄송합니다. 해결 할수 있는 것만이라도 답변 달아주시면 감사하겠습니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
질문 1 답변)
연결 방식은 기존과 동일합니다.
질문 2 답변)
USBISP 에서 SCK 핀을 잡고 있는 것으로 보입니다. ISP 는 프로그램을 다운로드할 때 SPI 프로토콜을 사용합니다. 프로그램 다운로드 시에는 다른 SPI 통신부를 분리하시기 바랍니다.
질문 3 답변)
크게 다른점은 없습니다. 다만 추가 레지스터 설정이 필요합니다. TWAMR 이라는 레지스터가 0x00으로 맞춰져 있는지 확인하세요.
질문 4 답변)
퓨즈 비트의 EXTENDED 비트의 값이 비정상적입니다. EXTENDED 비트를 0xFF 로 맞추신 뒤 다시 시도해 보세요.
감사합니다.
>
>
> USART 통신은 도움 주셔서 잘 해결 하였는데요.. 이제 SPI 통신과 TWI 통신을 해볼려고 하는데
>
> 여지 없이 막혀서요.
>
> 우선 질문 올릴께요.
>
> 제가 지금 사용하는 것이 AB-M2560 입니다.
>
> 이가 TWI통신을 할려면 우선 각 모듈의 PORTD.0,PORTD.1을 각각 연결 하고 서로 모듈의 그라운드를
>
> 연결하였습니다. 추가적으로 다른것은 연결 하지 않았습니다.
>
> 질문1. 추가적으로 연결할것이 있을까요?
> 질문2. SPI 통신을 할때 SCK핀 끼리 연결 한 상태로 2560프로그램을 올릴려고 하면 첫번쨰 첨부 파일 같은 오류가 나타 납니다. 클럭 문제 인것 같은데 어떻게 해결 할수가 있나요? 아니면 원래 연결한 상태로 안하고 프로그램을 올린 다음에 연결 해야 하는 것인가요?
> 질문3. TWI 통신 할때 제가 128에서 사용하던 코드를 그대로 가져다 썼습니다. 물론 128에서는 되는 프로그램 이구요. 2560에서는 어떻게 바꿔야 할것이 있을까요?
> 질문4. 두번째 첨부 파일은 지금 제가 프로그램을 2560에 올릴려고 할때 나타나는 퓨즈설정입니다. 혹시 퓨즈 설정 때문에 TWI 통신이 안되는걸까요?
>
> 질문이 좀 많아서 죄송합니다. 해결 할수 있는 것만이라도 답변 달아주시면 감사하겠습니다.
>
|
||||
| 9207 | 답변완료6월 14일주문했는데 언제배송해주나요? | 김현학 | 2015-06-16 | 1,388 |
|
6월 14일주문했는데 언제배송해주나요?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
주문하신 물품들은 어제 우체국 택배로 발송되었으며, 송장 번호는 A/S 게시판에 문의주시면 알려드리도록 하겠습니다.
감사합니다.
>
>
> 6월 14일주문했는데 언제배송해주나요?
>
|
||||
| 9206 | 답변완료AM-ACCTB 3축 가속도센서 | 임정석 | 2015-06-14 | 1,468 |
|
충북대학교 바이오시스템공학과 4학년 재학중인 학생입니다. 현재 이 센서를 이용한 프로젝트를 진행중입니다. 가속도센서를 이용한 트랙터 도난방지 시스템을 랩뷰를 이용하여 구현중인데요
센서의 매뉴얼을 보면 "g-Select[2:1] 핀은 4.7KOhm 저항으로 Pull Down 이 되어 있어 다른 신호를 인가하지 않을 경우 1.5g , 800mV/g 모드로 동작하게 된다"라고 되어잇는데 800mV/g가 센서의 분해능인가요?
그리고 아무 진동이 가해지지 않았을때 센서를 눕혀놓거나 세워놓거나 방향을 바꿔서 놓으면 기본출력값이 다른데 왜 그런 것인가요?
마지막으로 교수님께서 센서 캘리브레이션을 요구하시는데 어떤 방법으로 해야하는지 궁금합니다.
감사합니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
> 충북대학교 바이오시스템공학과 4학년 재학중인 학생입니다. 현재 이 센서를 이용한 프로젝트를 진행중입니다. 가속도센서를 이용한 트랙터 도난방지 시스템을 랩뷰를 이용하여 구현중인데요
>
> 센서의 매뉴얼을 보면 "g-Select[2:1] 핀은 4.7KOhm 저항으로 Pull Down 이 되어 있어 다른 신호를 인가하지 않을 경우 1.5g , 800mV/g 모드로 동작하게 된다"라고 되어잇는데 800mV/g가 센서의 분해능인가요?
==> 지금 보시는 메뉴얼은 ver1 메뉴얼을 보고 계신가 봅니다.
현재는 ver V 03으로 2013년 1월에 리뉴얼되어 있습니다.
" [메뉴얼] 3축 가속도 센서 플러스 모듈 AM-3AXIS-P V03 메뉴얼입니다 "
로 자료실에서 검색하셔서 메뉴얼 다운로드 받아보시기 바랍니다.
거기에 보면, 민감도가 +-2g의 경우 660mV/g로 되어 있고,
그것은 이 모듈의 민감도(Sensitivity)입니다.
지표면 바닥과 평행하고 모듈을 놓으면 X와 Y축은 각각 0g가 되고,
이 때의 출력 전압은 1.65V가 됩니다.
또한, Z는 1g가 되므로, 즉, z = 1.65V + 660mV = 2.31가 됩니다.
이것으로 비교하셔서 Calibration 하시는 것이 좋겠습니다.
본사 제품 소개의 3축 가속도 센서 쪽의 콘텐츠를 보면, Output response vs Orientation 라는
그림설명이 있으니, 참고하셔서 그 내용으로 Calibration을 모든 축에서 해보시는 것을 권장합니다.
또한, 거기에 보면, 다른 방법의 설명도 일부 나와 있습니다.
참고하시기 바랍니다.
참고로, vi 파일은 열수가 없었습니다.
감사합니다.
>
> 그리고 아무 진동이 가해지지 않았을때 센서를 눕혀놓거나 세워놓거나 방향을 바꿔서 놓으면 기본출력값이 다른데 왜 그런 것인가요?
==> 위에서 설명드렸습니다.
>
> 마지막으로 교수님께서 센서 캘리브레이션을 요구하시는데 어떤 방법으로 해야하는지 궁금합니다.
==> 위에서 설명드렸습니다.
> 감사합니다.
>
|
||||
| 9205 | 답변완료IDE, Debugger 질문입니다. | 양완승 | 2015-06-13 | 1,390 |
|
ST Cortex-M3 ARM 학습용 ARM모듈 을 구매하고자 합니다.
IDE: Keil uVision4
Debugger : Ulink2
위 IDE와 Debugger를 ST Cortex-M3 ARM 학습용 ARM모듈 개발에 사용할 수 있는지 궁금합니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을이용하여 주셔서 감사합니다.
JTAG은 표준으로 서로 호환됩니다.
ULINK2는 arm에 사용가능한 jtag이며 본사의 cortex m3모듈도 커넥터가 호환됩니다.
또한 본사에서는 st사의 st-link v2및 국내전자파인증을 완료받은 본사의 ARM용 오픈 디버거 (OpenOCD 호환) I-OPENDBG-ARM V1.0 를 국내전자파 환경에서 고장률이 적고 학습에 편리하도록 다양한기능을 가지도록 제작하였으므로 추천하고 있습니다. 또한 고장시 편리한 a/s도 가능하오니 고려해보시길 추천드립니다.
온라인 강의-->arm강의에도 해당 st-link및 open debugger로 현재 강의가 있고 환경설정 및 Cortex -M3 학습교재도 본사에서 조만간 발매됩니다.
참고하시기 바랍니다.
감사합니다.
>
>
> ST Cortex-M3 ARM 학습용 ARM모듈 을 구매하고자 합니다.
>
> IDE: Keil uVision4
> Debugger : Ulink2
>
> 위 IDE와 Debugger를 ST Cortex-M3 ARM 학습용 ARM모듈 개발에 사용할 수 있는지 궁금합니다.
>
|
||||
| 9204 | 답변완료ATmega128 동작설정이 안된 외부 인터럽트에 신호를 줬을 때 질문이 있습니다. | 김민권 | 2015-06-12 | 1,462 |
|
저희가 ATmega128을 사용하면서
질문이 있어 올립니다.
외부 인터럽트 0과 1을 둘 다 허용한 후
외부인터럽트0은 동작설정 소스를 짜고
외부인터럽트1은 동작에 관한 소스를 넣지 않았습니다.
이 때 외부인터럽트1 신호를 줬더니 ATmega128 동작이
리셋이 되는게 확인됩니다.
왜 이렇게 되는지 원인을 알고 싶습니다.
메모리나 리셋인터럽트와 관련이 있는것인지...
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
인터럽트가 enable된 상황에서 해당 인터럽트가 발생하면,
그 인터럽트에 대해 컴파일러에서 선언된 주소로 pc (프로그램카운터)값을 참조하여 뛰게되는데 일반적으로는 해당 인터럽트서비스루틴내용을 수행한후 reti(리턴인터럽트)명령을 만나면 스택값을 참조하여 인터럽트 수행직전의 원래의 수행중이던 pc (프로그램카운터)값을 pc에 카피하여 그곳으로 복귀합니다.
그런데 인터럽트서비스루틴 함수가 선언되지 않았다면 수행할 내용도 없지만 복귀할곳도 없으므로 pc값이 계속 증가하다가 리셋되게됩니다.
인터럽트도 일종의 exception인데,
Abnormal exception error상황이 되는것이므로
반드시 enable한 인터럽트는 선언해서 문제없게하거나 disable해야합니다.
감사합니다.
>
>
> 저희가 ATmega128을 사용하면서
> 질문이 있어 올립니다.
>
> 외부 인터럽트 0과 1을 둘 다 허용한 후
> 외부인터럽트0은 동작설정 소스를 짜고
> 외부인터럽트1은 동작에 관한 소스를 넣지 않았습니다.
>
> 이 때 외부인터럽트1 신호를 줬더니 ATmega128 동작이
> 리셋이 되는게 확인됩니다.
>
> 왜 이렇게 되는지 원인을 알고 싶습니다.
> 메모리나 리셋인터럽트와 관련이 있는것인지...
>
|
||||
| 9203 | 답변완료코드좀 봐주실 수 있나요? | 윤병찬 | 2015-06-11 | 1,527 |
|
아트메가128을 이용하여 물센서와 pir 근적외선인체감지센서, 릴레이를 연결한 모터를 움직이는 코드를 짜고있는데 한번 봐주셨음 좋겠습니다.
물센서에 물이 묻으면 근적외선인체감지센서가 사람을 인식하여 릴레이제어를 통한 모터를 4초간 구동시킬건데
이코드로 정상 작동을 할 수있는지 모르겠습니다.
타이머카운트를 이용하여 4초간 지정을 해주었구요
센서 ADC값을 계속 찾고 있는 중입니다.!!
// #include <avr/io.h>
// #include <avr/interrupt.h>
#include <mega128.h>
#include <delay.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 800
#define SPEED_L_LIMIT 0
#define SPEEDUP 1
#define OK 1
#define NOOK 0
void timer0_init(void);
void ADC_Sensing_Protocol ( void );
void init_devices(void);
void port_init(void);
volatile int TURN, SPEED, timer0_expired=NOOK, counter=0;
volatile unsigned char stepleft=0, stepright=0;
int data[2] = {0};
int ADC_INT_NO = 0;
int flag=0;
void main(void)
{
init_devices();
ADC_Sensing_Protocol ();
//insert your functional code here...
MOTOR_PORT_DDR = 0xff;
SW_PORT_DDR = 0x00;
SPEED = 600;
TURN = RIGHT;
DDRG = 0xFF;
PORTG = 0x00;
while(1){
/*
switch(SW_PORT){
case 0x01: TURN = RIGHT;
break;
case 0x02: TURN = LEFT;
break;
case 0x04: SPEED += SPEEDUP;
if(SPEED >=SPEED_H_LIMIT){
SPEED = SPEED_H_LIMIT;
}
delay(1);
break;
case 0x08: SPEED -= SPEEDUP;
if(SPEED <=SPEED_L_LIMIT){
SPEED = SPEED_L_LIMIT;
}
delay(1);
break;
default : break;
}
*/
if(data[1] <= 900)// 물센서는 물이 묻으면 ADC값이 작아진다.
{
PORTG = 0x01;
if(data[0] >= 740) // 적외선
{
flag=1;
PORTG = 0x03;
//PORTA = 0x03; // 0000 0010 LED가 켜진 채 모터의 회전 시
//TIMSK = 0x01; // TOIE0 High
}
else
PORTA = 0x01;// 물센서에 값이 들어오면 아트메가 LED점등}
flag=0;
counter=0;
}
else
{
TIMSK = 0x00;
PORTG = 0x00;
}
}
}
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00; //m103 output only
DDRC = 0xFF;
PORTD = 0x00;
DDRD = 0x00;
PORTF = 0x00;
DDRF = 0x00;
PORTG = 0x00;
DDRG = 0x03;
}
//UART0 initialize
// desired baud rate: 9600
// actual: baud rate:9615 (0.2%)
// char size: 8 bit
// parity: Disabled
//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
SREG = 0x00; // Gloval Entr=errupt enable
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 = 0x01; // 0000 0001 timer interrupt sources
ETIMSK = 0x00; //extended timer interrupt sources
SREG = 0x80; // Gloval Enterrupt enable
//all peripherals are now initialized
}
//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 = 6;//0x95; //set count
OCR0 = 0;//0x0A;
TCCR0 = 0x04; //start timer
}
interrupt[TIM0_OVF] void timer_int0(void)
{
TCNT0 = 6;//0x95; //reload counter value
if(flag==1){flag=0; counter=4000;}
counter--;
if(counter>0){ PORTA = 0x03;}
else{PORTA=0X00;}
}
//
/******************************************************************************/
/* */
/* ADC Infrared Sensing Protocol */
/* */
/******************************************************************************/
void ADC_Sensing_Protocol ( void ) // ADC 센싱
{
PORTE = 0xFF;
PORTF = 0x00;
ADMUX = 0x00; // 000 00000 : ADC0 에서 시작
ADCSRA = 0xCF; // 1100 1111 : ADEN, ADSC, ADIE = 1 / ADC Prescaler = 128
// ADC = ( Vin * 1024 ) / Vref
}
interrupt[ADC_INT] void adc_isr(void)
{
data[ADC_INT_NO] = ADCW;
ADC_INT_NO++;
if( ADC_INT_NO > 1 )
{
ADC_INT_NO = 0;
}
ADMUX = ADC_INT_NO;
ADCSRA |= 0x40; // 0100 0000 : ADSC = 1
}
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
죄송하지만, 소스 코드를 검증 및 수정하는 것은 프로젝트 건으로 문의 주셔야 합니다.
감사합니다.
>
>
> 아트메가128을 이용하여 물센서와 pir 근적외선인체감지센서, 릴레이를 연결한 모터를 움직이는 코드를 짜고있는데 한번 봐주셨음 좋겠습니다.
>
> 물센서에 물이 묻으면 근적외선인체감지센서가 사람을 인식하여 릴레이제어를 통한 모터를 4초간 구동시킬건데
>
> 이코드로 정상 작동을 할 수있는지 모르겠습니다.
>
> 타이머카운트를 이용하여 4초간 지정을 해주었구요
>
> 센서 ADC값을 계속 찾고 있는 중입니다.!!
>
> // #include <avr/io.h>
> // #include <avr/interrupt.h>
>
> #include <mega128.h>
> #include <delay.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 800
> #define SPEED_L_LIMIT 0
> #define SPEEDUP 1
> #define OK 1
> #define NOOK 0
>
> void timer0_init(void);
>
> void ADC_Sensing_Protocol ( void );
> void init_devices(void);
> void port_init(void);
>
> volatile int TURN, SPEED, timer0_expired=NOOK, counter=0;
> volatile unsigned char stepleft=0, stepright=0;
> int data[2] = {0};
> int ADC_INT_NO = 0;
> int flag=0;
>
>
> void main(void)
> {
>
> init_devices();
> ADC_Sensing_Protocol ();
> //insert your functional code here...
>
>
> MOTOR_PORT_DDR = 0xff;
> SW_PORT_DDR = 0x00;
> SPEED = 600;
> TURN = RIGHT;
>
> DDRG = 0xFF;
> PORTG = 0x00;
> while(1){
> /*
> switch(SW_PORT){
> case 0x01: TURN = RIGHT;
> break;
> case 0x02: TURN = LEFT;
> break;
> case 0x04: SPEED += SPEEDUP;
> if(SPEED >=SPEED_H_LIMIT){
> SPEED = SPEED_H_LIMIT;
> }
> delay(1);
> break;
> case 0x08: SPEED -= SPEEDUP;
> if(SPEED <=SPEED_L_LIMIT){
> SPEED = SPEED_L_LIMIT;
> }
> delay(1);
> break;
> default : break;
> }
>
> */
>
> if(data[1] <= 900)// 물센서는 물이 묻으면 ADC값이 작아진다.
> {
> PORTG = 0x01;
> if(data[0] >= 740) // 적외선
> {
> flag=1;
> PORTG = 0x03;
> //PORTA = 0x03; // 0000 0010 LED가 켜진 채 모터의 회전 시
> //TIMSK = 0x01; // TOIE0 High
> }
> else
> PORTA = 0x01;// 물센서에 값이 들어오면 아트메가 LED점등}
>
>
> flag=0;
> counter=0;
>
> }
> else
> {
> TIMSK = 0x00;
> PORTG = 0x00;
> }
>
> }
> }
>
>
> void port_init(void)
> {
> PORTA = 0x00;
> DDRA = 0x00;
> PORTB = 0x00;
> DDRB = 0x00;
> PORTC = 0x00; //m103 output only
> DDRC = 0xFF;
> PORTD = 0x00;
> DDRD = 0x00;
> PORTF = 0x00;
> DDRF = 0x00;
> PORTG = 0x00;
> DDRG = 0x03;
> }
>
> //UART0 initialize
> // desired baud rate: 9600
> // actual: baud rate:9615 (0.2%)
> // char size: 8 bit
> // parity: Disabled
>
> //call this routine to initialize all peripherals
> void init_devices(void)
> {
> //stop errant interrupts until set up
> SREG = 0x00; // Gloval Entr=errupt enable
> 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 = 0x01; // 0000 0001 timer interrupt sources
> ETIMSK = 0x00; //extended timer interrupt sources
>
> SREG = 0x80; // Gloval Enterrupt enable
> //all peripherals are now initialized
> }
>
> //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 = 6;//0x95; //set count
> OCR0 = 0;//0x0A;
> TCCR0 = 0x04; //start timer
> }
>
>
> interrupt[TIM0_OVF] void timer_int0(void)
> {
> TCNT0 = 6;//0x95; //reload counter value
> if(flag==1){flag=0; counter=4000;}
> counter--;
> if(counter>0){ PORTA = 0x03;}
> else{PORTA=0X00;}
>
>
> }
>
>
> //
>
>
>
> /******************************************************************************/
> /* */
> /* ADC Infrared Sensing Protocol */
> /* */
> /******************************************************************************/
>
> void ADC_Sensing_Protocol ( void ) // ADC 센싱
> {
>
> PORTE = 0xFF;
> PORTF = 0x00;
>
> ADMUX = 0x00; // 000 00000 : ADC0 에서 시작
>
>
> ADCSRA = 0xCF; // 1100 1111 : ADEN, ADSC, ADIE = 1 / ADC Prescaler = 128
> // ADC = ( Vin * 1024 ) / Vref
>
> }
>
>
>
>
> interrupt[ADC_INT] void adc_isr(void)
> {
>
> data[ADC_INT_NO] = ADCW;
>
>
>
>
> ADC_INT_NO++;
>
> if( ADC_INT_NO > 1 )
> {
>
>
> ADC_INT_NO = 0;
> }
>
> ADMUX = ADC_INT_NO;
>
>
> ADCSRA |= 0x40; // 0100 0000 : ADSC = 1
>
> }
>
|
||||
| 9202 | 답변완료ISPUSB 관련 | 안용범 | 2015-06-11 | 1,377 |
|
1. ISPUSB 사용시 동작문제
- ISPUSB + AB-M128PRO + AM-128PRO 사용중인데요. 전원은 SMPS 별도로 사용중입니다.
컴파일된 파일을 퓨징하면 잘 동작을 하는데 ISPUSB에서 USB를 뽑으면 보드가 동작을 하지않습니다.
(전원만 인가되는 상태) 하지만 보드에 있는 ISP 케이블까지 뽑으면 또 동작을 하네요
무슨 문제 때문인가요?
2. ADC 샘플 소스 관련
- 자료실에 있는 ADC 샘플 소스 사용중인데요 10bit 1024분해능인데 0V~5V까지 0~255까지 값만
나옵니다. 소스에 보면 while((ADCSRA & 0x10)==0);
ADCSRA = ADCSRA | 0x10;
temp = ADCL;
temp = ADCH;
ADCL 과 ADCH를 같은변수에 넣어서 상위 2bit까 짤리는거 아닌가요?
아님 최신 버젼 소스가 따로 있는건가요?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
1. AD-USBISP 내부의 회로 때문에 포트들의 풀업 상태가 하드웨어적으로 변경될 수 있기 때문에 해당 포트의 입/출력 값 등이 정상적으로 동작하지 않을 수 있습니다. 예를 들어, ATmega128 MCU의 경우 PORTB, E 등의 입/출력 값이 영향을 받습니다. 이에 따라 AD-USBISP 를 메인보드에서 분리해야만 의도하신 대로 동작합니다.
2. 해당 소스 코드는 8-bit ADC 용입니다. 해당 예제는 왼쪽 비트 정렬이 된 상위 8-bit만 사용한 예제입니다.
10-bit 분해능을 가진 ADC를 사용하시려면 다음을 설정해야 합니다. ADMUX 레지스터의 5번 비트 (ADLAR)를 0으로 설정해야 합니다. 이 경우 2바이트 중 오른쪽 비트 끝으로 정렬되면서 하위 10-bit 를 활용하여 10-bit 분해능의 ADC를 활용하실 수 있습니다.
해당하는 예제는 다음 링크에서 찾아보실 수 있습니다.
http://newtc.co.kr/dpshop/bbs/board.php?bo_table=m48&wr_id=179&sca=&sfl=wr_subject%7C%7Cwr_content&stx=ADC&sop=and
(ADC_Example2 예제)
감사합니다.
>
>
> 1. ISPUSB 사용시 동작문제
> - ISPUSB + AB-M128PRO + AM-128PRO 사용중인데요. 전원은 SMPS 별도로 사용중입니다.
> 컴파일된 파일을 퓨징하면 잘 동작을 하는데 ISPUSB에서 USB를 뽑으면 보드가 동작을 하지않습니다.
> (전원만 인가되는 상태) 하지만 보드에 있는 ISP 케이블까지 뽑으면 또 동작을 하네요
> 무슨 문제 때문인가요?
>
> 2. ADC 샘플 소스 관련
> - 자료실에 있는 ADC 샘플 소스 사용중인데요 10bit 1024분해능인데 0V~5V까지 0~255까지 값만
> 나옵니다. 소스에 보면 while((ADCSRA & 0x10)==0);
> ADCSRA = ADCSRA | 0x10;
> temp = ADCL;
> temp = ADCH;
> ADCL 과 ADCH를 같은변수에 넣어서 상위 2bit까 짤리는거 아닌가요?
> 아님 최신 버젼 소스가 따로 있는건가요?
>
|
||||
| 9201 | 답변완료ISP 또 질문드립니다... | 최순호 | 2015-06-10 | 1,416 |
|
AD-USBISP V03.6 제품이 Atmel Studio6.2 와 호환가능하다하셨는데 ..
Build 1153 말고도 Build 1502, Build1548 , Build1563 그 이상 에서도 호환이 가능한가요 ?
답변부탁드리겠습니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
해당 제품군은 모든 빌드에서 사용 가능합니다.
또한 Atmel Studio 6.1 부터 사용 가능합니다.
감사합니다.
>
>
> AD-USBISP V03.6 제품이 Atmel Studio6.2 와 호환가능하다하셨는데 ..
>
> Build 1153 말고도 Build 1502, Build1548 , Build1563 그 이상 에서도 호환이 가능한가요 ?
>
> 답변부탁드리겠습니다.
>
|
||||
| 9200 | 답변완료atmega2560(AB-M2560) 통신 회로 연결 관한 질문입니다. | 박연재 | 2015-06-10 | 1,386 |
|
여기다 이런 질문 해도 되나 모르겠지만요.. 너무 안되서요^^
우선 atmega2560 모듈에 있는 3핀과 선을 연결하여 변환기를 써서 피씨usb에 연결 하였구요.
컴퓨터에서 하이퍼 터미널을 이용하여 1을 입력하면 LED가 켜지고 2를 입력하면 LED가 꺼지고 할려고 하
는데요. 제가 알기론 2560의 포트E 의 0,1이 2560의 Rx0,Tx0이라고 공부 했는데 거기다 연결하고
컴퓨터쪽 Rx0,Tx0은 어디로 연결을 해야 하나요? 키트로만 공부 하다고 직접 연결 하려니 힘드네요
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
해당하는 부분은 다음과 같이 연결해주시면 됩니다.
AVR PC
TX0 <---------> RX
RX0 <---------> TX
이 때 PC 는 RS-232C 레벨의 통신을 사용하므로 PC의 직렬 포트와 직접 연결하실 경우 SE-3T9를 활용하여야 합니다.
모듈의 RS-232C 레벨의 통신부를 AD-USBSERIAL 보드와 연결하시려면 ST-3T9를 활용하여 각 부분을 연결해주시면 됩니다.
보드의 TTL레벨의 통신부를 AD-USBSERIAL 보드 또는 AD-USBISP의 통신 부분과 연결하시려면 SE-4P4P-D 를 활용하여 각 부분을 연결하셔야 합니다.
포트를 직접 연결하실 경우 통신 레벨에 주의하세요. 포트를 직접 연결할 경우 TTL 레벨 통신을 수행합니다.
감사합니다.
>
>
> 여기다 이런 질문 해도 되나 모르겠지만요.. 너무 안되서요^^
>
> 우선 atmega2560 모듈에 있는 3핀과 선을 연결하여 변환기를 써서 피씨usb에 연결 하였구요.
>
> 컴퓨터에서 하이퍼 터미널을 이용하여 1을 입력하면 LED가 켜지고 2를 입력하면 LED가 꺼지고 할려고 하
>
> 는데요. 제가 알기론 2560의 포트E 의 0,1이 2560의 Rx0,Tx0이라고 공부 했는데 거기다 연결하고
>
> 컴퓨터쪽 Rx0,Tx0은 어디로 연결을 해야 하나요? 키트로만 공부 하다고 직접 연결 하려니 힘드네요
>
|
||||
| 9199 | 답변완료ISP 제품관련 질문드립니다. | 최순호 | 2015-06-10 | 1,533 |
|
제가 부득이하게 컴파일러를 Atmel Studio 6.2 버전을 쓰게되었습니다.
시중에 판매되고 있는 제품들이 6.2버전과 호환이 별로 좋지않다고들 하는것 같은데..
현재 판매하시는 AVR JTAG 나 ISP 제품들 중에 Atmel Studio 6.2 와 호환확인되는 제품이 있을까요 ?
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
호환성 정보는 다음과 같습니다:
AD-USBISP V03 : 호환되지 않습니다.
AD-USBISP V03.5 : 호환되지 않습니다.
AD-USBISP V03.6 : 호환됩니다. 지원 가능한 제품 목록은 홈페이지의 정보를 참조해주세요. 전압 체크 기능이 없어 전압을 읽을 수 없다는 경고가 나타납니다.
AD-USBISP V6.0 : 호환됩니다. 지원 가능한 제품 목록은 홈페이지의 정보를 참조해주세요.
AD-JTAG V02 : 호환이 불가능합니다.
감사합니다.
>
>
> 제가 부득이하게 컴파일러를 Atmel Studio 6.2 버전을 쓰게되었습니다.
> 시중에 판매되고 있는 제품들이 6.2버전과 호환이 별로 좋지않다고들 하는것 같은데..
>
> 현재 판매하시는 AVR JTAG 나 ISP 제품들 중에 Atmel Studio 6.2 와 호환확인되는 제품이 있을까요 ?
>
|
||||
