Community Translated by NoTa_4591161 Version: *A
Translation - English: Maximum Overlay Thickness for CapSense® - KBA82812
質問:
Capsenseセンサーのオーバーレイの厚みの最大値はいくつですか?
回答:
オーバーレイの厚さについては、特にスペックはありません。
下記の要因に記載されている材料、厚みから選択する必要があります。
・Capsenseシステムの感度は、オーバーレイの厚みと材料に大きく影響されます
Cfinger = (εo εr A) / D
ここで:
εo = 自由空間誘電率
εr = オーバーレイの誘電率
A = 指とセンサーパッドのオーバーレイの領域
D = オーバーレイの厚さ
・より厚いオーバーレイでは指の容量が下がり、指のタッチ感度を下げることになります。 厚いオーバーレイは、寄生容量を増加します。しかし、オーバーレイはESD対策のためにある程度の厚みは必要となります。ボタンのサイズを大きくしてオーバーレイを厚くすることで、指の感度を補うことができます。以下の表は、各種素材に対するオーバーレイの最小の厚みになります。
詳細については、こちらを参照ください Capsense Getting Started guide.
Show LessCommunity Translated by NoTa_4591161 Version: **
Translation - English: E2PROM - Usage Notes – KBA182882
質問:
E2PROMユーザーモジュールを使用する際に覚えておくべき重要な要素は何ですか?
回答:
E2PROMユーザーモジュールは、フラッシュプログラムメモリでE2PROMをエミュレートするための非常に便利なユーザーモジュールです。E2PROMユーザーモジュールを使用する際に覚えておくべきいくつかの重要なポイントがあります。
ユーザーモジュールパラメータ:
開始ブロック:これは、E2PROMが開始するフラッシュブロック番号を指定します。E2PROMは常にフラッシュの最後のブロックに配置してください。たとえば、32Kデバイスでは、256バイト(4ブロック)のE2PROMをブロック508〜511に配置する必要があります。したがって、最初のブロックは508にする必要があります。これにより、コードメモリに最大限のスペースを確保し、コードメモリとE2PROMの衝突を防ぐことができます。
w w w w w w w w w w w w w w w w ; ベースアドレス7800
w w w w w w w w w w w w u u u u ; ベースアドレス7C00
; End 32K parts
長さ:このパラメータは、E2PROMのサイズをバイト単位で設定します。上記の例では、長さパラメータは256になります。
E2PROM書き込み機能:
E2PROMにデータを書き込むには、E2PROM_bE2Write関数を使用します。関数のプロトタイプは
char E2PROM_bE2Write(WORD wAddr, BYTE *pbData, WORD wByteCount, char Temperature);
wAddr:これは、データを書き込むE2PROM内の場所です。よくある間違いは、フラッシュの場所の物理アドレスを入力することです。値は、フラッシュではなく、E2PROM内の場所を基準にする必要があります。上記の例では、E2PROMの最初の場所にデータを書き込むには、wAddrの値を0x7F00ではなく0x0000にする必要があります。
* pbData:これは、E2PROMに書き込むデータを保持するバッファへのポインタです。データがcharバッファにない場合は、タイプキャストを使用します。たとえば、構造体MyStructを作成するには、(char *)&MyStructへのポインタをタイプキャストします。
wByteCount:これはE2PROMに書き込まれるバイト数です。
Temperature:温度パラメータは、フラッシュ書き込みパルス幅を計算するためにE2PROMAPIによって使用されます。高温では、フラッシュはより小さなパルス幅で書き込む必要があり、より低い温度では、より長いパルス幅で書き込む必要があります。フラッシュが正しいパルス幅で書き込まれる場合、フラッシュは最大耐久性と書き込みサイクルを満たします。デバイスが0〜50度の温度範囲内で動作する場合は、温度として25の値を渡しても問題ありません。ただし、全温度範囲で動作させるには、FlashTempユーザーモジュールを使用して、正しいダイ温度を渡します。これを行わないと、データの保持またはフラッシュの耐久性が損なわれます。通過した温度値が動作温度より低い場合、フラッシュは必要以上に長いパルス幅で書き込まれます。これにより、フラッシュの耐久性が低下します。一方、通過した温度値が動作温度より高い場合、フラッシュは必要以上に狭いパルス幅で書き込まれます。これは耐久性には影響しませんが、データの保持期間は保証された10年未満になります。
bE2Write関数は、書き込み操作のステータスを返します。0x00の戻り値は、書き込みが成功したことを意味します。-1は書き込みエラーを意味します。これは、フラッシュが書き込み保護されていることが原因である可能性があります。-2はスタックオーバーフローを意味します。プログラムの戻り値を常にチェックして、書き込みが成功したことを確認してください。
フルブロック書き込みとパーシャル書き込み
E2PROMの書き込みは、常に64バイトのブロックで行われます。64バイト未満のデータを書き込む場合、それは部分書き込みと呼ばれます。フラッシュ書き込みAPIは、最初にフラッシュブロックからすべての64バイトをRAMに読み取り、目的のバイトを変更して、64バイトのデータをフラッシュに書き戻します。これにより、103バイトのスタックスペースを必要とする重いRAMオーバーヘッドが発生しますが、完全なブロック書き込みには32バイトのスタックしか必要ありません。RAMページが1つしかないデバイスでは、グローバル変数とスタックが256バイトを共有します。グローバルのRAM使用率が高い場合、部分的な書き込みの実行中にスタックオーバーフローエラーが発生する可能性があります。このような状況では、64バイトの書き込みを実行することを常にお勧めします。10バイトのデータを書き込んでいる場合でも、ByteCountを64に設定します。最初の10バイトが実際のデータになり、その後に後続のRAMロケーションからのデータが続きます。
データを使用したE2PROMの初期化:
E2PROMを使用して、キャリブレーションデータまたはその他のシステム関連データを保存できます。この場合、デバイスのプログラム中にE2PROMに初期値をロードします。これを実現するには、次の方法を使用します。
Cの場合:#pragmaabs_addressディレクティブを使用します。たとえば、E2PROMが32Kデバイスの最後のフラッシュブロックに配置されていて、最初の10バイトを何らかの値で初期化する場合は、次のように入力します。
#pragma abs_address 0x7FC0
const char InitialValues[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09};
#pragma end_abs_address
アセンブリの場合:
area eeprom(rom, abs)
org 0x7FC0
db 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09
構造体の保存と取得
キャリブレーション構造体がE2PROMに保存、読み取り、書き込みされる実際のE2PROMの使用法を見てみましょう。
構造体のtypedefを作成します。
ypedef struct CAL_STRUCT
{
int Offset;
float Scale;
}CAL_STRUCT;
キャリブレーション値を保存するためのRAM変数
CAL_STRUCT CalValuesRam;
E2PROMを初期値で初期化します。
#pragma abs_address 0x7FC0
const CAL_STRUCT CalValuesEeprom = {
0x0023, //オフセットの初期値
};
E2PROMからRAMに値を読み取るには、E2PROM_Read関数のいずれかを使用できます。
E2PROM_E2Read(0x0000, char* &CalValuesRam, sizeof(CalValuesRam));
または:
CalValuesRam = CalValuesEeprom;
RAMからE2PROMに値を書き込むには
E2PROM_bE2Write(0x0000,(char*)&CalValuesRam, 64, 25);
Show LessCommunity Translated by NoTa_4591161 Version: *A
Translation - English: Configuring a CY8C201xx Device for Use Either with External Pull-ups or With a Master Operating at Different VDD – KBA80…
質問:外部プルアップまたは異なるV DDで動作するマスターのいずれかでCY8C201xxデバイスを使用するには、どのようなアクションを実行する必要がありますか?
回答:
CY8C201xxデバイスは、I2Cラインの内部プルアップ抵抗をサポートします。 表1に、内部プルアップ抵抗の工場出荷時のデフォルト設定を示します。
表1:内部プルアップ設定の工場出荷時のデフォルト値
端末
| 内部プルアップ(工場出荷時のデフォルト) |
CY8C20111/21 |
無効
|
CY8C201A0 |
有効
|
CY8C20110/80/60/40/42 |
有効
|
内部プルアップ抵抗の設定は、全体的な設計の要件と一致する必要があります。設定が正しくない場合、以下の問題が発生する可能性があります。
上記のシナリオでは、内部プルアップ抵抗を無効にすることをお勧めします。これは、デバイスの構成中に、エンドシステムにはんだ付けする前に行う必要があります。内部プルアップ抵抗を有効または無効にするには、I2C_ADDR_DM(7Ch)レジスタのI2CDMビット(MSB)を構成します。詳細については、CY8C201xx:レジスタリファレンスガイドを参照してください。
Show Less
Community Translated by NoTa_4591161 Version: **
Translation - English: Configuring CapSense Express devices through PSoC Designer 5.1
質問:
PSoC Designer 5.1を介してCapSense Expressデバイスを設定できますか?
回答:
システムレベルの設計は、最新バージョンのPSoC Designer 5.1(PSoC Designer 5.1以降)ではサポートされていません。
PSoC Designer 5.0 SP6は、システムレベルの設計(PSoC Expressデバイスを構成するための要件)をサポートするため、PSoC Expressデバイスの構成に使用できます。
PSoC Designer 5.0 SP6は、このリンクhttp://www.cypress.com/?rID=34517を通じて当社のウェブサイトからダウンロードでき ます。PSoC Designer 5.0はPSoC Designer 5.1と共存できることに注意してください。(システムレベルの設計サポートのため、PSoC Designerの将来のリリースとも共存します)。
Show LessCommunity Translated by NoTa_4591161 Version: **
Translation - English: Free C Compiler for PSoC Designer
質問:
サイプレスはPSoC Designer用の無料のCコンパイラを提供していますか?はいの場合、どこからダウンロードできますか?
回答:
はい、サイプレスはPSoC Designerの一部である無料のImageCraftコンパイラを提供しています。PSoC Designerの最新バージョンは、次のページで入手できます。
コンパイラは、PSoC Designerソフトウェアのインストール時に自動的にインストールされます。
Show Less
Community Translated by NoTa_4591161 Version: **
Translation - English: Display a Long on LCD
質問:
PSoC Cコンパイラを使用してLCDに長い変数を表示するにはどうすればよいですか?
回答:
longはltoa関数を使用してasciiに変換し、LCD_PrString関数を使用してLCDに表示できます。コードスニペットの例を以下に示します。
#include <stdlib.h>
void main(void)
{
long myLong = 134546;
char OutputString [12];
ltoa(OutputString、myLong、10);
LCD_Position(0,0);
LCD_PrString(OutputString);
}
ltoa関数の詳細は、PSoC Designerの Help >> Documentation menuの「C言語ユーザーガイド」にあります。
Show Less
Community Translated by NoTa_4591161 Version: **
Translation - English: Linking External C Files to a PSoC Designer Project with Imagecraft Compiler
質問:
Imagecraftコンパイラを使用して外部CファイルをPSoC Designerプロジェクトにリンクする方法は?
回答:
プロジェクトディレクトリの外部にある外部ファイルをPSoC Designerプロジェクトにリンクするには、Local.mkファイルを編集する必要があります。これについては、「IDEユーザーガイド」のドキュメント(Help -> Documentation -> Designer Specific Documents)のセクションB.5.3で説明されています。
Imagecraftコンパイラを使用してPD5.1で正しくコンパイルされたサンプルプロジェクトがここに添付されています。local.mkファイルに次の行を追加することにより、外部のcファイルがリンクされました。local.mkファイルを開くには、Project -> "Open Local.mk for this Project" をクリックします。次の行を追加します。
# CSRCS is used by makedepends to get the external headers/dependencies
CSRCS:=$(CSRCS) C:/ExtFile/ExtFunctions.c
OBJECT_SOURCES:=$(OBJECT_SOURCES) ExtFunctions.c
# new rule to tell MAKE to get C files from C:/ExtFile
# DON'T have files in COMMON with the same name as this project's Source
# Files because we won't know which file MAKE will build last.
obj/%.o : C:/ExtFile/%.c
ifeq ($(ECHO_COMMANDS),novice)
echo $(call correct_path,$<)
endif
$(CCMD) $(CFLAGS) $(CDEFINES) $(INCLUDEFLAGS) $(DEFAULTCFLAGS) -o $@ $(call correct_path,$<)
注意すべき重要な点がいくつかあります。
-"echo ...."と "$(CCMD)..."の行頭にタブ(スペースではない)があります。 これらの行をコピーしてlocal.mkファイルに貼り付ける場合、これは重要です。
-メインコードの上部にある外部Cファイルで定義されている関数を宣言する必要があります。それ以外の場合、コンパイラは警告を出します。
-メインコードに「include」ステートメントを追加する必要はありません。また、.hまたはインクルードファイルを外部ディレクトリに配置している場合は、ビルダーがファイルを見つけられないため、このプロセスを変更する必要があります。
-local.mkファイルに追加されたこれらの行は、Imagecraftコンパイラでのみ機能し、Hi-Techコンパイラでは機能しません。
このサンプルプロジェクトでは、C:/Extfileにある外部ファイル "ExtFunctions.c"がリンクされています。プロジェクトをテストするには、
Community Translated by NoTa_4591161 Version: **
Translation - English: Getting an Internal Inconsistency Check Error - KBA92909
質問:
次のビルドエラーを回避するにはどうすればよいでしょうか?
!E file lister manager: internal inconsistency check error - requested XXX-XXX max lines: YYY.
Possibly the file '.\<name>.asm' is formatted not using Windows line end characters (CR LF).
回答:
このケースの場合は、Windowsの行末文字を使用してファイルを再フォーマットしてください。
問題が解決しない場合は、support @ imagecraft.comに報告してください。ご不便をおかけして申し訳ございません。
このビルドエラーの原因は、.hexファイルの生成後にリストファイルを生成するImageCraft™コンパイラプログラムです。 このエラーが発生した場合、.hexファイルは正しく生成されていますが、リストファイルは正しくありません。 この問題は、マクロが1つのアセンブリファイル(たとえば、.incファイル)で定義され、別のアセンブリファイル(<name> .asm)で呼び出された場合にのみ発生します。 また、マクロ定義は、呼び出しファイル(<name> .asm)の行数よりも大きい行から始まります。
このビルドエラーを回避するには、マクロ宣言を.incファイルから呼び出しファイル(<name> .asm)に移動する必要があります。
Show LessCommunity Translated by NoTa_4591161 Version: *A
Translation - English: Switching Between ImageCraft™ and Hi-Tech C® Compilers – KBA83349
質問:
ImageCraft™コンパイラとHi-TechC®コンパイラをどのように切り替えますか?
回答:
2つのコンパイラを切り替えるには、コンパイラオプションを変更し、移行ドキュメントを確認します。
SoC® Designer™ でのコンパイラオプション変更:
Tools > Options > Build > Compiler
または
Project > Settings > Build > Compiler
詳細はPSoC Designerに含まれる「HiTech_to_ImageCraft_Migration」ガイドをご参照願います(Help > Documentation > Compiler and Programming Documentsより入手できます)。
プロジェクトの移行に影響する機能の詳細については、ImageCraftの「C言語コンパイラユーザーガイド」(同じ場所)を参照することもできます。
注:サイプレスは、PSoC DesignerでPSoC用のHI-TECH Liteコンパイラを提供しなくなりました。 代わりに、ImageCraftの無料のCコンパイラが提供されます。
Show Less
Community Translated by JuIn_1625121 Version: **
Translation - English: ImageCraft code size optimization
回答:
質問:ImageCraftコンパイラでコードサイズの最適化を実現するためのポイントを教えてください。
返答:
ImageCraft のコードサイズを最適化する際には、この記事で紹介するようないくつかのポイントがあります。
再配置可能なコード開始アドレス
これはコンパイラが再配置可能なコードを配置し始めるアドレスです。 boot.asm コードの終わりより後ろの値を設定する必要があります。最適な「 再配置可能なコード開始アドレス」は、boot.asm コードの直後です。このアドレスが必要以上に大きい値になると、boot.asm コードの終了から再配置可能なコードまでの間のメモリを埋めるために、HALT がhexファイルに追加されます。 その結果、コードスペースが無駄になります。
ブートコードの終わりは map(project_name.mp)ファイルから取得することができ、同じものを再配置可能なコード開始アドレスとして設定することができます。
Area Start End Decimal Bytes (Attributes)
-------------------------------- ---- ---- ------- ----- ------------
TOP 0068 00F5 = 245. bytes (abs,ovr,rom)
上の例では、 TOP領域はアドレス 00F5 で終了しています。再配置可能なコード開始アドレスを設定するには、Project >> SettingsメニューでLinkerオプションを選択し、Relocatable Code Start addressに00F5を入力します。
boot.asm のサイズはデバイスファミリやグローバルパラメータの設定によって異なります。 そのため、グローバルパラメータに変更があった場合は、.mpファイルを確認し、Relocatable Code Start Addressを調整してください。
割り込みサービスルーチン(ISR)における関数呼び出し
C言語のISR内部から関数が呼び出されると、ImageCraftはすべての仮想レジスタ(__r0, __r1, __rx, __ryなど)をスタックに "プッシュ "し、リターンの前に "ポップ "します。 プロジェクト内の仮想レジスタの数にもよりますが、これは最大120バイトのコードスペースを増やすことになります。 そのため、ISR の内部から関数を呼び出すことは避けてください。 良い方法としては、ISRの内部ではフラグを設定して実際の処理はフォアグラウンドで行う、といったことがあります。
コンフィギュレーションの初期化
最適なコードサイズにするには、Project >> Settings >> Chip Editorの “Configuration Initialization Type"で「Loop(size efficient)」を選択します。
このオプションを選択すると、psocconfigtbl.asmファイルは表を利用してコンフィギュレーションレジスタの初期値を格納し、これらの表をループすることでコンフィギュレーションレジスタをロードします。これにより、実行時間を犠牲にしてコードスペースを大幅に節約することができます。"Direct Write"オプションを選択すると、各コンフィギュレーションレジスタは "mov reg[]... "命令で書き込まれます。
サブリメーション - 未使用のAPIを削除
サブリメーション機能を使用して、コードから未使用のAPIを削除します。 Project >> Settings メニューで"Code Compression Technologies" の下にある Sublimation オプションを有効にします。
コンデンセーション(重複コードの排除)
上のスクリーンショットの画面で、Condensationオプションを有効にすると、コンパイラはプロジェクト内で繰り返し現れるコードをサブルーチンで置き換え、コードが現れる場所ではこのサブルーチンを呼び出します。これにより、コードを大幅に削減することができます。
浮動小数点演算
浮動小数点演算ライブラリは整数演算ライブラリよりも多くのコードスペースを占有します。そのため、可能な限り浮動小数点演算の代わりに整数演算を使用してください。
コードの一部をアセンブラに変換
丁寧に書かれたアセンブリコードは、コンパイルされた'C'コードよりも小さいことが多いです。そのため、可能な限り、'C' コードの一部をアセンブリコードに変更してみてください。
"Switch "文 と "if-else if "文
1バイト変数(BYTE)のスイッチ文の場合、ImageCraftコンパイラはスイッチ構文よりもif-else構文を使用することでより効率的なコードを生成します。サイズの違いについてバイト数でみた場合、9バイト+各ケースにつき5バイトです。例えば、デフォルトの項目を備えた4ケースのスイッチ文は、"if - else if "を使用した同等の実装よりも、(9 + 5 * 4) = 29バイト多く使用します。
スイッチ文が2バイト変数(WORD)の場合、結果的にコードサイズは "switch "と "if-else if "のどちらの実装でもほぼ同じになります。
回答:
質問:ImageCraftコンパイラでコードサイズの最適化を実現するためのポイントを教えてください。
返答:
ImageCraft のコードサイズを最適化する際には、この記事で紹介するようないくつかのポイントがあります。
再配置可能なコード開始アドレス
これはコンパイラが再配置可能なコードを配置し始めるアドレスです。 boot.asm コードの終わりより後ろの値を設定する必要があります。最適な「 再配置可能なコード開始アドレス」は、boot.asm コードの直後です。このアドレスが必要以上に大きい値になると、boot.asm コードの終了から再配置可能なコードまでの間のメモリを埋めるために、HALT がhexファイルに追加されます。 その結果、コードスペースが無駄になります。
ブートコードの終わりは map(project_name.mp)ファイルから取得することができ、同じものを再配置可能なコード開始アドレスとして設定することができます。
Area Start End Decimal Bytes (Attributes)
-------------------------------- ---- ---- ------- ----- ------------
TOP 0068 00F5 = 245. bytes (abs,ovr,rom)
上の例では、 TOP領域はアドレス 00F5 で終了しています。再配置可能なコード開始アドレスを設定するには、Project >> SettingsメニューでLinkerオプションを選択し、Relocatable Code Start addressに00F5を入力します。
boot.asm のサイズはデバイスファミリやグローバルパラメータの設定によって異なります。 そのため、グローバルパラメータに変更があった場合は、.mpファイルを確認し、Relocatable Code Start Addressを調整してください。
割り込みサービスルーチン(ISR)における関数呼び出し
C言語のISR内部から関数が呼び出されると、ImageCraftはすべての仮想レジスタ(__r0, __r1, __rx, __ryなど)をスタックに "プッシュ "し、リターンの前に "ポップ "します。 プロジェクト内の仮想レジスタの数にもよりますが、これは最大120バイトのコードスペースを増やすことになります。 そのため、ISR の内部から関数を呼び出すことは避けてください。 良い方法としては、ISRの内部ではフラグを設定して実際の処理はフォアグラウンドで行う、といったことがあります。
コンフィギュレーションの初期化
最適なコードサイズにするには、Project >> Settings >> Chip Editorの “Configuration Initialization Type"で「Loop(size efficient)」を選択します。
このオプションを選択すると、psocconfigtbl.asmファイルは表を利用してコンフィギュレーションレジスタの初期値を格納し、これらの表をループすることでコンフィギュレーションレジスタをロードします。これにより、実行時間を犠牲にしてコードスペースを大幅に節約することができます。"Direct Write"オプションを選択すると、各コンフィギュレーションレジスタは "mov reg[]... "命令で書き込まれます。
サブリメーション - 未使用のAPIを削除
サブリメーション機能を使用して、コードから未使用のAPIを削除します。 Project >> Settings メニューで"Code Compression Technologies" の下にある Sublimation オプションを有効にします。
コンデンセーション(重複コードの排除)
上のスクリーンショットの画面で、Condensationオプションを有効にすると、コンパイラはプロジェクト内で繰り返し現れるコードをサブルーチンで置き換え、コードが現れる場所ではこのサブルーチンを呼び出します。これにより、コードを大幅に削減することができます。
浮動小数点演算
浮動小数点演算ライブラリは整数演算ライブラリよりも多くのコードスペースを占有します。そのため、可能な限り浮動小数点演算の代わりに整数演算を使用してください。
コードの一部をアセンブラに変換
丁寧に書かれたアセンブリコードは、コンパイルされた'C'コードよりも小さいことが多いです。そのため、可能な限り、'C' コードの一部をアセンブリコードに変更してみてください。
"Switch "文 と "if-else if "文
1バイト変数(BYTE)のスイッチ文の場合、ImageCraftコンパイラはスイッチ構文よりもif-else構文を使用することでより効率的なコードを生成します。サイズの違いについてバイト数でみた場合、9バイト+各ケースにつき5バイトです。例えば、デフォルトの項目を備えた4ケースのスイッチ文は、"if - else if "を使用した同等の実装よりも、(9 + 5 * 4) = 29バイト多く使用します。
スイッチ文が2バイト変数(WORD)の場合、結果的にコードサイズは "switch "と "if-else if "のどちらの実装でもほぼ同じになります。
Show Less