PSoC
PSoCとは
PSoC はCypress (現在は Infineon Technologies)が作った Programmable System on Chip です。 PSoC をマイコンと呼ぶと作った人たちに怒られそうですが、まぁ、マイコンの 仲間と思って使うのが一番素直だと思います。PSoCの特徴は何といっても アナログ・ディジタルのハードウェアブロックを内部に持っていて、 それらが、ソフトウェアから(その気になれば動的に)再構成可能という 点です。そのため、そこらのマイコンではとても不可能な処理が リアルタイムにできたり、外付けの回路が不要になったり、とにかく 初めて使うとあまりのすごさに愕然とします。いや、本当に。 研究室ではPSoCシリーズの最初期の “PSoC1” というファミリを 使っています(というか、いました)が、 強いてPSoC1の欠点を挙げるなら、コアがやや見劣りすることくらいでしょうか。
2024年現在は PSoC6 というのが最新のようです。Cortex M4コアだそうな。
PSoC Designer 5.1 で割り込みルーチンを書く
incファイルの編集
- Chip Editor の Workspace Explorer から、 【プロジェクト名[CY***]】→【プロジェクト名】→【lib】→ 【Library Source Files】と下っていく。
- 【目的のモジュールINT.asm】を開く
- コメントアウトされた lcall 付近を編集して好きな関数名に 書き換える。ただし対応するC言語の関数名の先頭にアンダースコア(_)を つけること。例:
;PRESERVE_CPU_CONTEXT
;lcall _My_C_Function
;RESTORE_CPU_CONTEXT
これ↑をこんなふう↓にする。
PRESERVE_CPU_CONTEXT
lcall _interruptUART ; ← で、C 言語で interruptUART() という関数を書く
RESTORE_CPU_CONTEXT
割り込み処理関数を書く
inc ファイルの編集のところで見たとおり単に lcall で呼ばれるだけなので
ふつうに関数を書けばいい。
巷の資料に書いてあるような
#pragma interrupt_handler hogehogeISR
のような #pragma 文は書いてはいけない。たぶんPSoC Designerの
古いバージョン向けの解説だと思う。