H8,SH,マイコン,ぼやき川柳,ダウンロード

あきまへん。調子のってしまいそうです

遂に遂に、ポチの玉手箱が無線通信を手中にしました。近距離ではなく、衛星(GPS)からの信号受信に成功しました。しかも、USB経由での接続です!!
EPのリセット他に苦労しましたが、なんとか試行錯誤して動きました ・・・ バンザイ!!
 
 

 

GT-730F/L (CDCクラス)


Descriptor表示がデバッグに使えるように、すべてのフィールドを表示し、頭0サプレスされていたのを止めました。
 
Tiny Dump Monitor
>ub
Binaryimage download start!
Download address = 1C000000h
Binaryimage download start! ..........................................................................................................................................................................................................................................................................................................................
Download program size : 139E0h
Jump address = 1C00053Ch
Download program start!!


--- Hello USB World!! ---


>H_CheckAttach(): buf1=0001, buf2=0001, buf3=0001
H_CheckAttach(): rhst=0000, buf1=0001
H_CheckAttach(): buf1=0001, buf2=0001, buf3=0001
H_CheckAttach(): rhst=0000, buf1=0001
H_UsbStateManager(): UsbDeviceState=0001
H_UsbStateManager(): UsbDeviceState=0002
<-- [SETUP STAGE] : Req=0680, Val=0100, Indx=0000, Len=0040
H_CtrlTransStart(): Req=0680, Val=0100, Indx=0000, Len=0040, UsbCmdStage=0211
H_CtrlTransStart(): Req=0680, Val=0100, Indx=0000, Len=0040, UsbCmdStage=0220
--> [DATA STAGE READ]
--> CR=12011001 00000040 7B060323 00040102  0001
H_CtrlTransStart(): Req=0680, Val=0100, Indx=0000, Len=0040, UsbCmdStage=0222
H_CtrlTransStart(): Req=0680, Val=0100, Indx=0000, Len=0040, UsbCmdStage=0230
<-- CW=
usb_write_buffer_c():status=0001
<-- [STATUS STAGE READ MODE]
H_CtrlTransStart(): Req=0680, Val=0100, Indx=0000, Len=0040, UsbCmdStage=0232
H_CtrlTransStart(): Req=0680, Val=0100, Indx=0000, Len=0040, UsbCmdStage=0232
H_UsbStateManager(): UsbDeviceState=0003
Full-Speed Device----

H_UsbStateManager(): UsbDeviceState=0004
H_UsbStateManager(): UsbDeviceState=0005
<-- [SETUP STAGE] : Req=0500, Val=0003, Indx=0000, Len=0000
H_CtrlTransStart(): Req=0500, Val=0003, Indx=0000, Len=0000, UsbCmdStage=0312
H_CtrlTransStart(): Req=0500, Val=0003, Indx=0000, Len=0000, UsbCmdStage=0330
--> [STATUS STAGE NO DATA]
H_CtrlTransStart(): Req=0500, Val=0003, Indx=0000, Len=0000, UsbCmdStage=0332
USB Address is 3----

