fc2ブログ

PIC MPLAB X IDEのFont Size(備忘録)

MPLAB X IDE v6.15のユーザーインターフェース部分のフォントのサイズを変更します。
エディタのフォントサイズではありません。

起動時に --fontsize xx のコマンドライン引数を指定する。
※ xx部分がサイズ
"C:\Program Files\Microchip\MPLABX\v6.15\mplab_platform\bin\mplab_ide64.exe" --fontsize 18

フォントのサイズとして 18 を指定した例

■注意: xxの数値は受け付けない値がある模様で、そのような値を指定して実行すると、起動しなかった。

サンプル


■ 引数なし(デフォルト)
PIC MPLAB X IDEのFont Size(備忘録)


■引数 --fontsize 18
PIC MPLAB X IDEのFont Size(備忘録)

■引数 --fontsize 24
PIC MPLAB X IDEのFont Size(備忘録)

fontsize 24の時の各部
PIC MPLAB X IDEのFont Size(備忘録)


PIC MPLAB X IDEのFont Size(備忘録)


PIC MPLAB X IDEのFont Size(備忘録)

スポンサーサイト



PIC C言語 define(マクロ)のネストによるメンバ名の作成(備忘録)

PICのRB3ピンにスイッチを付け、それを押す事によりclear処理を起動したい。
しかし、PB3ピンは都合により他のピンに変更するかもしれないので、defineでピン番号を指定したい。

そして、 PORTBbits.RB3 == 1 ではなく、 clearPin == 1 としたい。

#define clearPinNo 3
#define clearPin PORTBbits.RB3 ← この「3」の部分を clearPinNo で柔軟に変更したい。

が、難しい。

やっと出来たので備忘録です。

■sample1
「#define clearPinNo 3」の指定で、 PORTBbits.RB3 が生成され 結果 「BCF PORTB, 0x3」 となる例(0x3がポイント)
//Sample 1
//External Definition
#define clearPinNo 3
#define clearPin clearPinX(clearPinNo)

//Internally Definition
#define clearPinX(no) clearPinY(no)
#define clearPinY(no) PORTBbits.RB##no

void sample1() {
    clearPin = 1;
    clearPin = 0;
    
    if (clearPin == 1) {
        clearPin = 0;
    }
}

アセンブラに変換されたところ
22:            void sample1() {
23:                clearPin = 1;
0354  0020     MOVLB 0x0
0355  158D     BSF PORTB, 0x3
24:                clearPin = 0;
0356  118D     BCF PORTB, 0x3
25:                
26:                if (clearPin == 1) {
0357  1D8D     BTFSS PORTB, 0x3
0358  2B5A     GOTO 0x35A
0359  2B5B     GOTO 0x35B
035A  2B5C     GOTO 0x35C
27:                    clearPin = 0;
035B  118D     BCF PORTB, 0x3
28:                }
29:            }
035C  0008     RETURN


マクロ展開過程を手動でシュミレーション
void sample1_DeploymentSimulation(){
    clearPin = 1;
    clearPinX(clearPinNo) = 1; //<-- clearPin = 1;
    clearPinY(3) = 1;  //<-- clearPinX(clearPinNo) = 1;
    PORTBbits.RB3 = 1; //<-- clearPinY(3) = 1;
}

展開過程毎にアセンブラに変換されたところ
31:            void sample1_DeploymentSimulation(){
32:                clearPin = 1;
0387  0020     MOVLB 0x0
0388  158D     BSF PORTB, 0x3
33:                clearPinX(clearPinNo) = 1; //<-- clearPin = 1;
0389  158D     BSF PORTB, 0x3
34:                clearPinY(3) = 1;  //<-- clearPinX(clearPinNo) = 1;
038A  158D     BSF PORTB, 0x3
35:                PORTBbits.RB3 = 1; //<-- clearPinY(3) = 1;
038B  158D     BSF PORTB, 0x3
36:            }
038C  0008     RETURN



