{"id":648,"date":"2014-02-25T17:18:06","date_gmt":"2014-02-25T08:18:06","guid":{"rendered":"http:\/\/www.gvc-on.net\/?page_id=648"},"modified":"2014-02-25T17:20:19","modified_gmt":"2014-02-25T08:20:19","slug":"%e6%b8%ac%e8%b7%9d%e3%82%bb%e3%83%b3%e3%82%b5%e3%83%bc%e3%83%a2%e3%82%b8%e3%83%a5%e3%83%bc%e3%83%ab%e7%94%a8%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%a0slave_distance_18f26k22-c","status":"publish","type":"page","link":"https:\/\/www.gvc-on.net\/?page_id=648","title":{"rendered":"\u6e2c\u8ddd\u30bb\u30f3\u30b5\u30fc\u30e2\u30b8\u30e5\u30fc\u30eb\u7528\u30d7\u30ed\u30b0\u30e9\u30e0(slave_distance_18f26k22.c)"},"content":{"rendered":"<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n\/\/ --------------------------------------------------\r\n\/\/ Global Versatile Controler http:\/\/www.gvc-on.net\/\r\n\/\/ --------------------------------------------------\r\n\/\/ --------------------------------------------------\r\n\/\/ Revision Memo (Y.M.D Editor\/Memo)\r\n\/\/ --------------------------------------------------\r\n\/\/\r\n\/\/ \u6e2c\u8ddd\u30e2\u30b8\u30e5\u30fc\u30eb\u7528\r\n\/\/\r\n\/\/ \u6e2c\u8ddd\u30bb\u30f3\u30b5\u30fc(LV-EZ\u30b7\u30ea\u30fc\u30ba)\u306eAN(\u30a2\u30ca\u30ed\u30b0\u51fa\u529b:Vcc\/512=per inch)\u3092\u3001PIC(18F26K22)\u306eAN1(RA1)\u306b\u63a5\u7d9a\u3057\u3066\u96fb\u5727\u304b\u3089\u8ddd\u96e2\u3092\u53d6\u5f97\u3059\u308b\r\n\/\/ \u30fb\u306a\u304a\u300112F1822\u306e\u6642\u3068\u9055\u3063\u3066\u300118F26K22\u306eRA\u306f\u3082\u3068\u3082\u3068\u30d7\u30eb\u30a2\u30c3\u30d7\u3057\u3066\u3044\u306a\u3044\u3002(RBx\u306f\u3057\u3066\u308b)\r\n\/\/ \u30fb\u30c7\u30fc\u30bf\u306f2\u30d0\u30a4\u30c8\u306b\u53f3\u8a70\u3068\u3059\u308b\r\n\/\/ \u30fb16MHz\u99c6\u52d5\u306e\u6642\u306b\u306f\u3001FOSC\/16 \u30671us\u4f7f\u3063\u3066\u96fb\u5727\u6e2c\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\r\n\/\/ \u30fb\u5185\u90e8\u56fa\u5b9a\u96fb\u5727\u3092VREFCON0\u3067\u5b9a\u7fa9\u3059\u308b\u3068\u3044\u3044(REFCON\u306e\u540d\u79f0\u304cPIC\u306b\u3088\u3063\u3066\u5fae\u5999\u306b\u9055\u3046\u2026\u3080\u3045)\r\n\/\/ \u53c2\u8003\u2192http:\/\/homepage3.nifty.com\/mitt\/pic\/pic2320_02.html\r\n\/\/ \r\n\/\/ 2013.05.08 T.Kabu\r\n\/\/ GVC Rev.2\u3068\u3057\u3066\u306e\u3082\u308d\u3082\u308d\u3092\u5b9a\u7fa9\r\n\/\/ \r\n\/\/ ------------------------------\r\n\/\/ BASE\r\n\/\/ ------------------------------\r\n\/\/ 2013.06.17 T.Kabu \u6e29\u5ea6\u6e7f\u5ea6\u304b\u3089\u6e2c\u8ddd\u306b\u6d41\u7528\r\n\/\/ 2013.06.03 T.Kabu Rev.2\u7528\u306b\u8272\u3005\u4fee\u6b63\r\n\r\n\/\/---------------------------------------------------\r\n\/\/ Include Header\r\n\/\/---------------------------------------------------\r\n\/\/ ----------------------------------------\r\n\/\/ Standard Header\r\n\/\/ ----------------------------------------\r\n#include &lt;xc.h&gt;\r\n#include &lt;plib.h&gt;\r\n#include &lt;htc.h&gt;\r\n#include &lt;stdio.h&gt;\r\n#include &lt;stdlib.h&gt;\r\n#include &lt;string.h&gt;\r\n\r\n\/\/ ----------------------------------------\r\n\/\/ User Header\r\n\/\/ ----------------------------------------\r\n\/\/ Pragma Header\r\n#include &quot;pragma.h&quot;\r\n\r\n\/\/ PIC Parameter define and initialize\r\n#include &quot;pic_init.h&quot;\r\n\r\n\/\/ GVC Parameter define and initialize\r\n#include &quot;gvc_init.h&quot;\r\n\r\n\/\/ --------------------------------------------------\r\n\/\/ Const Define\r\n\/\/ --------------------------------------------------\r\n#define VERSION &quot;=== GVC SLAVE MODULE DEVICE PROGRAM for 18F26K22 (DISTANCE) ===&quot;\r\n\r\n\/\/ PIC\u306eI2C\u30a2\u30c9\u30ec\u30b9\u3001\u9069\u6642\u5909\u66f4\u3059\u308b\u3053\u3068\r\n#define\tI2C_ADDR\t\t\t0x50\t\t\t\t\/\/ \u30e2\u30b8\u30e5\u30fc\u30eb\u3054\u3068\u306b\u30a2\u30c9\u30ec\u30b9\u3092\u5909\u3048\u308b\u3053\u3068!!\r\n\r\n\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u30b5\u30a4\u30ba\r\n#define SERIAL_RCV_BUFFSIZE\t16\r\n#define SERIAL_RCV_BUFFRING\t15\t\t\t\t\t\t\/\/ SERIAL_RCV_BUFFSIZE\u304b\u30891\u6e1b\u3089\u3057\u305f\u5024\u3092\u8a2d\u5b9a\r\n\r\n\/\/ \u30b7\u30ea\u30a2\u30eb\u30d0\u30c3\u30d5\u30a1\u30b5\u30a4\u30ba\r\n#define SERIAL_BUFF_SIZE\t512\r\n\r\n\/\/ I2C\u30d0\u30c3\u30d5\u30a1\u30b5\u30a4\u30ba\r\n#define RX_BUFF_SIZE\t\t512\r\n#define TX_BUFF_SIZE\t\t512\r\n\r\n\/\/ \u30b7\u30ea\u30a2\u30eb\u30d0\u30c3\u30d5\u30a1\u3068I2C\u30d0\u30c3\u30d5\u30a1\u306f\u3001\u305d\u308c\u305e\u308c\u306eGVC\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u60f3\u5b9a\u3057\u3066\u3044\u308b\u30c7\u30fc\u30bf\u306b\u5408\u308f\u305b\u305f\u30b5\u30a4\u30ba\u306b\u3059\u308b\u3053\u3068\r\n\/\/ \u8d64\u5916\u7dda\u30c7\u30fc\u30bf\u3060\u3051\u306f\u3001\u3069\u3046\u304c\u3093\u3070\u3063\u3066\u30823096\u30d0\u30a4\u30c8\u3092\u3072\u3068\u3064\u78ba\u4fdd\u3057\u305f\u3089\u7d42\u308f\u308a\u306a\u306e\u3067\u3001\u305d\u308c\u305e\u308c\u3067\u4f7f\u3044\u56de\u3057\u3092\u3057\u306a\u3044\u3068\u3044\u3051\u306a\u3044\u306e\u3067\u3001\u4f7f\u3044\u65b9\u306b\u6ce8\u610f\u3059\u308b\u3053\u3068\r\n\r\n\r\n\/\/ --------------------------------------------------\r\n\/\/ Variable Param\r\n\/\/ --------------------------------------------------\r\n\/\/ \u5272\u308a\u8fbc\u307f\u51e6\u7406\u5185\u3067\u306e\u30ec\u30b8\u30b9\u30bf\u306e\u5024\u3092\u683c\u7d0d\u3059\u308b\u5909\u6570\u306f\u3053\u3053\u3067\u5ba3\u8a00\u3059\u308b\u3053\u3068\u3001\u5272\u308a\u8fbc\u307f\u51e6\u7406\u5185\u3067\u5ba3\u8a00\u3057\u3066\u306f\u3044\u3051\u306a\u3044!! T.Kabu 2013.05.14\r\nunsigned char reg_RCSTA1;\t\t\t\t\t\t\t\/\/ \u53d7\u4fe1\u30b9\u30c6\u30fc\u30bf\u30b9\u30ec\u30b8\u30b9\u30bf\r\nunsigned char reg_SSP1STAT;\t\t\t\t\t\t\t\/\/ SSP1\u30b9\u30c6\u30fc\u30bf\u30b9\u30ec\u30b8\u30b9\u30bf\r\nunsigned char temp_buffer;\t\t\t\t\t\t\t\/\/ SSP1BUF\u306e\u7a7a\u8aad\u307f\u7528\r\nGVC_I2C_MESSAGE_t * gvc_i2c_message;\t\t\t\t\/\/ GVC I2C\u30e1\u30c3\u30bb\u30fc\u30b8\u7528\u30dd\u30a4\u30f3\u30bf(tx_buffer\/rx_buffer\u306b\u304b\u3076\u305b\u308b)\r\n\r\nunsigned char serial_rcvptr;\t\t\t\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u30dd\u30a4\u30f3\u30bf\r\nunsigned char serial_readptr;\t\t\t\t\t\t\/\/ \u53d7\u4fe1\u8aad\u307f\u51fa\u3057\u30dd\u30a4\u30f3\u30bf\r\nunsigned char serial_rcvbuff&#x5B;SERIAL_RCV_BUFFSIZE];\t\/\/ \u53d7\u4fe1\u30ea\u30f3\u30b0\u30d0\u30c3\u30d5\u30a1(RCREG1)\r\n\r\nunsigned char serial_buffer&#x5B;SERIAL_BUFF_SIZE];\t\t\/\/ \u30b7\u30ea\u30a2\u30eb\u30d0\u30c3\u30d5\u30a1(\u4f5c\u696d\u7528)\r\n\/\/char rcv_data;\t\t\t\t\t\t\t\t\t\/\/ \u53d7\u4fe1\u30c7\u30fc\u30bf\r\n\r\nunsigned char rx_buffer&#x5B;RX_BUFF_SIZE];\t\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\r\nunsigned int  rx_count = 0;\t\t\t\t\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u4f4d\u7f6e\r\n\r\nunsigned char tx_buffer&#x5B;TX_BUFF_SIZE];\t\t\t\t\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\r\nunsigned int  tx_count = 0;\t\t\t\t\t\t\t\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u4f4d\u7f6e\r\n\r\nunsigned int  i2c_data_len;\t\t\t\t\t\t\t\/\/ I2C\u306e\u30c7\u30fc\u30bf\u9577(data_len)\r\n\r\nstatic char   i2c_status = 0;\t\t\t\t\t\t\/\/ I2C\u30b9\u30c6\u30fc\u30bf\u30b9 0:\u5f85\u6a5f\u72b6\u614b 1:\u30c7\u30fc\u30bf\u53d7\u4fe1\u4e2d 10:\u30c7\u30fc\u30bf\u53d7\u4fe1\u5b8c\u4e86\r\n\r\n\/\/ --------------------------------------------------\r\n\/\/ Function prototype\r\n\/\/ --------------------------------------------------\r\n\/\/ --------------------------------------------------\r\n\/\/ Sub Routine\r\n\/\/ --------------------------------------------------\r\n\/\/ ------------------------------\r\n\/\/ Recieve serialdata\r\n\/\/ ------------------------------\r\nchar rcv_serialdata(void)\r\n{\r\n\tunsigned char data;\r\n\t\r\n\t\/\/ \u8fd4\u308a\u5024\u7528\u30c7\u30fc\u30bf\u306b\u53d7\u4fe1\u30c7\u30fc\u30bf\u30b3\u30d4\u30fc\r\n\tdata = serial_rcvbuff&#x5B;serial_readptr];\r\n\t\/\/ \u53d7\u4fe1\u8aad\u307f\u51fa\u3057\u30dd\u30a4\u30f3\u30bf\u3092\u52a0\u7b97\r\n\tserial_readptr ++;\r\n\t\/\/ \u53d7\u4fe1\u8aad\u307f\u51fa\u3057\u30dd\u30a4\u30f3\u30bf\u3092\u30ea\u30f3\u30b0\u308b\r\n\tserial_readptr &amp;= SERIAL_RCV_BUFFRING;\r\n\t\r\n\t\/\/ \u53d7\u4fe1\u30c7\u30fc\u30bf\u3092\u8fd4\u3059\r\n\treturn data;\r\n}\r\n\r\n\/\/ ----------------------------------------\r\n\/\/ Setup 18F26K22 for Analog Voltage\r\n\/\/ ----------------------------------------\r\nvoid init_pic_for_analogvoltage(void)\r\n{\r\n\t\/\/ ------------------------------\r\n\t\/\/ \u30dd\u30fc\u30c8A\u8a2d\u5b9a\r\n\t\/\/ ------------------------------\r\n\t\/\/ bit7   : RA7 1 = input, 0 = output\r\n\t\/\/ bit6   : RA6 1 = input, 0 = output\r\n\t\/\/ bit5   : RA5 1 = input, 0 = output\r\n\t\/\/ bit4   : RA4 1 = input, 0 = output\r\n\t\/\/ bit3   : RA3 1 = input, 0 = output\r\n\t\/\/ bit2   : RA2 1 = input, 0 = output\r\n\t\/\/ bit1   : RA1 1 = input, 0 = output\r\n\t\/\/ bit0   : RA0 1 = input, 0 = output\r\n\tTRISA = 0b00001111;\t\t\/\/ RA0-RA3\u3092\u3092\u96fb\u5727\u6e2c\u5b9a\u7528\u306binput\u30e2\u30fc\u30c9\r\n\t\r\n\t\/\/ ANSELA: PORTA ANALOG SELECT REGISTER \u30dd\u30fc\u30c8\u306eI\/O\u30e2\u30fc\u30c9\u306e\u8a2d\u5b9a\u3002\r\n\t\/\/ bit7-6 : none (0)\r\n\t\/\/ bit5   : ANSA4: Analog Select between Analog or Digital Function on pins RA5, respectively\r\n\t\/\/            0 = Digital I\/O. Pin is assigned to port or digital special function.\r\n\t\/\/            1 = Analog input. Pin is assigned as analog input(1). Digital input buffer disabled.\r\n\t\/\/ bit4   : none (0)\r\n\t\/\/ bit3   : ANSA3: Analog Select between Analog or Digital Function on pins RA3, respectively\r\n\t\/\/ bit2   : ANSA2: Analog Select between Analog or Digital Function on pins RA2, respectively\r\n\t\/\/ bit1   : ANSA1: Analog Select between Analog or Digital Function on pins RA1, respectively\r\n\t\/\/ bit0   : ANSA0: Analog Select between Analog or Digital Function on pins RA0, respectively\r\n\tANSELA = 0b00001111;\t\/\/ AN0(=RA0),AN1(=RA1),AN2(=RA2),AN3(=RA3) Analog input\r\n\t\r\n\t\/\/ ADCON0 \u306f\u3001\u5b9f\u969b\u306b\u96fb\u5727\u3092\u8aad\u3080\u3068\u304d\u306b\u3001\u305d\u306e\u30dd\u30fc\u30c8\u3092\u6307\u5b9a\u3057\u306a\u3044\u3068\u3044\u3051\u306a\u3044\u306e\u3067\u3053\u3053\u3067\u306f\u3044\u3058\u3089\u306a\u3044\r\n\t\r\n\t\/\/ bit 7 TRIGSEL: Special Trigger Select bit\r\n\t\/\/     1 = Selects the special trigger from CTMU\r\n\t\/\/     0 = Selects the special trigger from CCP5\r\n\t\/\/ bit 6-4 Unimplemented: Read as \u20180\u2019\r\n\t\/\/ bit 3-2 PVCFG&lt;1:0&gt;: Positive Voltage Reference Configuration bits\r\n\t\/\/     00 = A\/D VREF+ connected to internal signal, AVDD\r\n\t\/\/     01 = A\/D VREF+ connected to external pin, VREF+\r\n\t\/\/     10 = A\/D VREF+ connected to internal signal, FVR BUF2\r\n\t\/\/     11 = Reserved (by default, A\/D VREF+ connected to internal signal, AVDD)\r\n\t\/\/ bit 1-0 NVCFG0&lt;1:0&gt;: Negative Voltage Reference Configuration bits\r\n\t\/\/     00 = A\/D VREF- connected to internal signal, AVSS\r\n\t\/\/     01 = A\/D VREF- connected to external pin, VREF-\r\n\t\/\/     10 = Reserved (by default, A\/D VREF+ connected to internal signal, AVSS)\r\n\t\/\/     11 = Reserved (by default, A\/D VREF+ connected to internal signal, AVSS)\r\n\/\/\tADCON1 = 0b00000000;\t\t\/\/ VREF+\u3001VREF-\u3068\u3082\u306b\u5185\u90e8\u4f9b\u7d66\u96fb\u5727Vdd\u306b\u5bfe\u3057\u3066\u306e\u5024\u3068\u306a\u308b\r\n\tADCON1 = 0b00001000;\t\t\/\/ VREF+\u306fFVR\u304b\u3089\u3001VREF-\u306fGND\u306b\u5bfe\u3057\u3066\u306e\u5024\u3068\u306a\u308b\r\n\t\r\n\t\/\/ AD\u5909\u63db\u5236\u5fa1\u30ec\u30b8\u30b9\u30bf2\u8a2d\u5b9a A\/D CONTROL REGISTER 2\r\n\t\/\/ bit 7 ADFM: A\/D Conversion Result Format Select bit\r\n\t\/\/     1 = Right justified\r\n\t\/\/     0 = Left justified\r\n\t\/\/ bit 6 Unimplemented: Read as \u20180\u2019\r\n\t\/\/ bit 5-3 ACQT&lt;2:0&gt;: A\/D Acquisition time select bits. Acquisition time is the duration that the A\/D charge holding\r\n\t\/\/         capacitor remains connected to A\/D channel from the instant the GO\/DONE bit is set until conversions\r\n\t\/\/         begins.\r\n\t\/\/     000 = 0(1)\r\n\t\/\/     001 = 2 TAD\r\n\t\/\/     010 = 4 TAD\r\n\t\/\/     011 = 6 TAD\r\n\t\/\/     100 = 8 TAD\r\n\t\/\/     101 = 12 TAD\r\n\t\/\/     110 = 16 TAD\r\n\t\/\/     111 = 20 TAD\r\n\t\/\/ bit 2-0 ADCS&lt;2:0&gt;: A\/D Conversion Clock Select bits\r\n\t\/\/     000 = FOSC\/2\r\n\t\/\/     001 = FOSC\/8\r\n\t\/\/     010 = FOSC\/32\r\n\t\/\/     011 = FRC(1) (clock derived from a dedicated internal oscillator = 600 kHz nominal)\r\n\t\/\/     100 = FOSC\/4\r\n\t\/\/     101 = FOSC\/16\r\n\t\/\/     110 = FOSC\/64\r\n\t\/\/     111 = FRC(1) (clock derived from a dedicated internal oscillator = 600 kHz nominal)\r\n\tADCON2 = 0b10110101;\t\/\/ \u53f3\u5bc4\u305b\u300116TAD\u3001FOSC\/16\r\n\t\r\n\t\/\/ \u96fb\u5727\u30ea\u30d5\u30a1\u30ec\u30f3\u30b9\u5236\u5fa1\u30ec\u30b8\u30b9\u30bf0 FIXED VOLTAGE REFERENCE CONTROL REGISTER\r\n\t\/\/ bit 7 FVREN: Fixed Voltage Reference Enable bit\r\n\t\/\/     0 = Fixed Voltage Reference is disabled\r\n\t\/\/     1 = Fixed Voltage Reference is enabled\r\n\t\/\/ bit 6 FVRST: Fixed Voltage Reference Ready Flag bit\r\n\t\/\/     0 = Fixed Voltage Reference output is not ready or not enabled\r\n\t\/\/     1 = Fixed Voltage Reference output is ready for use\r\n\t\/\/ bit 5-4 FVRS&lt;1:0&gt;: Fixed Voltage Reference Selection bits\r\n\t\/\/     00 = Fixed Voltage Reference Peripheral output is off\r\n\t\/\/     01 = Fixed Voltage Reference Peripheral output is 1x (1.024V)\r\n\t\/\/     10 = Fixed Voltage Reference Peripheral output is 2x (2.048V)(1)\r\n\t\/\/     11 = Fixed Voltage Reference Peripheral output is 4x (4.096V)(1)\r\n\t\/\/ bit 3-2 Reserved: Read as \u20180\u2019. Maintain these bits clear.\r\n\t\/\/ bit 1-0 Unimplemented: Read as \u20180\u2019.\r\n\tVREFCON0 = 0b10110000;\t\/\/ FVR\u6709\u52b9\u3001x4\u306e4.096V\u3068\u3059\u308b\r\n}\r\n\r\n\/\/ ----------------------------------------\r\n\/\/ Get distance data\r\n\/\/ ----------------------------------------\r\nfloat get_distance(char format, char * result_buff)\r\n{\r\n\t\/\/ float \u3092\u30b9\u30bf\u30c3\u30af\u306b\u3044\u3063\u3071\u3044\u7528\u610f\u3057\u3088\u3046\u3068\u3059\u308b\u3068\u3001\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u306b\u306a\u308b\u3088!! &quot;fixup overflow referencing psect...&quot; \u3068\u3044\u308f\u308c\u3066\r\n\t\/\/ \u30ea\u30f3\u30af\u3067\u304d\u306a\u304b\u3063\u305f\u3089\u3001\u5909\u6570\u306fstatic\u5ba3\u8a00\u3067\u3061\u3083\u3093\u3068\u56fa\u5b9a\u30e1\u30e2\u30ea\u9818\u57df\u3092\u4f7f\u304a\u3046 2013.06.10 T.Kabu\r\n\r\n\tstatic int\t\tan_data = 0;\r\n\t\r\n\tstatic float\tdist_volt = 0.0;\r\n\tstatic float\tdist_inch = 0.0;\r\n\tstatic float\tdist_meter = 0.0;\r\n\t\r\n\tstatic int\t\tftoa_status;\t\t\t\t\t\t\t\t\t\/\/ ftoa()\u7528\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u5909\u6570\r\n\t\r\n\t\/\/ \u30bb\u30f3\u30b5\u30fc\u304c\u63a5\u7d9a\u3055\u308c\u3066\u3044\u308bPIC\u306e\u30dd\u30fc\u30c8(AN1)\u304b\u3089\u73fe\u5728\u306e\u96fb\u5727\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3059\u308b\r\n\tan_data = get_port_voltage(1);\r\n\t\/\/ \u96fb\u5727\u30c7\u30fc\u30bf\u3092\u96fb\u5727\u306b\u5909\u63db\r\n\tdist_volt = (FVR_VOLT \/ 1024) * an_data;\r\n\tdist_inch = dist_volt \/ (vdd_volt \/ 512);\r\n\tdist_meter = dist_inch * 0.0254;\r\n\t\r\n\t\/\/ \u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u5225\u306b\u51e6\u7406\u5206\u5c90\r\n\tswitch (format)\r\n\t{\r\n\t\tcase 0x01:\t\/\/ &#x5B;m]\u3001\u6587\u5b57\u5217\u3067\u5c0f\u6570\u70b9\u8868\u8a18\u306e\u5b9f\u657016\u6587\u5b57\r\n\t\t\tsprintf(result_buff, &quot;%s&quot;,  ftoa(dist_meter, &amp;ftoa_status));\r\n\t\t\tbreak;\r\n\t\tcase 0x02:\t\/\/ &#x5B;mm]\u3001\u6587\u5b57\u5217\u3067\u5c0f\u6570\u70b9\u8868\u8a18\u306e\u5b9f\u657016\u6587\u5b57\r\n\t\t\tsprintf(result_buff, &quot;%s&quot;,  ftoa(dist_meter * 1000, &amp;ftoa_status));\r\n\t\t\tbreak;\r\n\t\tcase 0x03:\t\/\/ &#x5B;um]\u3001\u6587\u5b57\u5217\u3067\u5c0f\u6570\u70b9\u8868\u8a18\u306e\u5b9f\u657016\u6587\u5b57\r\n\t\t\tsprintf(result_buff, &quot;%s&quot;,  ftoa(dist_meter * 1000 * 1000, &amp;ftoa_status));\r\n\t\t\tbreak;\r\n\t\tcase 0x04:\t\/\/ &#x5B;nm]\u3001\u6587\u5b57\u5217\u3067\u5c0f\u6570\u70b9\u8868\u8a18\u306e\u5b9f\u657016\u6587\u5b57\r\n\t\t\tsprintf(result_buff, &quot;%s&quot;,  ftoa(dist_meter * 1000 * 1000 * 1000, &amp;ftoa_status));\r\n\t\t\tbreak;\r\n\t\tcase 0x05:\t\/\/ &#x5B;km]\u3001\u6587\u5b57\u5217\u3067\u5c0f\u6570\u70b9\u8868\u8a18\u306e\u5b9f\u657016\u6587\u5b57\r\n\t\t\tsprintf(result_buff, &quot;%s&quot;,  ftoa(dist_meter \/ 1000, &amp;ftoa_status));\r\n\t\t\tbreak;\r\n\t\tcase 0x06:\t\/\/ &#x5B;cm]\u3001\u6587\u5b57\u5217\u3067\u5c0f\u6570\u70b9\u8868\u8a18\u306e\u5b9f\u657016\u6587\u5b57\r\n\t\t\tsprintf(result_buff, &quot;%s&quot;,  ftoa(dist_meter * 100, &amp;ftoa_status));\r\n\t\t\tbreak;\r\n\t\tcase 0x81:\t\/\/ \u30e2\u30b8\u30e5\u30fc\u30eb\u60c5\u5831\r\n\t\t\tsprintf(result_buff, &quot;GVC Distance Module Verx.xx Sensor=LV-EZ4 Vdd=%0.3f Vref=%0.3f&quot;, vdd_volt, FVR_VOLT);\r\n\t\t\tbreak;\r\n\t\tcase 0x82:\t\/\/ \u30e2\u30b8\u30e5\u30fc\u30eb\u60c5\u5831\r\n\t\t\tsprintf(result_buff, &quot;GVC Distance Module x.xx,LV-EZ4\\t,%0.3f,%0.3f&quot;, vdd_volt, FVR_VOLT);\r\n\t\t\tbreak;\r\n\t\tcase 0x83:\t\/\/ \u30e2\u30b8\u30e5\u30fc\u30eb\u60c5\u5831\r\n\t\t\tsprintf(result_buff, &quot;GVC Distance Module x.xx\\tLV-EZ4\\t%0.3f\\t%0.3f&quot;, vdd_volt, FVR_VOLT);\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tsprintf(result_buff, &quot;Unsupported %02x&quot;, format);\r\n\t\t\tbreak;\r\n\t}\r\n\t\/\/ &#x5B;m]\u3001\u6587\u5b57\u5217\u3067\u5c0f\u6570\u70b9\u8868\u8a18\u306e\u5b9f\u657016\u6587\u5b57\u3092\u8fd4\u3059\r\n\treturn dist_meter;\r\n}\r\n\r\n\/\/ ------------------------------\r\n\/\/ Setup MSSP1 18F26K22\r\n\/\/ ------------------------------\r\nvoid init_mssp1_18F26K22(void)\r\n{\r\n\t\/\/ ------------------------------\r\n\t\/\/ MSSP1\u5236\u5fa1\u30c7\u30fc\u30bf\u8a2d\u5b9a \u30b9\u30ec\u30fc\u30d6\u3068\u3057\u3066\u8a2d\u5b9a\u3059\u308b\u5834\u5408\r\n\t\/\/ ------------------------------\r\n\t\/\/ bit 7   : SMP 1 = Slew rate control disabled for standard speed mode (100 kHz and 1 MHz)\r\n\t\/\/         :     0 = Slew rate control enabled for high speed mode (400 kHz)\r\n\t\/\/ bit 6   : CKE 1 = Enable input logic so that thresholds are compliant with SMbus specification\r\n\t\/\/         :     0 = Disable SMbus specific inputs\r\n\t\/\/ bit 5   : D\/A: Data\/Address bit (I2C mode only)\r\n\t\/\/         :     1 = Indicates that the last byte received or transmitted was data\r\n\t\/\/         :     0 = Indicates that the last byte received or transmitted was address\r\n\t\/\/ bit 4   : P: Stop bit\r\n\t\/\/         : (I2C mode only. This bit is cleared when the MSSPx module is disabled, SSPxEN is cleared.)\r\n\t\/\/         :     1 = Indicates that a Stop bit has been detected last (this bit is \u20180\u2019 on Reset)\r\n\t\/\/         :     0 = Stop bit was not detected last\r\n\t\/\/ bit 3   : S: Start bit\r\n\t\/\/         : (I2C mode only. This bit is cleared when the MSSPx module is disabled, SSPxEN is cleared.)\r\n\t\/\/         :     1 = Indicates that a Start bit has been detected last (this bit is \u20180\u2019 on Reset)\r\n\t\/\/         :     0 = Start bit was not detected last\r\n\t\/\/ bit 2   : R\/W: Read\/Write bit information (I2C mode only)\r\n\t\/\/         : In I2 C Master mode:\r\n\t\/\/         :     1 = Transmit is in progress\r\n\t\/\/         :     0 = Transmit is not in progress\r\n\t\/\/         : OR-ing this bit with SEN, RSEN, PEN, RCEN or ACKEN will indicate if the MSSPx is in Idle mode.\r\n\t\/\/         : (\u3053\u306e\u30d3\u30c3\u30c8\u3068\u3001SEN\u3001RSEN\u3001PEN\u3001RCEN\u3001\u307e\u305f\u306fACKEN \u3068\u306e\u8ad6\u7406\u548c\u3092\u53d6\u308b\u3068\u3001\u30de\u30b9\u30bf\u30e2\u30fc\u30c9\u304c\u30a2\u30af\u30c6\u30a3\u30d6\u304b\u3069\u3046\u304b\u3092\u5224\u65ad\u3067\u304d\u308b)\r\n\t\/\/ bit 1   : UA: Update Address bit (10-bit I2C mode only)\r\n\t\/\/ bit 0   : BF: Buffer Full Status bit\r\n\t\/\/         : Receive (SPI and I2 C modes):\r\n\t\/\/         :     1 = Receive complete, SSPxBUF is full\r\n\t\/\/         :     0 = Receive not complete, SSPxBUF is empty\r\n\t\/\/         : Transmit (I2 C mode only):\r\n\t\/\/         :     1 = Data transmit in progress (does not include the ACK and Stop bits), SSPxBUF is full\r\n\t\/\/         :     0 = Data transmit complete (does not include the ACK and Stop bits), SSPxBUF is empty\r\n\tSSP1STAT= 0b00000000;\t\/\/ 400kHz Slew rate\r\n\t\r\n\t\/\/ bit7   : WCOL master(1 = Collision, 0 = No Collision), slave(1 = must be cleard, 0 = No Collision)\r\n\t\/\/ bit6   : SSP1OV SPI(pass), I2C(1 = overflow, 0 = not Overflow)\r\n\t\/\/ bit5   : SSP1EN SPI(pass), I2C(1 = enable SDA\/SCL w\/input mode, 0 = disable)\r\n\t\/\/ bit4   : CKP    SPI(pass), I2C(master(1 = enable clock, 0 = hold clock low), slave (unused))\r\n\t\/\/ bit3-0 : SSP1M  0110 I2C Slave mode, 7bit address\r\n\t\/\/        : SSP1M  0111 I2C Slave mode, 10bit address\r\n\t\/\/        : SSP1M  1000 I2C Master mode, clock = Fosc\/(4 * (SSP1ADD + 1))\r\n\t\/\/        : SSP1M  1011 I2C F\/W controled Master mode(Slave Idle)\r\n\t\/\/        : SSP1M  1110 I2C Slave mode, 7bit address w\/Start\/Stop bit INT\r\n\t\/\/        : SSP1M  1111 I2C Slave mode, 10bit address w\/Start\/Stop bit INT\r\n\tSSP1CON1 = 0b00110110;\t\t\/\/ SSP1EN = 1, CKP = 1, SSP1M = Slave mode 7bit \r\n\t\r\n\tSSP1CON2bits.SEN = 1;\t\t\/\/ Start Condition Enabled bit ... SSP1CON2) \u2190\u30de\u30b9\u30bf\u30fc\u304b\u3089\u30c7\u30fc\u30bf\u3092\u53d7\u3051\u53d6\u308b\u306a\u3089\u8a2d\u5b9a\u5fc5\u8981\r\n\t\r\n\t\/\/ \u3053\u306e\u30c7\u30d0\u30a4\u30b9\u306eI2C\u30a2\u30c9\u30ec\u30b9\u3092\u8a2d\u5b9a\r\n\tSSP1ADD = I2C_ADDR &lt;&lt; 1;\r\n\t\r\n\t\/\/ MSSP1\u5272\u308a\u8fbc\u307f\u521d\u671f\u5316\r\n\tPIR1bits.SSP1IF = 0;\r\n\t\r\n\t\/\/ MSSP1\u30d0\u30b9\u885d\u7a81\u5272\u308a\u8fbc\u307f\u30d5\u30e9\u30b0\u3092\u521d\u671f\u5316\r\n\tPIR2bits.BCL1IF = 0;\r\n\t\r\n\t\/\/ 100ms\u5f85\u3064\r\n\tDelay_10ms(10);\r\n}\r\n\r\n\/\/ ------------------------------\r\n\/\/ Interrupt Routine\r\n\/\/ ------------------------------\r\n\/\/ I2C\u306e\u30de\u30b9\u30bf\u30fc\u3068\u30b9\u30ec\u30fc\u30d6\u3068\u306e\u3084\u308a\u53d6\u308a\u306f\u3001\u30c7\u30fc\u30bf\u30b7\u30fc\u30c8\u306e\u8aac\u660e\u304c\u8a00\u8449\u8db3\u3089\u305a\u306a\u305f\u3081\u306b\r\n\/\/ \u975e\u5e38\u306b\u5224\u308a\u3065\u3089\u3044\u3002\u305f\u3060\u3057\u3001\u5224\u3063\u3066\u3057\u307e\u3046\u3068\u4f55\u3060\u305d\u308c\u3060\u3051\u304b\u3001\u3068\u306a\u308b\u3002\r\n\/\/ \r\n\/\/ \u7279\u306b\u30b9\u30ec\u30fc\u30d6\u5074\u3067\u3042\u308c\u3053\u308c\u8a2d\u5b9a\u3057\u305f\u308a\u5224\u5b9a\u3084\u51e6\u7406\u306b\u5fc5\u8981\u306a\u306e\u306f\u6b21\u306e\u30d3\u30c3\u30c8\r\n\/\/ \u30fbD\/A\u20261=SSP1BUF\u306e\u4e2d\u306f\u30c7\u30fc\u30bf\u30010=SSP1BUF\u306e\u4e2d\u306f\u30a2\u30c9\u30ec\u30b9(\u7a7a\u3063\u307d\u2026\u7a7a\u306e\u8aad\u307f\u51fa\u3057\u8981\u6c42\u6642)\r\n\/\/ \u30fbR\/W\u20261=\u30de\u30b9\u30bf\u30fc\u304c\u30b9\u30ec\u30fc\u30d6\u304b\u3089\u53d7\u4fe1\u30010=\u30de\u30b9\u30bf\u30fc\u304c\u30b9\u30ec\u30fc\u30d6\u3078\u9001\u4fe1\r\n\/\/ \u30fbBF\u20261=\u30d0\u30c3\u30d5\u30a1\u306b\u4f55\u304b\u5165\u3063\u3066\u3044\u308b(\u7a7a\u306e\u8aad\u307f\u51fa\u3057\u8981\u6c42\u6642\u3082)\u30010=\u30d0\u30c3\u30d5\u30a1\u306f\u7a7a\u3063\u307d\r\n\/\/ \u30fbCKP\u2026\u30de\u30b9\u30bf\u30fc\u306b\u30c7\u30fc\u30bf\u9001\u4fe1\u3092\u8a31\u53ef\u3059\u308b\u3068\u304d\u3001\u30b9\u30ec\u30fc\u30d6\u304b\u3089\u9001\u4fe1\u3059\u308b\u3068\u304d\u306b1\u306b\u3057\u3066SCL\u3092\u30ea\u30ea\u30fc\u30b9\u3059\u308b\r\n\/\/ \u30fbSSP1IF\u2026\u5272\u308a\u8fbc\u307f\u30d5\u30e9\u30b0\u3001\u306a\u3093\u304b\u3057\u305f\u3089\u30af\u30ea\u30a2\u3059\u308b\r\n\/\/ \u30fbSEN\u2026\u30de\u30b9\u30bf\u30fc\u304b\u3089\u30c7\u30fc\u30bf\u3092\u53d7\u4fe1\u3059\u308b\u6642\u306b\u3001\u30bd\u30d5\u30c8\u5074\u3067CKP\u3092\u5236\u5fa1\u3059\u308b\u305f\u3081\u306b1\u306b\u3059\u308b\u30020\u3060\u3068\u3046\u307e\u304f\u52d5\u304b\u306a\u3044\u3088!!\r\n\/\/(\u30fbS\u2026\u30b9\u30bf\u30fc\u30c8\u30d3\u30c3\u30c8\u3001\u7279\u306b\u4f7f\u308f\u306a\u304f\u3066\u3082\u3044\u3044\u6c17\u304c\u3059\u308b)\r\n\/\/\r\n\/\/ \u3067\u3001\u5224\u5b9a\u306b\u4f7f\u3046\u30d3\u30c3\u30c8\u304c\u591a\u3044\u3051\u3069\u3001\u57fa\u672c\u7684\u306b\u306fSSP1STAT\u306a\u306e\u3067\u3001\u30de\u30b9\u30af\u3057\u3066\u4e00\u62ec\u5224\u5b9a\u3059\u308c\u3070OK\u3002\r\n\/\/ --------------------------------------------------\r\n\/\/ 18F26K22 Interrupt Routine\r\n\/\/ --------------------------------------------------\r\n\/\/ \u5272\u308a\u8fbc\u307f\u306f\u3059\u3079\u3066interrupt\u5ba3\u8a00\u3055\u308c\u305f\u3053\u306e\u95a2\u6570\u304c\u547c\u3070\u308c\u308b\r\nstatic void interrupt interrupt_18F26K22()\r\n{\r\n\t\/\/ \u5168\u5272\u308a\u8fbc\u307f\u3092\u7981\u6b62(=0) (Global Interrupt Enable bit ... INTCON)\r\n\tINTCONbits.GIE = 0;\r\n\t\r\n\t\/\/ ----------------------------------------\r\n\t\/\/ MSSP1\u5272\u308a\u8fbc\u307f\u51e6\u7406 (Rev.1\u306e18F26K22_I2C.c\u3092\u53c2\u7167\u3059\u308b\u3053\u3068\r\n\t\/\/ ----------------------------------------\r\n\t\/\/ MSSP\u5272\u308a\u8fbc\u307f(=1)\u306a\u3089 (Synchronous Serial Port (MSSP) Interrupt Flag bit ... PIR1)\r\n\tif (PIR1bits.SSP1IF == 1)\r\n\t{\r\n\t\t\/\/ \u30b9\u30c6\u30fc\u30bf\u30b9LED\u3092\u70b9\u706f\r\n\t\tPORT_STATUS_LED = LED_ON;\r\n\t\t\r\n\t\t\/\/ MSSP\u5272\u308a\u8fbc\u307f\u30af\u30ea\u30a2(=0) (Synchronous Serial Port (MSSP) Interrupt Flag bit ... PIR1)\r\n\t\tPIR1bits.SSP1IF = 0;\r\n\t\t\r\n\t\t\/\/ SSP1\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u53d6\u5f97\u3001D\/A\u3001R\/W\u3001BF\u30d3\u30c3\u30c8\u3092\u30de\u30b9\u30af\r\n\t\treg_SSP1STAT = SSP1STAT &amp; 0b00100101;\r\n\t\t\r\n\t\t\/\/ SSP1\u30b9\u30c6\u30fc\u30bf\u30b9\u304c\u3001\u30a2\u30c9\u30ec\u30b9(D\/A=0)\u3067\u3001\u304b\u3064\u30de\u30b9\u30bf\u30fc\u304c\u30b9\u30ec\u30fc\u30d6\u3078\u9001\u4fe1(R\/W=0)\u3001\u304b\u3064\u30d0\u30c3\u30d5\u30a1\u306b\u4f55\u304b\u3042\u308b(BF=1)\u306a\u3089\r\n\t\tif (reg_SSP1STAT == 0b00000001)\r\n\t\t{\r\n\t\t\t\/\/ \u30ea\u30b6\u30eb\u30c8LED\u3092\u70b9\u706f\r\n\t\t\tPORT_RESULT_LED = LED_ON;\r\n\t\t\t\r\n\t\t\t\/\/ SSP1BUF\u3092\u7a7a\u8aad\u307f\u3057\u3066\r\n\t\t\ttemp_buffer = SSP1BUF;\r\n\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u4f4d\u7f6e\u3092\u521d\u671f\u5316\r\n\t\t\trx_count = 0;\r\n\t\t\t\r\n\t\t\t\/\/ I2C\u30b9\u30c6\u30fc\u30bf\u30b9 0:\u5f85\u6a5f\u72b6\u614b 1:\u30c7\u30fc\u30bf\u53d7\u4fe1\u4e2d 10:\u30c7\u30fc\u30bf\u53d7\u4fe1\u5b8c\u4e86\r\n\t\t\ti2c_status = 1;\r\n\t\t\t\r\n\t\t\t\/\/ SCL\u3092\u30ea\u30ea\u30fc\u30b9\u3057\u3066\u30de\u30b9\u30bf\u30fc\u306b\u30c7\u30fc\u30bf\u306e\u9001\u4fe1\u3092\u8a31\u53ef\u3059\u308b\r\n\t\t\tSSP1CON1bits.CKP1 = 1;\r\n\t\t\t\r\n\t\t\t\/\/ \u30ea\u30b6\u30eb\u30c8LED\u3092\u6d88\u706f\r\n\t\t\tPORT_RESULT_LED = LED_OFF;\r\n\t\t}\r\n\t\t\/\/ SSP1\u30b9\u30c6\u30fc\u30bf\u30b9\u304c\u3001\u30c7\u30fc\u30bf(D\/A=1)\u3067\u3001\u304b\u3064\u30de\u30b9\u30bf\u30fc\u304c\u30b9\u30ec\u30fc\u30d6\u3078\u9001\u4fe1(R\/W=0)\u3001\u304b\u3064\u30d0\u30c3\u30d5\u30a1\u306b\u4f55\u304b\u3042\u308b(BF=1)\u306a\u3089\r\n\t\telse if (reg_SSP1STAT == 0b00100001)\r\n\t\t{\r\n\t\t\t\/\/ \u30ea\u30b6\u30eb\u30c8LED\u3092\u70b9\u706f\r\n\t\t\tPORT_RESULT_LED = LED_ON;\r\n\t\t\t\r\n\t\t\t\/\/ SSP1BUF\u304b\u3089\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u51fa\u3057\u3066\u3001\u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u306e\u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u4f4d\u7f6e\u306b\u8a2d\u5b9a\r\n\t\t\trx_buffer&#x5B;rx_count] = SSP1BUF;\r\n\t\t\t\r\n\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u4f4d\u7f6e\u304c3\u307e\u3067\u6765\u3066\u305f\u3089\r\n\t\t\tif (rx_count == 3)\r\n\t\t\t{\r\n\t\t\t\t\/\/ \u3053\u306e\u3042\u3068\u53d7\u4fe1\u3059\u308b\u30c7\u30fc\u30bf\u9577\u3092\u8a2d\u5b9a\r\n\t\t\t\ti2c_data_len = *(int *)(rx_buffer + 2);\r\n\t\t\t}\r\n\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u4f4d\u7f6e\u304cchecksum(\u3064\u307e\u308a\u30e1\u30c3\u30bb\u30fc\u30b8\u7d42\u4e86)\u306a\u3089\r\n\t\t\tif (rx_count == (GVC_I2C_MESSAGE_HEADER_SIZE + i2c_data_len))\r\n\t\t\t{\r\n\t\t\t\t\/\/ --------------------------------------------------------------------------------\r\n\t\t\t\t\/\/ \u5fc5\u8981\u306a\u3089\u30e1\u30c3\u30bb\u30fc\u30b8\u53d7\u4fe1\u3057\u305f\u3088\u30d5\u30e9\u30b0\u3067\u3082\u7acb\u3066\u3066\u30e1\u30a4\u30f3\u30eb\u30fc\u30d7\u5185\u3067\u51e6\u7406\u3057\u3066\u3082\u3089\u3046\r\n\t\t\t\t\/\/ --------------------------------------------------------------------------------\r\n\t\t\t\t\/\/ I2C\u30b9\u30c6\u30fc\u30bf\u30b9 0:\u5f85\u6a5f\u72b6\u614b 1:\u30c7\u30fc\u30bf\u53d7\u4fe1\u4e2d 10:\u30c7\u30fc\u30bf\u53d7\u4fe1\u5b8c\u4e86\r\n\t\t\t\ti2c_status = 10;\r\n\t\t\t\t\r\n\t\t\t\t\/\/ \r\n\t\t\t\t\/\/ \u307e\u3041\u3053\u306e\u6642\u70b9\u3067tx_buffer\u306b\u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3067\u30c7\u30fc\u30bf\u3092\u751f\u6210\u3057\u3066\u304a\u3044\u305f\u65b9\u304c\u3044\u3044\u3068\u601d\u3046\u3093\u3060\u3051\u3069\u3069\u3046\u3060\u308d\u3046\uff1f\r\n\t\t\t\t\/\/ \r\n\t\t\t\t\/\/ \u30fb\u30e1\u30c3\u30bb\u30fc\u30b8\u30c7\u30fc\u30bf\u306eCRC\u3092\u691c\u67fb\r\n\t\t\t\t\/\/ \u30fbOK\u306a\u3089\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3084\u30b3\u30de\u30f3\u30c9\u306b\u57fa\u3065\u3044\u3066\u51e6\u7406\u3001NG\u306a\u3089\u30b7\u30ea\u30a2\u30eb\u306b\u305d\u306e\u65e8\u51fa\u529b\r\n\t\t\t\t\/\/ \r\n\t\t\t\t\/\/ CRC\u30c1\u30a7\u30c3\u30af\u304cOK\u306a\u3089\r\n\t\t\t\tif (GetCRC8((void *)rx_buffer, rx_count + 1) == 0)\r\n\t\t\t\t{\r\n\t\t\t\t\t\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u3092I2C\u30e1\u30c3\u30bb\u30fc\u30b8\u30dd\u30a4\u30f3\u30bf\u306b\u8a2d\u5b9a\r\n\t\t\t\t\tgvc_i2c_message = (GVC_I2C_MESSAGE_t *)tx_buffer;\r\n\t\t\t\t\t\r\n\t\t\t\t\t\/\/ \u8981\u6c42\u30b3\u30de\u30f3\u30c9\u304c\u30e2\u30b8\u30e5\u30fc\u30eb\u30c7\u30fc\u30bf\u8981\u6c42(0x03:\u30c6\u30b9\u30c8\u6642\u30010x11:\u6b63\u5f0f)\u306a\u3089\r\n\t\t\t\t\tif ((rx_buffer&#x5B;1] == 0x03) || (rx_buffer&#x5B;1] == 0x11))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\/\/ \u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306e\u6307\u5b9a\u306b\u57fa\u3065\u3044\u3066\u73fe\u5728\u306e\u5024\u304b\u3089\u8fd4\u3059\u30c7\u30fc\u30bf\u3092\u751f\u6210\u3059\u308b\r\n\t\t\t\t\t\tget_distance(rx_buffer&#x5B;0], gvc_i2c_message-&gt;data);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\/\/ \u30b3\u30de\u30f3\u30c9\u30a8\u30e9\u30fc\u3092\u8a2d\u5b9a\r\n\t\t\t\t\t\tsprintf(gvc_i2c_message-&gt;data, &quot;COMMAND ERROR!?, %02x&quot;, temp_buffer);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306b\u57fa\u3065\u3044\u3066\u8a2d\u5b9a\u3059\u308b\r\n\t\t\t\t\tgvc_i2c_message-&gt;format = rx_buffer&#x5B;0];\t\t\/\/ \u30de\u30b9\u30bf\u30fc\u304b\u3089\u306e\u8981\u6c42\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3092\u305d\u306e\u307e\u307e\u8fd4\u3059\r\n\t\t\t\t\tgvc_i2c_message-&gt;cmd = rx_buffer&#x5B;1];\t\t\/\/ \u30a8\u30e9\u30fc\u306e\u5834\u5408\u306b\u306f\u3053\u3053\u3092\u9055\u3046\u30c7\u30fc\u30bf\u306b\u3059\u308b\u306e\u304c\u3044\u3044\u3068\u601d\u3046\u2026TBD\r\n\t\t\t\t\tgvc_i2c_message-&gt;data_len = strlen(gvc_i2c_message-&gt;data);\t\t\/\/ \u30c7\u30fc\u30bf\u9577\r\n\t\t\t\t\t\/\/ CRC\u3092\u8a08\u7b97\u3057\u3066\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6700\u5f8c\u306b\u8a2d\u5b9a\r\n\t\t\t\t\tgvc_i2c_message-&gt;data&#x5B;gvc_i2c_message-&gt;data_len] = GetCRC8((void *)tx_buffer, GVC_I2C_MESSAGE_HEADER_SIZE + gvc_i2c_message-&gt;data_len);\r\n\t\t\t\t}\r\n\t\t\t\t\/\/ CRC\u30c1\u30a7\u30c3\u30af\u304cNG\u306a\u3089\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tsprintf(tx_buffer, &quot;MASTER MESSAGE CRC ERROR!?&quot;);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u4f4d\u7f6e\u3092+1\r\n\t\t\trx_count ++;\r\n\t\t\t\/\/ SCL\u3092\u30ea\u30ea\u30fc\u30b9\u3057\u3066\u30de\u30b9\u30bf\u30fc\u306b\u30c7\u30fc\u30bf\u306e\u9001\u4fe1\u3092\u8a31\u53ef\u3059\u308b\r\n\t\t\tSSP1CON1bits.CKP1 = 1;\r\n\t\t\t\/\/ \u53d7\u4fe1\u30c7\u30fc\u30bf\u304c\u30d0\u30c3\u30d5\u30a1\u3044\u3063\u3071\u3044\u306b\u306a\u3063\u305f\u308a\u3057\u305f\u3089\u30d5\u30e9\u30b0\u3067\u3082\u7acb\u3066\u3066\u30a8\u30e9\u30fc\u51e6\u7406\u3068\u304b\u3059\u308b\r\n\t\t\tif (rx_count &gt;= RX_BUFF_SIZE)\r\n\t\t\t{\r\n\t\t\t\trx_count = 0;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t\/\/ \u30ea\u30b6\u30eb\u30c8LED\u3092\u6d88\u706f\r\n\t\t\tPORT_RESULT_LED = LED_OFF;\r\n\t\t}\r\n\t\t\/\/ \u30a2\u30c9\u30ec\u30b9(D\/A=0)\u3067\u3001\u304b\u3064\u30de\u30b9\u30bf\u30fc\u304c\u30b9\u30ec\u30fc\u30d6\u304b\u3089\u53d7\u4fe1(R\/W=1)\u3001\u304b\u3064\u30d0\u30c3\u30d5\u30a1\u306b\u4f55\u304b\u3042\u308b(BF=1)\u306a\r\n\t\telse if (reg_SSP1STAT == 0b00000101)\r\n\t\t{\r\n\t\t\t\/\/ \u30ea\u30b6\u30eb\u30c8LED\u3092\u70b9\u706f\r\n\t\t\tPORT_RESULT_LED = LED_ON;\r\n\t\t\t\r\n\t\t\t\/\/ SSP1BUF\u3092\u7a7a\u8aad\u307f\u3057\u3066\r\n\t\t\ttemp_buffer = SSP1BUF;\r\n\t\t\t\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u4f4d\u7f6e\u3092\u521d\u671f\u5316\r\n\t\t\ttx_count = 0;\r\n\t\t\t\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u306e\u6700\u521d\u306e\u30c7\u30fc\u30bf\u3092SSP1BUF\u306b\u8a2d\u5b9a\r\n\t\t\tSSP1BUF = tx_buffer&#x5B;tx_count];\r\n\t\t\t\/\/ SCL\u3092\u30ea\u30ea\u30fc\u30b9\u3057\u3066\u30de\u30b9\u30bf\u30fc\u306b\u30c7\u30fc\u30bf\u306e\u9001\u4fe1\u3092\u8a31\u53ef\u3059\u308b\r\n\t\t\tSSP1CON1bits.CKP1 = 1;\r\n\t\t\t\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u4f4d\u7f6e\u3092+1;\r\n\t\t\ttx_count ++;\r\n\t\t\t\r\n\t\t\t\/\/ \u30ea\u30b6\u30eb\u30c8LED\u3092\u6d88\u706f\r\n\t\t\tPORT_RESULT_LED = LED_OFF;\r\n\t\t}\r\n\t\t\/\/ \u30c7\u30fc\u30bf(D\/A=1)\u3067\u3001\u304b\u3064\u30de\u30b9\u30bf\u30fc\u304c\u30b9\u30ec\u30fc\u30d6\u304b\u3089\u53d7\u4fe1(R\/W=1)\u3001\u304b\u3064\u30d0\u30c3\u30d5\u30a1\u304c\u7a7a(BF=0)\u306a\u3089\r\n\t\telse if (reg_SSP1STAT == 0b00100100)\r\n\t\t{\r\n\t\t\t\/\/ \u30ea\u30b6\u30eb\u30c8LED\u3092\u70b9\u706f\r\n\t\t\tPORT_RESULT_LED = LED_ON;\r\n\t\t\t\r\n\t\t\t\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u306e\u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u4f4d\u7f6e\u306e\u30c7\u30fc\u30bf\u3092SSP1BUF\u306b\u8a2d\u5b9a\r\n\t\t\tSSP1BUF = tx_buffer&#x5B;tx_count];\r\n\t\t\t\/\/ SCL\u3092\u30ea\u30ea\u30fc\u30b9\u3057\u3066\u30de\u30b9\u30bf\u30fc\u306b\u30c7\u30fc\u30bf\u306e\u9001\u4fe1\u3092\u8a31\u53ef\u3059\u308b\r\n\t\t\tSSP1CON1bits.CKP1 = 1;\r\n\t\t\t\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u4f4d\u7f6e\u3092+1;\r\n\t\t\ttx_count ++;\r\n\t\t\t\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u4f4d\u7f6e\u304c\u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u3092\u8d8a\u3048\u305d\u3046\u306b\u306a\u3063\u305f\u308a\u3057\u305f\u3089\u30d5\u30e9\u30b0\u3067\u3082\u7acb\u3066\u3066\u30a8\u30e9\u30fc\u51e6\u7406\u3068\u304b\u3059\u308b\r\n\t\t\tif (tx_count &gt;= TX_BUFF_SIZE)\r\n\t\t\t{\r\n\t\t\t\ttx_count = 0;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t\/\/ \u30ea\u30b6\u30eb\u30c8LED\u3092\u6d88\u706f\r\n\t\t\tPORT_RESULT_LED = LED_OFF;\r\n\t\t}\r\n\t\t\/\/ \u3053\u308c\u3089\u4ee5\u5916\u306f\r\n\t\telse\r\n\t\t{\r\n\t\t\t\/\/ SSP1BUF\u3092\u7a7a\u8aad\u307f\u3057\u3066\r\n\t\t\ttemp_buffer = SSP1BUF;\r\n\t\t\t\/\/ SCL\u3092\u30ea\u30ea\u30fc\u30b9\u3057\u3066\u30de\u30b9\u30bf\u30fc\u306b\u6b21\u306e\u547d\u4ee4\u3092\u4fc3\u3059\r\n\t\t\tSSP1CON1bits.CKP1 = 1;\r\n\t\t}\r\n\t\t\/\/ \u30b9\u30c6\u30fc\u30bf\u30b9LED\u3092\u6d88\u706f\r\n\t\tPORT_STATUS_LED = LED_OFF;\r\n\t}\r\n\t\r\n\t\r\n\t\/\/ ----------------------------------------\r\n\t\/\/ \u30b7\u30ea\u30a2\u30eb1\u53d7\u4fe1\u5272\u308a\u8fbc\u307f\u51e6\u7406\r\n\t\/\/ ----------------------------------------\r\n\t\/\/ \u30b7\u30ea\u30a2\u30eb1\u53d7\u4fe1\u5272\u308a\u8fbc\u307f(=1)\u306a\u3089 (RC1IF: EUSART1 Receive Interrupt Flag bit ... INTCON)\r\n\t\/\/ 1 = The EUSART1 receive buffer, RCREG1, is full (cleared when RCREG1 is read)\r\n\t\/\/ 0 = The EUSART1 receive buffer is empty\r\n\tif (PIR1bits.RC1IF == 1)\r\n\t{\r\n\t\t\/\/ \u53d7\u4fe1\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u53d6\u5f97\r\n\t\treg_RCSTA1 = RCSTA1;\r\n\t\t\/\/ \u53d7\u4fe1\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u78ba\u8a8d\u3057\u3066\u30d5\u30ec\u30fc\u30df\u30f3\u30b0\u30a8\u30e9\u30fc\u3001\u30aa\u30fc\u30d0\u30fc\u30e9\u30f3\u30a8\u30e9\u30fc\u304c\u306a\u3051\u308c\u3070\r\n\t\tif ((reg_RCSTA1 &amp; 0b00000110) == 0b00000000)\r\n\t\t{\r\n\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1(RCREG1)\u304b\u30891\u30d0\u30a4\u30c8\u53d6\u5f97\r\n\t\t\tserial_rcvbuff&#x5B;serial_rcvptr] = RCREG1;\r\n\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u30dd\u30a4\u30f3\u30bf\u3092\u52a0\u7b97(+1)\r\n\t\t\tserial_rcvptr ++;\r\n\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u30dd\u30a4\u30f3\u30bf\u3092\u30ea\u30f3\u30b0\u308b\r\n\t\t\tserial_rcvptr &amp;= SERIAL_RCV_BUFFRING;\r\n\t\t}\r\n\t\t\/\/ \u53d7\u4fe1\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u78ba\u8a8d\u3057\u3066\u30aa\u30fc\u30d0\u30fc\u30e9\u30f3\u30a8\u30e9\u30fc\u304c\u3042\u308b\u306a\u3089\r\n\t\telse if (reg_RCSTA1 &amp; 0b00000010)\r\n\t\t{\r\n\t\t\t\/\/ CREN \u30ec\u30b7\u30fc\u30d0\u30a4\u30cd\u30fc\u30d6\u30eb\u30d3\u30c3\u30c8\u3092\u30af\u30ea\u30a2\u3057\u3066\u518d\u8a2d\u5b9a\r\n\t\t\tRCSTA1bits.CREN = 0;\r\n\t\t\tRCSTA1bits.CREN = 1;\r\n\t\t}\r\n\t\t\/\/ \u30a8\u30e9\u30fc\u304c\u306a\u3044\u306a\u3089\r\n\t\telse\r\n\t\t{\r\n\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1(RCREG1)\u304b\u30891\u30d0\u30a4\u30c8\u53d6\u5f97\r\n\t\t\tserial_rcvbuff&#x5B;serial_rcvptr] = RCREG1;\r\n\t\t}\r\n\t\t\/\/ \u30b7\u30ea\u30a2\u30eb1\u53d7\u4fe1\u5272\u308a\u8fbc\u307f\u30af\u30ea\u30a2(=0)\u2026\u306f1\u30d0\u30a4\u30c8\u53d7\u4fe1\u3059\u308c\u3070\u81ea\u52d5\u7684\u306b\u30af\u30ea\u30a2\u3055\u308c\u308b\u306e\u3067\u5fc5\u8981\u306a\u3044\r\n\t\t\/\/PIR1bits.RC1IF = 0;\r\n\t\t\r\n\t\t\/\/ \u307b\u3093\u3068\u306f\u3053\u3053\u3067\u3001\u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u30dd\u30a4\u30f3\u30bfserial_rcvptr\u304c\u30ea\u30f3\u30b0\u30d0\u30c3\u30d5\u30a1\u3092\u4e0a\u66f8\u304d\u3057\u306a\u3044\u3088\u3046\u306b\r\n\t\t\/\/ \u3059\u308b\u3068\u304b\u3001\u3042\u308f\u305b\u3066\u30d5\u30ed\u30fc\u5236\u5fa1\u3059\u308b\u3068\u304b\u3001\u3044\u308d\u3044\u308d\u3042\u308b\u3051\u3069\u3001\u4eca\u56de\u306f\u3068\u308a\u3042\u3048\u305a\u307b\u3063\u3068\u304f\r\n\t}\r\n\t\/\/ \u5168\u5272\u308a\u8fbc\u307f\u3092\u8a31\u53ef(=1) (Global Interrupt Enable bit ... INTCON)\r\n\tINTCONbits.GIE = 1;\r\n}\r\n\r\n\/\/ --------------------------------------------------\r\n\/\/ Main loop\r\n\/\/ --------------------------------------------------\r\nvoid main(void)\r\n{\r\n\tchar rcv_data;\t\t\t\t\t\t\t\/\/ \u53d7\u4fe1\u30c7\u30fc\u30bf\r\n\t\r\n\t\/\/ Setup 18F26K22\r\n\tinit_pic_18F26K22();\r\n\t\r\n\t\/\/ Setup MSSP1 18F26K22\r\n\tinit_mssp1_18F26K22();\r\n\t\r\n\t\/\/ Setup EUSART 18F26K22\r\n\tinit_eusart_18F26K22();\r\n\t\r\n\t\/\/ ----------------------------------------\r\n\t\/\/ \u3053\u308c\u3088\u308a\u4e0b\u306b\u3001\u500b\u5225\u306e\u8a2d\u5b9a\u3092\u8a18\u8ff0\r\n\t\/\/ ----------------------------------------\r\n\t\r\n\t\/\/ LED Brink\r\n\tled_brink(1);\r\n\t\r\n\t\/\/ Setup 18F26K22 for Analog Voltage\r\n\tinit_pic_for_analogvoltage();\r\n\t\r\n\t\/\/ Get Vdd Voltage\r\n\tvdd_volt = get_vdd();\r\n\t\/\/ \u3082\u3057Vdd\u304c4.0V\u3088\u308a\u5927\u304d\u3044\u3068\u304b\u30011.0V\u672a\u6e80\u306a\u3089\r\n\tif (vdd_volt &gt; 4.0 || vdd_volt &lt; 1.0)\r\n\t{\r\n\t\t\/\/ \u305f\u3076\u3093\u3061\u3083\u3093\u3068\u6e2c\u5b9a\u3067\u304d\u3066\u3044\u306a\u3044\u3063\u3066\u3053\u3068\u3067\u30015.00\u306b\u56fa\u5b9a\r\n\t\tvdd_volt = 5.00;\r\n\t}\r\n\t\r\n\t\/\/ \u5404\u7a2e\u30b0\u30ed\u30fc\u30d0\u30eb\u5909\u6570\u306e\u521d\u671f\u5316\u2026\u30b0\u30ed\u30fc\u30d0\u30eb\u5909\u6570\u306f\u5ba3\u8a00\u6642\u306b\u521d\u671f\u5316\u3057\u3066\u3044\u3066\u3082\u5b9f\u969b\u306b\u306f\u3057\u3066\u304f\u308c\u306a\u3044\u2026orz 2013.07.11 T.Kabu\r\n\trx_count = 0;\t\t\t\t\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u4f4d\u7f6e\r\n\ttx_count = 0;\t\t\t\t\t\t\t\/\/ \u9001\u4fe1\u30d0\u30c3\u30d5\u30a1\u4f4d\u7f6e\r\n\ti2c_status = 0;\t\t\t\t\t\t\t\/\/ I2C\u30b9\u30c6\u30fc\u30bf\u30b9 0:\u5f85\u6a5f\u72b6\u614b 1:\u30c7\u30fc\u30bf\u53d7\u4fe1\u4e2d 10:\u30c7\u30fc\u30bf\u53d7\u4fe1\u5b8c\u4e86\r\n\t\r\n\t\/\/ ----------------------------------------\r\n\t\/\/ \u500b\u5225\u8a2d\u5b9a\u7d42\u4e86\r\n\t\/\/ ----------------------------------------\r\n\t\r\n\t\/\/ LED Brink\r\n\tled_brink(2);\r\n\t\r\n\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u30dd\u30a4\u30f3\u30bf\u3092\u521d\u671f\u5316\r\n\tserial_rcvptr = 0;\r\n\t\/\/ \u53d7\u4fe1\u8aad\u307f\u51fa\u3057\u30dd\u30a4\u30f3\u30bf\u3092\u521d\u671f\u5316\r\n\tserial_readptr = 0;\r\n\t\r\n\t\/\/ \u30d0\u30c3\u30d5\u30a1\u3092\u521d\u671f\u5316\r\n\tmemset((void *)serial_buffer, 0x00, sizeof(serial_buffer));\r\n\t\r\n\t\/\/ EUSART1 RX \u5272\u308a\u8fbc\u307f\u8a31\u53ef(=1) (EUSART1 Receive Interrupt Enable bit ... PIE1)\r\n\tPIE1bits.RC1IE = 1;\r\n\t\/\/ MSSP\u5272\u308a\u8fbc\u307f\u8a31\u53ef(=1) (Synchronous Serial Port (MSSP) Interrupt Enable bit ... PIE1)\r\n\tPIE1bits.SSP1IE = 1;\r\n\t\/\/ \u5468\u8fba\u5272\u308a\u8fbc\u307f\u8a31\u53ef(=1) (Peripheral Interrupt Enable bit ... INTCON)\r\n\tINTCONbits.PEIE = 1;\r\n\t\/\/ \u5168\u5272\u308a\u8fbc\u307f\u3092\u8a31\u53ef(=1) (Global Interrupt Enable bit ... INTCON)\r\n\tINTCONbits.GIE = 1;\r\n\t\r\n\t\/\/ \u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u9001\u4fe1\r\n\tsend_strdata(VERSION);\r\n\tsend_cr();\r\n\t\r\n\t\/\/ LED Brink\r\n\tled_brink(3);\r\n\t\r\n\t\/\/ \u30e1\u30a4\u30f3\u30eb\u30fc\u30d7\r\n\twhile(1)\r\n\t{\r\n\t\t\/\/ \u30b7\u30ea\u30a2\u30eb\u30d0\u30c3\u30d5\u30a1\u306b\u672a\u8aad\u30c7\u30fc\u30bf\u304c\u306a\u3044\u306a\u3089\u30b9\u30eb\u30fc\r\n\t\tif (serial_rcvptr == serial_readptr)\r\n\t\t{\r\n\t\t}\r\n\t\t\/\/ \u3042\u308b\u306a\u3089\r\n\t\telse\r\n\t\t{\r\n\t\t\t\/\/ \u53d7\u4fe1\u30d0\u30c3\u30d5\u30a1\u304b\u3089\u4e00\u6587\u5b57\u53d6\u5f97\r\n\t\t\trcv_data = rcv_serialdata();\r\n\t\t\t\r\n\t\t\t\/\/ D\u304c\u6765\u305f\u3089\u6e2c\u8ddd\u6e7f\u5ea6\u30bb\u30f3\u30b5\u30fc\u306e\u60c5\u5831\u3092\u8fd4\u3059\r\n\t\t\tif (rcv_data == 'D')\r\n\t\t\t{\r\n\t\t\t\t\/\/ \u30b9\u30c6\u30fc\u30bf\u30b9LED\u3092\u70b9\u706f\r\n\t\t\t\tPORT_STATUS_LED = LED_ON;\r\n\t\t\t\t\r\n\t\t\t\t\/\/ \u6e2c\u8ddd\u30c7\u30fc\u30bf\u53d6\u5f97(&#x5B;cm]\u3001\u6587\u5b57\u5217\u3067\u5c0f\u6570\u70b9\u8868\u8a18\u306e\u5b9f\u657016\u6587\u5b57)\r\n\t\t\t\tget_distance(0x06, serial_buffer);\r\n\t\t\t\t\r\n\t\t\t\t\/\/ \u6e29\u5ea6\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\r\n\t\t\t\tsend_strdata(serial_buffer);\r\n\t\t\t\tsend_cr();\r\n\t\t\t\t\r\n\t\t\t\t\/\/ \u30b9\u30c6\u30fc\u30bf\u30b9LED\u3092\u6d88\u706f\r\n\t\t\t\tPORT_STATUS_LED = LED_OFF;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\/\/ \u7279\u306b\u4f55\u3082\u3057\u306a\u3044\u3067\u6b21\u306e\u30c7\u30fc\u30bf\u3092\u5f85\u3064\r\n\t}\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\/\/ &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; \/\/ Global Versatile Controler http:\/\/www.gvc-on.net\/ \/\/  &hellip; <a href=\"https:\/\/www.gvc-on.net\/?page_id=648\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":622,"menu_order":35,"comment_status":"closed","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-648","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.gvc-on.net\/index.php?rest_route=\/wp\/v2\/pages\/648","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gvc-on.net\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.gvc-on.net\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.gvc-on.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gvc-on.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=648"}],"version-history":[{"count":2,"href":"https:\/\/www.gvc-on.net\/index.php?rest_route=\/wp\/v2\/pages\/648\/revisions"}],"predecessor-version":[{"id":653,"href":"https:\/\/www.gvc-on.net\/index.php?rest_route=\/wp\/v2\/pages\/648\/revisions\/653"}],"up":[{"embeddable":true,"href":"https:\/\/www.gvc-on.net\/index.php?rest_route=\/wp\/v2\/pages\/622"}],"wp:attachment":[{"href":"https:\/\/www.gvc-on.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=648"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}