7 Replies Latest reply on Jul 16, 2019 5:21 PM by TaDa_1980266

    LED登録エラー

    TaDa_1980266

      10個のLEDコンポーネントを追加登録した際、以下のエラーが表示されました。

      apr.M0008:Unable to place component "LED03_3(0)".
      Either the design is bigger than this chip can handle,
      or the design is over constrained and there are not enough resources to satisfy the constraints.

      エラー解消方法を教えて下さい。

       

      (環境)
      Hardware    : CY8CKIT-145-40XX PSoC 4000S Prototyping Kit
      IC          : CY8C4045AZI-S413
      Sofware     : PSoC Creator 4.2, CapSense
      Base Project: CY8CKIT-145 Code Example.zip

        • 1. Re: LED登録エラー
          MoTa_728816

          こちらでも試してみました。

           

          CodeExample に入っていた CE210709_CapSense_Linear_Slider_and_Buttons というプロジェクトを、

          先ずそのままでビルドしてみたところ、残っている I/O は 10本でした。(IO 26/36)

          aaa_IO.JPG

           

          次に、プロジェクトを

           CE210709_CapSense_Linear_Slider_and_Buttons_and_LEDs

          という名称のプロジェクトにコピー・リネームして

          LED用の Digital Output Pin x 10 を追加してみました。

          10LEDs.JPG

          問題なくビルドできました。

           

          しかし、この時点で IO は 36/36 ですので、もう IOを追加することは出来ません。

          bbb_IO.JPG

          あえて、画面コピーの様に Buzzer1 を追加してビルドしたところ

          ccc.JPG

          使用できるピン 36本 に対して、37本を使用しようとしている為、ビルドエラーとなりました。

           

          結論として、

          (1) LED を 10本追加する必要がある場合、Buzzer の追加は断念してください。

          (2) Buzzer が必須の場合、他の IO のどれかを削減してください。

          ということだと思います。

           

          moto

          • 2. Re: LED登録エラー
            MoTa_728816

            出来ませんと申し上げるだけですと、アレですので、

            残りピン 10本の状態で、LED 10個と出力を使用できる方法を検討してみました。

             

            回路図を下記の様に変更して、ピンとLEDを一対一とするのではなく

            マトリクス型の COL x ROW にすることにより、COL 5ピン、 ROW 2ピンの

            7本のピンを使えば 10個の LED が賄えると思います。

             

            マトリクススキャンを行いますので、各LEDの輝度は下がってしまいますが・・・

            添付プロジェクトでは Matrix_Timer の Period を 10000 (100Hz) に設定していますが、

            恐らくチラツキが大きいと思いますので、動作確認ができたところで 1000 (1kHz)位に

            変更していただくと良いのではないかと思います。

            001-schematic.JPG

            同様に COL 4 ピン、 ROW 4 ピンを使用すれば 16個の LED も点灯・消灯することが可能と思います。

            こちらには現在、実験できるだけの LED がありませんでしたので、

            LED の状態だけを UART に表示させたところ下記のようになりましたので

            マトリクスのタイマー割込みも一応は機能しているようです。

            000-TeraTerm.JPG

             

            main.c への変更・追加は下記のようになりました。

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

            #if !ENALBE_TUNER

            ...

            #endif

             

            #define NUM_COL 5

            #define NUM_ROW 2

            #define NUM_MATRIX (NUM_COL * NUM_ROW)

            volatile int led_row = 0 ;

            volatile int led_col = 0 ;

            int matrix_index = 0 ;

            uint8_t led_values[NUM_MATRIX] = { 0u } ;

             

            CY_ISR(matrix_isr)

            {

                int r = 1 ;

                int c = 0 ;

               

                Matrix_Timer_ClearInterrupt(Matrix_Timer_GetInterruptSource()) ;

               

                if (led_values[led_row * NUM_COL + led_col] != 0) {

                    r = 0 ;

                    c = 1 ;

                }

                   

                switch(led_row) {

                case 0:  ROW_0_Write(r) ; ROW_1_Write(1) ; break ;

                case 1:  ROW_0_Write(1) ; ROW_1_Write(r) ; break ;

                default: ROW_0_Write(1) ; ROW_1_Write(1) ; break ;

                }

                switch(led_col) {

                case  0: COL_0_Write(c) ; COL_1_Write(0) ; COL_2_Write(0) ; COL_3_Write(0) ; COL_4_Write(0) ; break ;

                case  1: COL_0_Write(0) ; COL_1_Write(c) ; COL_2_Write(0) ; COL_3_Write(0) ; COL_4_Write(0) ; break ;

                case  2: COL_0_Write(0) ; COL_1_Write(0) ; COL_2_Write(c) ; COL_3_Write(0) ; COL_4_Write(0) ; break ;

                case  3: COL_0_Write(0) ; COL_1_Write(0) ; COL_2_Write(0) ; COL_3_Write(c) ; COL_4_Write(0) ; break ;

                case  4: COL_0_Write(0) ; COL_1_Write(0) ; COL_2_Write(0) ; COL_3_Write(0) ; COL_4_Write(c) ; break ;

                default: COL_0_Write(0) ; COL_1_Write(0) ; COL_2_Write(0) ; COL_3_Write(0) ; COL_4_Write(0) ; break ;  

                }

                led_col++ ;

                if (led_col >= NUM_COL) {

                    led_col = 0 ;

                    led_row++ ;

                    if (led_row >= NUM_ROW) {

                        led_row = 0 ;

                    }

                }

            }

             

            void dump_matrix(void)

            {

                int i ;

                for (i = 0 ; i < NUM_MATRIX ; i++ ) {

                    if (led_values[i]) {

                        UART_UartPutChar('*') ;

                    } else {

                        UART_UartPutChar('-') ;

                    }

                }

                UART_UartPutChar('\n') ;

            }

             

            int main()

            {

            ...

               SmartIO_Port2_Start();      

               

                /* for matrix LED */

                Matrix_Timer_ClearInterrupt(Matrix_Timer_GetInterruptSource()) ;

                matrix_int_ClearPending() ;

                matrix_int_StartEx(matrix_isr) ;

                Matrix_Timer_Start() ;

                UART_Start() ;

                UART_UartPutString("LED Matrix Test Program ") ;

                UART_UartPutString(__DATE__) ;

                UART_UartPutString(" ") ;

                UART_UartPutString(__TIME__) ;

                UART_UartPutString("\n") ;

               

                for (;;) {

                    int i ;

                    for (i = 0 ; i < NUM_MATRIX ; i++) {

                        if (i == matrix_index) {

                            led_values[i] = 1 ;

                        } else {

                            led_values[i] = 0 ;

                        }

                    }

                    dump_matrix() ;

                    matrix_index = (matrix_index + 1) % NUM_MATRIX ;

                    CyDelay(1000) ;

                }

               

                

                for(;;)

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

             

            moto

            • 3. Re: LED登録エラー
              TaDa_1980266

              ご指摘通りアナログピンで作成しておりました。
              ただ、DigitalOutピンで作成しても同じエラーが発生しました。

               

              LED_Component__Adding_NG_20190716.jpg

               

              追加コンポーネントの選択ミスでしょうか??

               

              こちらの環境を共有致します。
              <https://upload.hdedrive.com/ui/gunze.co.jp/dl/SB1563242862-b3cdb9e6-275a-483e-a6ac-d1225f063c04>
              URLの有効期限: 2019年7月23日 午前11時7分

               

              ※パスワードは別途連絡致します。

              • 4. Re: LED登録エラー
                MoTa_728816

                すみません、最初のレスポンスの後にレスポンスを殆ど全文書き換えております。

                念のために、新しいレスポンスの方もご参照いただけますか?

                 

                moto

                • 5. Re: LED登録エラー
                  TaDa_1980266

                  Moto様

                  少ないピン数で多くのLEDを制御するマトリクス方式の提案ありがとうございました。

                   

                  ただ、moto様と同様にサンプルプロジェクト(CY8CKIT-145 Code Example.zip)の

                  LEDコンポーネントをコピーすると、自分の予想に反して

                  実現したいピン配置がエラー無しで実現出来てしまいました。

                   

                  ピン配置(エラー無し)

                  <https://upload.hdedrive.com/ui/gunze.co.jp/dl/SB1563273708-f553274c-2c9b-4a94-8733-5cf995efe0a3>

                  URLの有効期限: 2019年7月23日 午後7時41分

                   

                  ※パスワードは別途送ります。

                   

                   

                  Button    15

                  Shield     1

                  LED       12

                  UART       2

                  Buzzer     1

                  • 6. Re: LED登録エラー
                    MoTa_728816

                    TaDa様、

                     

                    無事にコンパイルが通られたとのこと、良い知らせをありがとうございました。

                     

                    moto

                    • 7. Re: LED登録エラー
                      TaDa_1980266

                      サンプルプロジェクトに対してLED追加登録が出来ましたので、

                      本件クローズします。

                       

                      LED追加環境に対して現在環境を移植する際に問題が発生しましたら

                      別質問として登録させて頂きます。