■sampl2
レジスタ名とメンバ名が固定だったものをdefineで指定できるようにした場合。
//Sample 2
//External Definition
#define startStopPinReg PORTBbits.RB
#define startStopPinNo 0

#define startStopPin RegPinX(startStopPinReg,startStopPinNo)

//Internally Definition
#define RegPinX(regName,no) RegPinY(regName,no)
#define RegPinY(regName,no) regName##no

void sample2() {
    startStopPin = 1;
    startStopPin = 0;

    if (startStopPin == 1) {
        startStopPin = 0;
    }
}

アセンブラに変換されたところ
31:            //Sample 2
32:            //External Definition
33:            #define startStopPinReg PORTBbits.RB
34:            #define startStopPinNo 0
35:            
36:            #define startStopPin RegPinX(startStopPinReg,startStopPinNo)
37:            
38:            //Internally Definition
39:            #define RegPinX(regName,no) RegPinY(regName,no)
40:            #define RegPinY(regName,no) regName##no
41:            
42:            void sample2() {
43:                startStopPin = 1;
034B  0020     MOVLB 0x0
034C  140D     BSF PORTB, 0x0
44:                startStopPin = 0;
034D  100D     BCF PORTB, 0x0
45:            
46:                if (startStopPin == 1) {
034E  1C0D     BTFSS PORTB, 0x0
034F  2B51     GOTO 0x351
0350  2B52     GOTO 0x352
0351  2B53     GOTO 0x353
47:                    startStopPin = 0;
0352  100D     BCF PORTB, 0x0
48:                }
49:            }
0353  0008     RETURN


マクロ展開過程を手動でシュミレーション
void sample2_DeploymentSimulation(){
    startStopPin = 1;
    RegPinX(startStopPinReg,startStopPinNo) = 1; //<-- startStopPin = 1;
    RegPinY(PORTBbits.RB,0) = 1; //<-- RegPinX(startStopPinReg,startStopPinNo) = 1;
    PORTBbits.RB0 = 1; //<-- RegPinY(PORTBbits.RB,0) = 1;
}

展開過程毎にアセンブラに変換されたところ
60:            void sample2_DeploymentSimulation(){
61:                startStopPin = 1;
0381  0020     MOVLB 0x0
0382  140D     BSF PORTB, 0x0
62:                RegPinX(startStopPinReg,startStopPinNo) = 1; //<-- startStopPin = 1;
0383  140D     BSF PORTB, 0x0
63:                RegPinY(PORTBbits.RB,0) = 1; //<-- RegPinX(startStopPinReg,startStopPinNo) = 1;
0384  140D     BSF PORTB, 0x0
64:                PORTBbits.RB0 = 1; //<-- RegPinY(PORTBbits.RB,0) = 1;
0385  140D     BSF PORTB, 0x0
65:            }
0386  0008     RETURN



■sample3
同一の機能を複数ピンが持つ場合、ピン番号も都度指定したい。そのような場合。
//sample3
//IOCBN: INTERRUPT-ON-CHANGE NEGATIVE EDGE REGISTER
//External Definition
#define interruptOnChangeNegativeEdgeReg IOCBNbits.IOCBN

#define interruptOnChangeNegativeEdge(pinNo) RegPinX(interruptOnChangeNegativeEdgeReg,pinNo)

void sample3() {
    IOCBNbits.IOCBN3 = 1;
    interruptOnChangeNegativeEdge(clearPinNo) = 1;
    interruptOnChangeNegativeEdge(startStopPinNo) = 0;
}

アセンブラに変換されたところ
51:            //sample3
52:            //IOCBN: INTERRUPT-ON-CHANGE NEGATIVE EDGE REGISTER
53:            //External Definition
54:            #define interruptOnChangeNegativeEdgeReg IOCBNbits.IOCBN
55:            
56:            #define interruptOnChangeNegativeEdge(pinNo) RegPinX(interruptOnChangeNegativeEdgeReg,pinNo)
57:            
58:            void sample3() {
59:                IOCBNbits.IOCBN3 = 1;
0372  0027     MOVLB 0x7
0373  1595     BSF IOCBN, 0x3
60:                interruptOnChangeNegativeEdge(clearPinNo) = 1;
0374  1595     BSF IOCBN, 0x3
61:                interruptOnChangeNegativeEdge(startStopPinNo) = 0;
0375  1015     BCF IOCBN, 0x0
62:            }
0376  0008     RETURN


