ラベル GreenPAK の投稿を表示しています。 すべての投稿を表示
ラベル GreenPAK の投稿を表示しています。 すべての投稿を表示

2026年7月3日金曜日

GreenPAK : CNT/DLYについて

 もうすでにブログ等で書いておられる方も多いのですが、いじって失敗しないと覚えないタイプなので、基礎的なところから再履修しております。

CNT / DLYの動作です。条件は固定しました。

  • 入力(緑色)はHigh 1sec + Low 4secの繰り返し
  • CNT / DLYの設定
    • クロック入力 : CLK0 / 64 = 32Hz
    • Edge Mode Select : Rising
    • あとはデフォルト
  • 出力は青色です

では、見ていきます。

One Shot

これは非常に素直ですね、Edgeで設定した幅のパルスが出ます。

Delay

立ち上がりのパルスから計時開始、設定した時間が経過したところでパルスが立ち上がります。750mSecにすると立ち上がりから250mSec後に出力が立ち上がり、入力パルスがLowに下がると出力もLowに。

ただ、設定したDelay幅よりも入力幅が短いと何も出ません。以下は1500mSec設定です。

Frequency Detect(Rising)

基本的に入力するパルスの周期 <= 設定した周期 ならば出力Highになります。ただ、<のときと=の時では、最初にHighになるタイミングが一つズレます。

上の通り5秒未満に設定すると何も出ません。

5秒だと10秒のところでHIGHになります。

5秒以上に設定すると5秒からHIGHになります。たぶん「設定した秒数よりも短い間隔でパルスが来ればHighになる」というのが本来の機能なのだと思いますが、起動後はPORなどでうまくカウントがスタートしないんでしょうね。

Frequency Detect(Both)

上記はEdgeをRisingにしていましたが、Bothにすると↑↓の1秒と↓↑の4秒にそれぞれ反応します。

1秒


4秒未満


4秒


4秒より大きい


Reset Conter

Edge(この場合はRising)が来ると設定した間隔でパルスを出し始め、次のEdgeが来るとまたパルスを出し始めます。

Edge Detect

名前の通り、Edge(例によってriging)が来ると短いパルスを出します。他のCNT系はクロック幅のパルスを出すのですが、ここは短いのが出ます。Counter値を変えても特に何も起こりません。

Delayed Edge Detect

前記Delayとは違ってパルスを出します。ただ、Delay同様に入力信号のパルス幅よりも長いdelayを設定すると出力なんもでません。

まず500mSec。Edge(Rising)の500mSecあとに細いパルス出ていますね。

1Sec以上に設定するとパルス出ません。

まとめ

Delay / Delayed Edge Detectは、ちょっと試したときに意図した動作をしなかったので、放置していたのですが、Delayed Edge Detectのような機能を実装するのにCNTを2つとLUT一つ使っていたので、とても助かりますw

やっぱ基礎大事っす……細かく動作確認しないと駄目ですわね。

FSMも「アップダウンカウンターっすか?」とか言ってないで、ちゃんと調べないといけないな……

2026年6月20日土曜日

GreenPAKの開発ツール

ソフトはGo Configureで1本化されているので問題なし。GreenPAKに対してはI2Cでマイコン等から書き込めるとはいえ、Go Configureとのやり取りには開発キットが必要です。

当初秋月でも売ってたDIP Development Kitは、liteに近い機能があったけどdeprecatedっぽい。安くて便利だったのに残念。

DIPの次はSerial Debugger使ってくれってことだけど、DIPは外部にピンを引き出したりすることができたのにSerial DebuggerはI2Cでの読み書き専用です。

開発ボードとして何を買って良いのかどう組み合わせるべきなのか等の網羅的な資料を探しても見つからないので調べて簡単にまとめてみました。

表記揺れ大文字・小文字ミス、認識誤り等ご指摘いただければ幸いです。

DIP Development Platform

読み書き、ピンを外に引き出して外部回路とつないだ状態でのテストができたけど現在はdeprecated。

Serial Debugger

I2Cでの読み書き用。

Lite

各ピンをON/OFFしたり外に引っ張って信号を入れるような使い方ができる。DIPの後継機・上位機種? 秋月で売ってるDIP化GreenPAK SLG46826もそのまま挿せるし、オプションのソケットアダプター(TSSOPなどのチップをそのままZIFにはさんでテスト書き込みができる)も使える

