Applilet EZ PL for RL78 改善要望

Applilet EZ PL for RL78 V1.0J, V2.00J を試してみました。

デジタル回路版電子ブロックという感じで興味深いツールと思いましたが、少々使いづらい点もあったので改善要望として挙げておきます。

> 本ツールは評価版です。本ツールに関するテクニカルサポートは受け付けておりません。

と明記されていることは理解しており、返答等を求めているものではありません。

Parents
  • ・ユーザーパネルについて要望

    ユーザーパネルをソース作成で新規作成すると、パネル編集で

    /*--- Variable declaration ---*/
        /* ここに変数を記述してください */
        /* 例
        UCHAR work;
        */
    
    /*--------------------------------*/
    
    /* Function Declaration */
    void PANEL_hoge(UCHAR In_1, UCHAR *Out_1)
    {
        /* ここに処理を記述してください */
    }
    

    のようなテンプレートが用意されこれを編集することとなりますが、用意されるのが変数と関数の定義のみです。

    例えば標準で用意されるロジック IC のコード 74hc.c では

    #if defined IC74HC77_USED
    /*******************************************************************************
    * Function Name: IC_74HC77
    * Description  : Bistable Latch
    * Arguments    : D_in	D-terminal input value (HIGH or LOW)
    *                G_in	G-terminal input value (HIGH or LOW)
    * Return Value : Q-terminal output value (HIGH or LOW)
    ********************************************************************************/
    UCHAR  IC_74HC77( UCHAR D_in, UCHAR G_in )
    {
    	UCHAR	Q_out;
    	UCHAR	lastQ;
    	
    	lastQ = BitMemGet(g74HC77_LastQ, g74HC77_Count);
    	
    	if (G_in == HIGH)	Q_out = D_in;
    	else				Q_out = lastQ;	/* G_in == LOW */
    
    	BitMemSet(g74HC77_LastQ, g74HC77_Count, Q_out);
    	
    	return Q_out;
    }
    
    /*******************************************************************************
    * Function Name: IC74HC77_Initialize
    * Description  : IC74HC77 Panel Initialize.
    * Arguments    : none
    * Return Value : none
    ********************************************************************************/
    void IC74HC77_Initialize( void )
    {
    	memset(g74HC77_LastQ, 0, (IC74HC77_USED / 8) + 1);
    }
    
    /*******************************************************************************
    * Function Name: IC74HC77_Counter_Clear
    * Description  : IC74HC77 Panel Counter Clear.
    * Arguments    : none
    * Return Value : none
    ********************************************************************************/
    void IC74HC77_Counter_Clear( void )
    {
    	g74HC77_Count = 0;
    }
    
    /*******************************************************************************
    * Function Name: IC74HC77_Counter
    * Description  : IC74HC77 Panel Counter.
    * Arguments    : none
    * Return Value : none
    ********************************************************************************/
    void IC74HC77_Counter( void )
    {
    	g74HC77_Count ++;
    }
    #endif /* end of defined IC74HC77_USED */
    

    処理の関数の他、初期化とカウンタのクリア/インクリメントの関数が用意され、複数個の同じ IC に個々の状態を持つことを実現しています。現在ユーザパネルに提供されている機能では作成したユーザーパネルを複数個用意して個々に状態を持つことは難しく、ロジック IC に提供されている機能と同等のものが提供されればと思います。

    あと、複数のユーザーパネルを定義してそれぞれを使用すると config.h に

    #define	UPANEL_USED		(5)
    

    上記のように総使用数が定義されますが、別々のユーザーパネルについては、

    #define	UPANEL_hoge_USED		(3)
    #define	UPANEL_piyo_USED		(2)
    

    使用数はそれぞれ別にカウントされるべきと思います。ユーザーパネル別に数が参照できると

    /*--- Variable declaration ---*/
    static UCHAR initialized;
    static UCHAR index;
    static UCHAR work[UPANEL_hoge_USED];
    
    /*--------------------------------*/
    
    /* Function Declaration */
    void PANEL_hoge(UCHAR In_1, UCHAR *Out_1)
    {
    if (!initialized) {
    // 初期化
    memset(work, 0, UPANEL_hoge_USED); index = 0; initialized = 1; } // 処理 ~ // インデクスを次に進める if (++index >= UPANEL_hoge_USED) { index = 0; } }

    ひとつの関数に初期化と、呼ばれる毎にインデクス値を更新することで複数のユーザーパネルの状態に対応することも可能となります。

Reply
  • ・ユーザーパネルについて要望

    ユーザーパネルをソース作成で新規作成すると、パネル編集で

    /*--- Variable declaration ---*/
        /* ここに変数を記述してください */
        /* 例
        UCHAR work;
        */
    
    /*--------------------------------*/
    
    /* Function Declaration */
    void PANEL_hoge(UCHAR In_1, UCHAR *Out_1)
    {
        /* ここに処理を記述してください */
    }
    

    のようなテンプレートが用意されこれを編集することとなりますが、用意されるのが変数と関数の定義のみです。

    例えば標準で用意されるロジック IC のコード 74hc.c では

    #if defined IC74HC77_USED
    /*******************************************************************************
    * Function Name: IC_74HC77
    * Description  : Bistable Latch
    * Arguments    : D_in	D-terminal input value (HIGH or LOW)
    *                G_in	G-terminal input value (HIGH or LOW)
    * Return Value : Q-terminal output value (HIGH or LOW)
    ********************************************************************************/
    UCHAR  IC_74HC77( UCHAR D_in, UCHAR G_in )
    {
    	UCHAR	Q_out;
    	UCHAR	lastQ;
    	
    	lastQ = BitMemGet(g74HC77_LastQ, g74HC77_Count);
    	
    	if (G_in == HIGH)	Q_out = D_in;
    	else				Q_out = lastQ;	/* G_in == LOW */
    
    	BitMemSet(g74HC77_LastQ, g74HC77_Count, Q_out);
    	
    	return Q_out;
    }
    
    /*******************************************************************************
    * Function Name: IC74HC77_Initialize
    * Description  : IC74HC77 Panel Initialize.
    * Arguments    : none
    * Return Value : none
    ********************************************************************************/
    void IC74HC77_Initialize( void )
    {
    	memset(g74HC77_LastQ, 0, (IC74HC77_USED / 8) + 1);
    }
    
    /*******************************************************************************
    * Function Name: IC74HC77_Counter_Clear
    * Description  : IC74HC77 Panel Counter Clear.
    * Arguments    : none
    * Return Value : none
    ********************************************************************************/
    void IC74HC77_Counter_Clear( void )
    {
    	g74HC77_Count = 0;
    }
    
    /*******************************************************************************
    * Function Name: IC74HC77_Counter
    * Description  : IC74HC77 Panel Counter.
    * Arguments    : none
    * Return Value : none
    ********************************************************************************/
    void IC74HC77_Counter( void )
    {
    	g74HC77_Count ++;
    }
    #endif /* end of defined IC74HC77_USED */
    

    処理の関数の他、初期化とカウンタのクリア/インクリメントの関数が用意され、複数個の同じ IC に個々の状態を持つことを実現しています。現在ユーザパネルに提供されている機能では作成したユーザーパネルを複数個用意して個々に状態を持つことは難しく、ロジック IC に提供されている機能と同等のものが提供されればと思います。

    あと、複数のユーザーパネルを定義してそれぞれを使用すると config.h に

    #define	UPANEL_USED		(5)
    

    上記のように総使用数が定義されますが、別々のユーザーパネルについては、

    #define	UPANEL_hoge_USED		(3)
    #define	UPANEL_piyo_USED		(2)
    

    使用数はそれぞれ別にカウントされるべきと思います。ユーザーパネル別に数が参照できると

    /*--- Variable declaration ---*/
    static UCHAR initialized;
    static UCHAR index;
    static UCHAR work[UPANEL_hoge_USED];
    
    /*--------------------------------*/
    
    /* Function Declaration */
    void PANEL_hoge(UCHAR In_1, UCHAR *Out_1)
    {
    if (!initialized) {
    // 初期化
    memset(work, 0, UPANEL_hoge_USED); index = 0; initialized = 1; } // 処理 ~ // インデクスを次に進める if (++index >= UPANEL_hoge_USED) { index = 0; } }

    ひとつの関数に初期化と、呼ばれる毎にインデクス値を更新することで複数のユーザーパネルの状態に対応することも可能となります。

Children
No Data