AT90S2313을 사용한 IR to USB 모듈

AVR Project 조회 수 35873 추천 수 91 2003.09.06 17:03:23


http://www.cesko.host.sk/IgorPlugUSB/IgorPlug-USB (AVR)_eng.htm

Universal USB interface & USB Infrared Interface with microprocessor AT90S2313-10 :

마이크로 콘트롤러로 USB를 완성 : IgorPlug-USB (AVR)
이기사의 목적은 단일칩 마이크로 컴퓨터에 넣은 USB인터페이스로 자료를 읽는 것이다.
이 인터페이스는 직접적으로 지원하지 않는다.
간단히: 펌웨어 레벨의 USB 인터페이스를 구현.
(마이크로 콘트롤러로 RS232C를 지원하지 않는 RS232C인터페이스 에뮬레이션)
이프로젝트는 마이크로 콘트롤러측의 펌웨어의 개발을 포함한다.
PC사이드의 윈도우즈 OS용의 드라이버 개발,
다른프로그램에서 부르는 기능의 DLL 라이브러리의 개발(프로그래머 레벨)과,
이 디바이스의 모든 기능을 보여주는 사용자 레벨의 데모프로그램의 개발,
디바이스의 이름은 IgorPlug-USB (AVR)이다.
PC 리모트 콘트롤 IgorPlug를 위한 나의 이전 디바이스(시리얼포트 버전)의 상속

소개:
지금은 엔드유저로서는 대단히 대중적인 USB 인터페이스이다.
이것은 엔드유저에게 당연히 돌려져야 한다.(재시작하지 않는 프러그 앤 플레이)
개발은 많은 난관이 있는 디바이스들의 USB 구현이다.
(RS232C와 비교하면 USB는 더욱 완전한 프로토콜이다)
부가해서, PC측의 소프트웨어의 드라이버 지원을 필요로 한다.
그 결과는 RS232C통신으로 작은기업으로 부터 성장한 디바이스이다.  
이 인터페이스는 아마도 오래된 PC 역사와 좋은 OS(운영체제)지원일 것이다.
그러나 후반기에 PC에 포함된 표준 인터페이스에서 RS232C는 제외되었다.
(새로운 PC는 RS232를 가지고 있지 않는다).
이경우에는  오직 이인터페이스로  PCI 카드를 추가해야 한다.
외부 디바이스로서 USB의 구현은 2가진의 선택이 있다.

1)첫째로 하드웨어로 USB를 구현한 마이크로 콘트로러의 사용
이것은 USB작동을 마이크로 컨트롤러안에 펌웨어로 써넣지 않는다.
PC사이드에서는 드라이버의 생성이 추가로 필요하지 않다.
(운영체제에서 포함하지 않는다면 (예) 표준 USB 클래스).
2) 둘째로 USB와 다른 디바이스 사이에 어느 범용변환기나 다른 인터페이스의 사용
이 다른 인터페이스는 변환기 타입으로 종속된다: RS232, 8-bit data bus, I2C bus.
이 인터페이스는 USB가 어떻게 작동하는지 알 필요가 없다.
그리고 어떠한 드라이버도 쓸 필요가 없다.(제작자가 드라이버를 준다)
퇘행적인 완전한 디바이스의 높은 가격과 제품의 커다란 크기는 원칩이상이다.

나의 방법으로 성공적으로 개발을 끝내기로 결심하였다;
- 이것은 값싼 MPU의 펌웨어로 MPU를 통한 에뮬레이션으로 USB를 구현한다.
문제는 디자인하는 동안 MPU의 속도였다. USB 버스의 속도는 너무 빨랐으며,
저속 - 1.5Mbit/s, 중속 - 12Mbit/s, 고속 - 480Mbit/s.
일반적인 MPU의 최고성능은:
AT89C2051 - 2MIPS = 24MHz/(12cycl/inst.),
PIC16F84 - 5MIPS = 20MHz/(4cycl/inst.),
AT90S23x3 - 10MIPS = 10MHz/(1cycl/inst.).
최고 속도는 마이크로 콘트롤러의 범위를 벗어났다.
그러나 그들은 불완전(가격 역시)과 크기.(많은 핀과 까다로운 구축)
저속 USB로는 충분한 PIC16F84나 AT90S1200/AT90S23x3의 MPU로 결정했다.
고속 USB의 속도로는 좋지 않은 결과였다.
-  USB 프로세싱에서 하나의 비트는 MPU로 몇개의 사이클이 필요했다.
읽기, 비교, 정열, 보관, 다른 작동들,,,

