Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

PSoC™ 4 Forum Discussions

TaDa_1980266
Level 4
Level 4
First like received

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

0 Likes
1 Solution
MotooTanaka
Level 9
Level 9
First comment on KBA 1000 replies posted 750 replies posted

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

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

View solution in original post

0 Likes
7 Replies
MotooTanaka
Level 9
Level 9
First comment on KBA 1000 replies posted 750 replies posted

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

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

0 Likes

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

残りピン 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) {

            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 = 1 ;

            } else {

                led_values = 0 ;

            }

        }

        dump_matrix() ;

        matrix_index = (matrix_index + 1) % NUM_MATRIX ;

        CyDelay(1000) ;

    }

   

    

    for(;;)

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

moto

0 Likes

ご指摘通りアナログピンで作成しておりました。
ただ、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分

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

0 Likes

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

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

moto

0 Likes

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

TaDa様、

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

moto

0 Likes

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

本件クローズします。

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

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