- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
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
解決済! 解決策の投稿を見る。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
こちらでも試してみました。
CodeExample に入っていた CE210709_CapSense_Linear_Slider_and_Buttons というプロジェクトを、
先ずそのままでビルドしてみたところ、残っている I/O は 10本でした。(IO 26/36)
次に、プロジェクトを
CE210709_CapSense_Linear_Slider_and_Buttons_and_LEDs
という名称のプロジェクトにコピー・リネームして
LED用の Digital Output Pin x 10 を追加してみました。
問題なくビルドできました。
しかし、この時点で IO は 36/36 ですので、もう IOを追加することは出来ません。
あえて、画面コピーの様に Buzzer1 を追加してビルドしたところ
使用できるピン 36本 に対して、37本を使用しようとしている為、ビルドエラーとなりました。
結論として、
(1) LED を 10本追加する必要がある場合、Buzzer の追加は断念してください。
(2) Buzzer が必須の場合、他の IO のどれかを削減してください。
ということだと思います。
moto
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
こちらでも試してみました。
CodeExample に入っていた CE210709_CapSense_Linear_Slider_and_Buttons というプロジェクトを、
先ずそのままでビルドしてみたところ、残っている I/O は 10本でした。(IO 26/36)
次に、プロジェクトを
CE210709_CapSense_Linear_Slider_and_Buttons_and_LEDs
という名称のプロジェクトにコピー・リネームして
LED用の Digital Output Pin x 10 を追加してみました。
問題なくビルドできました。
しかし、この時点で IO は 36/36 ですので、もう IOを追加することは出来ません。
あえて、画面コピーの様に Buzzer1 を追加してビルドしたところ
使用できるピン 36本 に対して、37本を使用しようとしている為、ビルドエラーとなりました。
結論として、
(1) LED を 10本追加する必要がある場合、Buzzer の追加は断念してください。
(2) Buzzer が必須の場合、他の IO のどれかを削減してください。
ということだと思います。
moto
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
出来ませんと申し上げるだけですと、アレですので、
残りピン 10本の状態で、LED 10個と出力を使用できる方法を検討してみました。
回路図を下記の様に変更して、ピンとLEDを一対一とするのではなく
マトリクス型の COL x ROW にすることにより、COL 5ピン、 ROW 2ピンの
7本のピンを使えば 10個の LED が賄えると思います。
マトリクススキャンを行いますので、各LEDの輝度は下がってしまいますが・・・
添付プロジェクトでは Matrix_Timer の Period を 10000 (100Hz) に設定していますが、
恐らくチラツキが大きいと思いますので、動作確認ができたところで 1000 (1kHz)位に
変更していただくと良いのではないかと思います。
同様に COL 4 ピン、 ROW 4 ピンを使用すれば 16個の LED も点灯・消灯することが可能と思います。
こちらには現在、実験できるだけの LED がありませんでしたので、
LED の状態だけを UART に表示させたところ下記のようになりましたので
マトリクスのタイマー割込みも一応は機能しているようです。
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
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
ご指摘通りアナログピンで作成しておりました。
ただ、DigitalOutピンで作成しても同じエラーが発生しました。
追加コンポーネントの選択ミスでしょうか??
こちらの環境を共有致します。
<https://upload.hdedrive.com/ui/gunze.co.jp/dl/SB1563242862-b3cdb9e6-275a-483e-a6ac-d1225f063c04>
URLの有効期限: 2019年7月23日 午前11時7分
※パスワードは別途連絡致します。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
すみません、最初のレスポンスの後にレスポンスを殆ど全文書き換えております。
念のために、新しいレスポンスの方もご参照いただけますか?
moto
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
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
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
TaDa様、
無事にコンパイルが通られたとのこと、良い知らせをありがとうございました。
moto
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
サンプルプロジェクトに対してLED追加登録が出来ましたので、
本件クローズします。
LED追加環境に対して現在環境を移植する際に問題が発生しましたら
別質問として登録させて頂きます。