마하전자기술연구소 LOGO

제품검색 고객센터053-604-2355
기술자료실

Home > 기술자료실 기술자료실

제 목 41. USB 접속의 8자리수 주파수 카운터(소프트웨어편) [역시 PICROS를 사용한 작품으로, 8자리수 100 MHz의 주파수 카운터입니다.
첨부파일

 

                 역시 PICROS를 사용한 작품으로, 8자리수 100 MHz의 주파수 카운터입니다.
                  PC와 USB로 접속해 장기간의 주파수 변화를 그래프에 할 수 있습니다


 USB 접속의 8자리수 주파수 카운터(소프트웨어편)

 CPLD의 주파수 카운터 블록과 PIC를 조합했다
 8자리수의 주파수 카운터입니다. USB로 PC와 접속할 수 있습니다.
 PIC의 프로그램은 PICROS로 멀티태스킹화했습니다.


【개요】

CPLD로 카운트 한 주파수를 8자리수치로 액정 표시기에 표시함과 함께,
USB 콘트롤러로 PC와 풀 스피드의 USB 접속을 할 수 있기 때문에,
데이터 수집이나 그래프 작성에는 편리하게 사용할 수 있습니다.
 PIC의 프로그램에는 「PIC용 리얼타임 OS의 PICROS」(을)를 사용해 멀티태스킹화
했으므로, 의외로 간단하게 프로그램을 할 수 있었습니다.


표시는 8자리수치로 3자리수 마다 칸마를 추가



【기능 사양】

 본주파수 카운터의 기능 사양은 아래와 같이 되어 있습니다.

  ·측정 주파수 : 최대 약 80 MHz
  ·측정 주기   : 1초 자동 갱신
  ·표시      : 16 문자 2행의 액정 표시기에 의한다 8자리수 표시
             액정 표시기는 백 라이트 첨부
 ·USB 접속  : 풀 스피드에 의한 접속
         인터페이스는 아래 표로 하는

 ·전원   : DC9V 최대 약 250 mA

파이프 송수신 데이터량 데이터 내용 비고
0 수신 8바이트 커멘드 수신 1 문자 커멘드
1 송신 16바이트 계측치 반송 상태 1byte
데이터 BCD8byte
2 수신 8바이트 미사용
3 송신 8바이트 미사용
4 수신 8바이트 미사용
5 송신 16바이트 미사용



【PIC측 프로그램】

 본주파수 카운터의 전체 제어용으로는 PIC16F876를 사용하고 있습니다. 이것으로
CPLD의 카운트치를 읽어내, 액정 표시기에 표시함과 함께, USB 제어
(을)를 실시해 PC와의 USB 통신을 제어합니다.
PIC측 프로그램은, 자작 리얼타임 OS인 「PICROS」를 사용해 멀티
태스크화했습니다.
전체의 소프트웨어 구성은 밑그림과 같이 되어 있어, 신규에 작성한 부분은,
그림중으로 색이 붙어 있는 태스크군과 정의부만되고 있습니다.
모두 CCS사의 C언어로 만들고 있습니다.





 상기의 구성으로 제작한 프로그램의 전체의 흐름은 밑그림과 같이 되어 있습니다.
전체가 크고 로컬 동작의 좌측 반과 리모트 동작의 우측 반과로 나누어집니다.
우선 로컬계는, 초기 기동으로 kicktsk가 기동되면(자), CPLD 동작을 개시시켜,
EndCheck 태스크를 기동해, 1초 후의 CPLD의 카운트 종료를 EndCheck 태스크로 약속
.
 EndCheck 태스크에서는, CPLD의 카운트 종료의 새치기 회로가 없기 때문에, CPLD의
Busy를 50 msec 간격으로 체크하기 위해(때문에), Busy가 계속되고 있으면(자), Wait_Timer 함수로
50 msec의 타이머 대기로서 PICROS로 돌아옵니다.
Busy가 해제되었을 때에는, Request_Task 함수로 mesure 태스크를 기동합니다.

 mesure 태스크에서는, CPLD로부터 8자리수의 카운트치를 입력해, 데이터에 보존하고 나서
액정 표시기에 단위와 함께 표시합니다. 표시 종료후, 이번 카운트중에 USB로부터
데이터 요구가 있었을 때를 위해서(때문에), usbrcv의 mesure 태스크로부터의 이벤트 대기를,
Resume_Task 함수로 해제합니다.

 상기의 로컬 동작중에는 USB의 새치기가 가능해, 만약 PC로부터 USB 경유로
데이터 요구의 커멘드의 수신을 했다면, usbrcv 태스크를 Trigger_Task 함수로 기동합니다.
usbrcv 태스크는, CPLD의 카운터의 종료를 약속 다투기 (위해)때문에, Suspend_Task 함수에 의해
messure 태스크의 이벤트 대기로 합니다.
그리고 mesure 태스크로부터의 이벤트 대기 해제에 의해, 데이터로서 보존되고 있다
카운터의 값을 USB로 송신합니다.











아래와 같이는 PIC측의 프로그램 일식입니다. 다운로드해 MPLAB와 PCM의
통합 환경에서 사용해 주세요.
PCM는 CCS사의 C컴파일러입니다.

 ★ USB 접속 주파수 카운터 프로그램 파일 일식



【PC측 프로그램】

이번 주파수 카운터용의 PC측의 프로그램은, 장기간의 카운트치에
중심 주파수로부터의 차이를 계측하기 위한의 것으로 했습니다.
기본 폼의 디자인은 밑그림과 같이 되어 있습니다.
그림 우상의 Timer와 Common Dialog Control가 숨겨 컴퍼넌트가 되고 있습니다.
우선 USB의 접속을 제어하기 위해(때문에) VebderID와 ProductID가 변경 지정할 수 있도록(듯이)
텍스트 박스로 했습니다. 기본의 값을 디폴트치로서 그대로 기본의
값으로 접속하도록(듯이) 하고 있습니다. 정상적으로 접속할 수 있으면(자) 배경색이 갈색으로 바뀐다
같게 했습니다.
다음이 계측 주기의 지정으로, 카운터 본체측이 1초간격으로 밖에 측정할 수 없기 때문에,
최저가 1초간격이 되어, 최대 60초로 합니다.
그 아래가 실제의 주파수를 표시하는 텍스트 박스입니다. 최대 8자리수입니다.

경계선의 아래 쪽은 그래프를 작성하기 위한 설정이 됩니다.
계측중에 그래프 작성 버튼을 누르면(자), 지금까지의 계측치를 그래프로 해, 그대로
리얼타임에 계측치를 갱신 표시합니다.
중심 주파수와 변동폭의 란에는, 그래프를 표시할 때의 Y축을 결정합니다. 중심
주파수의 값이 Y축의 한가운데가 되어, 변동폭의 2배의 값이 각각 플러스마이너스의
표시 범위가 됩니다.
그래프는 기본색은 파랑입니다만, 변동폭을 넘은 부분은 적색으로 표시합니다.
표시 시간은 X축으로, 분의시에는, 위의 시간 간격으로 설정한 값으로 자동적으로 X축의
시간을 변경합니다만, 시간을 지정했을 때에는 고정치의 시간축이 됩니다.
그래프명과 신호명은 그래프의 범례로서 표시하는 내용입니다.

그래프 보존 버튼으로, 현재 표시되고 있는 그래프를 파일로서 보존합니다.
그래프 읽어 버튼으로, 보존해 둔 그래프를 읽어내 표시합니다.
이 표시때에는 기존 표시의 그래프를 소거하지 않기 때문에, 복수 데이터를 거듭해 맞추어
표시하는 것이 가능합니다. 단, 이 경우의 중심 주파수로 변동폭은 같다
일이 전제입니다.









 밑그림이 실제의 그래프 작성 결과로 크리스탈 발진기의 전원 투입시의 주파수
변화를 그래프로 한 것입니다.
2개의 데이터를 거듭해 표시한 결과입니다. 도중에 적색의 선이 되어 있는 것은
그 때의 계측치가 그래프로 지정한 변동폭을 넘었기 때문입니다.

이것으로 약 67 MHz의 크리스탈 발진기를 안정에 계측 하는 것이 확인할 수 있었습니다.








아래와 같이는 상기 PC측의 프로그램 파일 1식입니다. Visual Basic로
사용해 주세요.

  ★ USB 접속 주파수 카운터 제어 프로그램 1식

목록보기

www.1chip.com, www.1chip.co.kr
www.micom114.com
자료실바로가기

대구광역시 북구 산격2동 1629 산업용재관 10동 13호 (2층) / Tel. 053-604-2355 / Fax. 053-383-2354 / E-mail. maha@paran.com