H_CtrlTransStart(): Req=0500, Val=0003, Indx=0000, Len=0000, UsbCmdStage=0332
H_UsbStateManager(): UsbDeviceState=0006
H_UsbStateManager(): UsbDeviceState=0007
<-- [SETUP STAGE] : Req=0680, Val=0100, Indx=0000, Len=0012
H_CtrlTransStart(): Req=0680, Val=0100, Indx=0000, Len=0012, UsbCmdStage=0211
H_CtrlTransStart(): Req=0680, Val=0100, Indx=0000, Len=0012, UsbCmdStage=0220
--> [DATA STAGE READ]
--> CR=12011001 00000040 7B060323 00040102  0001
H_CtrlTransStart(): Req=0680, Val=0100, Indx=0000, Len=0012, UsbCmdStage=0222
H_CtrlTransStart(): Req=0680, Val=0100, Indx=0000, Len=0012, UsbCmdStage=0230
<-- CW=
usb_write_buffer_c():status=0001
<-- [STATUS STAGE READ MODE]
H_CtrlTransStart(): Req=0680, Val=0100, Indx=0000, Len=0012, UsbCmdStage=0232
H_CtrlTransStart(): Req=0680, Val=0100, Indx=0000, Len=0012, UsbCmdStage=0232
H_UsbStateManager(): UsbDeviceState=0008
<-- [SETUP STAGE] : Req=0680, Val=0200, Indx=0000, Len=0009
H_CtrlTransStart(): Req=0680, Val=0200, Indx=0000, Len=0009, UsbCmdStage=0211
H_CtrlTransStart(): Req=0680, Val=0200, Indx=0000, Len=0009, UsbCmdStage=0220
--> [DATA STAGE READ]
--> CR=09022700 01010080 32
H_CtrlTransStart(): Req=0680, Val=0200, Indx=0000, Len=0009, UsbCmdStage=0222
H_CtrlTransStart(): Req=0680, Val=0200, Indx=0000, Len=0009, UsbCmdStage=0230
<-- CW=
usb_write_buffer_c():status=0001
<-- [STATUS STAGE READ MODE]
H_CtrlTransStart(): Req=0680, Val=0200, Indx=0000, Len=0009, UsbCmdStage=0232
H_CtrlTransStart(): Req=0680, Val=0200, Indx=0000, Len=0009, UsbCmdStage=0232
H_UsbStateManager(): UsbDeviceState=0009
<-- [SETUP STAGE] : Req=0680, Val=0200, Indx=0000, Len=0027
H_CtrlTransStart(): Req=0680, Val=0200, Indx=0000, Len=0027, UsbCmdStage=0211
H_CtrlTransStart(): Req=0680, Val=0200, Indx=0000, Len=0027, UsbCmdStage=0220
--> [DATA STAGE READ]
--> CR=09022700 01010080 32090400 0003FF00  00000705 81030A00 01070502 02400000
       07058302 400000
H_CtrlTransStart(): Req=0680, Val=0200, Indx=0000, Len=0027, UsbCmdStage=0222
H_CtrlTransStart(): Req=0680, Val=0200, Indx=0000, Len=0027, UsbCmdStage=0230
<-- CW=
usb_write_buffer_c():status=0001
<-- [STATUS STAGE READ MODE]
H_CtrlTransStart(): Req=0680, Val=0200, Indx=0000, Len=0027, UsbCmdStage=0232

Get configuration (Device descriptor) ------------------------
 PASS!
    Device descriptor dump :
        12  01  10  01  00  00  00  40  7b  06  03  23  00  04  01  02
        00  01

    Device descriptor fields :
        bLength            0000 : 0x12
        bDescripotorType   0001 : 0x01
        bcdUSB             0002 : 0x0110
        bDeviceClass       0004 : 0x00
        bDeviceSubClass    0005 : 0x00
        bProtocolCode      0006 : 0x00
        bMaxPacketSize     0007 : 0x40
        idVendor           0008 : 0x067b
        idProduct          000A : 0x2303
        bcdDevice          000C : 0x0400
        iManufacture       000E : 0x01
        iProduct           000F : 0x02
        iSerialNumber      0010 : 0x00
        bNumConfigurations 0011 : 0x01

Get configuration (Configuration descriptor) -----------------
    Configuration descriptor fields:
        bLength            0000 : 0x09
        bDescriptorType    0001 : 0x02
        wTotalLength       0002 : 0x0027
        bNumInterfaces     0004 : 0x01
        bConfigurationValue0005 : 0x01
        iConfiguration     0006 : 0x00
        bmAttributes       0007 : 0x80
        bMaxPower          0008 : 0x32
    Interface descriptor fields:
        bLength            0000 : 0x09
        bDescriptorType    0001 : 0x04
        bInterfaceNumber   0002 : 0x00
        bAlternateSetting  0003 : 0x00
        bNumEndpoints      0004 : 0x03
        bInterfaceClass    0005 : 0xff
        bInterfaceSubClass 0006 : 0x00
        bInterfaceProtocol 0007 : 0x00
        iInterface         0008 : 0x00
    Endpoint descriptor fields:
        bLength            0000 : 0x07
        bDescriptorType    0001 : 0x05
        bEndpointAddress   0002 : 0x81
        bmAttributes       0003 : 0x03
        wMaxPacketSize     0004 : 0x000a
        bInterval          0006 : 0x01
    Endpoint descriptor fields:
        bLength            0000 : 0x07
        bDescriptorType    0001 : 0x05
        bEndpointAddress   0002 : 0x02
        bmAttributes       0003 : 0x02
        wMaxPacketSize     0004 : 0x0040
        bInterval          0006 : 0x00
    Endpoint descriptor fields:
        bLength            0000 : 0x07
        bDescriptorType    0001 : 0x05
        bEndpointAddress   0002 : 0x83
        bmAttributes       0003 : 0x02
        wMaxPacketSize     0004 : 0x0040
        bInterval          0006 : 0x00
