Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 138 | 답변완료atmega128 로 다운을 받는데... | 김기상 | 2006-05-31 | 6,641 |
|
5월 29일 용산의 와이에스 전자 부품 파는데서 제품을 사고 30일날 모든 것을 연결 하고 프로그램을 다운 받으려고 atmega128을 뜯어서 연결 했습니다.
그리고 프로그램을 다운 받으려고 ponyprog를 사용해서
다운 받으려고 하니까. 연결 이 안 되고
" -24에러(디바이스를 못 찾음)" <-- 영어로 쓰여 있음..
그래서
씨디를 찾아 보니까...퓨즈 비트 설정 법...등의
파일이 있어서
그대로 했는데...밑의 김상택 님의 경우와 같은 메세지가 뜹니다.
이거 이거 어떻게 해야 하나요?
ㅜㅜ
내일 모래 졸업 작품 발표인데..ㅜㅜ
이번으로 atmega128 세번째...ㅜㅜ
좀 도와 주세요...
한가지 궁금 한점은 이번에 출시된 atmega128
ATMega128 CPU 보드
모델 AM-128
제조사 N.T.C
가격 17,600원
이거 연결 하는데 20피코 커패시터 연결 해 주어야 하나요?
여기 사이트 사진에는 그게 연결 되어 잇는데..
제꺼 산 거에는 그게 안 붙어 잇는데..ㅜㅜ
빠른 답변 부탁 드립니다..ㅜㅜ
관리자 답변
안녕하세요? 저희 뉴테크놀로지 컴패니 제품을 이용해 주셔서 감사드립니다.
저희 회사에서 이번에 출시한 AM-128은
20pF를 SMD 타입으로 붙였습니다. 그래서, 잘 모르시는 분들은 없다고 생각하시는 것 같은데요, 이미 연결되어 이쑥요. 테스트가 다 되어 출시된 것입니다. 흠..
제 생각에는 ISP의 5번이 GND 6번이 VCC라야 하는 데,
그 부분에서 연결을 거꾸로 하신게 아닌가 생각됩니다.
다시 해 보시고, 메시지 남겨 주세요.
감사합니다.
|
||||
| 137 | 답변완료프로젝트실습3 질문있습니다. | 조우범 | 2006-05-31 | 6,555 |
|
안녕하세요
교수님이 올려주신 배선도에 tps3307-18d 가 3개의 sense에 들어오는 전압을 모니터링 해주는 ic 인가요? 보드에 전원부가 구현되어있지 않은거 같습니다. 저희가 따로 추가해야 하나요?
74ahc138 디코더의 cs0~cs5는 어디에 연결해야 하나요?
그리고 data포트에 3.3v를 연결해주는 이유가 궁금합니다.
답변부탁드려요
관리자 답변
안녕하세요? 전원부는 아래와 같이 구성해 주세요. 싸게 구성하려니, 아래 회로가
가장 저렴한 것 같군요. 자금이 좀 있다면 좀 좋은 칩으로 구성할텐데 말이죠.
그리고, 74HC138 디코더의 CS0~CS5는 2.54mm 피치의 핀으로 구성해 주세요.
밖에 뭔가 다른 보드를 연결해서 쓸 수 있도록 말이죠.
그리고, data 포트에 직접 3.3V를 물린 것은 없구요.
다들 풀업한 것들입니다.
감사합니다.
>안녕하세요
>교수님이 올려주신 배선도에 tps3307-18d 가 3개의 sense에 들어오는 전압을 모니터링 해주는 ic 인가요? 보드에 전원부가 구현되어있지 않은거 같습니다. 저희가 따로 추가해야 하나요?
>74ahc138 디코더의 cs0~cs5는 어디에 연결해야 하나요?
>
>그리고 data포트에 3.3v를 연결해주는 이유가 궁금합니다.
>
>답변부탁드려요
|
||||
| 136 | 답변완료74AHC138에 대해서 | 김정형 | 2006-05-30 | 6,427 |
|
datasheet를 찾았는데 smd type으로 나오는데요 dip type이 따로 있는건가요?
관리자 답변
꼭 AHC 타입을 사용하셔야 하는 건지요?
HC 타입을 사용해 보세요 DIP 타입도 있습니다.
감사합니다.
|
||||
| 135 | 답변완료아래 질문에 이어 몇가지 더 여쭤볼께요~ | 김상태 | 2006-05-30 | 6,384 |
|
다른 분들의 답변처럼 정말 답변을 잘 해주시네요,
감사드립니당~
제가 AVR 초보라서 저지른 실수인거 같네요,
그런데 ISP 연결을 전원을 켜둔 상황에서 연결한 적은 없는것 같은데,
MCU가 작동을 안해서 이상하네요 -.-;
처음에 연결을 했을 때는 LED와 Seven segment 가 어느정도 작동을 했었는데요,
LED 와 Seven segment 동작 프로그램을 다운 받아서,
작동 여부를 확인하던 차에, 한번 바뀌더니 그 뒤로 변화가 없더라구요;;
내일이나 토요일에 회사가 여는지 궁금합니다,
찾아가 보려고요,,^^;
그리고, 제가 MCU와 A/D 컨버터, RF 를 이용하여,
무선 스피커를 제작하려고 하는데요,
MCU에 내장해야할 프로그램과, RF 통신을 할 때 써야하는 하드웨어를 추천해주실 수 있으신지요,,,
이 책 저 책, 인터넷을 찾아봐도 자세한 내용도 없고,
소스파일도 구하기 힘들고 해서, 죄송한 부탁이지만,
NewTc 분들께 여쭤봅니당..
관리자 답변
안녕하세요?
처음에 몇번쯤 원래 MCU를 날리고 하는 게 AVR 시작입니다.
처음 시작하시는 분들은...다들 그렇게들 시작하시죠.
이번 기회에 인공호흡이라는 것을 해서 CPU를 살리려고 해보세요. 인터넷에서 AVR 인공호흡이라고 찾아 보세요.
우리 싸이트에도 어딘가 있을 수도 있습니다. 몇 번 질문이 들어왔었거든요. 어딘지는 모르겠어요...질문이 많은 관계로 일일이 찾지는 못하겠네요.
퍼니키트(www.funnykit.co.kr)에 가시면 오른쪽 전자키트쪽에
FM 송, 수신기가 있을 겁니다. 그걸로 해 보세요.MCU에 내장할 프로그램은 PLL 제어용인데요. 타이밍도가 있을 테니, 그것 보고 직접 짜보심이 좋을 듯 합니다. 감사합니다.
|
||||
| 134 | 답변완료AVR atmega128 키트에 프로그램 다운로딩하던중... | 김상태 | 2006-05-29 | 6,853 |
|
iccavr 프로그램으로 키트에 프로그램을 다운로딩하면서,
제대로 동작하는지 확인하던 도중에,
갑자기 아래와 같은 오류메세지가 뜨면서,
작은 윈도우 창으로 "Cannot program flash" 라는 창도 같이 뜨던데요,
Device 0% full.
Done.
informational - project has no EEPROM file
Erasing memory ...Programming FLASH...
Cannot program Flash
ISP programming done.
그 이후론 어떤 프로그램을 돌려도 이 메세지와 오류창 때문에,
더 이상 작업이 안되는데요, 어떻게 해야하나요?
관리자 답변
저도 그런 상황 인데..어떻게 하나요? 내일 모래까지 졸업작품 제출인데..ㅜㅜ 빠른 답변 부탁 드립니다.ㅜㅜ
|
||||
| 133 | 답변완료16mhz 수정발진자를 7mhz 로 바꿨을때..... | 김성규 | 2006-05-23 | 6,990 |
|
16mhz 수정발진자를 7mhz 로 바꿨을때에
16Mhz 옆에 붙어있는 20pF 커패시터를 그냥 써도 되나요 아니면
따른거로 바꿔줘야 하나요??
ATMega128 CPU 모듈(빨강색) 에 붙어있는 수정발진자를 교체 하려고
하는데요....
관리자 답변
뉴테크놀로지 컴패니 제품을 사용해 주셔서 감사드립니다.
20pF를 그냥 쓰셔도 됩니다. 감사합니다.
>16mhz 수정발진자를 7mhz 로 바꿨을때에
>16Mhz 옆에 붙어있는 20pF 커패시터를 그냥 써도 되나요 아니면
>따른거로 바꿔줘야 하나요??
>ATMega128 CPU 모듈(빨강색) 에 붙어있는 수정발진자를 교체 하려고
>하는데요....
|
||||
| 132 | 답변완료음성신호를 atmega128을 이용하여 AD변환할때. | 정성민 | 2006-05-22 | 7,292 |
|
음성신호 atmega 128을 이용하여 AD변환을 할때 관련해서 질문드립니다.
1 .원 음성신호(MP3 player사용했을 경우)를 atmega128에 넣기 전에 op amp로 증폭을 해야 하나요?
2. 입력신호를 27번핀 PD2(RXD1)으로 넣는 것이 맞나요?
3. 음성신호가 8비트 디지탈 신호로 변환된다고 하는데 출력신호는
PF0~PF7까지(8개의 핀)을 모두 사용해서 (8비트 신호-> 1비트*8=8개 핀)
출력되는 건지 하나의 핀을 사용해서 출력신호가 나가는 것인지 궁금합니다.
초보라서 회로도를 여기저기 찾아봐도 이해가 쉽게 되지 않네요.
답변 부탁 드립니다. 수고하세요.
관리자 답변
안녕하세요? 뉴테크놀로지 컴패니를 방문해 주셔서 감사드립니다.
우선 A/D 하려는 범위를 0~5V 범위로 하실지, -2.5~2.5로 할지...0~3V로 할지...등등을 정합니다. 그 후에, 음성신호를 사용한다면, 그 신호의 최대, 최저 포인트를 오실로스코프로 재봐서, 만약 최대 신호를 오실로로 잰 결과가 5V 이내이고, 4V 정도라면 증폭하지 않아도 되지만, 그 신호가 너무 작어서 1uV~0.5V 라던가 할 경우는 증폭을 해줘야 겠지요. 증폭된 신호의 범위가 최대A/D REF를 넘지 않도록 증폭비를 조절합니다.
AVR mega128의 경우 A/D 입력 포트는 PORTF 이구요. F 포트에 8개 입력 핀이 있습니다. 즉, 8개 각기 다른 신호를 A/D 할 수 있습니다.
그리고, 출력은 원하시는 대로 하시면 됩니다. 한 포트를 사용해서, 한개의 신호를 출력 하실수도 있고, 제로크로싱이라는 기법을 사용하여 한비트만 사용해서 출력을 하는 방법도 있습니다. 적절히 데이터 양과 시간, 비용 등을 고려하여, 사용하시면 될 것 같습니다. 수고하세요.
>음성신호 atmega 128을 이용하여 AD변환을 할때 관련해서 질문드립니다.
>
>1 .원 음성신호(MP3 player사용했을 경우)를 atmega128에 넣기 전에 op amp로 증폭을 해야 하나요?
>
>2. 입력신호를 27번핀 PD2(RXD1)으로 넣는 것이 맞나요?
>
>3. 음성신호가 8비트 디지탈 신호로 변환된다고 하는데 출력신호는
>PF0~PF7까지(8개의 핀)을 모두 사용해서 (8비트 신호-> 1비트*8=8개 핀)
>출력되는 건지 하나의 핀을 사용해서 출력신호가 나가는 것인지 궁금합니다.
>
>초보라서 회로도를 여기저기 찾아봐도 이해가 쉽게 되지 않네요.
>
>답변 부탁 드립니다. 수고하세요.
>
>
>
>
|
||||
| 131 | 답변완료그래픽 LCD에 대해서... | 고고 | 2006-05-22 | 6,578 |
|
12864H 란 회로도를 보고 그대로 따라한다음 예제소스로 테스트 해보았는데요..
LCD에 전체적으로 까맣게만 점들이 나타나내요?(혹시 포트를 잘못 연결 한건가요?)
뭐가 잘못된건지 잘 모르겠습니다.
그리고 12864H 핀번호에 Vout(출력부전압)이라고 쓰여 있던데 그냥 회로도 대로 가변저항과 연결해주면 되나요?
관리자 답변
안녕하세요? 저희 뉴테크놀로지 제품을 이용해 주셔서 감사합니다.
12864H 핀의 Vout 부분을 제대로 연결하시지 않으면, 잘 안나올 겁니다.
회로도대로 연결해 주시면 되구요.
까맣게 점만 나타난다면, 가변 저항을 돌려서 적절하게 보이도록 만드신 후,
프로그램을 하시면 동작 됩니다. 저희 예제가 여러개인데, 컨트롤 핀들과 데이터 버스 핀이 프로그램 소스와 동일하게 연결되었는 지 확인후, 사용하세요.
감사합니다.
> 12864H 란 회로도를 보고 그대로 따라한다음 예제소스로 테스트 해보았는데요..
>LCD에 전체적으로 까맣게만 점들이 나타나내요?(혹시 포트를 잘못 연결 한건가요?)
> 뭐가 잘못된건지 잘 모르겠습니다.
> 그리고 12864H 핀번호에 Vout(출력부전압)이라고 쓰여 있던데 그냥 회로도 대로 가변저항과 연결해주면 되나요?
|
||||
| 130 | 답변완료로보트 제작 및 임베디드시스템 개발 공모전 | 강명원 | 2006-05-22 | 7,901 |
|
www.ibm.com/kr/
http://contest.kesic.or.kr/
싸이트 주소 입니다.
관리자 답변
안녕하세요, 뉴티씨입니다. 문의 내용 확인하였습니다. 추가 문의사항은 newtc@newtc.co.kr 또는 02-704-4774로 연락 주시기 바랍니다. 감사합니다.
|
||||
| 129 | 답변완료atmega128을 이용해서 아날로그 신호를 8비트의 디지털 출력이 나오게하는 프로그램을 어떻게 해야하나요 | 오종성 | 2006-05-20 | 7,068 |
|
지금 무선헤드폰을 만들려고 하는데요,
아날로그 신호를 avr128에 입력한 다음에 거기서 블루투스로 보낼려고 하는데
일단 adc포트로 들어온 것을 디지털신호로 변화해서 라인 하나로 뽑을려고 하는데
프로그램을 어떻게 짜야하나요?
관리자 답변
8비트 데이터를 1비트 데이터로 변환해서 출력하려면 Zero Crossing 이라는 기법을 이용하시는 것이 좋을 것 같습니다.
기법에 대한 내용은 아래 퍼온 글을 참고하시고, 우선 방법은
A/D 해서 소리를 내장 혹은 외장 램에 저장하신 후에 사용하시는 것이 좋으리라 생각됩니다. 그 데이터를 비교해서 중간값보다 큰지 작은지로 1, 0을 판단해서 쓰시는 방법이 좋겠습니다. 스피커는 떨림으로 소리를 내니깐요.
수고하세요.
아래 글은 [깜장 얼음]님의 싸이트에서 퍼온 글입니다.
[스크랩]1bit로 만드는 웨이브
음성을 디지탈처리 하는데에는 MP3 이전에는 몇가지가 있었습니다.
제가 아는...?..알았던것은 PCM(Pulse Coded Modulation), ADM(Adapted
Delta Modulation), 두가지의 장점을 살린 ADPCM 이 있으며..전자 오락기등의효과음을 내는데에는 일본 오키(OKI)사의 ADPCM을 사용합니다.
여기서..1.5비트 의 ADM방식을 응용하면..가장 좋으리가 생각됩니다만.
사용하는 프로세서가 16Kbit 이상 처리할능력이 되어야 할것 같군요..
wave PCM data가 127이 무음일때...스피커 출력핀에는 16Khz 의 펄스를 계속내어보냅니다.
1,0,1,0,1,0.......가청주파수 이상에 가까우므로 거의 들리지 않습니다.
음성 신호가 시작되면 첫번째 데이타가 127보다 큰가,적은가를 비교하고 크면 1,적으면 0를 출력합니다.다음 데이타에서는 그전 데이타값과 비교하여 크면 1,적으면 0 을 출력합니다.
만일 그전데이타와 같은값이면 그전 출력값을 반전시켜 출력합니다. 음성신호에서는저음이거나, 무음일때만 나타날것이라 생각합니다만..
음성데이타는 선형적이므로..그전데이타에서 갑작스레 커지는 경우가 없다고전제하기 때문에 이와같은 PWM(Pulse Width Modulation)이 가능한겁니다.
예를 들어보면
PCM : 127,127,127,127,129,131,150,170,180,168,150,130,125,110,100
ADM : 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0
이런식으로 출력데이타를 만들어 갑니다..
오디오 앰프부분, 또는 스피커의 콘지에서 고역 바이패스 능력이 있으므로.샘플링주파수는 감쇄되어나올겁니다만..히쉬노이즈가 좀 나오겠네요
저역통과 필터를 만들어달수 있다면..1 이 반복되면...점점 더 크게..0 이 반복되면점점 더작게의 원리입니다..
PCM data는 가능하면 16Khz 이상으로 샘플링한것을 사용하시고 ADM 변환속도는그기에 맞추세요.
원칩마이컴을 사용한다면 마이컴의 tri-state 를 응용하여 ADPCM도 구사할수있는데...쩝....
전..PIC16C54 를 사용하여 개발용역해준일도 있습니다만..한 10 여년 전 일이라 다잊어버렸네요....
졸답이라..머리만 더 아프시게 해드린거같아 죄송스럽습니다.
참...음성합성 동호회인가??? 하이텔에 있었는데..방문해 보세요
WAVE TO ZERO CROSS
물론 웨이브 파일을 1비트로 만들면 음질열화는 각오를 해야 하겠지요.
PC스피커로 웨이브파일을 출력시키는 방법은 두가지 정도를 알고 있는데
한가지는 음질은 좋은 대신 PC외의 마이컴 등에서 구현하기에는 적당치 않고,
또한가지는 음질은 열악한 대신 마이컴에서도 간단한 하드웨어로 구현가능하죠.
후자의 경우는 단순히 CPU 출력핀 하나에 스피커만 물리면 되니
상당히 간편한 방법입니다.
WAVE TO ZERO CROSS는 웨이브 파형이 0보다 같거나 크면 스피커를 ON하고
작으면 OFF 하는 방법이지요.
물론 저 중의 0이란 무신호시의 전압값을 말합니다.
파형이 0선을 지날때 마다 스피커의 스위칭이 이루어지므로 일명 ZERO CROSS이고
N비트 PCM을 1비트로 변환한다는 표현도 다 맞는 말입니다.
음질열화는 샘플링레이트를 좀 올리면 어느정도 극복됩니다.
예를 들어 8비트 웨이브 파일에서 무신호시의 데이터값이 127이라고 할 때
이 파일에서 샘플 하나를 읽어 그 값이 127과 같거나 크면 출력은 ON,
작으면 OFF로 하면 됩니다.
ON=1, OFF=0으로 비트에 대응해서 저장하면 마이컴에 넣을 때 데이터 양이
훨씬 적어질 겁니다.
(8비트 PCM 웨이브파일을 이렇게 바꾸면 1/8 로 크기가 줄죠.)
글의 출처 : http://club.paran.com/Club/ClubUser/Board/bbsView.php?clubid=dig&menuno=2622&bbs_no=0CAEH&bbs_order=0CAEH~&page=6&sw=1&search=&keyword=&bl_io=0LrK9~&pg_io=0CAFr~#indi_page_top
>지금 무선헤드폰을 만들려고 하는데요,
>
>아날로그 신호를 avr128에 입력한 다음에 거기서 블루투스로 보낼려고 하는데
>
>일단 adc포트로 들어온 것을 디지털신호로 변화해서 라인 하나로 뽑을려고 하는데
>
>프로그램을 어떻게 짜야하나요?
>
>
|
||||
| 128 | 답변완료선풍기 프로젝트 팬 판매처 사이트입니다. | 조종욱 | 2006-05-19 | 7,561 |
|
http://www.mic114.com/index.htm?cate1=IC%2FTR&cate2=%BC%B1%C7%B3%B1%E2%B3%AF%B0%B3&OVRAW=%EC%84%A0%ED%92%8D%EA%B8%B0%20%EB%82%A0%EA%B0%9C&OVKEY=%EC%84%A0%ED%92%8D%EA%B8%B0%20%EB%82%A0%EA%B0%9C&OVMTC=standard
위 링크에서 천정용 8mm짜리 3개 입니다.
http://www.mic114.com/index.htm?uid=1274&goods=신일16"벽걸이,천정용%20선풍기%20날개%208mm
관리자 답변
안녕하세요, 뉴티씨입니다. 문의 내용 확인하였습니다. 추가 문의사항은 newtc@newtc.co.kr 또는 02-704-4774로 연락 주시기 바랍니다. 감사합니다.
|
||||
| 127 | 답변완료16비트카운터 출력이 안 나오네요..ㅜ.ㅜ | 손누하 | 2006-05-19 | 6,802 |
|
컴파일러로 icc-avr인 아닌 코드비전을 사용했는데요...
#include <mega128.h>
#include <delay.h>
#define ZERO 0xFF
#define one 0xF9
#define two 0xA4
#define three 0xB0
#define four 0x99
#define five 0x92
#define six 0x82
#define seven 0xD8
#define eight 0x80
#define nine 0x90
#define t 1000
int num[] = { ZERO, one, two, three, four, five, six, seven, eight, nine };
char count= 0;
int cnt_num = 0;
int print_num = 0;
void delay(int dd)
{
int i, j;
for(i=0; i<dd; i++){
for(j=0; j<500; j++){
}
}
}
void print_segment()
{
int fnd1,fnd2,fnd3,fnd4;
fnd1 = cnt_num / 1000; // 천의 자리를 출력
cnt_num -= fnd1*1000;
PORTC=0x01;
PORTA=num[fnd1];
fnd2 = cnt_num / 100; // 백의 자리를 출력
cnt_num -= fnd2*100;
PORTC=0x02;
PORTA=num[fnd2];
fnd3 = cnt_num / 10; // 십의 자리를 출력
cnt_num -= fnd3*10;
PORTC=0x04;
PORTA=num[fnd3];
fnd4 = cnt_num; // 일의 자리를 출력
PORTC=0x08;
PORTA=num[fnd4];
}
interrupt [TIM0_OVF] void timer0_ovf_isr(void) {
count++;
if(count==125) {
// ++print_num;
cnt_num = TCNT1H;
cnt_num <<= 8;
cnt_num = TCNT1L;
TCNT1L = 0;
TCNT1H = 0;
// PORTC = 0x01;
// PORTA = num[num_i++];
count= 0;
}
TCNT0= 131;
}
void port_init(void)
{
PORTA = 0x00;
DDRA = 0xFF;
PORTB = 0xFF;
DDRB = 0xFF;
PORTC = 0x00; //m103 output only
DDRC = 0xFF;
PORTD = 0xFF;
DDRD = 0xbF;
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
#asm("cli");
port_init();
//all peripherals are now initialized
#asm("sei");
}
void main(void)
{
init_devices();
TCCR0= 0x05; // 16000000[Hz]/1024=15625[Hz]
TCNT0= 131; // TCNT0 한개 증가시간 t= 1/15625[Hz]=0.000064[s]=64[us]
// TCNT0 (255-131+1)=124+1=125
// 64[us]*125=8[ms]
TIMSK = 0x05; // T0,T1 enable
TCNT1H = 0x00; // T0의 초기값을 0으로 할것
TCNT1L = 0x00;
TCCR1A = 0x00; //normal mode
TCCR1B = 0x07;
TCCR1C = 0x00;
while (1)
{
//if ( print_num == 1) //10초마다 주파수를 프린트 할것
//{
print_segment();
// print_num = 0;
//}
/* delay(20);
PORTC=0x01;
PORTA=one;
delay(20);
PORTC=0x02;
PORTA=one;
delay(20);
PORTC=0x04;
PORTA=one;
delay(20);
PORTC=0x08;
PORTA=one;
delay(20);
*/
}
}
소스는 위와 같습니다... timer/counter1인 포트D의 6번핀에서 외부 주파수를 받아서 그것을 7세그먼트로 출력하는 프로그램입니다..
그런데 출력이 안나오네요. 무슨 문제가 있는 건지...ㅠㅁㅠ
관리자 답변
일단, count == 125라고 된 부분을 count>125로 바꿔 보세요.
수고해요. 타이밍이 얼만지 계산은 안해봤지만...넘 빠른건 아닌가요?
수고하세요.
> 컴파일러로 icc-avr인 아닌 코드비전을 사용했는데요...
>
>#include <mega128.h>
>#include <delay.h>
>
>#define ZERO 0xFF
>#define one 0xF9
>#define two 0xA4
>#define three 0xB0
>#define four 0x99
>#define five 0x92
>#define six 0x82
>#define seven 0xD8
>#define eight 0x80
>#define nine 0x90
>#define t 1000
>
>
>int num[] = { ZERO, one, two, three, four, five, six, seven, eight, nine };
>char count= 0;
>int cnt_num = 0;
>int print_num = 0;
>
>
>void delay(int dd)
>{
>int i, j;
>for(i=0; i<dd; i++){
>for(j=0; j<500; j++){
>}
>}
>}
>
>
>
>void print_segment()
>{
>int fnd1,fnd2,fnd3,fnd4;
>
> fnd1 = cnt_num / 1000; // 천의 자리를 출력
> cnt_num -= fnd1*1000;
> PORTC=0x01;
> PORTA=num[fnd1];
>
> fnd2 = cnt_num / 100; // 백의 자리를 출력
> cnt_num -= fnd2*100;
> PORTC=0x02;
> PORTA=num[fnd2];
>
> fnd3 = cnt_num / 10; // 십의 자리를 출력
> cnt_num -= fnd3*10;
> PORTC=0x04;
> PORTA=num[fnd3];
>
> fnd4 = cnt_num; // 일의 자리를 출력
> PORTC=0x08;
> PORTA=num[fnd4];
>}
>
>
>interrupt [TIM0_OVF] void timer0_ovf_isr(void) {
>
> count++;
>
> if(count==125) {
>// ++print_num;
> cnt_num = TCNT1H;
> cnt_num <<= 8;
> cnt_num = TCNT1L;
> TCNT1L = 0;
> TCNT1H = 0;
>// PORTC = 0x01;
>// PORTA = num[num_i++];
> count= 0;
> }
> TCNT0= 131;
>}
>
>
>
>void port_init(void)
>{
>PORTA = 0x00;
>DDRA = 0xFF;
>PORTB = 0xFF;
>DDRB = 0xFF;
>PORTC = 0x00; //m103 output only
>DDRC = 0xFF;
>PORTD = 0xFF;
>DDRD = 0xbF;
>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
> #asm("cli");
>port_init();
>
>//all peripherals are now initialized
> #asm("sei");
>}
>
>
>void main(void)
>{
>init_devices();
>
> TCCR0= 0x05; // 16000000[Hz]/1024=15625[Hz]
> TCNT0= 131; // TCNT0 한개 증가시간 t= 1/15625[Hz]=0.000064[s]=64[us]
> // TCNT0 (255-131+1)=124+1=125
> // 64[us]*125=8[ms]
> TIMSK = 0x05; // T0,T1 enable
>
> TCNT1H = 0x00; // T0의 초기값을 0으로 할것
> TCNT1L = 0x00;
>
> TCCR1A = 0x00; //normal mode
> TCCR1B = 0x07;
> TCCR1C = 0x00;
>
>while (1)
> {
>//if ( print_num == 1) //10초마다 주파수를 프린트 할것
>//{
> print_segment();
>// print_num = 0;
>//}
>/* delay(20);
> PORTC=0x01;
> PORTA=one;
> delay(20);
> PORTC=0x02;
> PORTA=one;
> delay(20);
> PORTC=0x04;
> PORTA=one;
> delay(20);
> PORTC=0x08;
> PORTA=one;
> delay(20);
>*/
> }
>
>}
>
>소스는 위와 같습니다... timer/counter1인 포트D의 6번핀에서 외부 주파수를 받아서 그것을 7세그먼트로 출력하는 프로그램입니다..
>
>그런데 출력이 안나오네요. 무슨 문제가 있는 건지...ㅠㅁㅠ
|
||||
| 126 | 답변완료am128 pro led 점등... | 박태준 | 2006-05-18 | 6,773 |
|
AM- 128 Pro 모듈을 구입해서 처음 AVR 을 사용하고 있습니다.
처음 해보는거라 워낙에 낯설군요...
128 모듈을 가지고 홈피에 나온 강좌대로 led 점등부터 공부하고 있습니다.
처음에는 led가 점등을 하더니,
다른 C 프로그램을 ISP 하고 나서 다시 led 점등 프로그램을 돌려 보는데,
led 가 반응을 안합니다.
파워 led 는 들어와 있는데, led 가 나간건지 ,모듈이 이상이 있는건지 ...
당췌 확인할 수가 없네요...
퓨즈 비트랑 기타 설정하는것들도 다시 설정해보고, R,W 도 건들여 봤는데도...
led 는 아무런 반응이 없네요...
머가 잘못된걸까요?
또, 128 모듈을 가지고서 이상 유무를 확인하는 방법은 없나요???
관리자 답변
안녕하세요? 저희 뉴테크놀로지 컴패니 제품을 이용해 주셔서 감사드립니다.
어떤 상황에서 일어난 일인지 정확히 묘사되어 있지 않아서 알순 없지만, 제 생각에는 퓨즈 비트가 다른 일을 하다가 바뀌어서 일어난 일이 아닐까 생각되는 데요. 퓨즈 비트도 보셨다고 하니까 머....할말이 없네요. 직접 함 봐야 알 것 같군요. 언제 회사로 한 번 들고 오시거나, 퓨즈비트를 읽어서 현재 값을 보시고, 0xffd9ef가 나오는 지 확인한 후, 아니라면 다시 라이트 해주세요. 다들 여기서 말을 해 주면, 그건 아니라고 빠득빠득 우기지만, 직접 가져오시고 나서보면 그런 문제일 경우가 많더군요. 한 번 확인해 보시고 안되면 회사로 연락 미리 주고 가져 오세요. 수고하세요.
>AM- 128 Pro 모듈을 구입해서 처음 AVR 을 사용하고 있습니다.
>
>처음 해보는거라 워낙에 낯설군요...
>
>
>128 모듈을 가지고 홈피에 나온 강좌대로 led 점등부터 공부하고 있습니다.
>
>처음에는 led가 점등을 하더니,
>
>다른 C 프로그램을 ISP 하고 나서 다시 led 점등 프로그램을 돌려 보는데,
>
>led 가 반응을 안합니다.
>
>
>파워 led 는 들어와 있는데, led 가 나간건지 ,모듈이 이상이 있는건지 ...
>
>당췌 확인할 수가 없네요...
>
>퓨즈 비트랑 기타 설정하는것들도 다시 설정해보고, R,W 도 건들여 봤는데도...
>
>led 는 아무런 반응이 없네요...
>
>머가 잘못된걸까요?
>
>
>또, 128 모듈을 가지고서 이상 유무를 확인하는 방법은 없나요???
|
||||
| 125 | 답변완료21V 밧데리 모니터링 회로입니다. | N.T.C | 2006-05-18 | 6,293 |
|
안녕하세요? 21V 밧데리 모니터링 회로입니다.
21V 이하가 되면, 저충전 파괴를 막기 위하여, 밧데리 사용을 끊어줍니다.
감사합니다.
관리자 답변
안녕하세요, 뉴티씨입니다. 문의 내용 확인하였습니다. 추가 문의사항은 newtc@newtc.co.kr 또는 02-704-4774로 연락 주시기 바랍니다. 감사합니다.
|
||||
| 124 | 답변완료지난번에 질문 드렸던 것에 첨부해서 올립니다~ | 손누하 | 2006-05-17 | 6,364 |
|
콘덴서마이크증폭회로를 통해서 증폭하긴 했지만, 값이 불안정해서
입력으로 제대로 주어질 수 있을지도 의문이구여..
카운터를 이용해서 7세그먼트의 출력으로 내보내면 된다고 하는데..
만약 440hz의 주파수를 받아들인다면, clk값을 계산해서 어떻게 카운터의
입력이 될 수 있을까여? 라는 질문에 지난번에
A/D 컨버터로 신호를 받아 들여서, 신호의 값의 변동을 일일이 체크한 후,
일정 레벨로 올라가고, 줄어들고 하는 걸 한번 반복 할 때 마다 주파수 카운터에 올려서 계산하면 될 것 같습니다. 라고 올려 주신 적이 있는데요..
A/D 컨버터를 쓰게 된다면 전압으로 주어져야 하기 떄문에 FVC역할을 하는 다른
IC소자를 써야 합니다... 근데 그 전압이 12V이기 때문에 회로를 다시 꾸며야 하는
데요.. .. 그리고 16비트 카운터와 관련된 소스들을 찾아봤는데요..
대부분이 온도나 습도 센서를 물려서 구형파로 입력을 받아들이던데... IC 소자를
쓰지 않고 16비트 카운터의 입력으로 사인파인 주파수만 받아들일 순 없는지
궁금합니다
관리자 답변
콘덴서 마이크 증폭회로를 통해서 증폭하시려는 신호가 무엇인가요?
노이즈가 신호보다 큰 상태라면, 우선 노이즈를 먼저 제거하려는 노력을 하는 것이 우선이라고 생각됩니다. 일정한 사인파가 들어오는 것을 보려는 것인지, 마이크 출력을 증폭해서 그 소리의 주파수를 알아내려는 것인지..어떤 것을 알아내려는 것인지 그런 것들을 알았으면 좋겠군요. 그리고, 마이크 증폭회로를 쓴다면 전압이 증폭되지 않나요? 십몇년 전에 마이크 증폭 회로를 만든 적이 있어서, 그 때 PSPICE로 시뮬레이션도 하고 했었는 데, 지금 기억에 전압도 증폭 되었던 것 같거든요.
증폭도가 약하다면 더 증폭하면 될거구요.
증폭도를 조절해서 최대 5V 레인지로 증폭되게 하면 될거구요. 만약 넘 크게 증폭되도록 회로를 만들었는 데 굳이 그 부분을 고치기 싫다면, 저항같은 걸로 전압 디바이더 만들어서 그 자른 출력을 A/D 입력으로 넣어주면 되지 않나요? 조금 찌그러지긴 하겠지만, 어떤 어플리케이션이냐에 따라서 다르겠지요.
수고하세요.
>콘덴서마이크증폭회로를 통해서 증폭하긴 했지만, 값이 불안정해서
>
>입력으로 제대로 주어질 수 있을지도 의문이구여..
>
>카운터를 이용해서 7세그먼트의 출력으로 내보내면 된다고 하는데..
>
>만약 440hz의 주파수를 받아들인다면, clk값을 계산해서 어떻게 카운터의
>
>입력이 될 수 있을까여? 라는 질문에 지난번에
>
>A/D 컨버터로 신호를 받아 들여서, 신호의 값의 변동을 일일이 체크한 후,
>일정 레벨로 올라가고, 줄어들고 하는 걸 한번 반복 할 때 마다 주파수 카운터에 올려서 계산하면 될 것 같습니다. 라고 올려 주신 적이 있는데요..
>
> A/D 컨버터를 쓰게 된다면 전압으로 주어져야 하기 떄문에 FVC역할을 하는 다른
>
>IC소자를 써야 합니다... 근데 그 전압이 12V이기 때문에 회로를 다시 꾸며야 하는
>
>데요.. .. 그리고 16비트 카운터와 관련된 소스들을 찾아봤는데요..
>
> 대부분이 온도나 습도 센서를 물려서 구형파로 입력을 받아들이던데... IC 소자를
>
> 쓰지 않고 16비트 카운터의 입력으로 사인파인 주파수만 받아들일 순 없는지
>
>궁금합니다
>
>
|
||||