첫번째로, 나는 PIC16F84-20을 나의 경험으로 선택했다,
USB 클럭과 속도 향상은 마이크로콘트롤러 클럭을 24MHz
(USB의 1비트 프로세싱은 4명령으로 6MIPS)로 사용하였다. 오버클럭되었다)  
(4 = 6MIPS/1.5Mbit  저속 USB).
나는 이방법을 거부하였다. (약간의 시간 뒤에) - PIC은 너무 느리다.
(그리고 부가해서 명령세트가 좋지않다 ...) .

두번째로 AT90S1200-12를 시도했다, 속도에서 나를 만족시켰다.
- 저속 USB에서 가능한 송신과 수신신호 속도.
그러나 이 방법도 거부했다 - 만족할 프로그램과 데이터 메모리가 부족했다
간단하게 작은 메모리로는 이것은 완전하지 않다.
  
세번째로 성공했다 : AT90S2313-10 (or AT90S2323-10, AT90S2343-10).
아트멜사의 RISC 마이크로콘트롤러는 - AVR 패밀리는 PIC와 비교하면.
PIC은 느린 크리스털 (PIC16F84는 4클럭당 1명령),
그러나 이것은 1 클럭 당 1 명령, 추가해서 그들의 명령세트와 RISC와 가까운 구조.
USB클럭과 동기되는 이유는 내가 12MHz로 오버 클럭킹했다.
(AT90S23x3-10의 초기치는 0MHz 뿐이다).
이 방법은 12MHz의 크리스털로 기능을 좀더 획득했다.  
(10.5MHz와 비교하면 - 저속 USB clock 1.5Mbit/s 역시).

구축:
나의 방법은 대단히 간단하고 값싼 하드웨어 (US$3), 모든 지능은 펌웨어이다.
구축은 PC를 통한 USB용 적외선 원격제어기로 설계되었다 (직렬포트의 구축은 성공),
이것은 역시 범용 USB 인터페이스이다.

디바이스는 다음과 같다:
적외선 코드의 수신 -수신코드의 타이밍 챠트 (그것은 역시 실시간으로 직렬 송신되었다).
(적외선 수신 - PC없이 적외선코드의 생성 - PC CPU 사용율 0%)
8-bit 입력 데이터 - 데이터 출력 게이트 (모든 비트는 독립적으로 입력과 출력을 할 수 있다,
그들은 독립적으로 입력핀을 저항으로 풀업할 수 있다)
내부 128 바이트의 EEPROM 읽기와 쓰기 (전원없이 데이터의 저장 - 서용자는 모든 메모리의 호출)
직렬포트를 통한 송신 혹은 수신 캐릭터
(지금 오직 하나의 버퍼없는 캐릭터 - 그러나 펌웨어는 내부버퍼를 만드는 것이 가능)
(적외선 버퍼의 손상 : FTDI 칩 같은)
직렬포트의 범위전환 (4800 에서 700,000 Baud : 전원투입 후는 57600 baud)
(고전적인 보우드는 : 4800, 9600,19200,38400,57600. 디바이스 DLL은 자동적으로  유효한 보우드를 검출한다.)
테스트프로그램 http://www.cesko.host.sk/downloads/IgorPlugUSB.zip

USB를 마이크로 프로세서를 쓰는것이 가능한 것이 너무 고마웠다.
(예) 우리가 원하는 제어에서 (읽기와 쓰기) 약간의 입력-출력 핀들.
가능한 응용 예:
I2C 온도계와 직접적으로 연결한다,
경보 디바이스의 입력과 출력,
간단한 LED 혹은 LCD/LED 표시등,,,

다음 그림은 회로도이다:
주의항 것은 클럭회로에는 12MHz 크리스털만 연결한다.
크리스털에 캐패시터는 연결하지 않으며, 3핀 세라믹 레조네이터는 발진하지 않는다.

