迷走の果て・Tiny Objects

迷走する日々の覚え書きです。自分で分かってることは省略してますので、念のため。

PSoC Designer5.0 beta 新しいユーザーモジュール SHADOWREGS

psocshadowreg

ユーザーモジュールがいくつか追加されている。
Misc Digitalには
OneShot
PWD
SHADOWREGS

SHADOWREGSのデータシートを読んでいてピンときた。
あるポートのピンをpullUpにして1を出力しておくとプルアップ抵抗付きの入力ポートとして使える。
プルアップ抵抗を外付けする必要がないのでスイッチをつなぐのに便利・・なはずなんだけど同じポートの他のピンをビット操作するとスイッチが反応しなくなることがある。
以前相当悩まされたことがある。

SHADOWREGSを使うとこの問題から開放される(はず・・まだ試してないんですわ^^;;)

例えば
PRT0DR = 0x02;
とするところを

Port0_Data_Shade = 0x02;
PRT0DR = Port0_Data_Shade;
としておけばいいらしい。
また
PRT0DR ^= 0x01;

Port0_Data_Shade ^= 0x01;
PRT0DR = Port0_Data_Shade;
とするといいのだそうだ。

データシートから引用しておく。

Example
An application uses P0[0] as a sourcing LED output, and P0[1] as a pulled-up input for a normally open switch connected to ground. After setting the drive mode registers for port 0, the firmware initializes the LED to off and enables the input with the following C statement.

PRT0DR = 0x02;

Without a shadow, register, the firmware toggles the LED by the following C statement.


PRT0DR ^= 0x01;

On the initial LED toggle operation, the value read from PRT0DR is 0x00 if the switch is closed, and 0x02 if the switch is open. Performing the XOR operation to toggle the LED results in 0x01 (0x00 XOR 0x01) if the switch is closed but 0x03 (0x02 XOR 0x01) if the switch is open when the initial toggle occurs. Toggling the LED when the switch is closed causes P0[1] to be driven to 0V internally. When the switch is opened, the value read from PRT0DR is still 0x01 because the voltage on P0[1] is still 0V. The switch input has been inadvertently disabled.

The solution is to always manipulate the shadow register first, then copy the shadow register value into the port data register. The following C statements initialize the LED output and the switch input.

Port0_Data_Shade = 0x02;
PRT0DR = Port0_Data_Shade;

The following code toggles the LED without affecting the switch input

Port0_Data_Shade ^= 0x01;
PRT0DR = Port0_Data_Shade;

スポンサーサイト

PSoC Designer5.0 beta

PSoC Designer 5.0 beta

paoc5

トランジスタ技術PSoCの記事を書いている古平氏のブログで知りました。
早速インストール。起動に時間がかかるようになった。

psoc5_2

「はじめてのPSoCマイコン」第一章 PWMLED を開いたところ。
いろいろ変わってるのでとまどう。

psoc5_3

コメントに日本語が使えるようになった!。

とりあえず、ここまで。

熱電対・リニアライズ

熱電対の起電力はこちらこちらで知ることができる。
温度に比例しているが、一直線上にのってはいない。
Kthremo080403
横軸は温度、縦軸は電圧(mV)

   0℃ 0mV
  10℃ 0.397mV
 100℃ 4.096mV
1000℃ 41.276mV

単純に約41μV/℃とみなしてもそう大きくは外れないけど、せっかくワンチップマイコンを使うのだからもうちょっと工夫してみたい。
いくつかに区切って直線補間をすることにした。
とりあえず0℃~1000℃を5つぐらいに区切ってみることにする。
零点補償のLM35DZは25 ℃において1 ℃の精度、あまり細かく区切っても意味がないだろう。

 | HOME | 

文字サイズの変更

プロフィール

edy

最新記事一覧(サムネイル画像付き)

脈拍センサーMAX30100を試す(5) May 20, 2017
MT3608モジュールを使ったDSO Shell用電源 May 16, 2017
脈拍センサー MAX30100を試す(4)MAX30100_Registers.h を調べる。 May 13, 2017
脈拍センサー MAX30100を試す(3)正常動作?? May 12, 2017
脈拍センサー MAX30100を試す(2)スケッチとライブラリー May 10, 2017
脈拍センサー MAX30100を試す(1) May 08, 2017
Studuino用電池ボックスを作る(2) May 06, 2017
Studuino用電池ボックスを作る May 05, 2017
MT3608モジュールのテスト Apr 30, 2017
BME280モジュールを使った温度・湿度・気圧計(2)DSO Shellを使って動作電流を測る Apr 23, 2017

全記事表示リンク

全ての記事を表示する

ブログリンク

リンク

このブログをリンクに追加する

月別アーカイブ

05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  12  11  10  09  07  05  04  03  04  03  01  12  11  10  08  07  06  05  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  02  01  12  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  10  09  08  07  06  05  04  03  02  01 

カテゴリ

プログラミング (0)
freescale (1)
AVR (3)
テルミン (16)
緊急警報放送 (3)
78K (1)
PSoC (295)
地上デジタル放送 (2)
電子工作 (399)
HX711 (2)
ACS712 (6)
数学 (6)
パソコン (12)
PLC (14)
未分類 (39)
ブログ関係 (20)
スカイプ (37)
ロボット (1)
LTSpice (8)
OCXO (0)
arduino (28)
maxima (1)
フランクリン発振回路 (3)
GPS (3)
DTMF (1)
Linux (1)
KOMAINO (7)

タグリスト

最近のコメント

最近のトラックバック

メールフォーム

名前:
メール:
件名:
本文:

検索フォーム

アクセス

RSSリンクの表示

フリーエリア

FC2Ad

まとめ

Template by たけやん