迷走の果て・Tiny Objects

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

デジットでお買い物

103JT070220またまたサーミスタ。
上の黒いヤツは以前に何度か買ってる石塚電子103AT-11(315円@デジット)
昨日買ったのが下の103JT-025(250円@デジット)
小さいですね、熱時定数は約5秒、ちなみに103ATのは約75秒。
サーミスタ抵抗ー温度特性表はこちら

買ったものの何に使おうか(悩)

スポンサーサイト

もう絶版とは

Pastel MagicさんのBBSで知ったんですが、「はじめてのPSoCマイコン」が品切れ絶版だそうです。

Pull Up / はまりどころ

GPIOについての覚え書き
psocpullup070213_2Open Drain

psocpullup070213_1PSoCのPull Upは上記のOpen Drainにプルアップ抵抗が付いたもの。
リセットがかかるとポートはすべて0になる、すなわちこのトランジスタはオンしている。
入力として使うにはこのトランジスタをオフ、すなわち1を出力しておく必要がある。
何らかのビット操作をしてうっかり0を出力してしまうとトランジスタがオンするのでスイッチが押されたままと同じになってしまう。
以前これで悩まされた。PSoCのはまりどころの一つ。
いわゆる「pullupが外れる」というのはこれが原因である。
High-Zにして外部にプルアップ抵抗つければこういうトラブルはないけど、せっかく内部にあるんだから使いたくなるよね。

ハロゲンヒーター

heater070211_1
某社のハロゲンヒーターなんだけど、タイマーがうるさい。
問題なのはタイマーセットしていないのにジジジという音がすること。
ばらしてタイマーを殺しておいた。必要になったら自分で作るし・・・。

heater070211_2
ワット数は800Wと400Wの切り替え式。
左の基板はなんだろうか。なにやら放熱板のようなものが見える。
ちょっと変色してるのが気になる。

heater070211_3
どうやらダイオードらしい、半波整流して400Wにしてるのか。

続きを読む »

E2PROMへの初期値設定

発酵器の温度コントローラだが女房の要請により温度センサを追加した。
前と同じ石塚電子の103AT-11
二つ並べて室温を測定してみたところ。
hakkou070206

よく揃ってます。ちなみに一行目は設定温度。

他の改造点は
・Watchdog Timerで万一の暴走の場合にリセットをかけるようにした。
・E2PROMに設定温度を記録するようにした。

問題はプログラムを書き換えるたびに、E2PROMへ書いたデータがクリアされてしまうこと。よく使う設定温度は25度ぐらいなのだけどその値までスイッチを何回も押すのは面倒だ。
なんとかならんのかと調べていて見つけました。
Dr.Matrix.jp仮想EEPROMについてから一部引用させて頂く。

下記のように#pragmaを利用すると、FlashROM絶対アドレスに初期値を書き込めます。

#pragma abs_address 0x3FC0 //@EEPROM_1
const BYTE InitialLED = 0x02;
#pragma end_abs_address


私のやりたいのはフロート値の記録なので
#pragma abs_address 0x3FC0 //@EEPROM_1
const float Initialtemp = 25.0;
#pragma end_abs_address
としたところうまくいった。
Dr.Matrixさんに感謝!

Watchdog Timerリセットを知る方法

何らかの理由で暴走した場合、Watchdog Timerでリセットをかけることが出来るのがわかったけど、それを知る方法がないかを調べてみた。 Technical Reference Manualのp485には

30.3.2 CPU_SCR0 Register Bit 5: WDRS. The WatchDog Reset Status bit may not be set. It is normally ‘0’ and automatically set whenever a watchdog reset occurs. The bit is readable and clearable by writing a zero to its bit position in the CPU_SCR0 register.


とある、CPU_SCR0レジスタのbit5を読めばいいらしい。

続きを読む »

コンデンサでつまずく

Watchdog Timerのテストをしてみた。
P_0_7はpull upにし、チャッタリングキャンセル用に抵抗とコンデンサを入れる。
先に書くとこのコンデンサがつまずきの原因だった。
P_1_7にLED_1を配置した。
スリープタイマは1Hzに設定した。WDT070203