마이크로 프로세서 AT90S2313-10 (범용 인터페이스):
USB 접속을 위한 그들의 디바이스, 이것은  윈도우즈에서 처음으로 찾은
"New hardware found" 라는 나름대로의 내 경험이다.

8핀 마이크로 프로세서 AT90S2313-10 회로는IR 코드만 수신한다.
나는 아직 시험하지 않았으나, 사용자로 부터 시험되고 설계되었다.


펌웨어 - 디바이스의 심장 - 은 동일한 두개의 마이크로 프로세서이다.
8핀 버전에서 (AT90S2323-10)  오직 적외선 코드의 수신과
EEPROM의 읽기 쓰기를 할 수 있다.
8핀 버전은 작은 디바이스로써 접속된 USB로 크기를 만족한다.

IgorPlug-USB (AVR) 디바이스의 설치:
USB 디바이스와 PC사이의 통신을 성공하기 위해, 디바이스 드라이버가 필요하다.
OS에서 처음으로 IgorPlug-USB (AVR)이 접속되면 이 드라이버를 요구한다
PC에서 USB 콘넥터를 연결하면: 나중에는 이 드라이버가 필요 없다:
펌웨어가 표준 USB 클래스로 가능한 디바이스에 의해서
(HID(인간 인터페이스 드라이버) 클래스, Storage(저장장치) 클래스 ,...),
- 이 클래스는 OS(운영체제)에서 빌트인(내장) 드라이버를 가진다 -

Firstly under WindowsXP: Windows find device IgorPlug-USB (AVR).



우리가 콘트롤 드라이버로 가지고 있는, 하나의 behavior 드라이버,
이것을 움직이기 위해서 오직 하나의 드라이버를 선택한다
다음 그림은 디바이스 설치 단계를 보여준다 (그리고 드라이버 설치)

USB 콘넥터에 처음으로 IgorPlug-USB (AVR)을 꼽으면 .
새로운 USB 디바이스를 발견한 윈도우가 드라이버를 찾는다.
MPU가 발진하지 않거나 회로가 불량하면 설치되지 않는다.
USB의 설치에서는 설치할 USB 디바이스의 인수(Device Constant)가,
USB 주변기기로 부터 PC로 수신이 되어야 드라이버의 설치가 가능하기 때문이다.
드라이버는 Windows98, WindowsME, Windows2000 그리고 WindowsXP와 동일하다.  
(윈도우즈95 이하는 작동하지 않음)

윈도우가 USB 드라이버를 찾는다면,
내려받은 IgorPlug-USB (AVR)의 윈도우즈 드라이버가 있는 폴더를 선택한다.
장치 종류는 " Infrared computer remote lcontrol IgorPlug-USB " 이다.
제조업체는 " Ing. Igor Cesko Company, Slovakia "이다.

설치가 성공적으로 끝나면 IgorPlug-USB폴더에 있는 IgorPlugUsbDemo.exe를
실행하면 수신된 적외선 리모콘신호의 파형을 윈도우에서 스코프형식으로 보여준다.
또한 EEPROM의 0~127번지의 데이터를 읽거나 쓸수 있다.
그밖의 기능으로는 버퍼창에 써넣은 문자를 2313에 남아 있는 TXD,RXD핀을 통하여,
RS232C로 송수신을 할 수 있으며, BPS도 3000~57600까지 조절이 가능하다.



화일의 설치 (INF 화일과 SYS 드라이버)
설치할 화일이 있는 곳을 Brows를 선택하여 지정합니다.(INF file and SYS driver)



Next picture shows functions of demonstrational program AVR to USB tester
and its properties (in WindowsXP style):





아래의 사진은 IgorPlug-USB를 제작한 PCB입니다.
출력은 D4~D7에 연결된 LED를 데모프로그램을 이용하여 점등하고 있습니다.
별도로 보이는 LED 3개중에서 점등된 녹색은 전원램프,
타원형의 적색은 RS232C 송신신호 감시용이며,
RS485회로 혹은 RS232C회로는 아직 연결하지 않은 상태입니다.

