CY8C24223で周波数カウンタ・main.c
2013-05-16
さて、main.cを公開するのは気が引けるのだ、なにせ下手なコーディングなので・・・。
文字配列の使い方がどうもねぇ。
まぁ、いいか。
念のため、動作保障はしません。自己責任でどうぞ。なんて書くのはイヤなんだが、一応書いておかないと。
ご注意!
#include <m8c.h>
の<>は半角に変えてください。
//----------------------------------------------------------------------------
// CY8C24223A-24PXIを使った周波数カウンタ
// start 2013.05.11
// copyright edy
// Gate P1[5]
// 0ならゲートは閉じている、1なら開いている
//----------------------------------------------------------------------------
#include <m8c.h>// part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
#define MAXCOUNT 65535
#define Gate (PRT1DR & 0x20)
long freq ;
#pragma interrupt_handler Counter16_ISR
void Counter16_ISR(void)
{
freq+=MAXCOUNT + 1 ;
}
void main(void)
{
int p ;
char s[11];
freq = 0 ;
Counter16_Start() ;
PWM16_Start() ;
LCD_1_Start() ;
Counter16_EnableInt();
M8C_EnableGInt;
//LCD_1_Position(0,0);LCD_1_PrCString("Freq Counter");
while(1) {
while ( Gate != 0 ) {;} //ゲートが開いている間ループ、すなわちゲートが閉じるのを待つ
Counter16_Stop() ;
freq = freq + (MAXCOUNT- Counter16_wReadCounter()) ;
p=9;
do{
s[p]=(freq % 10)+'0' ; freq/=10 ;
if (freq>0){
p--;
if((p==2)||(p==6)) {s[p]=',';p--;}
}
}while(freq>0);
while(p>0) {p--; s[p]=' ';}
s[10]=0;
LCD_1_Position(0,0);LCD_1_PrString(s);LCD_1_PrCString("Hz");
freq = 0;
Counter16_WritePeriod(MAXCOUNT);
Counter16_Start() ;
while ( Gate == 0 ) {;} //ゲートが閉じている間ループ、すなわちゲートが開くのを待つ
}
}
文字配列の使い方がどうもねぇ。
まぁ、いいか。
念のため、動作保障はしません。自己責任でどうぞ。なんて書くのはイヤなんだが、一応書いておかないと。
ご注意!
#include <m8c.h>
の<>は半角に変えてください。
//----------------------------------------------------------------------------
// CY8C24223A-24PXIを使った周波数カウンタ
// start 2013.05.11
// copyright edy
// Gate P1[5]
// 0ならゲートは閉じている、1なら開いている
//----------------------------------------------------------------------------
#include <m8c.h>
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
#define MAXCOUNT 65535
#define Gate (PRT1DR & 0x20)
long freq ;
#pragma interrupt_handler Counter16_ISR
void Counter16_ISR(void)
{
freq+=MAXCOUNT + 1 ;
}
void main(void)
{
int p ;
char s[11];
freq = 0 ;
Counter16_Start() ;
PWM16_Start() ;
LCD_1_Start() ;
Counter16_EnableInt();
M8C_EnableGInt;
//LCD_1_Position(0,0);LCD_1_PrCString("Freq Counter");
while(1) {
while ( Gate != 0 ) {;} //ゲートが開いている間ループ、すなわちゲートが閉じるのを待つ
Counter16_Stop() ;
freq = freq + (MAXCOUNT- Counter16_wReadCounter()) ;
p=9;
do{
s[p]=(freq % 10)+'0' ; freq/=10 ;
if (freq>0){
p--;
if((p==2)||(p==6)) {s[p]=',';p--;}
}
}while(freq>0);
while(p>0) {p--; s[p]=' ';}
s[10]=0;
LCD_1_Position(0,0);LCD_1_PrString(s);LCD_1_PrCString("Hz");
freq = 0;
Counter16_WritePeriod(MAXCOUNT);
Counter16_Start() ;
while ( Gate == 0 ) {;} //ゲートが閉じている間ループ、すなわちゲートが開くのを待つ
}
}
- 関連記事
スポンサーサイト
コメント
追試します
100MHz
こんにちは
100MHz迄確認しました
それ以上は表示が出ないので確認できません
表示のソフト改造と基準ロックを10MHzに変更してみたいです
表示改造は能力が足りないです
助けてください
クロックは分周した結果が1秒になればいいのではと改造してみます
報告でした[腟究��絖�:v-8]
100MHz迄確認しました
それ以上は表示が出ないので確認できません
表示のソフト改造と基準ロックを10MHzに変更してみたいです
表示改造は能力が足りないです
助けてください
クロックは分周した結果が1秒になればいいのではと改造してみます
報告でした[腟究��絖�:v-8]
コメントの投稿
トラックバック
この記事へのトラックバックURL
https://edycube.blog.fc2.com/tb.php/658-6fb9b2bb
何時も凄く良いテーマを有り難う御座います
早速デバイスを発注しましたので
もう少ししたら追試します
今回も高精度なのでしょうね
発信器を10MHzにて外部から供給してみたいので
後で動いたらチャレンジしてみたいです