マクロ展開過程を手動でシュミレーション
void sample3_DeploymentSimulation(){
    interruptOnChangeNegativeEdge(clearPinNo) = 1;
    RegPinX(interruptOnChangeNegativeEdgeReg,clearPinNo) = 1; //<-- interruptOnChangeNegativeEdge(clearPinNo) = 1;
    RegPinY(IOCBNbits.IOCBN,3) = 1; //<-- RegPinX(interruptOnChangeNegativeEdgeReg,clearPinNo) = 1;
    IOCBNbits.IOCBN3 = 1; //<-- RegPinY(IOCBNbits.IOCBN,3);
}

展開過程毎にアセンブラに変換されたところ
80:            void sample3_DeploymentSimulation(){
81:                interruptOnChangeNegativeEdge(clearPinNo) = 1;
037B  0027     MOVLB 0x7
037C  1595     BSF IOCBN, 0x3
82:                RegPinX(interruptOnChangeNegativeEdgeReg,clearPinNo) = 1; //<-- interruptOnChangeNegativeEdge(clearPinNo) = 1;
037D  1595     BSF IOCBN, 0x3
83:                RegPinY(IOCBNbits.IOCBN,3) = 1; //<-- RegPinX(interruptOnChangeNegativeEdgeReg,clearPinNo) = 1;
037E  1595     BSF IOCBN, 0x3
84:                IOCBNbits.IOCBN3 = 1; //<-- RegPinY(IOCBNbits.IOCBN,3);
037F  1595     BSF IOCBN, 0x3
85:            }
0380  0008     RETURN





あけましておめでとうございます(年賀状)

あけましておめでとうございます(年賀状)
この龍の筆絵はこちらのものを利用させていただきました。

明けましておめでとうございます。
本年も宜しくお願い致します。

最近は更新頻度が低下し月イチ程度になっていますが、決して惰眠を貪っている訳ではありません。
色々なものが次から次へと故障し、修理すると待っていましたとばかりに次の故障が発生します。
なんと、自分の体調も含めて。

去年の暮れは長年後回しにしてきた「16bitA/D変換器で電圧ロガーの作成」に取り掛かりました。
ある程度目処が着いたので今年こそは形にしたいと願っています。



テーマ : ディズニー・ギャラリー
ジャンル : 写真

噴水(イクスピアリ)

噴水(イクスピアリ)
MOTOROLA moto g31(w) 1/549秒 F2.2 ISO100 ±0EV WBオート 1.7mm (画像クリックで1920x1280サイズ)



撮影場所

テーマ : ディズニー・ギャラリー
ジャンル : 写真

ミュージアム・レーンへの階段 噴水広場3Fより(イクスピアリ)

ミュージアム・レーンへの階段 噴水広場3Fより(イクスピアリ)
MOTOROLA moto g31(w) 1/1012秒 F2.2 ISO106 ±0EV WBオート 1.7mm (画像クリックで1920x1280サイズ)



撮影場所

テーマ : ディズニー・ギャラリー
ジャンル : 写真

一風堂と千房(イクスピアリ)

一風堂と千房(イクスピアリ)
MOTOROLA moto g31(w) 1/2299秒 F2.2 ISO100 ±0EV WBオート 1.7mm (画像クリックで1920x2564サイズ)


撮影場所

テーマ : ディズニー・ギャラリー
ジャンル : 写真

なんだこりゃ・・泊まりたい(THE PARK FRONT HOTEL AT UNIVERSAL STUDIOS JAPAN)