중앙의 납작한 사각형의 LED는 IR수광용 Photo TR입니다.
IR수신TR 아래의 저항은 10 Kohm으로 시험용 풀다운 저항입니다.
3핀 타입으로 증폭기가 내장된 IR 수신IC가 없어서 3핀 콘넥터만 연결하고,
임시로 보유하고 있던 2단자식 증폭기능이 없는 IR수신 TR을 연결하였습니다.



아래의 그림은 IgorPlugUsbDemo.exe를 실행한 화면입니다.
참고로 파형은 리모콘의 수신 데이터가 아닌, 형광등 불빛의 수신파형입니다만.
TV리모콘을 수광소자 앞에서 쏘니까 수신도 잘 됩니다.
리모콘을 조작해보니, TXD 램프가 리모콘을 누를때 마다 반짝입니다.
IR수신과  동시에 RS232C TXD로 수신된 리모콘 신호를 보내는 기능이 있습니다.
IR포토TR만 가지고 증폭없이, 리모콘 신호의 수신이 30cm정도는 잘 됩니다.

EEPROM의 데이터는 시험으로 모두 255로 쓰고, 다시 읽은 데이터입니다.
연결된 LED를 켜려면, 풀업을 체크하고, 해당포트를 출력으로 체크합니다.
입력포트는 별도로 체크하지 않고, 그상태로 입력레벨을 표시합니다.
자동으로 체크된 입력포트는 레벨이 High Level입니다.



다음은 IgorPlugUsb의 USB-Analyzer분석데이터입니다.


USB-Monitor (USB Packet Analyzer) 내려받기
http://www.hhdsoftware.com/usbmon.html


List of Articles
번호 제목 글쓴이 날짜 조회 수

AVR Project PIC Based Serial Port Servo Controller file

http://www.digitalnemesis.com/ash/projects/picservo/ ◆ PIC Based Serial Port Servo Controller By Ashley Roll Ever wanted to use Servos in a robotics project? This project uses a PIC microcontroller and...

AVR 강좌 RS-232 란 무엇인가? file

RS-232 란 무엇인가...

AVR 강좌 하드웨어 기초 file [1]

윤덕용 새 페이지 1 외부 자료 Link 작성자 Thinking in C++, 2nd ed. Volume 1 Bruce Eckel Thinking in C++, 2nd ed. Volume 2 ...

AVR Project FT245AM을 사용한 USB 인터페이스 설계 file

http://www.eix.co.uk/Ethernet/USB/ FT245AM을 사용한 USB 인터페이스 설계 USb는 생각보다 빠르다. USB는 PC의 저속에서 중속의 주변장치에서 새로운 방법을 제공한다. 새로운 USB 표준은 RS232C와 비교하면 보다 ...

AVR Project VHF 무선 데이터 수신기 file

http://jaichi.virtualave.net/avr-prog-e.htm 새 페이지 1 VHF 무선 데이터 수신기 ■ 회로: 이 수신기는 증폭도과 함께 크리스털 세트보다 작습니다. 작동전압 범위는 3V 에서 5V입니다. 나의 책상위에서는 2.5V이하로 작동합니다....

AVR Project VHF 무선 데이터 송신기 file

http://users.cableaz.com/~cappels/dproj/LCRFLINK/TRRxmtr/TRFxmtr.htm 새 페이지 1 산뜻한 생각으로 대략 접근하는 무전원의 송신기를 그렸다. 쓰기 시작하기 전에. 디커플링 캐패시터를 너무 크게 만들지 않도록 주의하라 그래서, ...

AVR Project AVR 6디지트 50MHz 주파수 카운터 file

http://www.myplace.nu/avr/countermeasures/index.htm AVR 6디지트 50MHz 주파수 카운터 ■ 개요 이것은 필요에 충족하는 또 다른 프로젝트이다. 나는 TTL 칩들을 이용해 간단히 주파수 카운터를 조립한적이 있다. 그것은...

AVR Tool AVR JTAG ICE file

Description: The Atmel AVR® JTAG ICE is an In-circuit Emulator for Atmel's megaAVR® Flash microcontrollers with 16K or more program memory. The JTAG ICE talks to the On-Chip debug module on the...

AVR Project PIC 전자식 그림간판의 제작(AVR로 응용가능) file