H_CtrlTransStart(): Req=0680, Val=0200, Indx=0000, Len=0027, UsbCmdStage=0232
H_UsbStateManager(): UsbDeviceState=000A
H_UsbStateManager(): UsbDeviceState=000B
<-- [SETUP STAGE] : Req=0900, Val=0001, Indx=0000, Len=0000
H_CtrlTransStart(): Req=0900, Val=0001, Indx=0000, Len=0000, UsbCmdStage=0312
H_CtrlTransStart(): Req=0900, Val=0001, Indx=0000, Len=0000, UsbCmdStage=0330
--> [STATUS STAGE NO DATA]
H_CtrlTransStart(): Req=0900, Val=0001, Indx=0000, Len=0000, UsbCmdStage=0332

-H_SetEndpoint(). Length=39, offset=9
Config Descriptor

0000  09022700 01010080 32090400 0003FF00  00000705 81030A00 01070502 02400000   |..'.....2....................@..|
0020  07058302 400000                                                            |....@..                         |

USB_CFG_PIPETBL
0000  00010100 1C080000 00000001 00020100  1C100000 00000001 00030100 1C180000   |................................|
0020  00000001 00040100 1C200000 00000001  00050100 1C280000 00000001 00060000   |......... ...........(..........|
0040  00040000 00000000 00070000 00050000  00000000 00080000 00060000 00000000   |................................|
0060  00090000 00070000 00000000 FFFFFFFF  FFFFFFFF FFFFFFFF                     |........................        |

-  Table[ 1 ]=05,  Table[ 3 ]=03.
- H_SetEndpointTable(-1). default return!!.

-H_SetEndpoint() ret=00FF end_point=00 pipe_number=1.
-  Table[ 1 ]=05,  Table[ 3 ]=03.
- H_SetEndpointTable(-1). default return!!.

-H_SetEndpoint() ret=00FF end_point=01 pipe_number=2.
-  Table[ 1 ]=05,  Table[ 3 ]=03.
- H_SetEndpointTable(-1). default return!!.

-H_SetEndpoint() ret=00FF end_point=02 pipe_number=3.
-  Table[ 1 ]=05,  Table[ 3 ]=03.
- H_SetEndpointTable(-1). default return!!.

-H_SetEndpoint() ret=00FF end_point=03 pipe_number=4.
-  Table[ 1 ]=05,  Table[ 3 ]=03.
- H_SetEndpointTable(-1). default return!!.

-H_SetEndpoint() ret=00FF end_point=04 pipe_number=5.
-  Table[ 1 ]=05,  Table[ 3 ]=03.


H_resetEP() :
  pipe =                6
  pipe_cfg =         8081,
  pipe_buf =            4,
  pipe_max_pktsize = 300a,
  pipe_cycle =          0


-H_SetEndpoint() ret=0000 end_point=05 pipe_number=6.
-  Table[ 1 ]=05,  Table[ 3 ]=02.


H_resetEP() :
  pipe =                1
  pipe_cfg =         4112,
  pipe_buf =         1c08,
  pipe_max_pktsize = 3040,
  pipe_cycle =          0


-H_SetEndpoint() ret=0010 end_point=00 pipe_number=1.
-  Table[ 1 ]=05,  Table[ 3 ]=02.

-H_SetEndpoint() ret=00FF end_point=00 pipe_number=1.
-  Table[ 1 ]=05,  Table[ 3 ]=02.


H_resetEP() :
  pipe =                2
  pipe_cfg =         4183,
  pipe_buf =         1c10,
  pipe_max_pktsize = 3040,
  pipe_cycle =          0


-H_SetEndpoint() ret=0000 end_point=01 pipe_number=2.H_CtrlTransStart(): Req=0900, Val=0001, Indx=0000, Len=0000, UsbCmdStage=0332
H_SetEndpointTable(): PIPE#=0006, EP#=0001
H_SetEndpointTable(): PIPE#=0001, EP#=0002
H_SetEndpointTable(): PIPE#=0002, EP#=0003
H_UsbStateManager(): UsbDeviceState=000C
<-- [SETUP STAGE] : Req=21A1, Val=0000, Indx=0000, Len=0007
H_CtrlTransStart(): Req=21A1, Val=0000, Indx=0000, Len=0007, UsbCmdStage=0211
H_CtrlTransStart(): Req=21A1, Val=0000, Indx=0000, Len=0007, UsbCmdStage=0220
--> [DATA STAGE READ]
--> CR=80250000 000000
H_CtrlTransStart(): Req=21A1, Val=0000, Indx=0000, Len=0007, UsbCmdStage=0222
H_CtrlTransStart(): Req=21A1, Val=0000, Indx=0000, Len=0007, UsbCmdStage=0230
<-- CW=
usb_write_buffer_c():status=0001
<-- [STATUS STAGE READ MODE]
H_CtrlTransStart(): Req=21A1, Val=0000, Indx=0000, Len=0007, UsbCmdStage=0232
H_CtrlTransStart(): Req=21A1, Val=0000, Indx=0000, Len=0007, UsbCmdStage=0232
H_UsbStateManager(): UsbDeviceState=000D
<-- [SETUP STAGE] : Req=2021, Val=0000, Indx=0000, Len=0007
H_CtrlTransStart(): Req=2021, Val=0000, Indx=0000, Len=0007, UsbCmdStage=0111
H_CtrlTransStart(): Req=2021, Val=0000, Indx=0000, Len=0007, UsbCmdStage=0120
<-- CW=00960000 000008
usb_write_buffer_c():status=0001
<-- [DATA_STAGE WRITE]=00960000 000008
H_CtrlTransStart(): Req=2021, Val=0000, Indx=0000, Len=0007, UsbCmdStage=0130
--> [STATUS STAGE WRITE MODE]
H_CtrlTransStart(): Req=2021, Val=0000, Indx=0000, Len=0007, UsbCmdStage=0132
H_CtrlTransStart(): Req=2021, Val=0000, Indx=0000, Len=0007, UsbCmdStage=0132
H_UsbStateManager(): UsbDeviceState=000E
<-- [SETUP STAGE] : Req=2221, Val=0000, Indx=0000, Len=0000
H_CtrlTransStart(): Req=2221, Val=0000, Indx=0000, Len=0000, UsbCmdStage=0311
H_CtrlTransStart(): Req=2221, Val=0000, Indx=0000, Len=0000, UsbCmdStage=0330
--> [STATUS STAGE NO DATA]
H_CtrlTransStart(): Req=2221, Val=0000, Indx=0000, Len=0000, UsbCmdStage=0332
H_CtrlTransStart(): Req=2221, Val=0000, Indx=0000, Len=0000, UsbCmdStage=0332
H_UsbStateManager(): UsbDeviceState=0010
<-- [SETUP STAGE] : Req=2221, Val=0101, Indx=0000, Len=0000
H_CtrlTransStart(): Req=2221, Val=0101, Indx=0000, Len=0000, UsbCmdStage=0311
H_CtrlTransStart(): Req=2221, Val=0101, Indx=0000, Len=0000, UsbCmdStage=0330
--> [STATUS STAGE NO DATA]
H_CtrlTransStart(): Req=2221, Val=0101, Indx=0000, Len=0000, UsbCmdStage=0332
H_CtrlTransStart(): Req=2221, Val=0101, Indx=0000, Len=0000, UsbCmdStage=0332
H_UsbStateManager(): UsbDeviceState=0011
<-- [SETUP STAGE] : Req=2221, Val=0202, Indx=0000, Len=0000
H_CtrlTransStart(): Req=2221, Val=0202, Indx=0000, Len=0000, UsbCmdStage=0311
H_CtrlTransStart(): Req=2221, Val=0202, Indx=0000, Len=0000, UsbCmdStage=0330
--> [STATUS STAGE NO DATA]
H_CtrlTransStart(): Req=2221, Val=0202, Indx=0000, Len=0000, UsbCmdStage=0332
H_CtrlTransStart(): Req=2221, Val=0202, Indx=0000, Len=0000, UsbCmdStage=0332
H_UsbStateManager(): UsbDeviceState=0012
<-- [SETUP STAGE] : Req=2221, Val=0303, Indx=0000, Len=0000
H_CtrlTransStart(): Req=2221, Val=0303, Indx=0000, Len=0000, UsbCmdStage=0311
H_CtrlTransStart(): Req=2221, Val=0303, Indx=0000, Len=0000, UsbCmdStage=0330
--> [STATUS STAGE NO DATA]
H_CtrlTransStart(): Req=2221, Val=0303, Indx=0000, Len=0000, UsbCmdStage=0332
H_CtrlTransStart(): Req=2221, Val=0303, Indx=0000, Len=0000, UsbCmdStage=0332
H_UsbStateManager(): UsbDeviceState=0013
$GPGGA,094233.000,3518.abcd,N,13914.abcd,E,0,00,0.0,83.0,M,0.0,M,,0000*5C
$GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30
$GPRMC,094233.000,V,3518.abcd,N,13914.abcd,E,000.0,000.0,230911,,,N*74
$GPVTG,000.0,T,,M,000.0,N,000.0,K,N*02
$GPGGA,094234.000,3518.abcd,N,13914.abcd,E,0,00,0.0,83.0,M,0.0,M,,0000*5B
$GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30
$GPRMC,094234.000,V,3518.abcd,N,13914.abcd,E,000.0,000.0,230911,,,N*73
$GPVTG,000.0,T,,M,000.0,N,000.0,K,N*02
$GPGGA,094235.000,3518.abcd,N,13914.abcd,E,0,00,0.0,83.0,M,0.0,M,,0000*5A
$GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30
$GPGSV,3,1,12,17,77,177,28,04,56,320,,10,53,242,,13,44,117,*75
$GPGSV,3,2,12,23,42,078,,20,23,050,,02,16,291,,28,09,196,*77
$GPGSV,3,3,12,12,09,317,,01,08,093,,05,01,234,,32,00,048,*7A
$GPRMC,094235.000,V,3518.abcd,N,13914.abcd,E,000.0,000.0,230911,,,N*72
$GPVTG,000.0,T,,M,000.0,N,000.0,K,N*02
$GPGGA,094236.000,3518.abcd,N,13914.abcd,E,0,00,0.0,83.0,M,0.0,M,,0000*59
$GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30
$GPRMC,094236.000,V,3518.abcd,N,13914.abcd,E,000.0,000.0,230911,,,N*71
$GPVTG,000.0,T,,M,000.0,N,000.0,K,N*02
$GPGGA,094237.000,3518.abcd,N,13914.abcd,E,0,00,0.0,83.0,M,0.0,M,,0000*58
$GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30
$GPRMC,094237.000,V,3518.abcd,N,13914.abcd,E,000.0,000.0,230911,,,N*70
$GPVTG,000.0,T,,M,000.0,N,000.0,K,N*02
$GPGGA,094238.000,3518.abcd,N,13914.abcd,E,0,00,0.0,83.0,M,0.0,M,,0000*57
$GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30
$GPGSV,3,1,12,17,77,177,29,04,56,320,,10,53,242,,13,44,117,*74
$GPGSV,3,2,12,23,42,078,,20,23,050,,02,16,291,,28,09,196,*77
$GPGSV,3,3,12,12,09,317,,01,08,093,,05,01,234,,32,00,048,*7A
$GPRMC,094238.000,V,3518.abcd,N,13914.abcd,E,000.0,000.0,230911,,,N*7F
$GPVTG,000.0,T,,M,000.0,N,000.0,K,N*02
$GPGGA,094239.000,3518.abcd,N,13914.abcd,E,0,00,0.0,83.0,M,0.0,M,,0000*56
$GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30
$GPRMC,094239.000,V,3518.abcd,N,13914.abcd,E,000.0,000.0,230911,,,N*7E
$GPVTG,000.0,T,,M,000.0,N,000.0,K,N*02
$GPGGA,094240.000,3518.abcd,N,13914.abcd,E,0,00,0.0,83.0,M,0.0,M,,0000*58
$GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30
$GPRMC,094240.000,V,3518.abcd,N,13914.abcd,E,000.0,000.0,230911,,,N*70
$GPVTG,000.0,T,,M,000.0,N,000.0,K,N*02
$GPGGA,094241.000,3518.abcd,N,13914.abcd,E,0,00,0.0,83.0,M,0.0,M,,0000*59
$GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30
$GPGSV,3,1,12,17,77,177,28,04,56,320,,10,53,242,,13,44,117,*75
$GPGSV,3,2,12,23,42,078,,20,23,050,,02,16,291,,28,09,196,*77
$GPGSV,3,3,12,12,09,317,,01,08,093,,05,01,234,,32,00,048,*7A
$GPRMC,094241.000,V,3518.abcd,N,13914.abcd,E,000.0,000.0,230911,,,N*71
$GPVTG,000.0,T,,M,000.0,N,000.0,K,N*02
$GPGGA,094242.000,3518.abcd,N,13914.abcd,E,0,00,0.0,83.0,M,0.0,M,,0000*5A
$GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30
$GPRMC,094242.000,V,3518.abcd,N,13914.abcd,E,000.0,000.0,230911,,,N*72
$GPVTG,000.0,T,,M,000.0,N,000.0,K,N*02
$GPGGA,094243.000,3518.abcd,N,13914.abcd,E,0,00,0.0,83.0,M,0.0,M,,0000*5B
$GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30
$GPRMC,094243.000,V,3518.abcd,N,13914.abcd,E,000.0,000.0,230911,,,N*73
$GPVTG,000.0,T,,M,000.0,N,000.0,K,N*02
$GPGGA,094244.000,3518.abcd,N,13914.abcd,E,0,00,0.0,83.0,M,0.0,M,,0000*5C
$GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30
$GPGSV,3,1,12,17,77,177,30,04,56,320,,10,53,242,,13,44,117,*7C
$GPGSV,3,2,12,23,42,078,,20,23,050,,02,16,292,,28,09,196,*74
$GPGSV,3,3,12,12,09,317,,01,08,093,,05,01,234,,32,00,048,*7A
$GPRMC,094244.000,V,3518.abcd,N,13914.abcd,E,000.0,000.0,230911,,,N*74
$GPVTG,000.0,T,,M,000.0,N,000.0,K,N*02
$GPGGA,094245.000,3518.abcd,N,13914.abcd,E,0,00,0.0,83.0,M,0.0,M,,0000*5D
$GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30
$GPRMC,094245.000,V,3518.abcd,N,13914.abcd,E,000.0,000.0,230911,,,N*75
$GPVTG,000.0,T,,M,000.0,N,000.0,K,N*02

Tiny Dump Monitor

詳細な位置情報は置き換えましたが、置き換えた数字は3種類だけ。時間帯にも寄りますが、精度は良いようです
Device descriptor dumpと2バイトのフィールド(idVendor、idProduct、bcdDevice)の内容が不一致なので調べてみました。結果、原因はよく分からないのですが、castの仕方に問題があるようです。結局、キャストを使わないように修正しました。もしかすると、オリジナルはLinuxにあるような気がすのですが、printf()の書式には不得意な方の作成かも知れません。因みにポチはキャストや構造体、unionなど分からないことだらけです
 

経緯と隘路


・SetControlLineStateコマンドは何をするのか分からないのですがwValue(Control Signal Bitmap)00→01→02→03を変化させます
 ターゲットで動作させたときの、ログを参考にしました。この時悩んだのが、上位、下位バイトの順です
 よく分からないので0000→0101→0202→0303としました(USB線上は別にして関数仕様としての指定方法が??)
・GetLineCoding/SetLineCoding、これも??。そもそもUSBで接続して居るんだから関係無いじゃん、と思うのですが
 実際は機微でした。正しく設定しないと、文字化けして読めません
 ターゲットで動作させた時のWindowsの指定値は「B0040000 000007」
 7は7bitのことらしい事は分かったのですが「B0040000」はチンプンカンプン。実は「000004B0」=1200bpsの事らしいのです
 GT-730F/LをWindowsに接続した時のTeraTermの設定は38400bps、8bit、パリティNone。
 なのでLineCodingを「00960000 000008」としました
・データの受信はひたすらバルクReadです
 
 
 


動いちゃえば簡単なようですが、やっぱシリアルの方が楽です
 
 

アーカイブ



 
時分秒まではUTC→JSTへ何とか変換しましたが、年月日まで変換するのは疲れたのでやっていません
大小の月や閏年まで考える元気が残ってません。何方かお願いします(UTCでは9/15ですが、JSTでは9/16です)
実はこの3号機、ホストとターゲットをDIP SWで切り替えられるようになっています
大型クリップを中学の時に作った文鎮で押えました

 
プロジェクトアーカイブ
 
 
昔、H8/3069 + MesでNTPサーバに恐る恐る、時刻を問い合わせして表示しましたが、GPSは遠慮する必要がなく、気軽に使えます


 
 
 


年月日から曜日を求める時は「ツェラーの公式」が使えます
うるう年の判定も簡単です。だからGPSから受信したUTCをJSTに変えるのはそんなに難しい話ではないと思います
ところが、ポチはアホなので、通算日を求めたり、通算日から年月日を求めてみようと考えてしまいました・・・
そうは言っても、GPSから受信したUTCの変換なので実用的な日付だけで紀元前とかは考慮しません

考え方は、このサイトグレゴリオ暦/ユリウス暦 ⇔ ユリウス日から頂きました



 

年月日 → 通算日


たまたま数時間動いただけで、テストも十分ではないし、理屈もよく分かってないので説明できないのですが、紀元元年3月1日からの通算日を求めるのだそうです。元年の2月28日以前は正しく動きません。(正確には正しく動くか、動かないか分からない。且つ興味がない)
ちなみに紀元0年はそもそも存在しないそうです。元年の前年は紀元前1年。
曜日は通算日を7で割って余りを求めるだけです

int GregorianToDayNumber( int y, int m, int d )
{
//	                        ×月  1月  2月  3月  4月  5月  6月  7月  8月  9月  10月  11月  12月  13月  14月
	static int DoM_1[16]={99999999, 305,  336,  -1,  30,  60,  91, 121, 152, 183,  213,  244,  274,  305,  336,  364  } ;
	int        ret;
	
	if ( y < 1 || m < 1 || m > 12 || d < 1 || d > 31 ) return -1;

	if ( m < 3 ) {														// 1月 → 前年の 13月
//		m = m + 12;														// 2月 → 前年の 14月
		y = y -  1;
	}
	ret = y * 365 + y/4 - y/100 + y/400 + DoM_1[m] + d    ;
	return ret;
}
 
 

通算日 → 年月日


これは、上記ページを見たのですがよく分かりませんでした。なので日めくり式に近い、力ずくになってしまいました
乗除算数回とはどうやれば出来るのでしょうか?
別に日めくり式でも現実的な日付ならシンプルで良いかなと思っています

色々、気になるところが出て来て、普段はエラーチェックとかしないのですが10回ぐらいアップし直しています

div()関数で商と余りを同時に求めてみたのですが、コンパイルリストを見てみると(アセンブラはよく分からないのですが)
却って長くなっているような・・。div()を使わなくても最適化されているのかな?
ということで、もうこれ以上は止めときます


int YMD( int NoD, int *yp, int *mp, int *dp )
{
//	                       3月  4月  5月  6月  7月  8月  9月  10月  11月  12月  13月  14月
	static int DoM_1[15] = { -1,  30,  60,  91, 121, 152, 183,  213,  244,  274,  305,  336,  365    } ;
	int        y, m, d, remainder, i, leap_day;

	if ( NoD < 0 ) return -1;

	y = d = leap_day = 0;
	m = 3;

	i =  NoD/146097                   ;
	y =                     i *    400;
	remainder = NoD       - i * 146097;
	if ( remainder == 146096 )                 leap_day = 3;                                  // うるう日

	i =  remainder/36524              ;
	y = y                 + i *    100;
	remainder = remainder - i *  36524;
	if ( leap_day != 3 && remainder == 36523 ) leap_day = 2;                                  // うるう日ではない

	i =  remainder/1461               ;
	y = y                 + i *      4;
	remainder = remainder - i *   1461;
	if ( leap_day != 2 &&  remainder == 1460 ) leap_day = 1;                                  // うるう日

	i =  remainder/365                ;
	y = y                 + i         ;
	remainder = remainder - i *    365;
	*yp = y                           ;

	if ( leap_day == 3 || leap_day == 1 ) {                                                   // うるう日
		*mp =  2;
		*dp = 29;
		return remainder;	
	}
	
	for ( i=1; i<13; i++) {
		if ( remainder <= DoM_1[i] ) goto escape;
		m++;
	}	
	printf("\n\n >>>>>>>>>>>>>>>>> E R R O R (YMD Calucuration!)<<<<<<<<<<<<<<<<<<<<<\n\n");
	return -1;
	
escape:
	if ( m>12 ) { m=m-12; *yp = ++y; }
	*mp = m;
	*dp =   remainder - DoM_1[i-1];
	return remainder;
		
}
 

リスト0


リスト1

リスト2 



 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

管理人/副管理人のみ編集できます