cancel
Showing results for 
Search instead for 
Did you mean: 

PSoC 5, 3 & 1 MCU

NaMi_4553661
New Contributor II

お世話になります。

毎度レベルの低い質問ですみません。

~使い方1~3では、ご指導いただきありがとうございました。

添付ファイルをご覧いただきたいのですが、

外部入力パルスがCH1(黄色)、

LED出力がCH2(青色)になります。

8ビットシフトレジスタでしたが、現在32ビットのシフトレジスタとしています。

問題ですが、

回路駆動時に、タイマでタイミングをとっているはずの

LED出力の幅がときおり極端に短くなる場合があります。(ファイルtek0012.png)

点灯タイミングがずれると視認できてしまうため、こまっています。

どこかにバグがあると思うのですが、見つけられずにいます。

ご教示いただけると幸いです。

よろしくお願い致します。

0 Likes
1 Solution
MotooTanaka
Esteemed Contributor

こんにちは、

さっと拝見しただけなのですが、

入力信号の下りエッジとパルス生成カウンタの位相がずれているような気がします。

試しに CY_ISR(freq_isr) を下記の様に変更されて

改善がみられるかお試しいただけますか?

====================

CY_ISR(freq_isr)

{

   Timer_Stop() ; // <----

   Timer_ReadStatusRegister() ; // <----

    FreqCounter_Stop() ;

    freq_count = FreqCounter_ReadCapture() ;

    Timer_WritePeriod((freq_count / 32)) ;

    Timer_WriteCounter(0) ;

    Timer_Start() ; // <---

    FreqCounter_WriteCounter(0) ;

    FreqCounter_ReadStatusRegister() ;

    FreqCounter_Start() ;

}

====================

moto

View solution in original post

0 Likes
2 Replies
MotooTanaka
Esteemed Contributor

こんにちは、

さっと拝見しただけなのですが、

入力信号の下りエッジとパルス生成カウンタの位相がずれているような気がします。

試しに CY_ISR(freq_isr) を下記の様に変更されて

改善がみられるかお試しいただけますか?

====================

CY_ISR(freq_isr)

{

   Timer_Stop() ; // <----

   Timer_ReadStatusRegister() ; // <----

    FreqCounter_Stop() ;

    freq_count = FreqCounter_ReadCapture() ;

    Timer_WritePeriod((freq_count / 32)) ;

    Timer_WriteCounter(0) ;

    Timer_Start() ; // <---

    FreqCounter_WriteCounter(0) ;

    FreqCounter_ReadStatusRegister() ;

    FreqCounter_Start() ;

}

====================

moto

View solution in original post

0 Likes
NaMi_4553661
New Contributor II

Timerが動いていたのですね。

オシロでは未確認ですが、

現状ちらつきがなくなっているように見受けられます。

ありがとうございました。