#include <m8c.h>        // part specific constants and macros
#include "PSoCAPI.h"    // PSoC API definitions for all User Modules


void main()
{
    // Insert your main routine code here.
    LED_1_Start();
    LED_1_On();
    
    PRT0DR=0x80;
   
    M8C_EnableWatchDog;
   
    while(1) {
        while(PRT0DR & 0x80) { ; } // スイッチが押されるのを待つ
            LED_1_Off();
            M8C_ClearWDT;
        while((PRT0DR & 0x80)==0) { ; } // スイッチが離されるのを待つ
    }
 }

スタートするとLED_1が点灯する。
スイッチを押すと消える、以後三秒以内の周期でスイッチを押し続けるとLED_1は消えたまま(通常動作時を想定している)だが、三秒以上押さないでいるとWatchdog Timerのリセットがかかり
LED_1が再点灯する(ノイズその他による暴走時を想定している)・・・はずなのだが。

スタートさせてもLED_1は消えたままなのだ。

スタート時コンデンサは空なのでプルアップ抵抗を通じて充電される。
電圧がHレベルになるのに要する時間はプルアップ抵抗5KΩ、コンデンサ0.1μFとして約0.2mS。
その間スイッチが押されたのと同じになるわけで、それが予想外の動きをした原因だった。
対策としては
PRT0DR=0x80;
の後に
while((PRT0DR & 0x80)==0) { ; }
をいれてP_0_7がHレベルになるまで待つようにした。これで予定通りの動きをするようになった。

Watchdog Timerの動作と関係はないが、小一時間ほど嵌ってしまったので、忘れないように記録しておく。

Watchdog Timerの使い方

少し前に作った発酵器の温度コントローラだけど、スイッチが反応しなくなることがあったそうだ。
じつは天然酵母の培養のために何日もつけっぱなしにしているんだけど、原因はわからないけど暴走したみたいだ。
ノイズかな~?

こういうときはWatchdog Timerを使うんだろうけど、どうやるのかわからない。

あれこれ調べると、どうやら
M8C_EnableWatchDog
M8C_ClearWDT
を使えばよさそうだ。

Watchdog TimerはSleep Timerの設定の三倍の時間で動作するようなので、最大三秒。
最初にM8C_EnableWatchDogを実行しておき三秒以内にM8C_ClearWDTを定期的に実行すればいいのだろう。
暴走してM8C_ClearWDTが実行されなければ、リセットがかかるということか。

ネットでゲット / VSoC

CY3210-PSoCEVAL1をゲットしました。psoc070201_1

LCDは付いていません。そこで以前セミナーに参加してもらったCY3212-CapSenceのLCDを外して付けてみたらぴったり。psoc070201_2

psoc070201_3

早速これで以前見つけたVSoCを試してみました。
psoc070201_4

動画です、蛍光灯が写りこんでる(汗)。
写りが悪いですが(腕のせい^^;ごめんなさい)、実際の画面はきれいに出ています。


 | HOME | 

文字サイズの変更

プロフィール

edy

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

BME280モジュールを使った温度・湿度・気圧計(2)DSO Shellを使って動作電流を測る Apr 23, 2017
BME280モジュールを使った温度・湿度・気圧計 Apr 23, 2017
DSO Shell(2)電源 Apr 16, 2017
小学一年生5月号付録 ドラえもん こえピアノ Apr 14, 2017
DSO Shell(1) Apr 13, 2017
非接触温度センサMLX90614を試す(6)プラケースに入れる Apr 03, 2017
アナログフィルタ Mar 28, 2017
非接触温度センサMLX90614を試す(5)Arduino pro miniを使ってみる Mar 19, 2017
非接触温度センサMLX90614を試す(4)耳内温を測ってみる。 Mar 12, 2017
非接触温度センサMLX90614を試す(3) Mar 11, 2017

全記事表示リンク

全ての記事を表示する

ブログリンク

リンク

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

月別アーカイブ

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)
電子工作 (390)
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 たけやん