Changeset 107 for uKadecot/trunk/src/ukadecot/arduino.c
- Timestamp:
- Jun 10, 2015, 8:40:31 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uKadecot/trunk/src/ukadecot/arduino.c
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 4 4 * Copyright (C) 2014 Cores Co., Ltd. Japan 5 5 * 6 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 7 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 8 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 9 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 10 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 11 * XR[hÉÜÜêÄ¢é±ÆD 12 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 13 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 14 gip 15 * Ò}j 16 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 17 * ̳ÛØKèðfÚ·é±ÆD 18 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 19 * pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 20 * ÆD 21 * (a) Äzzɺ¤hL 22 gipÒ}j 23 AÈÇjÉCãLÌ 24 * ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 25 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 26 * ñ·é±ÆD 27 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 28 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 29 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 30 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 31 * ÆÓ·é±ÆD 6 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 8 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 9 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 10 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 11 * スコード中に含まれていること. 12 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 13 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 14 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 15 * の無保証規定を掲載すること. 16 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 17 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 18 * と. 19 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 20 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 21 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 22 * 報告すること. 23 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 24 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 25 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 * 免責すること. 32 28 * 33 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨34 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI35 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF36 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»37 * ÌÓCðíÈ¢D29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 38 34 * 39 35 * @(#) $Id$ … … 41 37 42 38 /* 43 * TvvO(1)Ì{Ì39 * サンプルプログラム(1)の本体 44 40 */ 45 41 … … 54 50 #endif 55 51 56 /* PWM oÍ(490Hz) */52 /* PWM出力(490Hz) */ 57 53 #define TPU_BASE_COUNTER (48000000 / 4 / 490) 58 54 … … 60 56 { 61 57 /* 62 * W 63 [Xgbv@\ÌÝè(S12AD) 58 * モジュールストップ機能の設定(S12AD) 64 59 */ 65 sil_wrh_mem((uint16_t *)SYSTEM_PRCR_ADDR, (uint16_t)0xA502); /* ÝÂ*/60 sil_wrh_mem((uint16_t *)SYSTEM_PRCR_ADDR, (uint16_t)0xA502); /* 書込み許可 */ 66 61 sil_wrw_mem((uint32_t *)SYSTEM_MSTPCRA_ADDR, 67 62 sil_rew_mem((uint32_t *)SYSTEM_MSTPCRA_ADDR) & ~SYSTEM_MSTPCRA_MSTPA17_BIT); 68 sil_wrh_mem((uint16_t *)SYSTEM_PRCR_ADDR, (uint16_t)0xA500); /* ÝÖ~*/69 70 /* 12bitADC ú»*/71 sil_wrh_mem((uint16_t *)S12AD_ADEXICR_ADDR, 0x0000); /* ·xZToÍAàîd³ñIð*/72 sil_wrh_mem((uint16_t *)S12AD_ADANS0_ADDR, 0x00FF); /* Ï·|[gAN000`AN007IðAAN008`AN015ñIð*/73 sil_wrh_mem((uint16_t *)S12AD_ADANS1_ADDR, 0x0000); /* Ï·|[gAN016`AN020ñIð*/74 75 /* PWM oÍ(490Hz) */76 sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA502); /* ÝÂ*/63 sil_wrh_mem((uint16_t *)SYSTEM_PRCR_ADDR, (uint16_t)0xA500); /* 書込み禁止 */ 64 65 /* 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非選択 */ 69 70 /* PWM出力(490Hz) */ 71 sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA502); /* 書込み許可 */ 77 72 sil_wrw_mem(SYSTEM_MSTPCRA_ADDR, 78 sil_rew_mem(SYSTEM_MSTPCRA_ADDR) & ~SYSTEM_MSTPCRA_MSTPA13_BIT); /* TPU0 `TPU5 */79 sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA500); /* ÝÖ~*/80 81 /* JE^NbNÌIðAJE^NAvöÌIð*/73 sil_rew_mem(SYSTEM_MSTPCRA_ADDR) & ~SYSTEM_MSTPCRA_MSTPA13_BIT); /* TPU0〜TPU5 */ 74 sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA500); /* 書込み禁止 */ 75 76 /* カウンタクロックの選択、カウンタクリア要因の選択 */ 82 77 sil_wrb_mem(TPU0_TCR_ADDR, (1 << TPU_TCR_TPSC_OFFSET) | (1 << TPU_TCR_CKEG_OFFSET) 83 78 | (1 << TPU_TCR_CCLR_OFFSET)); … … 86 81 sil_wrb_mem(TPU4_TCR_ADDR, (1 << TPU_TCR_TPSC_OFFSET) | (1 << TPU_TCR_CKEG_OFFSET) 87 82 | (3 << TPU_TCR_CCLR_OFFSET)); 88 /* g`oÍxÌIð*/83 /* 波形出力レベルの選択 */ 89 84 sil_wrb_mem(TPU0_TIORL_ADDR, (5 << TPU_TIORL_IOC_OFFSET) | (5 << TPU_TIORL_IOD_OFFSET)); 90 85 sil_wrb_mem(TPU3_TIORH_ADDR, (5 << TPU_TIORL_IOA_OFFSET) | (5 << TPU_TIORL_IOB_OFFSET)); 91 86 sil_wrb_mem(TPU3_TIORL_ADDR, (5 << TPU_TIORL_IOC_OFFSET) | (5 << TPU_TIORL_IOD_OFFSET)); 92 87 sil_wrb_mem(TPU4_TIOR_ADDR, (5 << TPU_TIORL_IOA_OFFSET) | (5 << TPU_TIORL_IOB_OFFSET)); 93 /* TGRy ÌÝè*/88 /* TGRyの設定 */ 94 89 sil_wrh_mem(TPU0_TGRA_ADDR, TPU_BASE_COUNTER); 95 90 sil_wrh_mem(TPU0_TGRC_ADDR, 0); … … 101 96 sil_wrh_mem(TPU4_TGRA_ADDR, 0); 102 97 sil_wrh_mem(TPU4_TGRB_ADDR, 0); 103 /* PWM [h2ÌÝè*/98 /* PWMモード2の設定 */ 104 99 sil_wrb_mem(TPU0_TMDR_ADDR, 3); 105 100 sil_wrb_mem(TPU3_TMDR_ADDR, 3); 106 101 sil_wrb_mem(TPU4_TMDR_ADDR, 3); 107 /* ¯ú®ìÝè*/102 /* 同期動作設定 */ 108 103 sil_wrb_mem(TPUA_TSYR_ADDR, TPU_TSYR_SYNC0_BIT | TPU_TSYR_SYNC3_BIT | TPU_TSYR_SYNC4_BIT); 109 /* JEg®ìJn*/104 /* カウント動作開始 */ 110 105 sil_wrb_mem(TPUA_TSTR_ADDR, TPU_TSTR_CST0_BIT | TPU_TSTR_CST3_BIT | TPU_TSTR_CST4_BIT); 111 106 } … … 125 120 return E_OK; 126 121 127 /* ÄpüoÍ|[gÉÝè*/122 /* 汎用入出力ポートに設定 */ 128 123 switch(pin){ 129 124 case 0: … … 161 156 } 162 157 163 /* «ÝveNgWX^ÌÝè PFSWErbgÖÌ«ÝðÂ*/158 /* 書き込みプロテクトレジスタの設定 PFSWEビットへの書き込みを許可 */ 164 159 sil_wrb_mem((uint8_t *)MPC_PWPR_ADDR, 0x00); 165 /* «ÝveNgWX^ÌÝè PxxFSWX^ÖÌ«ÝðÂ*/160 /* 書き込みプロテクトレジスタの設定 PxxFSレジスタへの書き込みを許可 */ 166 161 sil_wrb_mem((uint8_t *)MPC_PWPR_ADDR, 0x40); 167 162 … … 170 165 case 0: 171 166 if(gpio){ 172 /* P21 [q@\§äWX^ P21Æ·é*/167 /* P21端子機能制御レジスタ P21とする */ 173 168 sil_wrb_mem((uint8_t *)MPC_P21PFS_ADDR, 0x00); 174 169 } 175 170 else{ 176 /* P21 [q@\§äWX^ TIOCA3Æ·é*/171 /* P21端子機能制御レジスタ TIOCA3とする */ 177 172 sil_wrb_mem((uint8_t *)MPC_P21PFS_ADDR, 0x03); 178 173 } … … 182 177 case 1: 183 178 if(gpio){ 184 /* P20 [q@\§äWX^ P20Æ·é*/179 /* P20端子機能制御レジスタ P20とする */ 185 180 sil_wrb_mem((uint8_t *)MPC_P20PFS_ADDR, 0x00); 186 181 } 187 182 else{ 188 /* P20 [q@\§äWX^ TIOCB3Æ·é*/183 /* P20端子機能制御レジスタ TIOCB3とする */ 189 184 sil_wrb_mem((uint8_t *)MPC_P20PFS_ADDR, 0x03); 190 185 } … … 194 189 case 2: 195 190 if(gpio){ 196 /* P22 [q@\§äWX^ P22Æ·é*/191 /* P22端子機能制御レジスタ P22とする */ 197 192 sil_wrb_mem((uint8_t *)MPC_P22PFS_ADDR, 0x00); 198 193 } 199 194 else{ 200 /* P22 [q@\§äWX^ TIOCC3Æ·é*/195 /* P22端子機能制御レジスタ TIOCC3とする */ 201 196 sil_wrb_mem((uint8_t *)MPC_P22PFS_ADDR, 0x03); 202 197 } … … 206 201 case 3: 207 202 if(gpio){ 208 /* P23 [q@\§äWX^ P23Æ·é*/203 /* P23端子機能制御レジスタ P23とする */ 209 204 sil_wrb_mem((uint8_t *)MPC_P23PFS_ADDR, 0x00); 210 205 } 211 206 else{ 212 /* P23 [q@\§äWX^ TIOCD3Æ·é*/207 /* P23端子機能制御レジスタ TIOCD3とする */ 213 208 sil_wrb_mem((uint8_t *)MPC_P23PFS_ADDR, 0x03); 214 209 } … … 218 213 case 4: 219 214 if(gpio){ 220 /* P24 [q@\§äWX^ P24Æ·é*/215 /* P24端子機能制御レジスタ P24とする */ 221 216 sil_wrb_mem((uint8_t *)MPC_P24PFS_ADDR, 0x00); 222 217 } 223 218 else{ 224 /* P24 [q@\§äWX^ TIOCB4Æ·é*/219 /* P24端子機能制御レジスタ TIOCB4とする */ 225 220 sil_wrb_mem((uint8_t *)MPC_P24PFS_ADDR, 0x03); 226 221 } … … 230 225 case 5: 231 226 if(gpio){ 232 /* P25 [q@\§äWX^ P25Æ·é*/227 /* P25端子機能制御レジスタ P25とする */ 233 228 sil_wrb_mem((uint8_t *)MPC_P25PFS_ADDR, 0x00); 234 229 } 235 230 else{ 236 /* P25 [q@\§äWX^ TIOCA4Æ·é*/231 /* P25端子機能制御レジスタ TIOCA4とする */ 237 232 sil_wrb_mem((uint8_t *)MPC_P25PFS_ADDR, 0x03); 238 233 } … … 242 237 case 6: 243 238 if(gpio){ 244 /* P32 [q@\§äWX^ P32Æ·é*/239 /* P32端子機能制御レジスタ P32とする */ 245 240 sil_wrb_mem((uint8_t *)MPC_P32PFS_ADDR, 0x00); 246 241 } 247 242 else{ 248 /* P32 [q@\§äWX^ TIOCC0Æ·é*/243 /* P32端子機能制御レジスタ TIOCC0とする */ 249 244 sil_wrb_mem((uint8_t *)MPC_P32PFS_ADDR, 0x03); 250 245 } … … 254 249 case 7: 255 250 if(gpio){ 256 /* P33 [q@\§äWX^ P33Æ·é*/251 /* P33端子機能制御レジスタ P33とする */ 257 252 sil_wrb_mem((uint8_t *)MPC_P33PFS_ADDR, 0x00); 258 253 } 259 254 else{ 260 /* P33 [q@\§äWX^ TIOCD0Æ·é*/255 /* P33端子機能制御レジスタ TIOCD0とする */ 261 256 sil_wrb_mem((uint8_t *)MPC_P33PFS_ADDR, 0x03); 262 257 } … … 265 260 } 266 261 267 /* «ÝveNgWX^ÌÝè «ÝðÖ~*/262 /* 書き込みプロテクトレジスタの設定 書き込みを禁止 */ 268 263 sil_wrb_mem((uint8_t *)MPC_PWPR_ADDR, 0x80); 269 264 270 /* @\|[gÉÝè*/265 /* 機能ポートに設定 */ 271 266 if(!gpio){ 272 267 switch(pin){ … … 342 337 ER arduino_pinMode(int pin, arduino_pin_mode_t mode) 343 338 { 344 /* ÄpüoÍ|[gÉÝè*/339 /* 汎用入出力ポートに設定 */ 345 340 change_pin_function(pin, true); 346 341 … … 529 524 case 14: 530 525 /* *value = sil_reh_mem((uint16_t *)S12AD_ADDR0_ADDR); */ 531 *value = 1023 - (arduino_ad_avelage[0] / (arduino_ad_table_count * 4/*12bit ¨10bit*/));526 *value = 1023 - (arduino_ad_avelage[0] / (arduino_ad_table_count * 4/*12bit→10bit*/)); 532 527 return E_OK; 533 528 case 15: 534 529 /* *value = sil_reh_mem((uint16_t *)S12AD_ADDR1_ADDR); */ 535 *value = 1023 - (arduino_ad_avelage[1] / (arduino_ad_table_count * 4/*12bit ¨10bit*/));530 *value = 1023 - (arduino_ad_avelage[1] / (arduino_ad_table_count * 4/*12bit→10bit*/)); 536 531 return E_OK; 537 532 case 16: 538 533 /* *value = sil_reh_mem((uint16_t *)S12AD_ADDR2_ADDR); */ 539 *value = 1023 - (arduino_ad_avelage[2] / (arduino_ad_table_count * 4/*12bit ¨10bit*/));534 *value = 1023 - (arduino_ad_avelage[2] / (arduino_ad_table_count * 4/*12bit→10bit*/)); 540 535 return E_OK; 541 536 case 17: 542 537 /* *value = sil_reh_mem((uint16_t *)S12AD_ADDR3_ADDR); */ 543 *value = 1023 - (arduino_ad_avelage[3] / (arduino_ad_table_count * 4/*12bit ¨10bit*/));538 *value = 1023 - (arduino_ad_avelage[3] / (arduino_ad_table_count * 4/*12bit→10bit*/)); 544 539 return E_OK; 545 540 case 18: 546 541 /* *value = sil_reh_mem((uint16_t *)S12AD_ADDR4_ADDR); */ 547 *value = 1023 - (arduino_ad_avelage[4] / (arduino_ad_table_count * 4/*12bit ¨10bit*/));542 *value = 1023 - (arduino_ad_avelage[4] / (arduino_ad_table_count * 4/*12bit→10bit*/)); 548 543 return E_OK; 549 544 case 19: 550 545 /* *value = sil_reh_mem((uint16_t *)S12AD_ADDR5_ADDR); */ 551 *value = 1023 - (arduino_ad_avelage[5] / (arduino_ad_table_count * 4/*12bit ¨10bit*/));546 *value = 1023 - (arduino_ad_avelage[5] / (arduino_ad_table_count * 4/*12bit→10bit*/)); 552 547 return E_OK; 553 548 case 20: 554 549 /* *value = sil_reh_mem((uint16_t *)S12AD_ADDR6_ADDR); */ 555 *value = 1023 - (arduino_ad_avelage[6] / (arduino_ad_table_count * 4/*12bit ¨10bit*/));550 *value = 1023 - (arduino_ad_avelage[6] / (arduino_ad_table_count * 4/*12bit→10bit*/)); 556 551 return E_OK; 557 552 case 21: 558 553 /* *value = sil_reh_mem((uint16_t *)S12AD_ADDR7_ADDR); */ 559 *value = 1023 - (arduino_ad_avelage[7] / (arduino_ad_table_count * 4/*12bit ¨10bit*/));554 *value = 1023 - (arduino_ad_avelage[7] / (arduino_ad_table_count * 4/*12bit→10bit*/)); 560 555 return E_OK; 561 556 } … … 623 618 int i; 624 619 625 /* ADC ÌÏ·Êæ¾*/620 /* ADCの変換結果取得 */ 626 621 if((sil_reb_mem((uint8_t *)S12AD_ADCSR_ADDR) & S12AD_ADCSR_ADST_BIT) == 0){ 627 622 for (i = 0; i < 8; i++){ … … 637 632 } 638 633 639 /* Ï·JniVOXL[hj*/634 /* 変換開始(シングルスキャンモード) */ 640 635 sil_wrb_mem((uint8_t *)S12AD_ADCSR_ADDR, S12AD_ADCSR_ADST_BIT); 641 636 } -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.