Intro-kit

LiteにDIP版のサンプルGreenPAKを何個か付けたもの。お買い得。

Advanced

さらに上位機種で信号波形やタイミングを定義して実際の信号としてチップに入力できる。

Go Configureで電圧源・信号源として各種デジタル信号パターン / アナログ信号波形などを設定してエミュレーションできるようになっていますが、あれが実チップに対して行えるという素晴らしい世界。

Go Configure Development Board(GCDB)

さらに上位機種としてForgeFPGAも使える予定(なおGreenPAK / ForgeFPGAのためのExtention Boardは未発売なので2026年5月現在何にもできない)
  • GCDB
  • +GreenPAK / ForgeFPGA Extension Board
  • +チップ(パッケージ)ごとのアダプタ
という構成が必要。20ピンDIPもDIPアダプタを追加すれば使えるっぽい。

……というまとめであってます? 

2025年8月16日土曜日

GreenPAK:I2Cでone shotの待ち時間を書き換える

AtomからCounterの書き換えを実験している図

自分へのメモです。

いろいろな超低消費電流タイマーICが市販されていますが……ちょっと用途に即していなくて、「探すより作った方が早い……しかし、超低消費電流は無理」と思っていたのですが……GreenPAKで試して見たら、デバッガー画面に0.5uAぐらいの数値が表示されているではありませんか! これなら専用ICに勝てないまでも電池の自己消費には勝てる!

ということで何度目かの挑戦です。

やりたい動作は、

  • 起動時にはHIGHのままでマイコンに電源を供給する(でないと何もできない)
  • あるビットをHIGHにすると、x秒後に制御ピンをLOWにした後、y秒後にHIGHにする。
  • xとyはI2Cで書き換え可能だけど、電源入れ直すと初期化される
という処理です。

Grid Alignmentが欲しい

TP2が制御入力、TP13が制御出力。

SetとResetタイマーはワンショットで、設定した秒数後にLOWになります。そのあとにもう1個ずつワンショットを入れて、前段のダウンエッジから短いパルスを作ります。

そのあとにLUTを4つも使っているのは教科書に出ているSET優先RSフリップフロップです。ルネサスさんがD-FF x 2で作れるRSフリップフロップってのを公開していて試したんですが、なんか動いてくれず……それでNAND x 4で作りました。

動きました。半日かかりましたけどもね……。

で、次に、I2C制御です。初期設定のままだとGreenPAKさんは0x08がI2Cアドレスとのことで、そこにレジスタアドレスと値を書き込んでやれば、OKです。

レジスタアドレスはどこかのドキュメントに出ているんでしょうか……探しても見つからなかったので、

  • NVM Viewerを開く
  • 目的のCounterを選ぶとそれに関する設定ビットが青で表示される

  • 青の幅の広いところをクリックする

  • 値が表示される。counter dataには7が入っているので、0xA6-0xA5がソレではないだろうかとあたりをつけてcounter dataに65535を入力してApplyボタン

  • 変わったビットが緑色になる。0xA6-0xA5を見るとちゃんと全部1になっているのでこれだ!

……という方法で調べました。

もっと良い方法(=楽な方法)があるんじゃないか?と思って探したんですが見つからず。たぶん、これをTwitter(X)に貼ると「ここ見ると一瞬だぜ」って方法を教えてもらえるんですよね……。

I2Cでの書き換えはごく単純に8bitずつ書き換えます。今回は止まっている時に書き込みますが、動いている時だと順番や状態に気を付けましょう。

    Wire.beginTransmission(GREENPAK_ADDR);
    Wire.write(REG_ADDR);
    Wire.write(value);
    Wire.endTransmission();

これだけです。

消費電流はDMMでの計測で2-4uAぐらいでした。

以下、うっかりへのメモです。

  • DIP基板のピン番号はデバッガ画面のTPボタンを押して出てくるヤツ。設定画面のPIN xxを信じて「動かねえ」とか言っちゃダメ。以前Lチカやったときはたまたま一致しているピンだったんですかね。
  • 上記TPボタンを押すとVDDもVDDもTP1って表示されるんですけども、実際にはTP1とTP14に電源を供給しないと動いてくれませんでした。設定の問題なのかしら。
  • PORはレベル(HIGH)、よくあるリセット回路みたいなパルスがくるわけではないので気を付ける。