夏休みの宿題【TMS320F2837xS Delfino】
仕事が終わらないまま職場を追い出され、連休に突入してしまった。
仕事なんてものは職場の外へ持ち出すべきではないのだが(法律や仕事のべき論ではなく、精神衛生の話)、非常に残念なことにこの夏期休暇、天候に恵まれそうにない。
んじゃーまあいっちょ仕事しますか、というわけで、お家で調べ物です。
といっても、ただひたすらにgoogle翻訳に英文を食わせるだけなのですけれどもね。
Analog Subsystem
このアナログサブシステムモジュールについては、この章で説明します。
8.1 Analog Subsystem
このデバイスのアナログモジュールには、ADC(アナログ - デジタルコンバータ)、温度センサ、バッファ付きデジタル/アナログコンバータ(DAC)、コンパレータサブシステム(CMPSS)などがあります。
8.1.1 Features
アナログサブシステムには次の機能があります。
- フレキシブルなリファレンス電圧
- フレキシブルなピンの使用
- ADC入力と多重化されたバッファ付きDACおよびコンパレータ・サブシステム機能
- オフセット自己校正用のすべてのADCのVREFLOへの内部接続
8.1.2 Block Diagram
サブシステムブロック図には、さまざまな統合アナログモジュールとデバイスピンの接続が示されています。
これらのピンは2つのカテゴリに分類されます。アナログモジュールの入出力端子とリファレンス端子です。
リファレンスピン、VREFHIA〜VRFHID、およびVREFLOA〜VREFLODは、ADCへのリファレンスを外部から供給するために使用できます。
VREFHIAを使用してDAC AとDAC Bに基準電圧を供給し、VREFHIBを使用してDAC Cにリファレンスを供給することもできます。
アナログモジュールの入出力は、デフォルトではすべてADC入力です。
CMPSS入力に接続するピンは、それ以上の動作なしに、かつADC入力としての使用を同時に防止することなく、CMPSSに使用することができます。
DAC出力をイネーブルにする必要があります。 これにより、チャネルがADC入力として同時に使用されることはありません(ただし、必要に応じてADCを使用してDAC出力電圧をサンプリングすることができます)。
VDACリファレンスピンを使用して、DAC A、DAC B、およびDAC C、およびCMPSSモジュール内のDACの代替範囲を設定できます(CMPSS DACはデフォルトでVDDAおよびVSSAを参照します)。
このピンをリファレンスとして使用すると、チャネルがADC入力として使用されなくなります(ただし、必要に応じてADCを使用してVDAC電圧をサンプリングできます)。
リファレンスの選択は、各CMPSSまたはバッファ付きDACのモジュールごとに設定可能で、選択はモジュールのコンフィギュレーションレジスタを介して行われます。
アナログサブシステムのブロック図は、次の図に示されています。
- Figure 8-1. Analog Subsystem Block Diagram (337-Ball ZWT)
- Figure 8-2. Analog Subsystem Block Diagram (176-Pin PTP)
- Figure 8-3. Analog Subsystem Block Diagram (100-Pin PZP)
(図 省略)
NOTES:
- すべてのアナログピンがすべてのデバイスで使用できるわけではありません。
使用可能なピンを特定するには、特定のデバイスのデータシートを参照してください。 - ご使用のデバイスのデータシートを参照して、VREFHIおよびVREFLOの許容電圧範囲を決定してください。
- VREFHIピンには外付けコンデンサが必要です。
必要な特定の値については、データシートを参照してください。 - バッファ付きDACモジュールの場合、VREFHIxまたはVDACがハイリファレンスとして選択されているかどうかに関係なく、VSSAはローレファレンスになります。
- CMPSSモジュールの場合、VDACまたはVDDAが高基準として選択されているかどうかに関わらず、VSSAは低基準になります。
8.1.3 Lock Registers
LOCKレジスタのTSNSCTLビットをセットすると、TSNSCTLレジスタのそれ以上の変更は無効になります。
8.2 Registers
8.2.1 Analog Subsystem Base Addresses
Table 8-1. Analog Subsystem Base Address Table
Device Registers | Register Name | Start Address | End Address |
---|---|---|---|
AnalogSubsysRegs | ANALOG_SUBSYS_REGS | 0x0005_D180 | 0x0005_D1FF |
8.2.2 ANALOG_SUBSYS_REGS Registers
表8-2に、ANALOG_SUBSYS_REGSのメモリマップレジスタを示します。
表8-2にリストされていないすべてのレジスタオフセットアドレスは予約された場所とみなされ、レジスタの内容は変更しないでください。
Table 8-2. ANALOG_SUBSYS_REGS Registers
Offset | Acronym | Register Name | Write Protection |
---|---|---|---|
20h | INTOSC1TRIM | Internal Oscillator 1 Trim Register | EALLOW |
22h | INTOSC2TRIM | Internal Oscillator 2 Trim Register | EALLOW |
26h | TSNSCTL | Temperature Sensor Control Register | EALLOW |
2Eh | LOCK | Lock Register | EALLOW |
36h | ANAREFTRIMA | Analog Reference Trim A Register | EALLOW |
38h | ANAREFTRIMB | Analog Reference Trim B Register | EALLOW |
3Ah | ANAREFTRIMC | Analog Reference Trim C Register | EALLOW |
3Ch | ANAREFTRIMD | Analog Reference Trim D Register | EALLOW |
複合ビットアクセスタイプは、小さなテーブルセルに収まるようにエンコードされます。
表8-3に、このセクションのアクセスタイプに使用されるコードを示します。
Table 8-3. ANALOG_SUBSYS_REGS Access Type Codes
Access Type | Code | Description |
---|---|---|
Read Type | ||
R | R | Read |
R=0 | R | Read |
Write Type | ||
W | W | Write |
WOnce | W | Write |
Reset or Default Value | ||
-n | リセット後の値 またはデフォルト値 |
8.2.2.1 INTOSC1TRIM Register (Offset = 20h) [reset = 0h]
Internal Oscillator 1 Trim Register Table 8-4. INTOSC1TRIM Register Field Descriptions
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
31-24 | RESERVED | R | 0h | Reserved |
23-16 | RESERVED | R | 0h | Reserved |
15-12 | RESERVED | R | 0h | Reserved |
11-0 | VALFINETRIM | R/W | 0h | Oscillator Value Fine Trim Bits. このレジスタは、TI Errataまたはその他の文書で特に指示されていない限り、変更してはなりません。 このレジスタの内容を変更すると、このモジュールがデータシートの仕様外で動作する可能性があります。 |
8.2.2.2 INTOSC2TRIM Register (Offset = 22h) [reset = 0h]
Internal Oscillator 2 Trim Register
Table 8-5. INTOSC2TRIM Register Field Descriptions
→Table 8-4. INTOSC1TRIM Register Field Descriptionsと同じ内容のため割愛。
8.2.2.3 TSNSCTL Register (Offset = 26h) [reset = 0h
Temperature Sensor Control Register
Table 8-6. TSNSCTL Register Field Descriptions
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
15-1 | RESERVED | R | 0h | Reserved |
0 | ENABLE | R/W | 0h | Temperature Sensor Enable. このビットにより、ADCへの温度センサ出力が可能になります。 ・0:無効 ・1:有効 |
8.2.2.4 LOCK Register (Offset = 2Eh) [reset = 0h]
Lock Register
Table 8-7. LOCK Register Field Descriptions
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
31 | RESERVED | R | 0h | Reserved |
30 | RESERVED | R | 0h | Reserved |
29 | RESERVED | R | 0h | Reserved |
28 | RESERVED | R | 0h | Reserved |
27 | RESERVED | R | 0h | Reserved |
26 | RESERVED | R | 0h | Reserved |
25 | RESERVED | R | 0h | Reserved |
24 | RESERVED | R | 0h | Reserved |
23 | RESERVED | R | 0h | Reserved |
22 | RESERVED | R | 0h | Reserved |
21 | RESERVED | R | 0h | Reserved |
20 | RESERVED | R | 0h | Reserved |
19 | RESERVED | R | 0h | Reserved |
18-7 | RESERVED | R | 0h | Reserved |
6 | RESERVED | R | 0h | Reserved |
5 | RESERVED | R | 0h | Reserved |
4 | RESERVED | R | 0h | Reserved |
3 | TSNSCTL | R/WOnce | 0h | Temperature Sensor Control Register Lock. このビットをセットすると、将来のそれぞれのレジスタへの書き込みが無効になります。 このビットはリセットによってのみクリアできます。 |
2 | RESERVED | R | 0h | Reserved |
1 | RESERVED | R | 0h | Reserved |
0 | RESERVED | R | 0h | Reserved |
8.2.2.5 ANAREFTRIMA Register (Offset = 36h) [reset = 0h]
Analog Reference Trim A Register
Table 8-8. ANAREFTRIMA Register Field Descriptions
Bit | Field | Type | Reset | Description |
---|---|---|---|---|
31-24 | RESERVED | R | 0h | Reserved |
23-16 | RESERVED | R | 0h | Reserved |
15-11 | IREFTRIM | R/W | 0h | Reference Current Trim. このビットフィールドは、基準電流トリム値を定義します。 ・0x0:Untrimmed ・その他すべての値:Trimmed |
10-6 | BGSLOPETRIM | R/W | 0h | Bandgap Slope Trim. このビットフィールドは、バンドギャップスロープトリム値を定義します。 ・0x0:Untrimmed ・その他すべての値:Trimmed |
5-0 | BGVALTRIM | R/W | 0h | Bandgap Value Trim. このビットフィールドは、バンドギャップ電圧オフセットトリム値を定義します。 ・0x0:Untrimmed ・その他すべての値:Trimmed |
8.2.2.6 ANAREFTRIMB Register (Offset = 38h) [reset = 0h]
Analog Reference Trim B Register
Table 8-9. ANAREFTRIMB Register Field Descriptions
→Table 8-8. ANAREFTRIMA Register Field Descriptionsと同じ内容のため割愛
8.2.2.7 ANAREFTRIMC Register (Offset = 3Ah) [reset = 0h]
Analog Reference Trim C Register
Table 8-10. ANAREFTRIMC Register Field Descriptions
→Table 8-8. ANAREFTRIMA Register Field Descriptionsと同じ内容のため割愛
8.2.2.8 ANAREFTRIMD Register (Offset = 3Ch) [reset = 0h]
Analog Reference Trim D Register
Table 8-11. ANAREFTRIMD Register Field Descriptions
→Table 8-8. ANAREFTRIMA Register Field Descriptionsと同じ内容のため割愛
時間切れにつき、宿題終了。
この手のドキュメントは英語で書かれていることもさることながら、ハードウェアの細かな動作や動作原理の説明をしているだけなのか、それともドライバなどのソフトウェア側で何かしてあげないといけないということを語っているのかの区別が付きづらくて困る。
もーちょっと組み込みエンジニアに分かり易く書いていただけないモノかしら。
「退屈なことはPythonにやらせよう」を読む(随時更新)
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング
- 作者: Al Sweigart,相川愛三
- 出版社/メーカー: オライリージャパン
- 発売日: 2017/06/03
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る
本書を読む理由
曲がりなりにもITスキルを有し、ITエンジニアを名乗り、日々プログラミングしている人間が、何故に本書を読むのか。
それはまあ、ブログタイトルの通りである。
「底辺プログラマで技術の向上を目指しているけれどやりたい事が無くて困っている」。
どちらかというと、pythonそのものではなく、自動化できる処理にどのようなものがあるのかが知りたくて、本書を手に取った次第である。
python力……たったの5か……ゴミめ……
でぇじょぶだ、Cなら30くらいはある!
(読者たる私のプログラミング能力を問われた気がした)
python自体に関しては、多少入門書や入門サイトを眺めて、文法をコンソール上で確認した程度。
知らないことの方が多い。
訳者まえがき
なんか意識高い系なこと書いてあんな……。
なん・・・だと・・・?
本書で紹介しているモジュールを使って、Word、Excelからデータを取り出す……?
そんなことが!?
(先ほどのゆで汁!?でお馴染みの全部捨てた女の子の画像を思い出して頂きたい)
なお、本書には、クラスや、ジェネレータ、リスト内包表記といったPythonの高度な機能の説明はありません。
この辺のことについてはこれらで確認しようと思っている。
- 作者: 大津真
- 出版社/メーカー: インプレス
- 発売日: 2016/03/18
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
- 作者: 伊藤裕一
- 発売日: 2016/11/06
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 伊藤裕一
- 発売日: 2016/11/06
- メディア: Kindle版
- この商品を含むブログを見る
まえがき
本書を読むと、次のような作業を自動化できるらしい。
- 何千個ものファイルを移動し、名前を変え、フォルダに分ける。
→.cmdとか.shでバッチ処理くらいは作れると思う。 - オンラインのフォーム(申し込み画面)を、キーボードを使わずに入力する。
→ちょろめを始めとして、最近のwebブラウザならみんなやってくれるんじゃないの? - Webサイトが更新されたら、自動的にファイルをダウンロードしたりテキストをコピーする。
→RSSを受け取るところまでしか想像できない。これは有益そう。 - Excelのスプレッドシートを更新・整形する
→今はサクラエディタの正規表現で変換したりしてるので、これは助かるかも。 - 電子メールをチェックして、事前に用意しておいた返事を送信する
→なんか、インシデントが怖ぇな……。
推奨のコーディングスタイルに反することがありますが(例えば、グローバル変数の使用)、その代わりコードが簡単で習得しやすくなっています。
ふーん、推奨のコーディングスタイルとかあるのか。
あとで調べてみよう。
pythonのプログラミング環境については、`Visual Studio Code`で準備した。
ついでなので、`pylint`も導入してみた。
あ、本書のすべてのプログラムは`python3`で動作するように書かれているそうだ。
第Ⅰ部Pythonプログラミングの基礎
1章Python入門
- 1.1 式をインタラクティブシェルに入力する
- 1.2 整数、浮動小数点数、文字列型
- 1.3 文字列の連結と複製
- 1.4 変数に値を格納する
- 1.4.1 代入文
- 1.4.2 変数名
→Pythonの公式コーディングスタイルPEP8
変数名はアンダースコアでつなぐスタイルが望ましいのか。
この辺のことは [これ](Dive Into Python 3 日本語版) を読んだ時に一通り確認した。
- 1.5 最初のプログラム
本書記載の最初のプログラム、`hello.py`を`pylint`にかけてみると、スコアは4.44 / 10であった。
原文ママをここに転載するのは気が引けるので、後で`pylint`スコアを高めたものを掲載。
hello.py
"""このプログラムは挨拶を表示して名前と年齢を尋ねる""" # -*- coding: utf-8 -*- print('Hello world!') # ❷ print('What is your name?') # 名前を尋ねる MY_NAME = input() # ❸ print('It is good to meet you, ' + MY_NAME) # ❹ print('The length of your name is:') # 名前の長さを表示 ❺ print(len(MY_NAME)) print('What is your age?') # 年齢を尋ねる ❻ MY_AGE = input() print('You will be ' + str(int(MY_AGE) + 1) + ' in a year.') # 来年の年齢を表示
あまり修正する意味を感じないな……。
- 1.6 プログラムを分析する
- 1.6.1 コメント
→pythonの行末までのコメントは# - 1.6.2 print()関数
1.6.3 input()関数
→C言語で同じようなことをするのに比べると、随分と簡単に実現できる。PEP8
では、const変数は大文字にするのが推奨の模様。1.6.4 ユーザー名を表示する
式は常にひとつの値に評価されるのでしたね。
- 1.6.1 コメント
実は、このinput()関数、もっと便利に使用できる。
print('Hello world!') # ❷ # print('What is your name?') # 名前を尋ねる MY_NAME = input('What is your name? : ') # ❸
input()関数の引数に、入力を促す(ためだけに使用するわけじゃないけど)ための文字列を取ることが出来るのだ。
便利~。
- 1.6 プログラムを分析する
- 1.6.5 len()関数
- 1.6.6 str(), int(), float()関数
→len()もそうだが、そもそも、こういうチェックの甘そうなソースコードを見ると意地悪したくなるのがプログラマーの性だ。
‘What is your name?'と聞かれたところで、意地悪して18
などの整数を入力してみる。
すると、"It is good to meet you, 18"と平然と返してきた。
……当然である。
なぜって、input()関数はキーボードから入力されたものを"文字列"にして返す関数だからだ。
整数値、浮動小数点数値を入力しても、"数値"→数"字"→文字列になってしまうのである。
クソっ、よく出来てやがるな……!!
いわゆるキャスト系の関数にも特に目新しいことは無いかな。
なお、"What is your age?“と訊かれた際に"aaaa"などと入力すると、キャストがうまくできずにValueErrorとなる。
(以下、随時追加更新していく予定。)
(余談。本文中に下記への言及がまだ出てきてないけど、これからなのかな?)