http://www.interq.or.jp/japan/se-inoue/e_pic6_2.htm 16F84A의 전자식 그림간판 메세지는 오른쪽에서 왼쪽으로 흐르며 표시한다. 128 개의 LED를 이 기판에 사용하였다. 이 장치의 소프트웨어는 다음과 같은 기술을 사용하...

AVR Project AVR JTAG 에뮬레이터의 제작 file

http://avr.openchip.org/bootice/index.html ■ BootICE(아트멜 AVR JTAG ICE와 호환)를 만들자 아직도 JTAG ICE를 많은 돈을 주고 구입하십니까? 여기에 완전하게 호환되는 BootICE의 완전한 설계(회로도,기판,소...

AVR Tool AVR Studio V4.07 설정방법 및 디버거 사용방법 file

http://www.atmel.com/ipstack AVR Studio V4.07 설정방법 및 디버거 사용방법 (1) 다음 사이트를 방문하여 AvrStudioV4.07을 받는다. http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725 그림과 같은 CD모양의...

AVR Project CMOS 카메라 Treva의 PC화상표시 file

http://www.paken.org:8080/aaf/treva/index.htmlipstack CMOS 카메라 Treva의 PC화상표시 feel H용 이미지 캡쳐유닛 Treva를 범용 CPU로 접속합니다. 입력과 출력을 1가닥의 신호선으로 OK!가장 간단한? 이미지 센서입니...

AVR Project AT90S2313 디지털 용량계 file

http://elm-chan.org/works/cmc/report.htmlipstackAT90S2313 디지털 용량계 이것은 용량을 빨리 측정하는 간단한 용량계이다. 용량의 측정 원리는 임피던스 브릿지나 딥메터처럼 용량을 한번에 측정한다. 요즈음의 표준 용량계는 Cx에...

AVR Project AVR로 만드는 3채널 다이오드 온도계 file

http://elm-chan.org/works/temp3/report_j.html 다이오드로 온도를 측정하는 3채널 온도계의 제작 고정도 써미스터를 사용하여 무조정으로 ±0.5℃の 온도정도를 실현을 하였습니다만, 최근의 프로세서는 다이온도를 직접 모니터하...

AVR Project Treva or DMR-C1 Serial Camera Interface file [3]

http://homepage3.nifty.com/mujirushi/ews/dmrc1/ipstackTreva Serial Camera Interface 이 페이지에는 독자적으로 해석한 내용이 포함되어 있으므로, 반드시 내용을 보증하는 것이 아닙니다. 이용에 있어서는 자기책임으로 하여 주시기...

AVR Project Treva를 Blutooth에 연결한 무선이동 카메라 file

http://www.asahi-net.or.jp/~qx5k-iskw/robot/blue.htmlipstack ■ Treva를 Blutooth에 연결한 무선이동 카메라 모듈의 VCC, VCC_IO, ON단자에 3.3V를 공급하고, TxD, RxD를 PC의 직렬포트에 접속합니다. 이제 모듈을 ...

AVR Project AVR90S2313과 Treva 카메라 file

http://stk500.hp.infoseek.co.jp/treva.htmlipstack 최근 마이콤등으로 움직이는 방법이 증가하고 있는 FeelH용 CMOS 카메라인 Treva입니다. STK500에는 부속된 2선식 케이블로 Vcc-GND, SCK-DO의 형태입니다. Treva와 STK500의 ...

AVR Project AT90S2313을 사용한 IR to USB 모듈 file

http://www.cesko.host.sk/IgorPlugUSB/IgorPlug-USB (AVR)_eng.htm Universal USB interface & USB Infrared Interface with microprocessor AT90S2313-10 : 마이크로 콘트롤러로 USB를 완성 : IgorPlug-USB (AVR) 이기사의 ...

AVR 강좌 AVR Mega128 퓨즈비트 설정방법 file

http://www.tns-tech.co.kr128 퓨즈비트 설정방법...

AVR Project AVR Mega8을 사용한 PID제어 소스 file

http://www.circuitcellar.com/library/print/1002/eady147/index.htm LCD에 보이는 것은 실제 조리기의 온도와 음식3개의 온도이다. 압전 경보기가 꺼져 있으면, 조리기의 온도는 5° 간격으로 180° 에서 400°F이다. 음...