なんだこりゃ・・泊まりたい(THE PARK FRONT HOTEL AT UNIVERSAL STUDIOS JAPAN)
MOTOROLA moto g31(w) 1/192秒 F1.8 ISO100 ±0EV WBオート 4.3mm (画像クリックで1920x1080サイズ) 細部確認用

久し振りにUSJに来たら凄かったですね。
あの暗く人通りの少なかった門前町もスッカリ賑やかになっていました。
まあ、何処かを抜いたと聞きましたが。平家物語を思い出しました。



撮影場所

恐ろしやPhotoshopの生成塗りつぶし (ドナルドダック通り 雨の夜)

恐ろしやPhotoshopの生成塗りつぶし (ドナルドダック通り 雨の夜)
Adobe Photoshop (Beta) 25.2.0 リリース (画像クリックで1920x1080サイズ)

PCの壁紙を一新しようと過去の写真を探していました。
お気に入りの一つである「ドナルドダック通り 雨の夜(プレイス)(メディテレーニアンハーバー)(東京ディズニーシー)」の画像を使う事にしました。

が、縦長でした。

で、まず階段を降りているゲストさんをPSの「削除ツール」でけしました。
ブラシで消したいところを選択するだけです。
コレだけでも凄いのですが・・・

次にしたのが横長化です。

原画をすべて活かして幅を広げると、
恐ろしやPhotoshopの生成塗りつぶし (ドナルドダック通り 雨の夜)
となります。

拡張した部分を黒にして、アイコン置き場にしてもいいのですが、なんだか寂しい。
そこで、Adobe自慢の「生成塗りつぶし」を試してみました。

結果が最初の画像です。
もちろん、本物とは異なりますが十分すぎる結果でした。

こうなると、この画像は「制作」したと言えるのでしょうか?
結果の画像に対しては満足ですが、「楽しめた」とか「さすが、俺様」とかが奪われたような寂しさがありますね。








テーマ : ディズニー・ギャラリー
ジャンル : 写真

心地よい季節の滋賀県立図書館

心地よい季節の滋賀県立図書館
MOTOROLA moto g31(w) 1/120秒 F1.8 ISO134 ±0EV WBオート 4.3mm (画像クリックで1920x2302サイズ)

「心がリフレッシュされる」を実感出来る場所です。



撮影場所

テーマ : ある日の風景や景色
ジャンル : 写真

螺旋階段のハロウィーン壁画(イクスピアリ)

螺旋階段のハロウィーン壁画(イクスピアリ)
MOTOROLA moto g31(w) パノラマ (画像クリックで1920x3437サイズ)

ベンチに座りながら撮ったズボラ撮影なので中心がズレて歪んでいます。



撮影場所

テーマ : ディズニー・ギャラリー
ジャンル : 写真

お知らせ
■注意:Google Chrome以外のブラウザでは動作しない事もあります。
お好みに応じて
画像だけの表示でいいよ
やっぱり全部表示して
背景は黒がいいな
背景を元に戻して
サブジャンル
メモリアルマップ
My Favorite Photo
検索フォーム
プロフィール

otsu.usiwakamaru

Author:otsu.usiwakamaru
五条の橋でひらりひらりと欄干を飛び渡る牛若丸のように、興の向くまま電子回路にプログラミングに写真にと飛び回っています。

プロフィール詳細

カレンダー
01 | 2024/02 | 03
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 - -
キーワード
クリックしたキーワードの記事のみ表示します。

ダンサー ミニー ミッキー デイジー ドナルド グーフィー キャラクター  3D 試み MFP 電池 ティンカーベル デザイン 全天球 クラリス プルート パークテーマ チップデール キャスト IXY スモールプラネット スクルージ マレフィセント ダッフィー SPOT 改造 

最新記事
月別アーカイブ
全記事表示リンク

全ての記事を表示する

おすすめプログ(新着記事)
リンク


にほんブログ村
カテゴリ
橋 (1)
PIC (5)
カウンタ
訪問者数(UU)

アクセス数

現在の閲覧者数

tael no013用