Changeset 155 for uKadecot/trunk/src


Ignore:
Timestamp:
Feb 4, 2016, 11:11:09 PM (8 years ago)
Author:
coas-nagasima
Message:

URLがフォルダを指している場合、/index.htmlにリダイレクトするよう変更。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uKadecot/trunk/src/ukadecot/arduino.c

    r108 r155  
    5858         * モジュールストップ機能の設定(S12AD)
    5959         */
    60         sil_wrh_mem((uint16_t *)SYSTEM_PRCR_ADDR, (uint16_t)0xA502);    /* 書込み許可 */
    61         sil_wrw_mem((uint32_t *)SYSTEM_MSTPCRA_ADDR,
    62                 sil_rew_mem((uint32_t *)SYSTEM_MSTPCRA_ADDR) & ~SYSTEM_MSTPCRA_MSTPA17_BIT);
    63         sil_wrh_mem((uint16_t *)SYSTEM_PRCR_ADDR, (uint16_t)0xA500);    /* 書込み禁止 */
     60        sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA502);        /* 書込み許可 */
     61        sil_wrw_mem(SYSTEM_MSTPCRA_ADDR,
     62                sil_rew_mem(SYSTEM_MSTPCRA_ADDR) & ~SYSTEM_MSTPCRA_MSTPA17_BIT);
     63        sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA500);        /* 書込み禁止 */
    6464
    6565        /* 12bitADC初期化 */
    66         sil_wrh_mem((uint16_t *)S12AD_ADEXICR_ADDR, 0x0000);    /* 温度センサ出力、内部基準電圧非選択 */
    67         sil_wrh_mem((uint16_t *)S12AD_ADANS0_ADDR, 0x00FF);             /* 変換ポートAN000〜AN007選択、AN008〜AN015非選択 */
    68         sil_wrh_mem((uint16_t *)S12AD_ADANS1_ADDR, 0x0000);             /* 変換ポートAN016〜AN020非選択 */
     66        sil_wrh_mem(S12AD_ADEXICR_ADDR, 0x0000);        /* 温度センサ出力、内部基準電圧非選択 */
     67        sil_wrh_mem(S12AD_ADANS0_ADDR, 0x00FF);         /* 変換ポートAN000〜AN007選択、AN008〜AN015非選択 */
     68        sil_wrh_mem(S12AD_ADANS1_ADDR, 0x0000);         /* 変換ポートAN016〜AN020非選択 */
    6969
    7070        /* PWM出力(490Hz) */
     
    157157
    158158        /* 書き込みプロテクトレジスタの設定 PFSWEビットへの書き込みを許可 */
    159         sil_wrb_mem((uint8_t *)MPC_PWPR_ADDR, 0x00);
     159        sil_wrb_mem(MPC_PWPR_ADDR, 0x00);
    160160        /* 書き込みプロテクトレジスタの設定 PxxFSレジスタへの書き込みを許可 */
    161         sil_wrb_mem((uint8_t *)MPC_PWPR_ADDR, 0x40);
     161        sil_wrb_mem(MPC_PWPR_ADDR, 0x40);
    162162
    163163        switch(pin){
     
    166166                if(gpio){
    167167                        /* P21端子機能制御レジスタ P21とする */
    168                         sil_wrb_mem((uint8_t *)MPC_P21PFS_ADDR, 0x00);
     168                        sil_wrb_mem(MPC_P21PFS_ADDR, 0x00);
    169169                }
    170170                else{
    171171                        /* P21端子機能制御レジスタ TIOCA3とする */
    172                         sil_wrb_mem((uint8_t *)MPC_P21PFS_ADDR, 0x03);
     172                        sil_wrb_mem(MPC_P21PFS_ADDR, 0x03);
    173173                }
    174174                result =  E_OK;
     
    178178                if(gpio){
    179179                        /* P20端子機能制御レジスタ P20とする */
    180                         sil_wrb_mem((uint8_t *)MPC_P20PFS_ADDR, 0x00);
     180                        sil_wrb_mem(MPC_P20PFS_ADDR, 0x00);
    181181                }
    182182                else{
    183183                        /* P20端子機能制御レジスタ TIOCB3とする */
    184                         sil_wrb_mem((uint8_t *)MPC_P20PFS_ADDR, 0x03);
     184                        sil_wrb_mem(MPC_P20PFS_ADDR, 0x03);
    185185                }
    186186                result =  E_OK;
     
    190190                if(gpio){
    191191                        /* P22端子機能制御レジスタ P22とする */
    192                         sil_wrb_mem((uint8_t *)MPC_P22PFS_ADDR, 0x00);
     192                        sil_wrb_mem(MPC_P22PFS_ADDR, 0x00);
    193193                }
    194194                else{
    195195                        /* P22端子機能制御レジスタ TIOCC3とする */
    196                         sil_wrb_mem((uint8_t *)MPC_P22PFS_ADDR, 0x03);
     196                        sil_wrb_mem(MPC_P22PFS_ADDR, 0x03);
    197197                }
    198198                result =  E_OK;
     
    202202                if(gpio){
    203203                        /* P23端子機能制御レジスタ P23とする */
    204                         sil_wrb_mem((uint8_t *)MPC_P23PFS_ADDR, 0x00);
     204                        sil_wrb_mem(MPC_P23PFS_ADDR, 0x00);
    205205                }
    206206                else{
    207207                        /* P23端子機能制御レジスタ TIOCD3とする */
    208                         sil_wrb_mem((uint8_t *)MPC_P23PFS_ADDR, 0x03);
     208                        sil_wrb_mem(MPC_P23PFS_ADDR, 0x03);
    209209                }
    210210                result =  E_OK;
     
    214214                if(gpio){
    215215                        /* P24端子機能制御レジスタ P24とする */
    216                         sil_wrb_mem((uint8_t *)MPC_P24PFS_ADDR, 0x00);
     216                        sil_wrb_mem(MPC_P24PFS_ADDR, 0x00);
    217217                }
    218218                else{
    219219                        /* P24端子機能制御レジスタ TIOCB4とする */
    220                         sil_wrb_mem((uint8_t *)MPC_P24PFS_ADDR, 0x03);
     220                        sil_wrb_mem(MPC_P24PFS_ADDR, 0x03);
    221221                }
    222222                result =  E_OK;
     
    226226                if(gpio){
    227227                        /* P25端子機能制御レジスタ P25とする */
    228                         sil_wrb_mem((uint8_t *)MPC_P25PFS_ADDR, 0x00);
     228                        sil_wrb_mem(MPC_P25PFS_ADDR, 0x00);
    229229                }
    230230                else{
    231231                        /* P25端子機能制御レジスタ TIOCA4とする */
    232                         sil_wrb_mem((uint8_t *)MPC_P25PFS_ADDR, 0x03);
     232                        sil_wrb_mem(MPC_P25PFS_ADDR, 0x03);
    233233                }
    234234                result =  E_OK;
     
    238238                if(gpio){
    239239                        /* P32端子機能制御レジスタ P32とする */
    240                         sil_wrb_mem((uint8_t *)MPC_P32PFS_ADDR, 0x00);
     240                        sil_wrb_mem(MPC_P32PFS_ADDR, 0x00);
    241241                }
    242242                else{
    243243                        /* P32端子機能制御レジスタ TIOCC0とする */
    244                         sil_wrb_mem((uint8_t *)MPC_P32PFS_ADDR, 0x03);
     244                        sil_wrb_mem(MPC_P32PFS_ADDR, 0x03);
    245245                }
    246246                result =  E_OK;
     
    250250                if(gpio){
    251251                        /* P33端子機能制御レジスタ P33とする */
    252                         sil_wrb_mem((uint8_t *)MPC_P33PFS_ADDR, 0x00);
     252                        sil_wrb_mem(MPC_P33PFS_ADDR, 0x00);
    253253                }
    254254                else{
    255255                        /* P33端子機能制御レジスタ TIOCD0とする */
    256                         sil_wrb_mem((uint8_t *)MPC_P33PFS_ADDR, 0x03);
     256                        sil_wrb_mem(MPC_P33PFS_ADDR, 0x03);
    257257                }
    258258                result =  E_OK;
     
    261261
    262262        /* 書き込みプロテクトレジスタの設定 書き込みを禁止 */
    263         sil_wrb_mem((uint8_t *)MPC_PWPR_ADDR, 0x80);
     263        sil_wrb_mem(MPC_PWPR_ADDR, 0x80);
    264264
    265265        /* 機能ポートに設定 */
     
    314314}
    315315
    316 static ER change_pin_mode(arduino_pin_mode_t mode, volatile uint8_t *pdr, int bit)
    317 {
    318         volatile uint8_t *pcr = pdr + (PORT0_PCR_ADDR - PORT0_PDR_ADDR);
     316static ER change_pin_mode(arduino_pin_mode_t mode, volatile __evenaccess uint8_t *pdr, int bit)
     317{
     318        volatile __evenaccess uint8_t *pcr = pdr + (PORT0_PCR_ADDR - PORT0_PDR_ADDR);
    319319
    320320        switch(mode){
     
    388388}
    389389
    390 static ER write_gpio(arduino_digital_value_t value, volatile uint8_t *podr, int bit)
     390static ER write_gpio(arduino_digital_value_t value, volatile __evenaccess uint8_t *podr, int bit)
    391391{
    392392        switch(value){
     
    452452}
    453453
    454 static ER read_gpio(volatile uint8_t *pidr, int bit, arduino_digital_value_t *result)
     454static ER read_gpio(volatile __evenaccess uint8_t *pidr, int bit, arduino_digital_value_t *result)
    455455{
    456456        if ((sil_reb_mem(pidr) & bit) != 0) {
     
    523523        switch(pin){
    524524        case 14:
    525                 /* *value = sil_reh_mem((uint16_t *)S12AD_ADDR0_ADDR); */
     525                /* *value = sil_reh_mem(S12AD_ADDR0_ADDR); */
    526526                *value = 1023 - (arduino_ad_avelage[0] / (arduino_ad_table_count * 4/*12bit→10bit*/));
    527527                return E_OK;
    528528        case 15:
    529                 /* *value = sil_reh_mem((uint16_t *)S12AD_ADDR1_ADDR); */
     529                /* *value = sil_reh_mem(S12AD_ADDR1_ADDR); */
    530530                *value = 1023 - (arduino_ad_avelage[1] / (arduino_ad_table_count * 4/*12bit→10bit*/));
    531531                return E_OK;
    532532        case 16:
    533                 /* *value = sil_reh_mem((uint16_t *)S12AD_ADDR2_ADDR); */
     533                /* *value = sil_reh_mem(S12AD_ADDR2_ADDR); */
    534534                *value = 1023 - (arduino_ad_avelage[2] / (arduino_ad_table_count * 4/*12bit→10bit*/));
    535535                return E_OK;
    536536        case 17:
    537                 /* *value = sil_reh_mem((uint16_t *)S12AD_ADDR3_ADDR); */
     537                /* *value = sil_reh_mem(S12AD_ADDR3_ADDR); */
    538538                *value = 1023 - (arduino_ad_avelage[3] / (arduino_ad_table_count * 4/*12bit→10bit*/));
    539539                return E_OK;
    540540        case 18:
    541                 /* *value = sil_reh_mem((uint16_t *)S12AD_ADDR4_ADDR); */
     541                /* *value = sil_reh_mem(S12AD_ADDR4_ADDR); */
    542542                *value = 1023 - (arduino_ad_avelage[4] / (arduino_ad_table_count * 4/*12bit→10bit*/));
    543543                return E_OK;
    544544        case 19:
    545                 /* *value = sil_reh_mem((uint16_t *)S12AD_ADDR5_ADDR); */
     545                /* *value = sil_reh_mem(S12AD_ADDR5_ADDR); */
    546546                *value = 1023 - (arduino_ad_avelage[5] / (arduino_ad_table_count * 4/*12bit→10bit*/));
    547547                return E_OK;
    548548        case 20:
    549                 /* *value = sil_reh_mem((uint16_t *)S12AD_ADDR6_ADDR); */
     549                /* *value = sil_reh_mem(S12AD_ADDR6_ADDR); */
    550550                *value = 1023 - (arduino_ad_avelage[6] / (arduino_ad_table_count * 4/*12bit→10bit*/));
    551551                return E_OK;
    552552        case 21:
    553                 /* *value = sil_reh_mem((uint16_t *)S12AD_ADDR7_ADDR); */
     553                /* *value = sil_reh_mem(S12AD_ADDR7_ADDR); */
    554554                *value = 1023 - (arduino_ad_avelage[7] / (arduino_ad_table_count * 4/*12bit→10bit*/));
    555555                return E_OK;
     
    605605void arduino_tick()
    606606{
    607         static volatile uint16_t *const regs[8] = {
     607        static volatile __evenaccess uint16_t *const regs[8] = {
    608608                S12AD_ADDR0_ADDR,
    609609                S12AD_ADDR1_ADDR,
     
    619619
    620620        /* ADCの変換結果取得 */
    621         if((sil_reb_mem((uint8_t *)S12AD_ADCSR_ADDR) & S12AD_ADCSR_ADST_BIT) == 0){
     621        if((sil_reb_mem(S12AD_ADCSR_ADDR) & S12AD_ADCSR_ADST_BIT) == 0){
    622622                for (i = 0; i < 8; i++){
    623623                        arduino_ad_avelage[i] -= arduino_ad_table[i][arduino_ad_pos];
     
    633633
    634634                /* 変換開始(シングルスキャンモード) */
    635                 sil_wrb_mem((uint8_t *)S12AD_ADCSR_ADDR, S12AD_ADCSR_ADST_BIT);
    636         }
    637 }
     635                sil_wrb_mem(S12AD_ADCSR_ADDR, S12AD_ADCSR_ADST_BIT);
     636        }
     637}
Note: See TracChangeset for help on using the changeset viewer.