Browse Source

final

development
gudae01 1 week ago
parent
commit
3303432f7f
  1. BIN
      DefaultBuild/anaout.obj
  2. BIN
      DefaultBuild/check_pin.obj
  3. BIN
      DefaultBuild/delay.obj
  4. BIN
      DefaultBuild/dipSwitch.obj
  5. BIN
      DefaultBuild/gatectrl.obj
  6. BIN
      DefaultBuild/hash_pin.obj
  7. BIN
      DefaultBuild/i2c.obj
  8. BIN
      DefaultBuild/multical.abs
  9. 5
      DefaultBuild/multical.clnk
  10. 674
      DefaultBuild/multical.map
  11. 2489
      DefaultBuild/multical.mot
  12. BIN
      DefaultBuild/owi.obj
  13. BIN
      DefaultBuild/r_cg_cgc.obj
  14. BIN
      DefaultBuild/r_cg_cgc_user.obj
  15. BIN
      DefaultBuild/r_cg_port.obj
  16. BIN
      DefaultBuild/r_cg_port_user.obj
  17. BIN
      DefaultBuild/r_cg_serial.obj
  18. BIN
      DefaultBuild/r_cg_serial_user.obj
  19. BIN
      DefaultBuild/r_cg_wdt.obj
  20. BIN
      DefaultBuild/r_cg_wdt_user.obj
  21. BIN
      DefaultBuild/r_main.obj
  22. BIN
      DefaultBuild/r_systeminit.obj
  23. BIN
      DefaultBuild/uart.obj
  24. 53
      QualityReport(multical,DefaultBuild).txt
  25. 70
      anaout.c
  26. 28
      anaout.h
  27. 79
      check_pin.c
  28. 26
      check_pin.h
  29. 7
      dipSwitch.c
  30. 3
      dipSwitch.h
  31. 202
      gatectrl.c
  32. 33
      gatectrl.h
  33. 88
      hash_pin.c
  34. 26
      hash_pin.h
  35. 174
      i2c.c
  36. 80
      multical.guseo.mtud
  37. 613
      multical.mtpj
  38. 438
      multical.rcpe
  39. 740
      multical.temp.mtud
  40. 37
      owi.c
  41. 2
      r_cg_cgc.c
  42. 2
      r_cg_cgc.h
  43. 2
      r_cg_cgc_user.c
  44. 2
      r_cg_macrodriver.h
  45. 43
      r_cg_port.c
  46. 2
      r_cg_port.h
  47. 2
      r_cg_port_user.c
  48. 2
      r_cg_serial.c
  49. 2
      r_cg_serial.h
  50. 55
      r_cg_serial_user.c
  51. 2
      r_cg_userdefine.h
  52. 2
      r_cg_wdt.c
  53. 2
      r_cg_wdt.h
  54. 2
      r_cg_wdt_user.c
  55. 665
      r_main.c
  56. 4
      r_systeminit.c
  57. 60
      uart.c
  58. 18
      uart.h

BIN
DefaultBuild/anaout.obj

Binary file not shown.

BIN
DefaultBuild/check_pin.obj

Binary file not shown.

BIN
DefaultBuild/delay.obj

Binary file not shown.

BIN
DefaultBuild/dipSwitch.obj

Binary file not shown.

BIN
DefaultBuild/gatectrl.obj

Binary file not shown.

BIN
DefaultBuild/hash_pin.obj

Binary file not shown.

BIN
DefaultBuild/i2c.obj

Binary file not shown.

BIN
DefaultBuild/multical.abs

Binary file not shown.

5
DefaultBuild/multical.clnk

@ -8,19 +8,14 @@
-Input=DefaultBuild\r_cg_serial_user.obj
-Input=DefaultBuild\r_cg_wdt.obj
-Input=DefaultBuild\r_cg_wdt_user.obj
-Input=DefaultBuild\r_cg_adc.obj
-Input=DefaultBuild\r_cg_adc_user.obj
-Input=DefaultBuild\r_cg_port.obj
-Input=DefaultBuild\r_cg_port_user.obj
-Input=DefaultBuild\anaout.obj
-Input=DefaultBuild\owi.obj
-Input=DefaultBuild\i2c.obj
-Input=DefaultBuild\uart.obj
-Input=DefaultBuild\delay.obj
-Input=DefaultBuild\dipSwitch.obj
-Input=DefaultBuild\gatectrl.obj
-Input=DefaultBuild\hash_pin.obj
-Input=DefaultBuild\check_pin.obj
-SECURITY_ID=00000000000000000000
-DEVICE=C:\Program Files (x86)\Renesas Electronics\CS+\CC\Device\RL78\Devicefile\DR5F10PPJ.DVF
-DEBug

674
DefaultBuild/multical.map

@ -1,4 +1,4 @@
Renesas Optimizing Linker (W3.07.00 ) 14-Jan-2026 18:55:13
Renesas Optimizing Linker (W3.07.00 ) 21-Jan-2026 20:04:44
*** Options ***
@ -13,19 +13,14 @@ Renesas Optimizing Linker (W3.07.00 ) 14-Jan-2026 18:55:13
-Input=DefaultBuild\r_cg_serial_user.obj
-Input=DefaultBuild\r_cg_wdt.obj
-Input=DefaultBuild\r_cg_wdt_user.obj
-Input=DefaultBuild\r_cg_adc.obj
-Input=DefaultBuild\r_cg_adc_user.obj
-Input=DefaultBuild\r_cg_port.obj
-Input=DefaultBuild\r_cg_port_user.obj
-Input=DefaultBuild\anaout.obj
-Input=DefaultBuild\owi.obj
-Input=DefaultBuild\i2c.obj
-Input=DefaultBuild\uart.obj
-Input=DefaultBuild\delay.obj
-Input=DefaultBuild\dipSwitch.obj
-Input=DefaultBuild\gatectrl.obj
-Input=DefaultBuild\hash_pin.obj
-Input=DefaultBuild\check_pin.obj
-SECURITY_ID=00000000000000000000
-DEVICE=C:\Program Files (x86)\Renesas Electronics\CS+\CC\Device\RL78\Devicefile\DR5F10PPJ.DVF
-DEBug
@ -65,19 +60,19 @@ SECTION START END SIZE ALIGN
.RLIB
000000c4 000000c4 0 1
.data
000000ce 0000014c 7f 2
000000ce 000002e5 218 2
.text
0000014d 000002ff 1b3 1
000002e6 00000498 1b3 1
.textf
00000300 00001ecd 1bce 1
00000499 000023b6 1f1e 1
.const
00003000 00003413 414 2
00003000 00003385 386 2
.SLIB
00003414 00005e55 2a42 1
00003386 00005c3c 28b7 1
.bss
000faf00 000fafa3 a4 2
000faf00 000fb0a5 1a6 2
.dataR
000fafa4 000fb022 7f 2
000fb0a6 000fb2bd 218 2
.sbss
000ffe20 000ffe20 0 2
.sdataR
@ -85,9 +80,9 @@ SECTION START END SIZE ALIGN
*** Total Section Size ***
RAMDATA SECTION: 00000123 Byte(s)
ROMDATA SECTION: 00000535 Byte(s)
PROGRAM SECTION: 000047c3 Byte(s)
RAMDATA SECTION: 000003be Byte(s)
ROMDATA SECTION: 00000640 Byte(s)
PROGRAM SECTION: 00004988 Byte(s)
*** Symbol List ***
@ -113,574 +108,511 @@ FILE=rlink_generates_02
SECTION=.data
FILE=DefaultBuild\r_main.obj
000000ce 00000132 65
000000ce 000002db 20e
FILE=DefaultBuild\owi.obj
000002dc 000002df 4
FILE=DefaultBuild\i2c.obj
00000134 00000139 6
FILE=DefaultBuild\uart.obj
0000013a 0000014a 11
FILE=DefaultBuild\gatectrl.obj
0000014c 0000014c 1
000002e0 000002e5 6
SECTION=.text
FILE=DefaultBuild\cstart.obj
0000014d 000001bf 73
000002e6 00000358 73
_start
0000014d 0 none ,g *
000002e6 0 none ,g *
_exit
000001bd 0 none ,g *
00000356 0 none ,g *
_atexit
000001bf 0 none ,g *
00000358 0 none ,g *
FILE=DefaultBuild\r_cg_serial_user.obj
000001c0 000002fb 13c
00000359 00000496 13e
_r_uart0_interrupt_receive@1
000001c0 5f func ,l *
00000359 5f func ,l *
_r_uart0_interrupt_send@1
0000021f 2f func ,l *
000003b8 2f func ,l *
_r_uart1_interrupt_receive@1
0000024e 5f func ,l *
000003e7 5f func ,l *
_r_uart1_interrupt_send@1
000002ad 2f func ,l *
00000446 2f func ,l *
_r_iica0_interrupt@1
000002dc 20 func ,l *
00000475 22 func ,l *
FILE=DefaultBuild\r_cg_wdt_user.obj
000002fc 000002fd 2
00000497 00000498 2
_r_wdt_interrupt@1
000002fc 2 func ,l *
FILE=DefaultBuild\r_cg_adc_user.obj
000002fe 000002ff 2
_r_adc_interrupt@1
000002fe 2 func ,l *
00000497 2 func ,l *
SECTION=.textf
FILE=DefaultBuild\stkinit.obj
00000300 00000343 44
00000499 000004dc 44
_stkinit
00000300 0 none ,g *
00000499 0 none ,g *
LSTINIT1
0000030e 0 none ,l *
000004a7 0 none ,l *
LSTINIT2
00000338 0 none ,l *
000004d1 0 none ,l *
LSTINIT3
00000343 0 none ,l *
000004dc 0 none ,l *
FILE=DefaultBuild\r_main.obj
00000344 00000903 5c0
000004dd 00000cea 80e
_RS485_Bridge_Push
000004dd 1a func ,g *
_RS485_Bridge_ResetFifo@1
000004f7 7 func ,l *
_RS485_Bridge_DrainToPC@1
000004fe 2b func ,l *
_hex2byte@1
00000344 34 func ,l *
00000529 34 func ,l *
_OUT_PRINT@1
0000055d c func ,l *
_send_v_response@1
00000569 2d func ,l *
_process_cmd@1
00000596 7f func ,l *
_process_one_line@1
00000615 626 func ,l *
_handle_uart_command_line
00000378 539 func ,g *
00000c3b 5b func ,g *
_main
000008b1 31 func ,g *
00000c96 3e func ,g *
_R_MAIN_UserInit
000008e2 22 func ,g *
00000cd4 17 func ,g *
FILE=DefaultBuild\r_systeminit.obj
00000904 0000094a 47
00000ceb 00000d2f 45
_R_Systeminit
00000904 42 func ,g *
00000ceb 3e func ,g *
_hdwinit
00000946 5 func ,g *
00000d29 7 func ,g *
FILE=DefaultBuild\r_cg_cgc.obj
0000094b 00000974 2a
00000d30 00000d59 2a
_R_CGC_Create
0000094b 2a func ,g *
00000d30 2a func ,g *
FILE=DefaultBuild\r_cg_cgc_user.obj
00000975 00000977 3
00000d5a 00000d5c 3
_R_CGC_Get_ResetSource
00000975 3 func ,g *
00000d5a 3 func ,g *
FILE=DefaultBuild\r_cg_serial.obj
00000978 00000c4b 2d4
00000d5d 00001040 2e4
_R_SAU0_Create
00000978 c func ,g *
00000d5d 10 func ,g *
_R_UART0_Create
00000984 6e func ,g *
00000d6d 6e func ,g *
_R_UART0_Start
000009f2 26 func ,g *
00000ddb 26 func ,g *
_R_UART0_Stop
00000a18 1e func ,g *
00000e01 1e func ,g *
_R_UART0_Receive
00000a36 18 func ,g *
00000e1f 18 func ,g *
_R_UART0_Send
00000a4e 26 func ,g *
00000e37 26 func ,g *
_R_SAU1_Create
00000a74 c func ,g *
00000e5d 10 func ,g *
_R_UART1_Create
00000a80 6e func ,g *
00000e6d 6e func ,g *
_R_UART1_Start
00000aee 26 func ,g *
00000edb 26 func ,g *
_R_UART1_Stop
00000b14 1e func ,g *
00000f01 1e func ,g *
_R_UART1_Receive
00000b32 18 func ,g *
00000f1f 18 func ,g *
_R_UART1_Send
00000b4a 26 func ,g *
00000f37 26 func ,g *
_R_IICA0_Create
00000b70 50 func ,g *
00000f5d 50 func ,g *
_R_IICA0_Stop
00000bc0 5 func ,g *
00000fad 5 func ,g *
_R_IICA0_StopCondition
00000bc5 5 func ,g *
00000fb2 5 func ,g *
_R_IICA0_Master_Send
00000bca 3f func ,g *
00000fb7 43 func ,g *
_R_IICA0_Master_Receive
00000c09 43 func ,g *
00000ffa 47 func ,g *
FILE=DefaultBuild\r_cg_serial_user.obj
00000c4c 00000d08 bd
00001041 00001187 147
_r_uart0_callback_receiveend@1
00000c4c 1 func ,l *
00001041 71 func ,l *
_r_uart0_callback_softwareoverrun@1
00000c4d 1 func ,l *
000010b2 1 func ,l *
_r_uart0_callback_sendend@1
00000c4e 5 func ,l *
000010b3 6 func ,l *
_r_uart0_callback_error@1
00000c53 1 func ,l *
000010b9 1 func ,l *
_r_uart1_callback_receiveend@1
00000c54 2e func ,l *
000010ba 2f func ,l *
_r_uart1_callback_softwareoverrun@1
00000c82 1 func ,l *
000010e9 1 func ,l *
_r_uart1_callback_sendend@1
00000c83 1 func ,l *
000010ea 1 func ,l *
_r_uart1_callback_error@1
00000c84 1 func ,l *
000010eb 1 func ,l *
_iica0_masterhandler@1
00000c85 84 func ,l *
000010ec 91 func ,l *
_r_iica0_callback_master_error@1
0000117d 1 func ,l *
_r_iica0_callback_master_receiveend@1
0000117e 5 func ,l *
_r_iica0_callback_master_sendend@1
00001183 5 func ,l *
FILE=DefaultBuild\r_cg_wdt.obj
00000d09 00000d1c 14
00001188 0000119b 14
_R_WDT_Create
00000d09 10 func ,g *
00001188 10 func ,g *
_R_WDT_Restart
00000d19 4 func ,g *
FILE=DefaultBuild\r_cg_adc.obj
00000d1d 00000dd0 b4
_R_ADC_Create
00000d1d 91 func ,g *
_R_ADC_Start
00000dae a func ,g *
_R_ADC_Stop
00000db8 a func ,g *
_R_ADC_Set_OperationOn
00000dc2 4 func ,g *
_R_ADC_Set_OperationOff
00000dc6 4 func ,g *
_R_ADC_Get_Result
00000dca 7 func ,g *
00001198 4 func ,g *
FILE=DefaultBuild\r_cg_port.obj
00000dd1 00000dd7 7
0000119c 000011e7 4c
_R_PORT_Create
00000dd1 7 func ,g *
FILE=DefaultBuild\anaout.obj
00000dd8 00000e3a 63
_ANAOUT_Set
00000dd8 2b func ,g *
_ANAOUT_AllOff
00000e03 11 func ,g *
_ANAOUT_Select
00000e14 15 func ,g *
_anaout_pin
00000e29 10 func ,g *
_anaout_all_off
00000e39 2 func ,g *
0000119c 4c func ,g *
FILE=DefaultBuild\owi.obj
00000e3b 000015a5 76b
000011e8 00001a6e 887
_OWI_EnablePower
00000e3b 4 func ,g *
000011e8 4 func ,g *
_OWI_DisablePower
00000e3f 3 func ,g *
000011ec 3 func ,g *
_GPIO_Clear
00000e42 b func ,g *
000011ef b func ,g *
_GPIO_Input
00000e4d 7 func ,g *
000011fa 7 func ,g *
_GPIO_Read
00000e54 6 func ,g *
00001201 9 func ,g *
_OWI_Init
00000e5a f func ,g *
0000120a 18 func ,g *
_OWI_Start
00000e69 16 func ,g *
00001222 17 func ,g *
_OWI_Stop
00000e7f 15 func ,g *
00001239 17 func ,g *
_OWI_SecureStop
00000e94 46 func ,g *
00001250 51 func ,g *
_OWI_WriteBit
00000eda 3a func ,g *
000012a1 3f func ,g *
_OWI_WriteByte
00000f14 32 func ,g *
000012e0 2a func ,g *
_OWI_ReadBit
00000f46 50 func ,g *
0000130a 5e func ,g *
_OWI_ReadByte
00000f96 34 func ,g *
00001368 32 func ,g *
_OWI_T_ReadBytesAndPrint
00000fca c8 func ,g *
0000139a f3 func ,g *
_OWI_A_CommandMode
00001092 26c func ,g *
0000148d 268 func ,g *
_OWI_Diagnostic
000012fe 102 func ,g *
000016f5 156 func ,g *
_OWI_disable
00001400 9 func ,g *
0000184b 18 func ,g *
_OWI_T_CommandMode
00001409 4f func ,g *
00001863 60 func ,g *
_OWI_CommandMode
00001458 40 func ,g *
000018c3 4a func ,g *
_OWI_ReadBytesAndPrint
00001498 10e func ,g *
0000190d 162 func ,g *
FILE=DefaultBuild\i2c.obj
000015a6 00001a47 4a2
00001a6f 00001de3 375
_disable
000015a6 19 func ,g *
00001a6f 26 func ,g *
_I2C_EnablePower
000015bf 4 func ,g *
00001a95 4 func ,g *
_I2C_DisablePower
000015c3 3 func ,g *
_I2C_A_Command_Mode_receiveData
000015c6 213 func ,g *
00001a99 3 func ,g *
_I2C_Diagnostic
000017d9 e4 func ,g *
00001a9c 124 func ,g *
_I2C_T_Command_Mode_receiveData
000018bd 37 func ,g *
00001bc0 4f func ,g *
_I2C_Command_Mode_receiveData
000018f4 26 func ,g *
00001c0f 3e func ,g *
_I2C_Command_Mode_Send
0000191a 12e func ,g *
00001c4d 197 func ,g *
FILE=DefaultBuild\uart.obj
00001a48 00001ba1 15a
00001de4 00001eca e7
_rs485_set_tx
00001a48 b func ,g *
00001de4 b func ,g *
_rs485_init
00001a53 a func ,g *
00001def c func ,g *
_uart_send_string
00001a5d 22 func ,g *
00001dfb 22 func ,g *
_uart1_send_string
00001a7f 10 func ,g *
00001e1d 12 func ,g *
_uart_send_hex
00001a8f 50 func ,g *
00001e2f 50 func ,g *
_uart1_send_hex
00001adf 4c func ,g *
_ADC_ReadAndSend_UART
00001b2b 77 func ,g *
00001e7f 4c func ,g *
FILE=DefaultBuild\delay.obj
00001ba2 00001c59 b8
00001ecb 00001f89 bf
_delay
00001ba2 16 func ,g *
00001ecb 18 func ,g *
_delay_us
00001bb8 7d func ,g *
00001ee3 82 func ,g *
_delay_ms
00001c35 25 func ,g *
00001f65 25 func ,g *
FILE=DefaultBuild\dipSwitch.obj
00001c5a 00001c6f 16
00001f8a 00001f9a 11
_DipSwitch_Init
00001c5a 8 func ,g *
_DipSwitch_ReadValue_0to31
00001c62 9 func ,g *
_DipSwitch_ReadAddr_1to32
00001c6b 5 func ,g *
00001f8a 8 func ,g *
_DipSwitch_ReadAddr_0to31
00001f92 9 func ,g *
FILE=DefaultBuild\gatectrl.obj
00001c70 00001ce5 76
_write_port@1
00001c70 d func ,l *
_GateCtrl_Init
00001c7d 28 func ,g *
_GateCtrl_SetAll
00001ca5 8 func ,g *
_GateCtrl_SetZacwire
00001cad 8 func ,g *
_GateCtrl_ClearChannelPins
00001cb5 c func ,g *
00001f9b 000023b6 41c
_Gate_SetByNum
00001f9b 3e9 func ,g *
_Cal_Init
00002384 19 func ,g *
_Eol_Init
0000239d 19 func ,g *
_GateCtrl_SelectChannel
00001cc1 d func ,g *
_GateCtrl_Anaout
00001cce 8 func ,g *
_GateCtrl_Hash
00001cd6 8 func ,g *
_GateCtrl_Check
00001cde 8 func ,g *
FILE=DefaultBuild\hash_pin.obj
00001ce6 00001dd8 f3
_hash_write_port@1
00001ce6 d func ,l *
_hash_set_output_pm@1
00001cf3 7 func ,l *
_hash_init
00001cfa 47 func ,g *
_hash_all_off
00001d41 10 func ,g *
_hash_pin
00001d51 88 func ,g *
FILE=DefaultBuild\check_pin.obj
00001dd9 00001ecd f5
_write_port@1
00001dd9 d func ,l *
_set_output_pm@1
00001de6 7 func ,l *
_check_pin_init
00001ded 38 func ,g *
_check_all_off
00001e25 16 func ,g *
_check_pin
00001e3b 93 func ,g *
000023b6 1 func ,g *
SECTION=.const
FILE=DefaultBuild\r_main.obj
00003000 00003145 146
FILE=DefaultBuild\anaout.obj
00003146 00003184 3f
_s_port@1
00003146 2a data ,l *
_s_mask@2
00003170 15 data ,l *
00003000 00003149 14a
FILE=DefaultBuild\owi.obj
00003186 0000323f ba
0000314a 0000320e c5
FILE=DefaultBuild\i2c.obj
00003240 00003396 157
FILE=DefaultBuild\uart.obj
00003398 0000339b 4
_ADC_CHANNELS@1@ADC_ReadAndSend_UART
00003398 4 data ,l *
FILE=DefaultBuild\hash_pin.obj
0000339c 000033d7 3c
FILE=DefaultBuild\check_pin.obj
000033d8 00003413 3c
00003210 00003349 13a
FILE=DefaultBuild\gatectrl.obj
0000334a 00003385 3c
SECTION=.SLIB
FILE=_COM_faddsub
00003414 0000354e 13b
__COM_fsub
00003470 0 none ,g *
__COM_fadd
00003478 0 none ,g *
FILE=_COM_fdiv
0000354f 0000367c 12e
__COM_fdiv
000035ae 0 none ,g *
FILE=_COM_fmul
0000367d 00003769 ed
__COM_fmul
000036c8 0 none ,g *
FILE=_COM_ftoul
0000376a 00003775 c
00003386 00003391 c
__COM_ftoul
0000376a 0 none ,g *
FILE=_COM_ultof
00003776 0000377b 6
__COM_ultof
00003776 0 none ,g *
00003386 0 none ,g *
FILE=isdigit
0000377c 00003785 a
00003392 0000339b a
_isdigit
0000377c 0 none ,g *
00003392 0 none ,g *
FILE=memcpy
00003786 00003795 10
0000339c 000033ab 10
_memcpy
00003786 0 none ,g *
0000339c 0 none ,g *
FILE=memset
00003796 000037a3 e
000033ac 000033b9 e
_memset
00003796 0 none ,g *
000033ac 0 none ,g *
FILE=sprintf
000037a4 0000389c f9
000033ba 000034b2 f9
_sprintf
000037a4 e1 func ,g *
000033ba e1 func ,g *
__REL_sp@1
00003885 18 func ,l *
0000349b 18 func ,l *
FILE=strcpy
0000389d 000038a9 d
000034b3 000034bf d
_strcpy
0000389d 0 none ,g *
000034b3 0 none ,g *
FILE=toupper
000038aa 000038b7 e
000034c0 000034cd e
_toupper
000038aa 0 none ,g *
FILE=_REL_f_inf
000038b8 000038bf 8
__REL_f_inf
000038b8 0 none ,g *
FILE=_REL_f_norm
000038c0 000038cf 10
__REL_f_norm
000038c0 0 none ,g *
FILE=_REL_f_round
000038d0 000038e2 13
__REL_f_round
000038d0 0 none ,g *
000034c0 0 none ,g *
FILE=_REL_ftol
000038e3 00003917 35
000034ce 00003502 35
__REL_ftol
000038e3 0 none ,g *
FILE=_REL_ltof
00003918 00003961 4a
__REL_ltof
00003918 0 none ,g *
000034ce 0 none ,g *
FILE=_REL_print
00003962 000058b9 1f58
00003503 0000545a 1f58
__REL_print
00003962 1046 func ,g *
00003503 1046 func ,g *
__REL_fltprn@1
000049a8 941 func ,l *
00004549 941 func ,l *
__REL_henkan1@1
000052e9 28 func ,l *
00004e8a 28 func ,l *
__REL_henkan2@1
00005311 33 func ,l *
00004eb2 33 func ,l *
__REL_pri@1
00005344 298 func ,l *
00004ee5 298 func ,l *
__REL_fltgeti@1
000055dc 19d func ,l *
0000517d 19d func ,l *
__REL_inmod@1
00005779 141 func ,l *
0000531a 141 func ,l *
FILE=_COM_fdiv
0000545b 00005588 12e
__COM_fdiv
000054ba 0 none ,g *
FILE=_COM_feq
000058ba 000058cf 16
00005589 0000559e 16
__COM_feq
000058ba 0 none ,g *
00005589 0 none ,g *
FILE=_COM_fge
000058d0 000058e5 16
0000559f 000055b4 16
__COM_fge
000058d0 0 none ,g *
0000559f 0 none ,g *
FILE=_COM_flt
000058e6 000058fb 16
000055b5 000055ca 16
__COM_flt
000058e6 0 none ,g *
000055b5 0 none ,g *
FILE=_COM_fmul
000055cb 000056b7 ed
__COM_fmul
00005616 0 none ,g *
FILE=_COM_fne
000058fc 0000590c 11
000056b8 000056c8 11
__COM_fne
000058fc 0 none ,g *
000056b8 0 none ,g *
FILE=_COM_ftosl
0000590d 00005914 8
000056c9 000056d0 8
__COM_ftosl
0000590d 0 none ,g *
000056c9 0 none ,g *
FILE=_COM_lshr
00005915 00005935 21
000056d1 000056f1 21
__COM_lshr
0000591f 0 none ,g *
000056db 0 none ,g *
FILE=_COM_sidiv
00005936 00005957 22
000056f2 00005713 22
__COM_sidiv
00005938 0 none ,g *
000056f4 0 none ,g *
FILE=_COM_sirem
00005958 00005977 20
00005714 00005733 20
__COM_sirem
00005958 0 none ,g *
00005714 0 none ,g *
FILE=_COM_ulldiv
00005978 000059a1 2a
00005734 0000575d 2a
__COM_ulldiv
00005978 0 none ,g *
00005734 0 none ,g *
FILE=_COM_ullrem
000059a2 000059d2 31
0000575e 0000578e 31
__COM_ullrem
000059a2 0 none ,g *
0000575e 0 none ,g *
FILE=_REL_f_inf
0000578f 00005796 8
__REL_f_inf
0000578f 0 none ,g *
FILE=_REL_f_norm
00005797 000057a6 10
__REL_f_norm
00005797 0 none ,g *
FILE=_REL_f_round
000057a7 000057b9 13
__REL_f_round
000057a7 0 none ,g *
FILE=_REL_fcmp
000059d3 00005a0a 38
000057ba 000057f1 38
__REL_fcmp
000059d3 0 none ,g *
000057ba 0 none ,g *
FILE=_REL_fordered_core
00005a0b 00005a26 1c
000057f2 0000580d 1c
__REL_fordered_core
00005a0b 0 none ,g *
000057f2 0 none ,g *
FILE=_REL_lldiv
00005a27 00005c2c 206
0000580e 00005a13 206
__REL_lldiv
00005a43 0 none ,g *
0000582a 0 none ,g *
FILE=_REL_llrem
00005c2d 00005e30 204
00005a14 00005c17 204
__REL_llrem
00005c4a 0 none ,g *
00005a31 0 none ,g *
FILE=_REL_ltosl
00005e31 00005e55 25
00005c18 00005c3c 25
__REL_ltosl
00005e31 0 none ,g *
00005c18 0 none ,g *
SECTION=.bss
FILE=DefaultBuild\r_main.obj
000faf00 000fb001 102
_s_rb_fifo@1
000faf00 100 data ,l *
_out@5@RS485_Bridge_DrainToPC@1
000fb000 2 data ,l *
FILE=DefaultBuild\r_cg_serial.obj
000faf00 000faf1f 20
000fb002 000fb021 20
_gp_uart0_tx_address
000faf00 2 data ,g *
000fb002 2 data ,g *
_g_uart0_tx_count
000faf02 2 data ,g *
000fb004 2 data ,g *
_gp_uart0_rx_address
000faf04 2 data ,g *
000fb006 2 data ,g *
_g_uart0_rx_count
000faf06 2 data ,g *
000fb008 2 data ,g *
_g_uart0_rx_length
000faf08 2 data ,g *
000fb00a 2 data ,g *
_gp_uart1_tx_address
000faf0a 2 data ,g *
000fb00c 2 data ,g *
_g_uart1_tx_count
000faf0c 2 data ,g *
000fb00e 2 data ,g *
_gp_uart1_rx_address
000faf0e 2 data ,g *
000fb010 2 data ,g *
_g_uart1_rx_count
000faf10 2 data ,g *
000fb012 2 data ,g *
_g_uart1_rx_length
000faf12 2 data ,g *
000fb014 2 data ,g *
_g_iica0_master_status_flag
000faf14 1 data ,g *
000fb016 1 data ,g *
_g_iica0_slave_status_flag
000faf15 1 data ,g *
000fb017 1 data ,g *
_gp_iica0_rx_address
000faf16 2 data ,g *
000fb018 2 data ,g *
_g_iica0_rx_len
000faf18 2 data ,g *
000fb01a 2 data ,g *
_g_iica0_rx_cnt
000faf1a 2 data ,g *
000fb01c 2 data ,g *
_gp_iica0_tx_address
000faf1c 2 data ,g *
000fb01e 2 data ,g *
_g_iica0_tx_cnt
000faf1e 2 data ,g *
000fb020 2 data ,g *
FILE=sprintf
000faf20 000faf23 4
000fb022 000fb025 4
__REL_pointer@1
000faf20 4 data ,l *
000fb022 4 data ,l *
FILE=_REL_print
000faf24 000fafa3 80
000fb026 000fb0a5 80
_qt@1@_REL_inmod@1
000faf24 80 data ,l *
000fb026 80 data ,l *
SECTION=.dataR
FILE=DefaultBuild\r_main.obj
000fafa4 000fb008 65
000fb0a6 000fb2b3 20e
_uart_rx_done
000fafa4 1 data ,g *
000fb0a6 1 data ,g *
_uart_rx_index
000fafa5 1 data ,g *
000fb0a7 1 data ,g *
_uart_rx_buffer
000fafa6 60 data ,g *
000fb0a8 100 data ,g *
_uart_rx_length
000fb006 2 data ,g *
_g_fixed_addr@1
000fb008 1 data ,l *
000fb1a8 2 data ,g *
_rs485_rx_done
000fb1aa 1 data ,g *
_rs485_rx_index
000fb1ab 1 data ,g *
_rs485_rx_buffer
000fb1ac 100 data ,g *
_rs485_rx_length
000fb2ac 2 data ,g *
_g_rs485_bridge_active
000fb2ae 1 data ,g *
_g_rs485_bridge_done
000fb2af 1 data ,g *
_g_fixed_addr
000fb2b0 1 data ,g *
_s_rb_head@2
000fb2b1 1 data ,l *
_s_rb_tail@3
000fb2b2 1 data ,l *
_s_prefix_mode@4
000fb2b3 1 data ,l *
FILE=DefaultBuild\owi.obj
000fb2b4 000fb2b7 4
_bit_period_us@1
000fb2b4 4 data ,l *
FILE=DefaultBuild\i2c.obj
000fb00a 000fb00f 6
000fb2b8 000fb2bd 6
_g_i2c_last_command
000fb00a 3 data ,g *
000fb2b8 3 data ,g *
_g_i2c_command_valid
000fb00d 1 data ,g *
000fb2bb 1 data ,g *
_dis@1@disable
000fb00e 2 data ,l *
FILE=DefaultBuild\uart.obj
000fb010 000fb020 11
_g_adc_bytes
000fb010 10 data ,g *
_g_adc_len
000fb020 1 data ,g *
FILE=DefaultBuild\gatectrl.obj
000fb022 000fb022 1
_s_ch@1
000fb022 1 data ,l *
000fb2bc 2 data ,l *
Absolute value symbols
FILE=DefaultBuild\hash_pin.obj
@$IMM_28
00000028 0 none ,l *
FILE=DefaultBuild\check_pin.obj
FILE=DefaultBuild\gatectrl.obj
@$IMM_28
00000028 0 none ,l *
FILE=rlink_generates_04
__s.text
0000014d 0 none ,g *
000002e6 0 none ,g *
__e.text
00000300 0 none ,g *
00000499 0 none ,g *
__s.textf
00000300 0 none ,g *
00000499 0 none ,g *
__e.textf
00001ece 0 none ,g *
000023b7 0 none ,g *
__s.const
00003000 0 none ,g *
__e.const
00003414 0 none ,g *
00003386 0 none ,g *
__s.constf
00000080 0 none ,g *
__e.constf
@ -688,7 +620,7 @@ FILE=rlink_generates_04
__s.data
000000ce 0 none ,g *
__e.data
0000014d 0 none ,g *
000002e6 0 none ,g *
__s.sdata
00000080 0 none ,g *
__e.sdata
@ -696,15 +628,15 @@ FILE=rlink_generates_04
__s.bss
000faf00 0 none ,g *
__e.bss
000fafa4 0 none ,g *
000fb0a6 0 none ,g *
__s.sbss
000ffe20 0 none ,g *
__e.sbss
000ffe20 0 none ,g *
__s.dataR
000fafa4 0 none ,g *
000fb0a6 0 none ,g *
__e.dataR
000fb023 0 none ,g *
000fb2be 0 none ,g *
__s.sdataR
000ffe20 0 none ,g *
__e.sdataR
@ -718,9 +650,9 @@ FILE=rlink_generates_04
__e.RLIB
000000c4 0 none ,g *
__s.SLIB
00003414 0 none ,g *
00003386 0 none ,g *
__e.SLIB
00005e56 0 none ,g *
00005c3d 0 none ,g *
__s.option_byte
000000c0 0 none ,g *
__e.option_byte
@ -740,7 +672,7 @@ FILE=rlink_generates_04
__STACK_ADDR_START
000ffe20 0 none ,g *
__STACK_ADDR_END
000fb024 0 none ,g *
000fb2be 0 none ,g *
*** Unfilled Areas ***

2489
DefaultBuild/multical.mot

File diff suppressed because it is too large

BIN
DefaultBuild/owi.obj

Binary file not shown.

BIN
DefaultBuild/r_cg_cgc.obj

Binary file not shown.

BIN
DefaultBuild/r_cg_cgc_user.obj

Binary file not shown.

BIN
DefaultBuild/r_cg_port.obj

Binary file not shown.

BIN
DefaultBuild/r_cg_port_user.obj

Binary file not shown.

BIN
DefaultBuild/r_cg_serial.obj

Binary file not shown.

BIN
DefaultBuild/r_cg_serial_user.obj

Binary file not shown.

BIN
DefaultBuild/r_cg_wdt.obj

Binary file not shown.

BIN
DefaultBuild/r_cg_wdt_user.obj

Binary file not shown.

BIN
DefaultBuild/r_main.obj

Binary file not shown.

BIN
DefaultBuild/r_systeminit.obj

Binary file not shown.

BIN
DefaultBuild/uart.obj

Binary file not shown.

53
QualityReport(multical,DefaultBuild).txt

@ -1,28 +1,24 @@
QualityReport
2026년 1월 14일 수요일 오후 6:55:13
2026년 1월 21일 수요일 오후 8:04:44
------ Start build(multical, DefaultBuild) ------
C:\Program Files (x86)\Renesas Electronics\CS+\CC\CC-RL\V1.15.00\Bin\ccrl.exe r_main.c -cpu=S3 -o DefaultBuild\r_main.obj "-dev=C:\Program Files (x86)\Renesas Electronics\CS+\CC\Device\RL78\Devicefile\DR5F10PPJ.DVF" -g -g_line -I "..\..\Documents\카카오톡 받은 파일\IDH1.1\IDH1.1" -I ..\IDH1.1 -I . -c -msg_lang=english
C:\Program Files (x86)\Renesas Electronics\CS+\CC\CC-RL\V1.15.00\Bin\ccrl.exe anaout.c -cpu=S3 -o DefaultBuild\anaout.obj "-dev=C:\Program Files (x86)\Renesas Electronics\CS+\CC\Device\RL78\Devicefile\DR5F10PPJ.DVF" -g -g_line -I "..\..\Documents\카카오톡 받은 파일\IDH1.1\IDH1.1" -I ..\IDH1.1 -I . -c -msg_lang=english
C:\Program Files (x86)\Renesas Electronics\CS+\CC\CC-RL\V1.15.00\Bin\ccrl.exe gatectrl.c -cpu=S3 -o DefaultBuild\gatectrl.obj "-dev=C:\Program Files (x86)\Renesas Electronics\CS+\CC\Device\RL78\Devicefile\DR5F10PPJ.DVF" -g -g_line -I "..\..\Documents\카카오톡 받은 파일\IDH1.1\IDH1.1" -I ..\IDH1.1 -I . -c -msg_lang=english
W0511106:The folder "..\..\Documents\카카오톡 받은 파일\IDH1.1\IDH1.1" specified by the "-I" option is not found.
W0511106:The folder "..\..\Documents\카카오톡 받은 파일\IDH1.1\IDH1.1" specified by the "-I" option is not found.
W0511106:The folder "..\..\Documents\카카오톡 받은 파일\IDH1.1\IDH1.1" specified by the "-I" option is not found.
W0511106:The folder "..\IDH1.1" specified by the "-I" option is not found.
W0511106:The folder "..\IDH1.1" specified by the "-I" option is not found.
W0511106:The folder "..\IDH1.1" specified by the "-I" option is not found.
W0511186:The evaluation period for the option "-Odefault" of CC-RL V1 is valid for the remaining 60 days. After that, it will be implicitly changed to "-Olite". Please consider purchasing the product to continue using "-Odefault".
W0511186:The evaluation period for the option "-Odefault" of CC-RL V1 is valid for the remaining 60 days. After that, it will be implicitly changed to "-Olite". Please consider purchasing the product to continue using "-Odefault".
W0511186:The evaluation period for the option "-Odefault" of CC-RL V1 is valid for the remaining 60 days. After that, it will be implicitly changed to "-Olite". Please consider purchasing the product to continue using "-Odefault".
W0511186:The evaluation period for the option "-Odefault" of CC-RL V1 is valid for the remaining 52 days. After that, it will be implicitly changed to "-Olite". Please consider purchasing the product to continue using "-Odefault".
owi.h(47):W0523076:Function declarations should have prototype
i2c.h(8):W0520047:Incompatible redefinition of macro "RAM_BYTES" (declared at line 11 of "uart.h")
r_main.c(116):W0520172:External/internal linkage conflict with previous declaration
r_main.c(134):W0523077:Called function should have prototype
i2c.h(8):W0520047:Incompatible redefinition of macro "RAM_BYTES" (declared at line 10 of "uart.h")
C:\Program Files (x86)\Renesas Electronics\CS+\CC\CC-RL\V1.15.00\inc\stdint.h(18):W0520301:Typedef name has already been declared (with same type)
C:\Program Files (x86)\Renesas Electronics\CS+\CC\CC-RL\V1.15.00\inc\stdint.h(19):W0520301:Typedef name has already been declared (with same type)
C:\Program Files (x86)\Renesas Electronics\CS+\CC\CC-RL\V1.15.00\inc\stdint.h(20):W0520301:Typedef name has already been declared (with same type)
C:\Program Files (x86)\Renesas Electronics\CS+\CC\CC-RL\V1.15.00\inc\stdint.h(25):W0520301:Typedef name has already been declared (with same type)
C:\Program Files (x86)\Renesas Electronics\CS+\CC\CC-RL\V1.15.00\inc\stdint.h(26):W0520301:Typedef name has already been declared (with same type)
C:\Program Files (x86)\Renesas Electronics\CS+\CC\CC-RL\V1.15.00\inc\stdint.h(27):W0520301:Typedef name has already been declared (with same type)
r_main.c(316):W0520172:External/internal linkage conflict with previous declaration
C:\Program Files (x86)\Renesas Electronics\CS+\CC\CC-RL\V1.15.00\Bin\rlink.exe -subcommand=DefaultBuild\multical.clnk
W0561018:The evaluation period of CC-RL V1 is valid for the remaining 60 days. After that, functional limit will be applied. Please consider purchasing the product.
W0561018:The evaluation period of CC-RL V1 is valid for the remaining 60 days. After that, functional limit will be applied. Please consider purchasing the product.
W0561018:The evaluation period of CC-RL V1 is valid for the remaining 52 days. After that, functional limit will be applied. Please consider purchasing the product.
W0561018:The evaluation period of CC-RL V1 is valid for the remaining 52 days. After that, functional limit will be applied. Please consider purchasing the product.
Renesas Optimizing Linker Completed
------ Build ended(Error:0, Warning:15)(multical, DefaultBuild) ------
------ Build ended(Error:0, Warning:13)(multical, DefaultBuild) ------
--- CommandFile 1 ---
DefaultBuild\multical.clnk :
@ -36,19 +32,14 @@ DefaultBuild\multical.clnk :
-Input=DefaultBuild\r_cg_serial_user.obj
-Input=DefaultBuild\r_cg_wdt.obj
-Input=DefaultBuild\r_cg_wdt_user.obj
-Input=DefaultBuild\r_cg_adc.obj
-Input=DefaultBuild\r_cg_adc_user.obj
-Input=DefaultBuild\r_cg_port.obj
-Input=DefaultBuild\r_cg_port_user.obj
-Input=DefaultBuild\anaout.obj
-Input=DefaultBuild\owi.obj
-Input=DefaultBuild\i2c.obj
-Input=DefaultBuild\uart.obj
-Input=DefaultBuild\delay.obj
-Input=DefaultBuild\dipSwitch.obj
-Input=DefaultBuild\gatectrl.obj
-Input=DefaultBuild\hash_pin.obj
-Input=DefaultBuild\check_pin.obj
-SECURITY_ID=00000000000000000000
-DEVICE=C:\Program Files (x86)\Renesas Electronics\CS+\CC\Device\RL78\Devicefile\DR5F10PPJ.DVF
-DEBug
@ -76,19 +67,19 @@ DefaultBuild\multical.clnk :
--- SHA1 hash value of output files ---
C:\Users\COMPUTER1\OneDrive\Desktop\Amosense_Firmware1\DefaultBuild\multical.abs: 55c523f42c5f81fb6f95882f964b7fad1ba0b973
C:\Users\COMPUTER1\OneDrive\Desktop\Amosense_Firmware1\DefaultBuild\multical.mot: 44476140b1f3400e9c301d09ba0adf83ed9d2e12
C:\Users\guseo\Desktop\Amosense_Firmware 최종\DefaultBuild\multical.abs: 23ea96fd6401573919b64b35b3f66cbe0d04daf4
C:\Users\guseo\Desktop\Amosense_Firmware 최종\DefaultBuild\multical.mot: ca40aa63387b2dce93016b86bcf6746cbc99d2e3
--- System Information ---
*OS Version
Microsoft Windows 11 Pro (-, 10.0.26200, WOW64)
Microsoft Windows 11 Home (-, 10.0.26200, WOW64)
*Language
한국어(대한민국)
*.NET Framework Version
Microsoft .NET Framework 4 [.NET 4.8 or later] (533509)
*WebView2 Version
143.0.3650.139
144.0.3719.82
--- Application Information ---
*Product Name
@ -105,13 +96,13 @@ C:\Users\COMPUTER1\OneDrive\Desktop\Amosense_Firmware1\DefaultBuild\multical.mot
C:\Program Files (x86)\Renesas Electronics\CS+\CC
*Memory Usage
*Private Working Set
328 MB
373 MB
*Number of GDI Objects
2472
2518
*Number of USER Objects
1497
1509
*Opened Files
14 editors, 14 files, 39 KB
11 editors, 11 files, 87 KB
--- Build Tool Plug-in Information ---
RH850 Build tool CC-RH Plug-in
@ -247,7 +238,7 @@ Device Information Common Interface
DeviceInformation.dll
--- Main Project Information ---
C:\Users\COMPUTER1\OneDrive\Desktop\Amosense_Firmware1\multical.mtpj
C:\Users\guseo\Desktop\Amosense_Firmware 최종\multical.mtpj
Microcontroller Information
*R5F10PPJ
*File Name: Version

70
anaout.c

@ -1,70 +0,0 @@
#include "anaout.h"
#define BIT(n) (1u << (n))
static void write_port(volatile uint8_t *port, uint8_t mask, uint8_t on)
{
if (on) *port |= mask;
else *port &= (uint8_t)~mask;
}
/* ?? -> (?? ??, ???) ??? */
static volatile uint8_t * const s_port[21] = {
0,
&P6, &P6, &P6, &P6, // 1~4
&P4, &P4, &P4, &P4, // 5~8
&P5, &P5, &P5, // 9~11
&P6, &P6, // 12~13
&P7, &P7, &P7, &P7, &P7, &P7, // 14~19
&P13 // 20
};
static const uint8_t s_mask[21] = {
0,
(uint8_t)BIT(4), (uint8_t)BIT(5), (uint8_t)BIT(6), (uint8_t)BIT(7), // P64~P67
(uint8_t)BIT(4), (uint8_t)BIT(3), (uint8_t)BIT(2), (uint8_t)BIT(1), // P44,P43,P42,P41
(uint8_t)BIT(0), (uint8_t)BIT(1), (uint8_t)BIT(2), // P50,P51,P52
(uint8_t)BIT(0), (uint8_t)BIT(1), // P60,P61
(uint8_t)BIT(2), (uint8_t)BIT(3), (uint8_t)BIT(5), (uint8_t)BIT(4), (uint8_t)BIT(6), (uint8_t)BIT(7), // P72~P77
(uint8_t)BIT(0) // P130
};
void ANAOUT_Set(uint8_t ch, uint8_t on)
{
if (ch < 1 || ch > 20) return;
write_port(s_port[ch], s_mask[ch], on);
}
void ANAOUT_AllOff(void)
{
uint8_t ch;
for (ch = 1; ch <= 20; ch++)
{
ANAOUT_Set(ch, 0);
}
}
void ANAOUT_Select(uint8_t ch)
{
if (ch < 1 || ch > 20) return;
ANAOUT_AllOff();
ANAOUT_Set(ch, 1);
}
void anaout_pin(uint8_t ch, uint8_t on)
{
if (ch < 1 || ch > 20) return;
if (on) {
// on=1?? "??" ???? ??(??? 1?? ??)
ANAOUT_Select(ch);
} else {
// off? ?? ??? OFF
ANAOUT_Set(ch, 0);
}
}
void anaout_all_off(void)
{
ANAOUT_AllOff();
}

28
anaout.h

@ -1,28 +0,0 @@
#ifndef ANAOUT_H
#define ANAOUT_H
#include "r_cg_macrodriver.h"
#include "r_cg_port.h"
#ifdef __cplusplus
extern "C" {
#endif
void ANAOUT_Set(uint8_t ch, uint8_t on);
/** 전체 채널 OFF */
void ANAOUT_AllOff(void);
/** 채널 선택(= 전체 OFF 후 해당 채널 ON) */
void ANAOUT_Select(uint8_t ch);
void anaout_pin(uint8_t ch, uint8_t on);
/** 전체 OFF wrapper */
void anaout_all_off(void);
#ifdef __cplusplus
}
#endif
#endif /* ANAOUT_H */

79
check_pin.c

@ -1,79 +0,0 @@
#include "check_pin.h"
#define BIT(n) (1u << (n))
static void write_port(volatile uint8_t *port, uint8_t mask, uint8_t on)
{
if (on) *port |= mask;
else *port &= (uint8_t)~mask;
}
static void set_output_pm(volatile uint8_t *pm, uint8_t mask)
{
*pm &= (uint8_t)~mask;
}
void check_pin_init(void)
{
// CHECK_1,2,4 : P15.4,5,6
set_output_pm(&PM15, (uint8_t)(BIT(4)|BIT(5)|BIT(6)));
// CHECK_3,7 : P0.0,3
set_output_pm(&PM0, (uint8_t)(BIT(0)|BIT(3)));
// CHECK_5,6 : P3.0,2
set_output_pm(&PM3, (uint8_t)(BIT(0)|BIT(2)));
// CHECK_8,9 : P7.0,1
set_output_pm(&PM7, (uint8_t)(BIT(0)|BIT(1)));
// CHECK_10~13 : P10.4~7
set_output_pm(&PM10, (uint8_t)(BIT(4)|BIT(5)|BIT(6)|BIT(7)));
// CHECK_14~17 : P5.7,6,5,4
set_output_pm(&PM5, (uint8_t)(BIT(7)|BIT(6)|BIT(5)|BIT(4)));
// CHECK_18~20 : P1.0,3,4
set_output_pm(&PM1, (uint8_t)(BIT(0)|BIT(3)|BIT(4)));
check_all_off();
}
void check_all_off(void)
{
P15 &= (uint8_t)~(BIT(4)|BIT(5)|BIT(6));
P0 &= (uint8_t)~(BIT(0)|BIT(3));
P3 &= (uint8_t)~(BIT(0)|BIT(2));
P7 &= (uint8_t)~(BIT(0)|BIT(1));
P10 &= (uint8_t)~(BIT(4)|BIT(5)|BIT(6)|BIT(7));
P5 &= (uint8_t)~(BIT(4)|BIT(5)|BIT(6)|BIT(7));
P1 &= (uint8_t)~(BIT(0)|BIT(3)|BIT(4));
}
void check_pin(uint8_t ch, uint8_t on)
{
switch (ch)
{
case 1: write_port(&P15, BIT(4), on); break; // CHECK_1 : P154
case 2: write_port(&P15, BIT(5), on); break; // CHECK_2 : P155
case 3: write_port(&P0, BIT(0), on); break; // CHECK_3 : P00
case 4: write_port(&P15, BIT(6), on); break; // CHECK_4 : P156
case 5: write_port(&P3, BIT(0), on); break; // CHECK_5 : P30
case 6: write_port(&P3, BIT(2), on); break; // CHECK_6 : P32
case 7: write_port(&P0, BIT(3), on); break; // CHECK_7 : P03
case 8: write_port(&P7, BIT(0), on); break; // CHECK_8 : P70
case 9: write_port(&P7, BIT(1), on); break; // CHECK_9 : P71
case 10: write_port(&P10, BIT(4), on); break; // CHECK_10: P104
case 11: write_port(&P10, BIT(5), on); break; // CHECK_11: P105
case 12: write_port(&P10, BIT(6), on); break; // CHECK_12: P106
case 13: write_port(&P10, BIT(7), on); break; // CHECK_13: P107
case 14: write_port(&P5, BIT(7), on); break; // CHECK_14: P57
case 15: write_port(&P5, BIT(6), on); break; // CHECK_15: P56
case 16: write_port(&P5, BIT(5), on); break; // CHECK_16: P55
case 17: write_port(&P5, BIT(4), on); break; // CHECK_17: P54
case 18: write_port(&P1, BIT(0), on); break; // CHECK_18: P10
case 19: write_port(&P1, BIT(3), on); break; // CHECK_19: P13
case 20: write_port(&P1, BIT(4), on); break; // CHECK_20: P14
default: /* ignore */ break;
}
}

26
check_pin.h

@ -1,26 +0,0 @@
#ifndef CHECK_PIN_H
#define CHECK_PIN_H
#include "r_cg_macrodriver.h"
#include "r_cg_port.h"
#ifdef __cplusplus
extern "C" {
#endif
void check_pin_init(void);
/**
* (ch=1~20) CHECK on/off
* ) ch=2 -> CHECK_2(P155)
*/
void check_pin(uint8_t ch, uint8_t on);
/** (옵션) CHECK_1~CHECK_20 전체 OFF */
void check_all_off(void);
#ifdef __cplusplus
}
#endif
#endif /* CHECK_PIN_H */

7
dipSwitch.c

@ -16,7 +16,7 @@ void DipSwitch_Init(void)
DIP_PM |= DIP_MASK;
}
uint8_t DipSwitch_ReadValue_0to31(void)
uint8_t DipSwitch_ReadAddr_0to31(void)
{
uint8_t raw = (uint8_t)(DIP_PORT & DIP_MASK);
@ -29,7 +29,4 @@ uint8_t DipSwitch_ReadValue_0to31(void)
return (uint8_t)(v & 0x1Fu); // 0~31
}
uint8_t DipSwitch_ReadAddr_1to32(void)
{
return (uint8_t)(DipSwitch_ReadValue_0to31() + 1u); // 1~32
}

3
dipSwitch.h

@ -18,13 +18,12 @@ void DipSwitch_Init(void);
* - : Pull-up, DIP ON -> GND (Active-Low)
* - : P8.1~P8.5 (ADD_1~ADD_5)
*/
uint8_t DipSwitch_ReadAddr_1to32(void);
/**
* () : DIP 5bit(0~31)
* - ADD_1이 LSB
*/
uint8_t DipSwitch_ReadValue_0to31(void);
uint8_t DipSwitch_ReadAddr_0to31(void);
#ifdef __cplusplus
}

202
gatectrl.c

@ -1,78 +1,172 @@
#include "gatectrl.h"
#define BIT(n) (1u << (n))
// 공통핀 매핑
// ALL : P47 -> Port4 bit7
// ZACWIRE : P157 -> Port15 bit7
#define ALL_PM PM4
#define ALL_MASK (uint8_t)BIT(7)
#define ZAC_PM PM15
#define ZAC_MASK (uint8_t)BIT(7)
static uint8_t s_ch = 1;
static void write_port(volatile uint8_t *port, uint8_t mask, uint8_t on)
#define PORT_BIT_SETCLR(PORT, MASK, ON) \
do { \
if (ON) { (PORT) |= (uint8_t)(MASK); } \
else { (PORT) &= (uint8_t)~(MASK); } \
} while (0)
void Gate_SetByNum(uint8_t ch, uint8_t hash_on, uint8_t anaout_on, uint8_t check_on)
{
if (on) *port |= mask;
else *port &= (uint8_t)~mask;
switch (ch)
{
case 1: /* HASH P15.3, ANAOUT P6.4, CHECK P15.4 */
PORT_BIT_SETCLR(P15, 0x08, hash_on); // P15.3
PORT_BIT_SETCLR(P6, 0x10, anaout_on); // P6.4
PORT_BIT_SETCLR(P15, 0x10, check_on); // P15.4
break;
case 2: /* P15.2, P6.5, P15.5 */
PORT_BIT_SETCLR(P15, 0x04, hash_on); // P15.2
PORT_BIT_SETCLR(P6, 0x20, anaout_on); // P6.5
PORT_BIT_SETCLR(P15, 0x20, check_on); // P15.5
break;
case 3: /* P15.1, P6.6, P0.0 */
PORT_BIT_SETCLR(P15, 0x02, hash_on); // P15.1
PORT_BIT_SETCLR(P6, 0x40, anaout_on); // P6.6
PORT_BIT_SETCLR(P0, 0x01, check_on); // P0.0
break;
case 4: /* P15.0, P6.7, P15.6 */
PORT_BIT_SETCLR(P15, 0x01, hash_on); // P15.0
PORT_BIT_SETCLR(P6, 0x80, anaout_on); // P6.7
PORT_BIT_SETCLR(P15, 0x40, check_on); // P15.6
break;
case 5: /* P12.0, P4.4, P3.0 */
PORT_BIT_SETCLR(P12, 0x01, hash_on); // P12.0
PORT_BIT_SETCLR(P4, 0x10, anaout_on); // P4.4
PORT_BIT_SETCLR(P3, 0x01, check_on); // P3.0
break;
case 6: /* P12.5, P4.3, P3.2 */
PORT_BIT_SETCLR(P12, 0x20, hash_on); // P12.5
PORT_BIT_SETCLR(P4, 0x08, anaout_on); // P4.3
PORT_BIT_SETCLR(P3, 0x04, check_on); // P3.2
break;
case 7: /* P0.1, P4.2, P0.3 */
PORT_BIT_SETCLR(P0, 0x02, hash_on); // P0.1
PORT_BIT_SETCLR(P4, 0x04, anaout_on); // P4.2
PORT_BIT_SETCLR(P0, 0x08, check_on); // P0.3
break;
case 8: /* P12.6, P4.1, P7.0 */
PORT_BIT_SETCLR(P12, 0x40, hash_on); // P12.6
PORT_BIT_SETCLR(P4, 0x02, anaout_on); // P4.1
PORT_BIT_SETCLR(P7, 0x01, check_on); // P7.0
break;
case 9: /* P12.7, P5.0, P7.1 */
PORT_BIT_SETCLR(P12, 0x80, hash_on); // P12.7
PORT_BIT_SETCLR(P5, 0x01, anaout_on); // P5.0
PORT_BIT_SETCLR(P7, 0x02, check_on); // P7.1
break;
case 10: /* P0.2, P5.1, P10.4 */
PORT_BIT_SETCLR(P0, 0x04, hash_on); // P0.2
PORT_BIT_SETCLR(P5, 0x02, anaout_on); // P5.1
PORT_BIT_SETCLR(P10, 0x10, check_on); // P10.4
break;
case 11: /* P10.3, P5.2, P10.5 */
PORT_BIT_SETCLR(P10, 0x08, hash_on); // P10.3
PORT_BIT_SETCLR(P5, 0x04, anaout_on); // P5.2
PORT_BIT_SETCLR(P10, 0x20, check_on); // P10.5
break;
case 12: /* P10.2, P6.0, P10.6 */
PORT_BIT_SETCLR(P10, 0x04, hash_on); // P10.2
PORT_BIT_SETCLR(P6, 0x01, anaout_on); // P6.0
PORT_BIT_SETCLR(P10, 0x40, check_on); // P10.6
break;
case 13: /* P10.1, P6.1, P10.7 */
PORT_BIT_SETCLR(P10, 0x02, hash_on); // P10.1
PORT_BIT_SETCLR(P6, 0x02, anaout_on); // P6.1
PORT_BIT_SETCLR(P10, 0x80, check_on); // P10.7
break;
case 14: /* P10.0, P7.2, P5.7 */
PORT_BIT_SETCLR(P10, 0x01, hash_on); // P10.0
PORT_BIT_SETCLR(P7, 0x04, anaout_on); // P7.2
PORT_BIT_SETCLR(P5, 0x80, check_on); // P5.7
break;
case 15: /* P9.7, P7.3, P5.6 */
PORT_BIT_SETCLR(P9, 0x80, hash_on); // P9.7
PORT_BIT_SETCLR(P7, 0x08, anaout_on); // P7.3
PORT_BIT_SETCLR(P5, 0x40, check_on); // P5.6
break;
case 16: /* P9.6, P7.5, P5.5 */
PORT_BIT_SETCLR(P9, 0x40, hash_on); // P9.6
PORT_BIT_SETCLR(P7, 0x20, anaout_on); // P7.5
PORT_BIT_SETCLR(P5, 0x20, check_on); // P5.5
break;
case 17: /* P9.5, P7.4, P5.4 */
PORT_BIT_SETCLR(P9, 0x20, hash_on); // P9.5
PORT_BIT_SETCLR(P7, 0x10, anaout_on); // P7.4
PORT_BIT_SETCLR(P5, 0x10, check_on); // P5.4
break;
case 18: /* P9.4, P7.6, P1.0 */
PORT_BIT_SETCLR(P9, 0x10, hash_on); // P9.4
PORT_BIT_SETCLR(P7, 0x40, anaout_on); // P7.6
PORT_BIT_SETCLR(P1, 0x01, check_on); // P1.0
break;
case 19: /* P9.3, P7.7, P1.3 */
PORT_BIT_SETCLR(P9, 0x08, hash_on); // P9.3
PORT_BIT_SETCLR(P7, 0x80, anaout_on); // P7.7
PORT_BIT_SETCLR(P1, 0x08, check_on); // P1.3
break;
case 20: /* P9.2, P13.0, P1.4 */
PORT_BIT_SETCLR(P9, 0x04, hash_on); // P9.2
PORT_BIT_SETCLR(P13, 0x01, anaout_on); // P13.0
PORT_BIT_SETCLR(P1, 0x10, check_on); // P1.4
break;
default:
break;
}
}
void GateCtrl_Init(void)
void Cal_Init(void)
{
// 공통핀 출력 설정
ALL_PM &= (uint8_t)~ALL_MASK;
ZAC_PM &= (uint8_t)~ZAC_MASK;
// 기본 OFF
GateCtrl_SetAll(0);
GateCtrl_SetZacwire(0);
uint8_t i;
// 채널 관련 모듈 init
hash_init();
check_pin_init();
// P4.7 = 0, P15.7 = 0 (다른 비트 보존!)
PORT_BIT_SETCLR(P4, 0x80, 0);
PORT_BIT_SETCLR(P15, 0x80, 0);
// ANAOUT_Init()는 main에서 한다면 여기서 중복 호출 X
for (i = 1; i <= 20; i++) {
Gate_SetByNum(i, 0, 0, 1); // hash=0, anaout=0, check=1
}
}
void GateCtrl_SetAll(uint8_t on)
void Eol_Init(void)
{
write_port(&P4, ALL_MASK, on);
}
uint8_t i;
void GateCtrl_SetZacwire(uint8_t on)
{
write_port(&P15, ZAC_MASK, on);
}
// P4.7 = 1, P15.7 = 0 (다른 비트 보존!)
PORT_BIT_SETCLR(P4, 0x80, 1);
PORT_BIT_SETCLR(P15, 0x80, 0);
void GateCtrl_ClearChannelPins(void)
{
hash_all_off();
check_all_off();
anaout_all_off();
for (i = 1; i <= 20; i++) {
Gate_SetByNum(i, 0, 0, 1); // hash=0, anaout=0, check=1
}
}
void GateCtrl_SelectChannel(uint8_t ch)
{
if (ch < 1 || ch > 20) return;
s_ch = ch;
GateCtrl_ClearChannelPins();
}
void GateCtrl_Anaout(uint8_t on)
{
anaout_pin(s_ch, on);
}
void GateCtrl_Hash(uint8_t on)
{
hash_pin(s_ch, on);
}
void GateCtrl_Check(uint8_t on)
{
check_pin(s_ch, on);
}

33
gatectrl.h

@ -3,38 +3,13 @@
#include "r_cg_macrodriver.h"
#include "r_cg_port.h"
#include "anaout.h"
#include "hash_pin.h"
#include "check_pin.h"
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
void GateCtrl_Init(void);
void Gate_SetByNum(uint8_t ch, uint8_t hash_on, uint8_t anaout_on, uint8_t check_on);
/** ???: ALL (P47) */
void GateCtrl_SetAll(uint8_t on);
/** ???: ZACWIRE (P157) */
void GateCtrl_SetZacwire(uint8_t on);
void Cal_Init(void);
void Eol_Init(void);
void GateCtrl_SelectChannel(uint8_t ch);
/** ?? ??? ??? ANAOUT ?? (?? ?? ???) */
void GateCtrl_Anaout(uint8_t on);
/** ?? ??? ??? #? ?? */
void GateCtrl_Hash(uint8_t on);
/** ?? ??? ??? CHECK? ?? */
void GateCtrl_Check(uint8_t on);
/** (??) #/CHECK ?? OFF */
void GateCtrl_ClearChannelPins(void);
#ifdef __cplusplus
}
#endif
#endif /* GATECTRL_H */

88
hash_pin.c

@ -1,88 +0,0 @@
#include "hash_pin.h"
#define BIT(n) (1u << (n))
static void hash_write_port(volatile uint8_t *port, uint8_t mask, uint8_t on)
{
if (on) *port |= mask;
else *port &= (uint8_t)~mask;
}
static void hash_set_output_pm(volatile uint8_t *pm, uint8_t mask)
{
*pm &= (uint8_t)~mask; // PM bit=0 -> output
}
void hash_init(void)
{
// #1~#4 : P15.3~P15.0
hash_set_output_pm(&PM15, (uint8_t)(BIT(0)|BIT(1)|BIT(2)|BIT(3)));
// #5 : P12.0
hash_set_output_pm(&PM12, (uint8_t)BIT(0));
// #6 : P12.5
hash_set_output_pm(&PM12, (uint8_t)BIT(5));
// #7 : P0.1
hash_set_output_pm(&PM0, (uint8_t)BIT(1));
// #8 : P12.6
hash_set_output_pm(&PM12, (uint8_t)BIT(6));
// #9 : P12.7
hash_set_output_pm(&PM12, (uint8_t)BIT(7));
// #10 : P0.2
hash_set_output_pm(&PM0, (uint8_t)BIT(2));
// #11~#14 : P10.3~P10.0
hash_set_output_pm(&PM10, (uint8_t)(BIT(0)|BIT(1)|BIT(2)|BIT(3)));
// #15~#20 : P9.7,6,5,4,3,2
hash_set_output_pm(&PM9, (uint8_t)(BIT(7)|BIT(6)|BIT(5)|BIT(4)|BIT(3)|BIT(2)));
hash_all_off();
}
void hash_all_off(void)
{
// P15.0~3 OFF
P15 &= (uint8_t)~(BIT(0)|BIT(1)|BIT(2)|BIT(3));
// P12.0,5,6,7 OFF
P12 &= (uint8_t)~(BIT(0)|BIT(5)|BIT(6)|BIT(7));
// P0.1,2 OFF
P0 &= (uint8_t)~(BIT(1)|BIT(2));
// P10.0~3 OFF
P10 &= (uint8_t)~(BIT(0)|BIT(1)|BIT(2)|BIT(3));
// P9.2~7 OFF
P9 &= (uint8_t)~(BIT(2)|BIT(3)|BIT(4)|BIT(5)|BIT(6)|BIT(7));
}
void hash_pin(uint8_t ch, uint8_t on)
{
switch (ch)
{
case 1: hash_write_port(&P15, BIT(3), on); break; // #1 : P153
case 2: hash_write_port(&P15, BIT(2), on); break; // #2 : P152
case 3: hash_write_port(&P15, BIT(1), on); break; // #3 : P151
case 4: hash_write_port(&P15, BIT(0), on); break; // #4 : P150
case 5: hash_write_port(&P12, BIT(0), on); break; // #5 : P120
case 6: hash_write_port(&P12, BIT(5), on); break; // #6 : P125
case 7: hash_write_port(&P0, BIT(1), on); break; // #7 : P01
case 8: hash_write_port(&P12, BIT(6), on); break; // #8 : P126
case 9: hash_write_port(&P12, BIT(7), on); break; // #9 : P127
case 10: hash_write_port(&P0, BIT(2), on); break; // #10: P02
case 11: hash_write_port(&P10, BIT(3), on); break; // #11: P103
case 12: hash_write_port(&P10, BIT(2), on); break; // #12: P102
case 13: hash_write_port(&P10, BIT(1), on); break; // #13: P101
case 14: hash_write_port(&P10, BIT(0), on); break; // #14: P100
case 15: hash_write_port(&P9, BIT(7), on); break; // #15: P97
case 16: hash_write_port(&P9, BIT(6), on); break; // #16: P96
case 17: hash_write_port(&P9, BIT(5), on); break; // #17: P95
case 18: hash_write_port(&P9, BIT(4), on); break; // #18: P94
case 19: hash_write_port(&P9, BIT(3), on); break; // #19: P93
case 20: hash_write_port(&P9, BIT(2), on); break; // #20: P92
default: /* ignore */ break;
}
}

26
hash_pin.h

@ -1,26 +0,0 @@
#ifndef HASH_H
#define HASH_H
#include "r_cg_macrodriver.h"
#include "r_cg_port.h"
#ifdef __cplusplus
extern "C" {
#endif
void hash_init(void);
/*
(ch=1~20) # on/off
) ch=2 -> #2(P152)
*/
void hash_pin(uint8_t ch, uint8_t on);
/* (옵션) #1~#20 전체 OFF */
void hash_all_off(void);
#ifdef __cplusplus
}
#endif
#endif

174
i2c.c

@ -36,7 +36,7 @@ void disable(void){
// I2C 마스터 송신
if (R_IICA0_Master_Send(SLAVE_ADDR << 1, dis, sizeof(dis), 100) != MD_OK)
{
uart_send_string("I2C Send Failed\r\n");
HOST_PRINT("I2C Send Failed\r\n");
return;
}
}
@ -84,152 +84,6 @@ void I2C_DisablePower(void) {
}
/**
* : I2C_A_Command_Mode_receiveData
* : I2C ADC ,
* UART로 .
*
* :
* - tx_data : (UserCmd)
* - tx_len :
* - id : I2C
*
* : (void)
*
* :
* 1) ADC
* - ADC_ReadAndSend_UART() 4 ADC
* - 4 UART
* - TOP, BRP, BRN, BRP-BRN, BOT UART
*
* 2) CMD_LIST I2C
* - CMD_LIST는 6
* - R_IICA0_Master_Send()
* - R_IICA0_Master_Receive()
* - (rx[1], rx[2]) UART
*
* 3) CMD
* - tx_data와 tx_len이 I2C
* - rx UART
* - "0000"
*
* 4)
* - (line) UART로
* - delay로
*
* :
* - RAM_BYTES는 I2C
* - UART "," , CRLF
* - ADC와 I2C
*/
void I2C_A_Command_Mode_receiveData(const uint8_t *tx_data, uint8_t tx_len,uint8_t id )
{
uint8_t CMD_LIST[6][3] = {
{0x2E, 0x00, 0x00}, // BR
{0x2E, 0x01, 0x00}, // BR_AZ
{0x2E, 0x02, 0x00}, // T_RAW
{0x2E, 0x16, 0x00}, // Y_data
{0x2E, 0x41, 0x00}, // BR_AOUT
{0x2E, 0x40, 0x00}
};
char line[128];
size_t n = 0;
uint8_t rx[RAM_BYTES] = {0};
int j;
// 1) ADC 읽기 (4채널)
ADC_ReadAndSend_UART();
if (g_adc_len != 4) { // TOP, BRP, BRN, BOT만 읽음
uart_send_string("Err:adc_count\r\n");
return;
}
// 2) UART 문자열 구성 (5개 값)
for (j = 0; j < 5; j++) {
float v = 0.0f;
switch (j) {
case 0: // 1번: TOP
v = g_adc_bytes[0];
break;
case 1: // 2번: BRP
v = g_adc_bytes[1];
break;
case 2: // 3번: BRN
v = g_adc_bytes[2];
break;
case 3: // 4번: BRP - BRN
v = g_adc_bytes[1] - g_adc_bytes[2];
break;
case 4: // 5번: BOT
v = g_adc_bytes[3];
break;
}
n += sprintf(&line[n], "%.2f", v);
line[n++] = ',';
}
delay(100000);
// 2) CMD_LIST 순서대로 I2C 읽기
for (j = 0; j < 6; j++) {
if (R_IICA0_Master_Send((id << 1), CMD_LIST[j], 3, 100) != MD_OK) {
uart_send_string("I2C Send Failed\r\n");
return;
}
delay(10000);
if (R_IICA0_Master_Receive((id << 1), rx, RAM_BYTES, 100) != MD_OK) {
uart_send_string("I2C Receive Failed\r\n");
return;
}
delay(10000);
n += sprintf(&line[n], "%02X%02X", rx[1], rx[2]);
// 마지막 CMD 뒤에는 쉼표 붙이지 않음
if (j < 5) {
line[n++] = ',';
}
}
// 3) UserCmd 처리
line[n++] = ','; // UserCmd 앞 쉼표
if (tx_data != NULL && tx_len > 0) {
if (R_IICA0_Master_Send((id << 1), tx_data, tx_len, 100) != MD_OK) {
uart_send_string("I2C UserCmd Send Failed\r\n");
return;
}
delay(100000);
if (R_IICA0_Master_Receive((id << 1), rx, RAM_BYTES, 100) != MD_OK) {
uart_send_string("I2C UserCmd Receive Failed\r\n");
return;
}
delay(10000);
n += sprintf(&line[n], "%02X%02X", rx[1], rx[2]);
} else {
n += sprintf(&line[n], "0000");
}
// 마지막에 CRLF
line[n++] = '\r';
line[n++] = '\n';
line[n] = '\0';
uart_send_string(line);
delay(10000);
}
/**
* : I2C_Diagnostic
* : I2C UART로
@ -285,13 +139,13 @@ void I2C_Diagnostic(uint8_t id )
// 2) CMD_LIST 순서대로 I2C 읽기
for (j = 0; j < 10; j++) {
if (R_IICA0_Master_Send((id << 1), CMD_LIST[j], 3, 100) != MD_OK) {
uart_send_string("I2C Send Failed\r\n");
HOST_PRINT("I2C Send Failed\r\n");
return;
}
delay(10000);
if (R_IICA0_Master_Receive((id << 1), rx, RAM_BYTES, 100) != MD_OK) {
uart_send_string("I2C Receive Failed\r\n");
HOST_PRINT("I2C Receive Failed\r\n");
return;
}
delay(10000);
@ -311,7 +165,7 @@ void I2C_Diagnostic(uint8_t id )
line[n++] = '\n';
line[n] = '\0';
uart_send_string(line);
HOST_PRINT(line);
delay(10000);
}
@ -358,12 +212,12 @@ void I2C_T_Command_Mode_receiveData(const uint8_t *tx_data, uint8_t tx_len,uint8
if (R_IICA0_Master_Send((id << 1), tx_data, tx_len, 100) != MD_OK)
{
uart_send_string("I2C Send Failed\r\n");
HOST_PRINT("I2C Send Failed\r\n");
return;
}
uart_send_string("51\r\n");
HOST_PRINT("51\r\n");
@ -403,11 +257,11 @@ void I2C_Command_Mode_receiveData(const uint8_t *tx_data, uint8_t tx_len,uint8_t
if (R_IICA0_Master_Send((id << 1), tx_data, tx_len, 100) != MD_OK)
{
uart_send_string("I2C Send Failed\r\n");
HOST_PRINT("I2C Send Failed\r\n");
return;
}
uart_send_string("51\r\n");
HOST_PRINT("51\r\n");
}
@ -450,20 +304,20 @@ void I2C_Command_Mode_Send(uint8_t tx_len, uint8_t id)
uint8_t status = 0x00;
int tries = 0;
/* ★추가: 버퍼 초기화 (기존 로직/출력 형식 유지) */
/* 버퍼 초기화 (기존 로직/출력 형식 유지) */
memset(uart_buf, 0, sizeof(uart_buf));
memset(tmp_buf, 0, sizeof(tmp_buf));
memset(rx, 0x00, sizeof(rx)); // 가드 패턴(0x00으로 해도 무방)
if (R_IICA0_Master_Receive((id << 1), rx, (uint8_t)(tx_len), 1000) != MD_OK) {
uart_send_string("I2C Receive Failed\r\n");
HOST_PRINT("I2C Receive Failed\r\n");
return;
}
delay(1000000);
sprintf(uart_buf, "%02X ", rx[0]);
strcpy(tmp_buf, uart_buf);
uart_send_string(uart_buf);
HOST_PRINT(uart_buf);
delay(10000);
for (i = 1; i < (tx_len); i += 2) {
@ -472,16 +326,16 @@ void I2C_Command_Mode_Send(uint8_t tx_len, uint8_t id)
va1 = rx[i + 1];
delay(10000);
sprintf(uart_buf, "%02X%02X ", va0, va1);
uart_send_string(uart_buf);
HOST_PRINT(uart_buf);
delay(10000);
} else {
delay(10000);
sprintf(uart_buf, "%02X", va0);
strcpy(tmp_buf, uart_buf);
uart_send_string(uart_buf);
HOST_PRINT(uart_buf);
delay(10000);
}
}
uart_send_string("\r\n");
HOST_PRINT("\r\n");
}

80
multical.guseo.mtud

File diff suppressed because one or more lines are too long

613
multical.mtpj

File diff suppressed because it is too large

438
multical.rcpe

@ -24,9 +24,6 @@
<Path>r_cg_cgc.h</Path>
<Path>r_cg_serial.h</Path>
<Path>r_cg_wdt.h</Path>
<Path>r_cg_adc.c</Path>
<Path>r_cg_adc_user.c</Path>
<Path>r_cg_adc.h</Path>
<Path>r_cg_port.c</Path>
<Path>r_cg_port_user.c</Path>
<Path>r_cg_port.h</Path>
@ -48,10 +45,6 @@
<Path>delay.c</Path>
<Path>delay.h</Path>
</Category>
<Category Name="anaout">
<Path>anaout.h</Path>
<Path>anaout.c</Path>
</Category>
<Path>common.h</Path>
<Category Name="dipSwitch">
<Path>dipSwitch.c</Path>
@ -61,14 +54,6 @@
<Path>gatectrl.h</Path>
<Path>gatectrl.c</Path>
</Category>
<Category Name="hash">
<Path>hash_pin.h</Path>
<Path>hash_pin.c</Path>
</Category>
<Category Name="check">
<Path>check_pin.h</Path>
<Path>check_pin.c</Path>
</Category>
</Category>
</Files>
<DebugOptions>
@ -92,19 +77,14 @@
<Path>DefaultBuild\r_cg_serial_user.obj</Path>
<Path>DefaultBuild\r_cg_wdt.obj</Path>
<Path>DefaultBuild\r_cg_wdt_user.obj</Path>
<Path>DefaultBuild\r_cg_adc.obj</Path>
<Path>DefaultBuild\r_cg_adc_user.obj</Path>
<Path>DefaultBuild\r_cg_port.obj</Path>
<Path>DefaultBuild\r_cg_port_user.obj</Path>
<Path>DefaultBuild\anaout.obj</Path>
<Path>DefaultBuild\owi.obj</Path>
<Path>DefaultBuild\i2c.obj</Path>
<Path>DefaultBuild\uart.obj</Path>
<Path>DefaultBuild\delay.obj</Path>
<Path>DefaultBuild\dipSwitch.obj</Path>
<Path>DefaultBuild\gatectrl.obj</Path>
<Path>DefaultBuild\hash_pin.obj</Path>
<Path>DefaultBuild\check_pin.obj</Path>
</LinkOrder>
<CommonOptions>
<IncludePathForC>..\..\Documents\카카오톡 받은 파일\IDH1.1\IDH1.1</IncludePathForC>
@ -249,11 +229,11 @@
&lt;COMP_ADPC_USEDPIN Name="COMP_ADPC_USEDPIN" Text="false" /&gt;
&lt;DA_ADPC_USEDPIN Name="DA_ADPC_USEDPIN" Text="false" /&gt;
&lt;DA_INUSE Name="DA_INUSE" Text="false" /&gt;
&lt;AD_ADPC_USEDPIN Name="AD_ADPC_USEDPIN" Text="ANI0,ANI1,ANI2,ANI3,ANI4,ANI5,ANI6,ANI7,ANI8,ANI9,ANI10,ANI11,ANI12,ANI13,ANI14,ANI15,ANI16,ANI17,ANI18,ANI19,ANI20,ANI21,ANI22,ANI23," /&gt;
&lt;AD_ADS_USEDPIN Name="AD_ADS_USEDPIN" Text="ANI0," /&gt;
&lt;AD_ADPC_USEDPIN Name="AD_ADPC_USEDPIN" Text="" /&gt;
&lt;AD_ADS_USEDPIN Name="AD_ADS_USEDPIN" Text="" /&gt;
&lt;ADPCForPort3 Name="ADPCForPort3" Value="255" Comment="ADPCForPort3" /&gt;
&lt;ADPCForPort8 Name="ADPCForPort8" Value="255" Comment="ADPCForPort8" /&gt;
&lt;ADPCForPort9 Name="ADPCForPort9" Value="255" Comment="ADPCForPort9" /&gt;
&lt;ADPCForPort9 Name="ADPCForPort9" Value="13" Comment="ADPCForPort9" /&gt;
&lt;ADPCForKey Name="ADPCForKey" Value="255" Comment="ADPCForKey" /&gt;
&lt;OnChipDebugTraceDTC Name="GTraceRam" Text="2" Trigger="ocdtraceram"&gt;
&lt;Effect&gt;
@ -403,7 +383,7 @@
&lt;/RTC1HZ&gt;
&lt;RXD0 Name="RXD0" Text="enable" /&gt;
&lt;ProjectName Name="PrjName" Text="multical" /&gt;
&lt;ProjectPath Name="PrjPath" Text="C:\Users\COMPUTER1\OneDrive\Desktop\Amosense_Firmware1" /&gt;
&lt;ProjectPath Name="PrjPath" Text="C:\Users\temp\Desktop\Amosense_Firmware 최종" /&gt;
&lt;ProjectKind Name="PrjKind" Text="Project78K0R" /&gt;
&lt;DeviceName Name="DeviceName" Fixed="" Text="RL78F14" /&gt;
&lt;MCUName Name="MCUName" Text="RL78F14_100pin" /&gt;
@ -454,7 +434,7 @@
&lt;ADPCForPort5 Name="ADPCForPort5" Value="255" /&gt;
&lt;ADPCForPort6 Name="ADPCForPort6" Value="255" /&gt;
&lt;ADPCForPort7 Name="ADPCForPort7" Value="255" /&gt;
&lt;ADPCForPort10 Name="ADPCForPort10" Value="255" /&gt;
&lt;ADPCForPort10 Name="ADPCForPort10" Value="19" /&gt;
&lt;ADPCForPort12 Name="ADPCForPort12" Value="255" /&gt;
&lt;ADPCForPort13 Name="ADPCForPort13" Value="255" /&gt;
&lt;ADPCForPort14 Name="ADPCForPort14" Value="255" /&gt;
@ -494,107 +474,107 @@
&lt;/CGC&gt;
&lt;PORT&gt;
&lt;Port0 Chip="RL78F14_100pin" Pullup="true"&gt;
&lt;P00 Name="P00/TI05/TO05/INTP9" AltFunc="" Point="I/O" /&gt;
&lt;P01 Name="P01/TI04/TO04" AltFunc="" Point="I/O" /&gt;
&lt;P02 Name="P02/TI06/TO06" AltFunc="" Point="I/O" /&gt;
&lt;P03 Name="P03" AltFunc="" Point="I/O" /&gt;
&lt;P00 Name="P00/TI05/TO05/INTP9" AltFunc="P00" Point="I/O" /&gt;
&lt;P01 Name="P01/TI04/TO04" AltFunc="P01" Point="I/O" /&gt;
&lt;P02 Name="P02/TI06/TO06" AltFunc="P02" Point="I/O" /&gt;
&lt;P03 Name="P03" AltFunc="P03" Point="I/O" /&gt;
&lt;/Port0&gt;
&lt;Port1 Pullup="true"&gt;
&lt;P10 Name="P10/TI13/TO13/TRJO0/_SCK10/SCL10/LTXD1/CTXD0" TTL="true" PITHL="true" Nch="true" AltFunc="" Point="I/O" /&gt;
&lt;P10 Name="P10/TI13/TO13/TRJO0/_SCK10/SCL10/LTXD1/CTXD0" TTL="true" PITHL="true" Nch="true" AltFunc="P10" Point="I/O" /&gt;
&lt;P11 Name="P11/TI12/TO12/TRDIOB0/SI10/SDA10/RXD1/LRXD1/CRXD0" TTL="true" PITHL="true" Nch="true" AltFunc="RXD1" Point="I/O" /&gt;
&lt;P12 Name="P12/TI11/TO11/TRDIOD0/INTP5/SO10/TXD1/SNZOUT3" Nch="true" AltFunc="TXD1" Point="I/O" /&gt;
&lt;P13 Name="P13/TI04/TO04/TRDIOA0/TRDCLK0/SI01/SDA01/LTXD0" TTL="true" PITHL="true" Nch="true" AltFunc="" Point="I/O" /&gt;
&lt;P14 Name="P14/TI06/TO06/TRDIOC0/_SCK01/SCL01/LRXD0" TTL="true" PITHL="true" Nch="true" AltFunc="" Point="I/O" /&gt;
&lt;P13 Name="P13/TI04/TO04/TRDIOA0/TRDCLK0/SI01/SDA01/LTXD0" TTL="true" PITHL="true" Nch="true" AltFunc="P13" Point="I/O" /&gt;
&lt;P14 Name="P14/TI06/TO06/TRDIOC0/_SCK01/SCL01/LRXD0" TTL="true" PITHL="true" Nch="true" AltFunc="P14" Point="I/O" /&gt;
&lt;P15 Name="P15/TI05/TO05/TRDIOA1/TRDIOA0/TRDCLK0/SO00/TXD0/TOOLTXD/RTC1HZ" Nch="true" AltFunc="TXD0" Point="I/O" /&gt;
&lt;P16 Name="P16/TI02/TO02/TRDIOC1/SI00/SDA00/RXD0/TOOLRXD" TTL="true" PITHL="true" Nch="true" AltFunc="RXD0" Point="I/O" /&gt;
&lt;P17 Name="P17/TI00/TO00/TRDIOB1/_SCK00/SCL00/INTP3" TTL="true" PITHL="true" Nch="true" AltFunc="" Point="I/O" /&gt;
&lt;/Port1&gt;
&lt;Port3 Chip="RL78F14_48pin,RL78F14_64pin,RL78F14_80pin,RL78F14_100pin"&gt;
&lt;P30 Name="P30/TI01/TO01/TRDIOD1/_SSI00/INTP2/SNZOUT0" TTL="true" PITHL="true" Pullup="true" AltFunc="" Point="I/O" /&gt;
&lt;P30 Name="P30/TI01/TO01/TRDIOD1/_SSI00/INTP2/SNZOUT0" TTL="true" PITHL="true" Pullup="true" AltFunc="P30" Point="I/O" /&gt;
&lt;P31 Name="P31/TI14/TO14/STOPST/INTP2" Pullup="true" AltFunc="" Point="I/O" /&gt;
&lt;P32 Name="P32/TI16/TO16/INTP7" Pullup="true" AltFunc="" Point="I/O" /&gt;
&lt;P33 Name="P33/AVREFP/ANI00" AltFunc="ANI0" Point="I/O" /&gt;
&lt;P34 Name="P34/AVREFM/ANI01" AltFunc="ANALOG_1" Point="I/O" /&gt;
&lt;P32 Name="P32/TI16/TO16/INTP7" Pullup="true" AltFunc="P32" Point="I/O" /&gt;
&lt;P33 Name="P33/AVREFP/ANI00" AltFunc="" Point="I/O" /&gt;
&lt;P34 Name="P34/AVREFM/ANI01" AltFunc="" Point="I/O" /&gt;
&lt;/Port3&gt;
&lt;Port4 Chip="RL78F14_80pin,RL78F14_100pin" Pullup="true"&gt;
&lt;P40 Name="P40/TOOL0" AltFunc="" Point="I/O" /&gt;
&lt;P41 Name="P41/TI10/TO10/TRJIO0/VCOUT0/SNZOUT2" AltFunc="" Point="I/O" /&gt;
&lt;P42 Name="P42/LTXD0" AltFunc="" Point="I/O" /&gt;
&lt;P43 Name="P43/LRXD0" PITHL="true" AltFunc="" Point="I/O" /&gt;
&lt;P44 Name="P44/TI07/TO07" AltFunc="" Point="I/O" /&gt;
&lt;P41 Name="P41/TI10/TO10/TRJIO0/VCOUT0/SNZOUT2" AltFunc="P41" Point="I/O" /&gt;
&lt;P42 Name="P42/LTXD0" AltFunc="P42" Point="I/O" /&gt;
&lt;P43 Name="P43/LRXD0" PITHL="true" AltFunc="P43" Point="I/O" /&gt;
&lt;P44 Name="P44/TI07/TO07" AltFunc="P44" Point="I/O" /&gt;
&lt;P45 Name="P45/TI10/TO10" AltFunc="" Point="I/O" /&gt;
&lt;P46 Name="P46/TI12/TO12" AltFunc="" Point="I/O" /&gt;
&lt;P47 Name="P47/INTP13" AltFunc="" Point="I/O" /&gt;
&lt;/Port4&gt;
&lt;Port5 Chip="RL78F14_80pin,RL78F14_100pin" Pullup="true"&gt;
&lt;P50 Name="P50/_SSI01/INTP3" PITHL="true" AltFunc="" Point="I/O" /&gt;
&lt;P51 Name="P51/SO01/INTP11" AltFunc="" Point="I/O" /&gt;
&lt;P52 Name="P52/_SCK01/SCL01/STOPST" PITHL="true" AltFunc="" Point="I/O" /&gt;
&lt;P50 Name="P50/_SSI01/INTP3" PITHL="true" AltFunc="P50" Point="I/O" /&gt;
&lt;P51 Name="P51/SO01/INTP11" AltFunc="P51" Point="I/O" /&gt;
&lt;P52 Name="P52/_SCK01/SCL01/STOPST" PITHL="true" AltFunc="P52" Point="I/O" /&gt;
&lt;P53 Name="P53/SI01/SDA01/INTP10" PITHL="true" AltFunc="" Point="I/O" /&gt;
&lt;P54 Name="P54/TI11/TO11/_SSI10" TTL="true" PITHL="true" AltFunc="" Point="I/O" /&gt;
&lt;P55 Name="P55/TI13/TO13" AltFunc="" Point="I/O" /&gt;
&lt;P56 Name="P56/TI15/TO15/SNZOUT1" AltFunc="" Point="I/O" /&gt;
&lt;P57 Name="P57/TI17/TO17/SNZOUT0" AltFunc="" Point="I/O" /&gt;
&lt;P54 Name="P54/TI11/TO11/_SSI10" TTL="true" PITHL="true" AltFunc="P54" Point="I/O" /&gt;
&lt;P55 Name="P55/TI13/TO13" AltFunc="P55" Point="I/O" /&gt;
&lt;P56 Name="P56/TI15/TO15/SNZOUT1" AltFunc="P56" Point="I/O" /&gt;
&lt;P57 Name="P57/TI17/TO17/SNZOUT0" AltFunc="P57" Point="I/O" /&gt;
&lt;/Port5&gt;
&lt;Port6 Chip="RL78F14_80pin,RL78F14_100pin" Pullup="true"&gt;
&lt;P60 Name="P60/_SCK00/SCL00" PITHL="true" Nch="true" AltFunc="" Point="I/O" /&gt;
&lt;P61 Name="P61/SI00/SDA00/RXD0" PITHL="true" Nch="true" AltFunc="" Point="I/O" /&gt;
&lt;P60 Name="P60/_SCK00/SCL00" PITHL="true" Nch="true" AltFunc="P60" Point="I/O" /&gt;
&lt;P61 Name="P61/SI00/SDA00/RXD0" PITHL="true" Nch="true" AltFunc="P61" Point="I/O" /&gt;
&lt;P62 Name="P62/SO00/TXD0/SCLA0" TTL="true" PITHL="true" Nch="true" AltFunc="SCLA0" Point="I/O" /&gt;
&lt;P63 Name="P63/_SSI00/SDAA0" TTL="true" PITHL="true" Nch="true" AltFunc="SDAA0" Point="I/O" /&gt;
&lt;P64 Name="P64/TI14/TO14/SNZOUT3" AltFunc="" Point="I/O" /&gt;
&lt;P65 Name="P65/TI16/TO16/SNZOUT2" AltFunc="" Point="I/O" /&gt;
&lt;P66 Name="P66/TI00/TO00" AltFunc="" Point="I/O" /&gt;
&lt;P67 Name="P67/TI02/TO02" AltFunc="" Point="I/O" /&gt;
&lt;P64 Name="P64/TI14/TO14/SNZOUT3" AltFunc="P64" Point="I/O" /&gt;
&lt;P65 Name="P65/TI16/TO16/SNZOUT2" AltFunc="P65" Point="I/O" /&gt;
&lt;P66 Name="P66/TI00/TO00" AltFunc="P66" Point="I/O" /&gt;
&lt;P67 Name="P67/TI02/TO02" AltFunc="P67" Point="I/O" /&gt;
&lt;/Port6&gt;
&lt;Port7 Chip="R5F10PLG,R5F10PLH,R5F10PLJ,R5F10PMG,R5F10PMH,R5F10PMJ,RL78F14_100pin" Pullup="true"&gt;
&lt;P70 Name="P70/ANI26/KR0/TI15/TO15/INTP8/SI11/SDA11/SNZOUT4/KR0" DIN="true" TTL="true" PITHL="true" Nch="true" AltFunc="ANI26" Point="I/O" /&gt;
&lt;P71 Name="P71/ANI27/KR1/TI17/TO17/INTP6/_SCK11/SCL11/SNZOUT5/KR1" DIN="true" TTL="true" PITHL="true" Nch="true" AltFunc="ANI27" Point="I/O" /&gt;
&lt;P72 Name="P72/ANI28/KR2/CTXD0/SO11/SNZOUT6/KR2" DIN="true" Nch="true" AltFunc="ANI28" Point="I/O" /&gt;
&lt;P73 Name="P73/ANI29/KR3/CRXD0/_SSI11/SNZOUT7/KR3" DIN="true" TTL="true" PITHL="true" AltFunc="ANI29" Point="I/O" /&gt;
&lt;P74 Name="P74/ANI30/KR4/SO10/TXD1/KR4" DIN="true" AltFunc="ANI30" Point="I/O" /&gt;
&lt;P75 Name="P75/KR5/SI10/SDA10/RXD1/KR5" PITHL="true" AltFunc="" Point="I/O" /&gt;
&lt;P76 Name="P76/KR6/_SCK10/SCL10/KR6" PITHL="true" AltFunc="" Point="I/O" /&gt;
&lt;P77 Name="P77/KR7/_SSI10/INTP12/KR7" PITHL="true" AltFunc="" Point="I/O" /&gt;
&lt;P70 Name="P70/ANI26/KR0/TI15/TO15/INTP8/SI11/SDA11/SNZOUT4/KR0" DIN="true" TTL="true" PITHL="true" Nch="true" AltFunc="P70" Point="I/O" /&gt;
&lt;P71 Name="P71/ANI27/KR1/TI17/TO17/INTP6/_SCK11/SCL11/SNZOUT5/KR1" DIN="true" TTL="true" PITHL="true" Nch="true" AltFunc="P71" Point="I/O" /&gt;
&lt;P72 Name="P72/ANI28/KR2/CTXD0/SO11/SNZOUT6/KR2" DIN="true" Nch="true" AltFunc="P72" Point="I/O" /&gt;
&lt;P73 Name="P73/ANI29/KR3/CRXD0/_SSI11/SNZOUT7/KR3" DIN="true" TTL="true" PITHL="true" AltFunc="P73" Point="I/O" /&gt;
&lt;P74 Name="P74/ANI30/KR4/SO10/TXD1/KR4" DIN="true" AltFunc="P74" Point="I/O" /&gt;
&lt;P75 Name="P75/KR5/SI10/SDA10/RXD1/KR5" PITHL="true" AltFunc="P75" Point="I/O" /&gt;
&lt;P76 Name="P76/KR6/_SCK10/SCL10/KR6" PITHL="true" AltFunc="P76" Point="I/O" /&gt;
&lt;P77 Name="P77/KR7/_SSI10/INTP12/KR7" PITHL="true" AltFunc="P77" Point="I/O" /&gt;
&lt;/Port7&gt;
&lt;Port8 Chip="RL78F14_30pin,RL78F14_48pin,RL78F14_64pin,RL78F14_80pin,RL78F14_100pin"&gt;
&lt;P80 Name="P80/ANI02/ANO0" AltFunc="ANALOG_2" Point="I/O" /&gt;
&lt;P81 Name="P81/ANI03/IVCMP00" AltFunc="ANALOG_3" Point="I/O" /&gt;
&lt;P82 Name="P82/ANI04/IVCMP01" AltFunc="ANALOG_4" Point="I/O" /&gt;
&lt;P83 Name="P83/ANI05/IVCMP02" AltFunc="ANALOG_5" Point="I/O" /&gt;
&lt;P84 Name="P84/ANI06/IVCMP03" AltFunc="ANALOG_6" Point="I/O" /&gt;
&lt;P85 Name="P85/ANI07/IVREF0" AltFunc="ANALOG_7" Point="I/O" /&gt;
&lt;P86 Name="P86/ANI08" AltFunc="ANALOG_8" Point="I/O" /&gt;
&lt;P87 Name="P87/ANI09" AltFunc="ANALOG_9" Point="I/O" /&gt;
&lt;P80 Name="P80/ANI02/ANO0" AltFunc="" Point="I/O" /&gt;
&lt;P81 Name="P81/ANI03/IVCMP00" AltFunc="" Point="I/O" /&gt;
&lt;P82 Name="P82/ANI04/IVCMP01" AltFunc="" Point="I/O" /&gt;
&lt;P83 Name="P83/ANI05/IVCMP02" AltFunc="" Point="I/O" /&gt;
&lt;P84 Name="P84/ANI06/IVCMP03" AltFunc="" Point="I/O" /&gt;
&lt;P85 Name="P85/ANI07/IVREF0" AltFunc="" Point="I/O" /&gt;
&lt;P86 Name="P86/ANI08" AltFunc="" Point="I/O" /&gt;
&lt;P87 Name="P87/ANI09" AltFunc="" Point="I/O" /&gt;
&lt;/Port8&gt;
&lt;Port9 Chip="R5F10PMG,R5F10PMH,R5F10PMJ,R5F10PPE,R5F10PPF,R5F10PPG,R5F10PPH,R5F10PPJ"&gt;
&lt;P90 Name="P90/ANI10" AltFunc="ANALOG_10" Point="I/O" /&gt;
&lt;P91 Name="P91/ANI11" AltFunc="ANALOG_11" Point="I/O" /&gt;
&lt;P92 Name="P92/ANI12" AltFunc="ANALOG_12" Point="I/O" /&gt;
&lt;P93 Name="P93/ANI13" AltFunc="ANALOG_13" Point="I/O" /&gt;
&lt;P94 Name="P94/ANI14" AltFunc="ANALOG_14" Point="I/O" /&gt;
&lt;P95 Name="P95/ANI15" AltFunc="ANALOG_15" Point="I/O" /&gt;
&lt;P96 Name="P96/ANI16" AltFunc="ANALOG_16" Point="I/O" /&gt;
&lt;P97 Name="P97/ANI17" AltFunc="ANALOG_17" Point="I/O" /&gt;
&lt;P90 Name="P90/ANI10" AltFunc="" Point="I/O" /&gt;
&lt;P91 Name="P91/ANI11" AltFunc="" Point="I/O" /&gt;
&lt;P92 Name="P92/ANI12" AltFunc="P92" Point="I/O" /&gt;
&lt;P93 Name="P93/ANI13" AltFunc="P93" Point="I/O" /&gt;
&lt;P94 Name="P94/ANI14" AltFunc="P94" Point="I/O" /&gt;
&lt;P95 Name="P95/ANI15" AltFunc="P95" Point="I/O" /&gt;
&lt;P96 Name="P96/ANI16" AltFunc="P96" Point="I/O" /&gt;
&lt;P97 Name="P97/ANI17" AltFunc="P97" Point="I/O" /&gt;
&lt;/Port9&gt;
&lt;Port10 Chip="RL78F14_100pin"&gt;
&lt;P100 Name="P100/ANI18" AltFunc="ANALOG_18" Point="I/O" /&gt;
&lt;P101 Name="P101/ANI19" AltFunc="ANALOG_19" Point="I/O" /&gt;
&lt;P102 Name="P102/ANI20" AltFunc="ANALOG_20" Point="I/O" /&gt;
&lt;P103 Name="P103/ANI21" AltFunc="ANALOG_21" Point="I/O" /&gt;
&lt;P104 Name="P104/ANI22" AltFunc="ANALOG_22" Point="I/O" /&gt;
&lt;P105 Name="P105/ANI23" AltFunc="ANALOG_23" Point="I/O" /&gt;
&lt;P106 Name="P106/LTXD1" Pullup="true" AltFunc="" Point="I/O" /&gt;
&lt;P107 Name="P107/LRXD1" PITHL="true" Pullup="true" AltFunc="" Point="I/O" /&gt;
&lt;P100 Name="P100/ANI18" AltFunc="P100" Point="I/O" /&gt;
&lt;P101 Name="P101/ANI19" AltFunc="P101" Point="I/O" /&gt;
&lt;P102 Name="P102/ANI20" AltFunc="P102" Point="I/O" /&gt;
&lt;P103 Name="P103/ANI21" AltFunc="P103" Point="I/O" /&gt;
&lt;P104 Name="P104/ANI22" AltFunc="P104" Point="I/O" /&gt;
&lt;P105 Name="P105/ANI23" AltFunc="P105" Point="I/O" /&gt;
&lt;P106 Name="P106/LTXD1" Pullup="true" AltFunc="P106" Point="I/O" /&gt;
&lt;P107 Name="P107/LRXD1" PITHL="true" Pullup="true" AltFunc="P107" Point="I/O" /&gt;
&lt;/Port10&gt;
&lt;Port12 Chip="RL78F14_100pin"&gt;
&lt;P120 Name="P120/ANI25/TI07/TO07/TRDIOD0/SO01/INTP4" DIN="true" Nch="true" Pullup="true" AltFunc="ANI25" Point="I/O" /&gt;
&lt;P120 Name="P120/ANI25/TI07/TO07/TRDIOD0/SO01/INTP4" DIN="true" Nch="true" Pullup="true" AltFunc="P120" Point="I/O" /&gt;
&lt;P121 Name="P121/X1" AltFunc="" Point="I" /&gt;
&lt;P122 Name="P122/X2/EXCLK" AltFunc="" Point="I" /&gt;
&lt;P123 Name="P123/XT1" AltFunc="" Point="I" /&gt;
&lt;P124 Name="P124/XT2/EXCLKS" AltFunc="" Point="I" /&gt;
&lt;P125 Name="P125/ANI24/TI03/TO03/TRDIOB0/_SSI01/INTP1/SNZOUT1" DIN="true" TTL="true" PITHL="true" Pullup="true" AltFunc="ANI24" Point="I/O" /&gt;
&lt;P126 Name="P126/TI01/TO01" Pullup="true" AltFunc="" Point="I/O" /&gt;
&lt;P127 Name="P127/TI03/TO03" Pullup="true" AltFunc="" Point="I/O" /&gt;
&lt;P125 Name="P125/ANI24/TI03/TO03/TRDIOB0/_SSI01/INTP1/SNZOUT1" DIN="true" TTL="true" PITHL="true" Pullup="true" AltFunc="P125" Point="I/O" /&gt;
&lt;P126 Name="P126/TI01/TO01" Pullup="true" AltFunc="P126" Point="I/O" /&gt;
&lt;P127 Name="P127/TI03/TO03" Pullup="true" AltFunc="P127" Point="I/O" /&gt;
&lt;/Port12&gt;
&lt;Port13 Chip="RL78F14_48pin,RL78F14_64pin,RL78F14_80pin,RL78F14_100pin"&gt;
&lt;P130 Name="P130/RESOUT" AltFunc="P130" Point="O" /&gt;
@ -604,13 +584,13 @@
&lt;P140 Name="P140/PCLBUZ0" AltFunc="" Point="I/O" /&gt;
&lt;/Port14&gt;
&lt;Port15 Chip="RL78F14_100pin" Pullup="true"&gt;
&lt;P150 Name="P150/_SSI11" PITHL="true" AltFunc="" Point="I/O" /&gt;
&lt;P151 Name="P151/SO11" AltFunc="" Point="I/O" /&gt;
&lt;P152 Name="P152/SI11/SDA11" PITHL="true" AltFunc="" Point="I/O" /&gt;
&lt;P153 Name="P153/_SCK11/SCL11" PITHL="true" AltFunc="" Point="I/O" /&gt;
&lt;P154 Name="P154/SNZOUT7" AltFunc="" Point="I/O" /&gt;
&lt;P155 Name="P155/SNZOUT6" AltFunc="" Point="I/O" /&gt;
&lt;P156 Name="P156/SNZOUT5" AltFunc="" Point="I/O" /&gt;
&lt;P150 Name="P150/_SSI11" PITHL="true" AltFunc="P150" Point="I/O" /&gt;
&lt;P151 Name="P151/SO11" AltFunc="P151" Point="I/O" /&gt;
&lt;P152 Name="P152/SI11/SDA11" PITHL="true" AltFunc="P152" Point="I/O" /&gt;
&lt;P153 Name="P153/_SCK11/SCL11" PITHL="true" AltFunc="P153" Point="I/O" /&gt;
&lt;P154 Name="P154/SNZOUT7" AltFunc="P154" Point="I/O" /&gt;
&lt;P155 Name="P155/SNZOUT6" AltFunc="P155" Point="I/O" /&gt;
&lt;P156 Name="P156/SNZOUT5" AltFunc="P156" Point="I/O" /&gt;
&lt;P157 Name="P157/SNZOUT4" AltFunc="" Point="I/O" /&gt;
&lt;/Port15&gt;
&lt;/PORT&gt;
@ -961,7 +941,7 @@
&lt;/IICA0&gt;
&lt;/Serial&gt;
&lt;ADC&gt;
&lt;INTAD InUse="1" ISR="r_adc_interrupt" IsDMATrigger="true" /&gt;
&lt;INTAD InUse="0" ISR="r_adc_interrupt" IsDMATrigger="true" /&gt;
&lt;/ADC&gt;
&lt;TAU&gt;
&lt;TAU0&gt;
@ -1415,14 +1395,14 @@
&lt;r_cg_serial.h UserName="r_cg_serial.h" LibName=".h" InUse="1" /&gt;
&lt;/Serial&gt;
&lt;ADC&gt;
&lt;r_cg_adc.c UserName="r_cg_adc.c" LibName=".c" InUse="1"&gt;
&lt;r_cg_adc.c UserName="r_cg_adc.c" LibName=".c" InUse="0"&gt;
&lt;Type R_ADC_Create="void R_ADC_Create(void)" R_ADC_Start="void R_ADC_Start(void)" R_ADC_Stop="void R_ADC_Stop(void)" R_ADC_Set_OperationOn="void R_ADC_Set_OperationOn(void)" R_ADC_Set_OperationOff="void R_ADC_Set_OperationOff(void)" R_ADC_Get_Result="void R_ADC_Get_Result(uint16_t * const buffer)" R_ADC_Get_Result_8bit="void R_ADC_Get_Result_8bit(uint8_t * const buffer)" R_ADC_Set_ADChannel="MD_STATUS R_ADC_Set_ADChannel(ad_channel_t channel)" R_ADC_Set_SnoozeOn="void R_ADC_Set_SnoozeOn(void)" R_ADC_Set_SnoozeOff="void R_ADC_Set_SnoozeOff(void)" R_ADC_Set_TestChannel="MD_STATUS R_ADC_Set_TestChannel(test_channel_t channel)" R_ADC_Set_PowerOff="void R_ADC_Set_PowerOff(void)" /&gt;
&lt;R_ADC_Create UserName="R_ADC_Create" LibName="R_ADC_Create" InUse="1" Init="1" InitMode="" /&gt;
&lt;R_ADC_Start UserName="R_ADC_Start" LibName="R_ADC_Start" InUse="1" /&gt;
&lt;R_ADC_Stop UserName="R_ADC_Stop" LibName="R_ADC_Stop" InUse="1" /&gt;
&lt;R_ADC_Set_OperationOn UserName="R_ADC_Set_OperationOn" LibName="R_ADC_Set_OperationOn" InUse="1" /&gt;
&lt;R_ADC_Set_OperationOff UserName="R_ADC_Set_OperationOff" LibName="R_ADC_Set_OperationOff" InUse="1" /&gt;
&lt;R_ADC_Get_Result UserName="R_ADC_Get_Result" LibName="R_ADC_Get_Result" InUse="1" /&gt;
&lt;R_ADC_Create UserName="R_ADC_Create" LibName="R_ADC_Create" InUse="0" Init="1" InitMode="" /&gt;
&lt;R_ADC_Start UserName="R_ADC_Start" LibName="R_ADC_Start" InUse="0" /&gt;
&lt;R_ADC_Stop UserName="R_ADC_Stop" LibName="R_ADC_Stop" InUse="0" /&gt;
&lt;R_ADC_Set_OperationOn UserName="R_ADC_Set_OperationOn" LibName="R_ADC_Set_OperationOn" InUse="0" /&gt;
&lt;R_ADC_Set_OperationOff UserName="R_ADC_Set_OperationOff" LibName="R_ADC_Set_OperationOff" InUse="0" /&gt;
&lt;R_ADC_Get_Result UserName="R_ADC_Get_Result" LibName="R_ADC_Get_Result" InUse="0" /&gt;
&lt;R_ADC_Get_Result_8bit UserName="R_ADC_Get_Result_8bit" LibName="R_ADC_Get_Result_8bit" InUse="0" /&gt;
&lt;R_ADC_Set_ADChannel UserName="R_ADC_Set_ADChannel" LibName="R_ADC_Set_ADChannel" InUse="0" /&gt;
&lt;R_ADC_Set_SnoozeOn UserName="R_ADC_Set_SnoozeOn" LibName="R_ADC_Set_SnoozeOn" InUse="0" /&gt;
@ -1430,12 +1410,12 @@
&lt;R_ADC_Set_TestChannel UserName="R_ADC_Set_TestChannel" LibName="R_ADC_Set_TestChannel" InUse="0" /&gt;
&lt;R_ADC_Set_PowerOff UserName="R_ADC_Set_PowerOff" LibName="R_ADC_Set_PowerOff" InUse="0" /&gt;
&lt;/r_cg_adc.c&gt;
&lt;r_cg_adc_user.c UserName="r_cg_adc_user.c" LibName="_user.c" InUse="1"&gt;
&lt;r_cg_adc_user.c UserName="r_cg_adc_user.c" LibName="_user.c" InUse="0"&gt;
&lt;Type R_ADC_Create_UserInit="void R_ADC_Create_UserInit(void)" r_adc_interrupt="__interrupt static void r_adc_interrupt(void)" /&gt;
&lt;R_ADC_Create_UserInit UserName="R_ADC_Create_UserInit" LibName="R_ADC_Create_UserInit" InUse="0" /&gt;
&lt;r_adc_interrupt UserName="r_adc_interrupt" INTHandle="" LibName="r_adc_interrupt" InUse="1" /&gt;
&lt;r_adc_interrupt UserName="r_adc_interrupt" INTHandle="" LibName="r_adc_interrupt" InUse="0" /&gt;
&lt;/r_cg_adc_user.c&gt;
&lt;r_cg_adc.h UserName="r_cg_adc.h" LibName=".h" InUse="1" /&gt;
&lt;r_cg_adc.h UserName="r_cg_adc.h" LibName=".h" InUse="0" /&gt;
&lt;/ADC&gt;
&lt;TAU&gt;
&lt;r_cg_timer.c UserName="r_cg_timer.c" LibName=".c" InUse=""&gt;
@ -1941,8 +1921,8 @@
&lt;/SAU1&gt;
&lt;IICA0 Accelerate="No" Chip="RL78F14_32pin,RL78F14_48pin,RL78F14_64pin,RL78F14_80pin,RL78F14_100pin" MacroName="IICA" Channel="0" SetFlag="True" TabEnable="True" /&gt;
&lt;/Serial&gt;
&lt;ADC SetFlag="True" HelpID="adc" NeedRefresh="False"&gt;
&lt;ADC SetFlag="True" MacroName="ADC" /&gt;
&lt;ADC SetFlag="False" HelpID="adc" NeedRefresh="False"&gt;
&lt;ADC SetFlag="False" MacroName="ADC" /&gt;
&lt;/ADC&gt;
&lt;TAU SetFlag="false" HelpID="timer" NeedRefresh="False"&gt;
&lt;TAU0 Accelerate="No" MacroName="TAU" Channel="0" ChannelNum="0,1,2,3,4,5,6,7" /&gt;
@ -2271,9 +2251,9 @@
&lt;PORT&gt;
&lt;PortP0&gt;
&lt;P00&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2281,9 +2261,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P00&gt;
&lt;P01&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2291,9 +2271,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P01&gt;
&lt;P02&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2301,9 +2281,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P02&gt;
&lt;P03&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2313,9 +2293,9 @@
&lt;/PortP0&gt;
&lt;PortP1&gt;
&lt;P10&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2343,9 +2323,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P12&gt;
&lt;P13&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2353,9 +2333,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P13&gt;
&lt;P14&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2395,9 +2375,9 @@
&lt;/PortP1&gt;
&lt;PortP3&gt;
&lt;P30&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2415,9 +2395,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P31&gt;
&lt;P32&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2457,9 +2437,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P40&gt;
&lt;P41&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2467,9 +2447,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P41&gt;
&lt;P42&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2477,9 +2457,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P42&gt;
&lt;P43&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2487,9 +2467,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P43&gt;
&lt;P44&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2529,9 +2509,9 @@
&lt;/PortP4&gt;
&lt;PortP5&gt;
&lt;P50&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2539,9 +2519,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P50&gt;
&lt;P51&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2549,9 +2529,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P51&gt;
&lt;P52&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2569,9 +2549,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P53&gt;
&lt;P54&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2579,9 +2559,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P54&gt;
&lt;P55&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2589,9 +2569,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P55&gt;
&lt;P56&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2599,9 +2579,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P56&gt;
&lt;P57&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2611,9 +2591,9 @@
&lt;/PortP5&gt;
&lt;PortP6&gt;
&lt;P60&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2621,9 +2601,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P60&gt;
&lt;P61&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2653,9 +2633,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P63&gt;
&lt;P64&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2663,9 +2643,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P64&gt;
&lt;P65&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2673,9 +2653,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P65&gt;
&lt;P66&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2683,9 +2663,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P66&gt;
&lt;P67&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2695,9 +2675,9 @@
&lt;/PortP6&gt;
&lt;PortP7&gt;
&lt;P70&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2705,9 +2685,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P70&gt;
&lt;P71&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2715,9 +2695,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P71&gt;
&lt;P72&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2725,9 +2705,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P72&gt;
&lt;P73&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2735,9 +2715,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P73&gt;
&lt;P74&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2745,9 +2725,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P74&gt;
&lt;P75&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2755,9 +2735,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P75&gt;
&lt;P76&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2765,9 +2745,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P76&gt;
&lt;P77&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2879,9 +2859,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P91&gt;
&lt;P92&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2889,9 +2869,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P92&gt;
&lt;P93&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2899,9 +2879,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P93&gt;
&lt;P94&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2909,9 +2889,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P94&gt;
&lt;P95&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2919,9 +2899,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P95&gt;
&lt;P96&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2929,9 +2909,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P96&gt;
&lt;P97&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2941,9 +2921,9 @@
&lt;/PortP9&gt;
&lt;PortP10&gt;
&lt;P100&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2951,9 +2931,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P100&gt;
&lt;P101&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2961,9 +2941,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P101&gt;
&lt;P102&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2971,9 +2951,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P102&gt;
&lt;P103&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2981,9 +2961,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P103&gt;
&lt;P104&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -2991,9 +2971,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P104&gt;
&lt;P105&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -3001,9 +2981,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P105&gt;
&lt;P106&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -3011,9 +2991,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P106&gt;
&lt;P107&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -3023,9 +3003,9 @@
&lt;/PortP10&gt;
&lt;PortP12&gt;
&lt;P120&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -3073,9 +3053,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P124&gt;
&lt;P125&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -3083,9 +3063,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P125&gt;
&lt;P126&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -3093,9 +3073,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P126&gt;
&lt;P127&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -3139,9 +3119,9 @@
&lt;/PortP14&gt;
&lt;PortP15&gt;
&lt;P150&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -3149,9 +3129,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P150&gt;
&lt;P151&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -3159,9 +3139,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P151&gt;
&lt;P152&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -3169,9 +3149,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P152&gt;
&lt;P153&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -3179,9 +3159,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P153&gt;
&lt;P154&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -3189,9 +3169,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P154&gt;
&lt;P155&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -3199,9 +3179,9 @@
&lt;setting name="PSRSEL" value="false" /&gt;
&lt;/P155&gt;
&lt;P156&gt;
&lt;setting name="MODULE_UNUSED" value="true" /&gt;
&lt;setting name="MODULE_UNUSED" value="false" /&gt;
&lt;setting name="INPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="false" /&gt;
&lt;setting name="OUTPUT_MODE" value="true" /&gt;
&lt;setting name="PULLUP_ON" value="false" /&gt;
&lt;setting name="NCH_ON" value="false" /&gt;
&lt;setting name="OUTPUT_1" value="false" /&gt;
@ -3231,8 +3211,8 @@
&lt;setting name="WDT_INTERRUPT_PRIORITY" value="3" /&gt;
&lt;/WDT&gt;
&lt;ADC&gt;
&lt;setting name="ADC_USED" value="true" /&gt;
&lt;setting name="ADC_UNUSED" value="false" /&gt;
&lt;setting name="ADC_USED" value="false" /&gt;
&lt;setting name="ADC_UNUSED" value="true" /&gt;
&lt;setting name="ADC_COMPARATOR_ENABLE" value="false" /&gt;
&lt;setting name="ADC_COMPARATOR_DISABLE" value="true" /&gt;
&lt;setting name="ADC_RESOLUTION_10BIT" value="true" /&gt;

740
multical.temp.mtud

File diff suppressed because one or more lines are too long

37
owi.c

@ -313,7 +313,7 @@ uint8_t OWI_ReadBit(void)
}
if (timeout <= 0) {
uart_send_string("OWI Timeout\r\n");
HOST_PRINT("OWI Timeout\r\n");
return 0xFF;
}
@ -389,7 +389,7 @@ void OWI_T_ReadBytesAndPrint(int length)
}
sprintf(uart_buf, "%02X ", buf[0]);
strcpy(tmp_buf, uart_buf);
uart_send_string(tmp_buf);
HOST_PRINT(tmp_buf);
for (i = 1; i < length; i+=2) {
@ -398,7 +398,7 @@ void OWI_T_ReadBytesAndPrint(int length)
delay(10000);
sprintf(uart_buf, "%02X%02X ", va0, va1);
strcpy(tmp_buf, uart_buf);
uart_send_string(tmp_buf);
HOST_PRINT(tmp_buf);
delay(10000);
}
}
@ -474,19 +474,6 @@ void OWI_A_CommandMode(const uint8_t *tx_data, uint8_t tx_len, uint8_t id)
float v;
uint8_t read_address = 0x51;
// ===== 1) ADC 읽기 =====
ADC_ReadAndSend_UART();
if (g_adc_len != ADC_NUM_CH) {
uart_send_string("Err:adc_count\r\n");
return;
}
for (j = 0; j < g_adc_len; j++) {
v = g_adc_bytes[j];
n += sprintf(&line[n], "%.2f", v);
if (j + 1 < g_adc_len) line[n++] = ',';
}
line[n++] = ',';
// ===== 2) OWI Power On =====
OWI_EnablePower();
delay_us(7000); // Power-on delay
@ -567,7 +554,7 @@ void OWI_A_CommandMode(const uint8_t *tx_data, uint8_t tx_len, uint8_t id)
line[n++] = '\r';
line[n++] = '\n';
line[n] = '\0';
uart_send_string(line);
HOST_PRINT(line);
delay(10000);
OWI_DisablePower();
@ -674,7 +661,7 @@ void OWI_Diagnostic(uint8_t id)
line[n++] = '\r';
line[n++] = '\n';
line[n] = '\0';
uart_send_string(line);
HOST_PRINT(line);
delay(10000);
}
@ -698,7 +685,7 @@ void OWI_disable()
{
OWI_DisablePower();
uart_send_string("51\r\n");
HOST_PRINT("51\r\n");
}
@ -753,7 +740,7 @@ void OWI_T_CommandMode(const uint8_t *tx_data, uint8_t tx_len, uint8_t id)
OWI_WriteByte(tx_data[i]); // 명령 전송
}
OWI_Stop(); // 쓰기 종료
uart_send_string("51\r\n");
HOST_PRINT("51\r\n");
@ -804,7 +791,7 @@ void OWI_CommandMode(const uint8_t *tx_data, uint8_t tx_len, uint8_t id)
}
OWI_Stop(); // 쓰기 종료
uart_send_string("51\r\n");
HOST_PRINT("51\r\n");
}
@ -856,7 +843,7 @@ void OWI_ReadBytesAndPrint(int length, uint8_t id)
}
sprintf(uart_buf, "%02X ", buf[0]);
strcpy(tmp_buf, uart_buf);
uart_send_string(tmp_buf);
HOST_PRINT(tmp_buf);
for (i = 1; i < length; i += 2) {
@ -868,18 +855,18 @@ void OWI_ReadBytesAndPrint(int length, uint8_t id)
delay(10000);
sprintf(uart_buf, "%02X%02X ", va0, va1);
strcpy(tmp_buf, uart_buf);
uart_send_string(tmp_buf);
HOST_PRINT(tmp_buf);
delay(10000);
} else {
// 마지막 1바이트가 남은 경우 단독 출력
delay(10000);
sprintf(uart_buf, "%02X", va0);
strcpy(tmp_buf, uart_buf);
uart_send_string(tmp_buf);
HOST_PRINT(tmp_buf);
delay(10000);
}
}
uart_send_string("\r\n");
HOST_PRINT("\r\n");
}

2
r_cg_cgc.c

@ -23,7 +23,7 @@
* Device(s) : R5F10PPJ
* Tool-Chain : CCRL
* Description : This file implements device driver for CGC module.
* Creation Date: 2026-01-13
* Creation Date: 2026-01-21
***********************************************************************************************************************/
/***********************************************************************************************************************

2
r_cg_cgc.h

@ -23,7 +23,7 @@
* Device(s) : R5F10PPJ
* Tool-Chain : CCRL
* Description : This file implements device driver for CGC module.
* Creation Date: 2026-01-13
* Creation Date: 2026-01-21
***********************************************************************************************************************/
#ifndef CGC_H

2
r_cg_cgc_user.c

@ -23,7 +23,7 @@
* Device(s) : R5F10PPJ
* Tool-Chain : CCRL
* Description : This file implements device driver for CGC module.
* Creation Date: 2026-01-13
* Creation Date: 2026-01-21
***********************************************************************************************************************/
/***********************************************************************************************************************

2
r_cg_macrodriver.h

@ -23,7 +23,7 @@
* Device(s) : R5F10PPJ
* Tool-Chain : CCRL
* Description : This file implements general head file.
* Creation Date: 2026-01-13
* Creation Date: 2026-01-21
***********************************************************************************************************************/
#ifndef STATUS_H

43
r_cg_port.c

@ -23,7 +23,7 @@
* Device(s) : R5F10PPJ
* Tool-Chain : CCRL
* Description : This file implements device driver for PORT module.
* Creation Date: 2026-01-13
* Creation Date: 2026-01-21
***********************************************************************************************************************/
/***********************************************************************************************************************
@ -55,8 +55,49 @@ Global variables and functions
***********************************************************************************************************************/
void R_PORT_Create(void)
{
P0 = _00_Pn0_OUTPUT_0 | _00_Pn1_OUTPUT_0 | _00_Pn2_OUTPUT_0 | _00_Pn3_OUTPUT_0;
P1 = _00_Pn0_OUTPUT_0 | _00_Pn3_OUTPUT_0 | _00_Pn4_OUTPUT_0;
P3 = _00_Pn0_OUTPUT_0 | _00_Pn2_OUTPUT_0;
P4 = _00_Pn1_OUTPUT_0 | _00_Pn2_OUTPUT_0 | _00_Pn3_OUTPUT_0 | _00_Pn4_OUTPUT_0;
P5 = _00_Pn0_OUTPUT_0 | _00_Pn1_OUTPUT_0 | _00_Pn2_OUTPUT_0 | _00_Pn4_OUTPUT_0 | _00_Pn5_OUTPUT_0 |
_00_Pn6_OUTPUT_0 | _00_Pn7_OUTPUT_0;
P6 = _00_Pn0_OUTPUT_0 | _00_Pn1_OUTPUT_0 | _00_Pn4_OUTPUT_0 | _00_Pn5_OUTPUT_0 | _00_Pn6_OUTPUT_0 |
_00_Pn7_OUTPUT_0;
P7 = _00_Pn0_OUTPUT_0 | _00_Pn1_OUTPUT_0 | _00_Pn2_OUTPUT_0 | _00_Pn3_OUTPUT_0 | _00_Pn4_OUTPUT_0 |
_00_Pn5_OUTPUT_0 | _00_Pn6_OUTPUT_0 | _00_Pn7_OUTPUT_0;
P9 = _00_Pn2_OUTPUT_0 | _00_Pn3_OUTPUT_0 | _00_Pn4_OUTPUT_0 | _00_Pn5_OUTPUT_0 | _00_Pn6_OUTPUT_0 |
_00_Pn7_OUTPUT_0;
P10 = _00_Pn0_OUTPUT_0 | _00_Pn1_OUTPUT_0 | _00_Pn2_OUTPUT_0 | _00_Pn3_OUTPUT_0 | _00_Pn4_OUTPUT_0 |
_00_Pn5_OUTPUT_0 | _00_Pn6_OUTPUT_0 | _00_Pn7_OUTPUT_0;
P12 = _00_Pn0_OUTPUT_0 | _00_Pn5_OUTPUT_0 | _00_Pn6_OUTPUT_0 | _00_Pn7_OUTPUT_0;
P13 = _00_Pn0_OUTPUT_0;
P15 = _00_Pn0_OUTPUT_0 | _00_Pn1_OUTPUT_0 | _00_Pn2_OUTPUT_0 | _00_Pn3_OUTPUT_0 | _00_Pn4_OUTPUT_0 |
_00_Pn5_OUTPUT_0 | _00_Pn6_OUTPUT_0;
POM6 = _04_POMn2_NCH_ON | _08_POMn3_NCH_ON;
PMC7 = _00_PMCn0_DI_ON | _00_PMCn1_DI_ON | _00_PMCn2_DI_ON | _00_PMCn3_DI_ON | _00_PMCn4_DI_ON | _E0_PMC7_DEFAULT;
PMC12 = _00_PMCn0_DI_ON | _00_PMCn5_DI_ON | _DE_PMC12_DEFAULT;
PSRSEL = _00_PSR14_NORMAL | _00_PSR120_NORMAL | _00_PSR30_NORMAL | _00_PSR10_NORMAL;
ADPC = _0D_ADPC_DI_ON;
PM0 = _00_PMn0_MODE_OUTPUT | _00_PMn1_MODE_OUTPUT | _00_PMn2_MODE_OUTPUT | _00_PMn3_MODE_OUTPUT | _F0_PM0_DEFAULT;
PM1 = _00_PMn0_MODE_OUTPUT | _02_PMn1_NOT_USE | _04_PMn2_NOT_USE | _00_PMn3_MODE_OUTPUT | _00_PMn4_MODE_OUTPUT |
_20_PMn5_NOT_USE | _40_PMn6_NOT_USE | _80_PMn7_NOT_USE;
PM3 = _00_PMn0_MODE_OUTPUT | _02_PMn1_NOT_USE | _00_PMn2_MODE_OUTPUT | _08_PMn3_NOT_USE | _10_PMn4_NOT_USE |
_E0_PM3_DEFAULT;
PM4 = _01_PMn0_NOT_USE | _00_PMn1_MODE_OUTPUT | _00_PMn2_MODE_OUTPUT | _00_PMn3_MODE_OUTPUT | _00_PMn4_MODE_OUTPUT |
_20_PMn5_NOT_USE | _40_PMn6_NOT_USE | _80_PMn7_NOT_USE;
PM5 = _00_PMn0_MODE_OUTPUT | _00_PMn1_MODE_OUTPUT | _00_PMn2_MODE_OUTPUT | _08_PMn3_NOT_USE | _00_PMn4_MODE_OUTPUT |
_00_PMn5_MODE_OUTPUT | _00_PMn6_MODE_OUTPUT | _00_PMn7_MODE_OUTPUT;
PM6 = _00_PMn0_MODE_OUTPUT | _00_PMn1_MODE_OUTPUT | _04_PMn2_NOT_USE | _08_PMn3_NOT_USE | _00_PMn4_MODE_OUTPUT |
_00_PMn5_MODE_OUTPUT | _00_PMn6_MODE_OUTPUT | _00_PMn7_MODE_OUTPUT;
PM7 = _00_PMn0_MODE_OUTPUT | _00_PMn1_MODE_OUTPUT | _00_PMn2_MODE_OUTPUT | _00_PMn3_MODE_OUTPUT |
_00_PMn4_MODE_OUTPUT | _00_PMn5_MODE_OUTPUT | _00_PMn6_MODE_OUTPUT | _00_PMn7_MODE_OUTPUT;
PM9 = _01_PMn0_NOT_USE | _02_PMn1_NOT_USE | _00_PMn2_MODE_OUTPUT | _00_PMn3_MODE_OUTPUT | _00_PMn4_MODE_OUTPUT |
_00_PMn5_MODE_OUTPUT | _00_PMn6_MODE_OUTPUT | _00_PMn7_MODE_OUTPUT;
PM10 = _00_PMn0_MODE_OUTPUT | _00_PMn1_MODE_OUTPUT | _00_PMn2_MODE_OUTPUT | _00_PMn3_MODE_OUTPUT |
_00_PMn4_MODE_OUTPUT | _00_PMn5_MODE_OUTPUT | _00_PMn6_MODE_OUTPUT | _00_PMn7_MODE_OUTPUT;
PM12 = _00_PMn0_MODE_OUTPUT | _00_PMn5_MODE_OUTPUT | _00_PMn6_MODE_OUTPUT | _00_PMn7_MODE_OUTPUT | _1E_PM12_DEFAULT;
PM15 = _00_PMn0_MODE_OUTPUT | _00_PMn1_MODE_OUTPUT | _00_PMn2_MODE_OUTPUT | _00_PMn3_MODE_OUTPUT |
_00_PMn4_MODE_OUTPUT | _00_PMn5_MODE_OUTPUT | _00_PMn6_MODE_OUTPUT | _80_PMn7_NOT_USE;
}
/* Start user code for adding. Do not edit comment generated here */

2
r_cg_port.h

@ -23,7 +23,7 @@
* Device(s) : R5F10PPJ
* Tool-Chain : CCRL
* Description : This file implements device driver for PORT module.
* Creation Date: 2026-01-13
* Creation Date: 2026-01-21
***********************************************************************************************************************/
#ifndef PORT_H

2
r_cg_port_user.c

@ -23,7 +23,7 @@
* Device(s) : R5F10PPJ
* Tool-Chain : CCRL
* Description : This file implements device driver for PORT module.
* Creation Date: 2026-01-13
* Creation Date: 2026-01-21
***********************************************************************************************************************/
/***********************************************************************************************************************

2
r_cg_serial.c

@ -23,7 +23,7 @@
* Device(s) : R5F10PPJ
* Tool-Chain : CCRL
* Description : This file implements device driver for Serial module.
* Creation Date: 2026-01-13
* Creation Date: 2026-01-21
***********************************************************************************************************************/
/***********************************************************************************************************************

2
r_cg_serial.h

@ -23,7 +23,7 @@
* Device(s) : R5F10PPJ
* Tool-Chain : CCRL
* Description : This file implements device driver for Serial module.
* Creation Date: 2026-01-13
* Creation Date: 2026-01-21
***********************************************************************************************************************/
#ifndef SERIAL_H

55
r_cg_serial_user.c

@ -23,7 +23,7 @@
* Device(s) : R5F10PPJ
* Tool-Chain : CCRL
* Description : This file implements device driver for Serial module.
* Creation Date: 2026-01-13
* Creation Date: 2026-01-21
***********************************************************************************************************************/
/***********************************************************************************************************************
@ -68,6 +68,13 @@ extern volatile uint16_t g_iica0_rx_len; /* iica0 receive data cou
extern volatile uint8_t * gp_iica0_tx_address; /* iica0 send buffer address */
extern volatile uint16_t g_iica0_tx_cnt; /* iica0 send data count */
/* Start user code for global. Do not edit comment generated here */
extern volatile uint8_t rs485_rx_done;
extern volatile uint8_t rs485_rx_index;
extern volatile uint8_t rs485_rx_buffer[UART_RX_BUF_SIZE];
extern volatile uint16_t rs485_rx_length;
extern volatile uint8_t g_rs485_bridge_active;
extern volatile uint8_t g_rs485_bridge_done;
void RS485_Bridge_Push(uint8_t b);
/* End user code. Do not edit comment generated here */
/***********************************************************************************************************************
@ -137,6 +144,52 @@ static void __near r_uart0_interrupt_send(void)
static void r_uart0_callback_receiveend(void)
{
/* Start user code. Do not edit comment generated here */
uint8_t c;
if (g_rs485_bridge_active) {
// ?????? ?? buffer[0]? 1??? ????? ?????? 0?? ???
c = rs485_rx_buffer[0];
RS485_Bridge_Push(c);
// "? ? ??" ?? ??
if (c == '\n') {
g_rs485_bridge_done = 1;
}
// ?? 1??? ?? ??
R_UART0_Receive((uint8_t*)&rs485_rx_buffer[0], 1);
return;
}
c = rs485_rx_buffer[rs485_rx_index];
// Bridge mode: stream RS485 bytes to PC as they arrive
if (g_rs485_bridge_active) {
RS485_Bridge_Push(c);
if (c == '\n') {
g_rs485_bridge_done = 1;
}
// ?? 1??? ?? ?? (index 0 ???)
rs485_rx_index = 0;
rs485_rx_length = 0;
R_UART0_Receive((uint8_t*)&rs485_rx_buffer[0], 1);
return;
}
if (rs485_rx_index < (UART_RX_BUF_SIZE - 1)) {
rs485_rx_index++;
rs485_rx_length = rs485_rx_index;
}
if (c == '\n' || rs485_rx_index >= (UART_RX_BUF_SIZE - 1)) {
rs485_rx_done = 1;
// ?? Receive? main loop?? ?? ??? ??,
// ??? ?? ??? ?(?? ??)
} else {
R_UART0_Receive((uint8_t*)&rs485_rx_buffer[rs485_rx_index], 1);
}
/* End user code. Do not edit comment generated here */
}

2
r_cg_userdefine.h

@ -23,7 +23,7 @@
* Device(s) : R5F10PPJ
* Tool-Chain : CCRL
* Description : This file includes user definition.
* Creation Date: 2026-01-13
* Creation Date: 2026-01-21
***********************************************************************************************************************/
#ifndef _USER_DEF_H

2
r_cg_wdt.c

@ -23,7 +23,7 @@
* Device(s) : R5F10PPJ
* Tool-Chain : CCRL
* Description : This file implements device driver for WDT module.
* Creation Date: 2026-01-13
* Creation Date: 2026-01-21
***********************************************************************************************************************/
/***********************************************************************************************************************

2
r_cg_wdt.h

@ -23,7 +23,7 @@
* Device(s) : R5F10PPJ
* Tool-Chain : CCRL
* Description : This file implements device driver for WDT module.
* Creation Date: 2026-01-13
* Creation Date: 2026-01-21
***********************************************************************************************************************/
#ifndef WDT_H

2
r_cg_wdt_user.c

@ -23,7 +23,7 @@
* Device(s) : R5F10PPJ
* Tool-Chain : CCRL
* Description : This file implements device driver for WDT module.
* Creation Date: 2026-01-13
* Creation Date: 2026-01-21
***********************************************************************************************************************/
/***********************************************************************************************************************

665
r_main.c

@ -23,7 +23,7 @@
* Device(s) : R5F10PPJ
* Tool-Chain : CCRL
* Description : This file implements main function.
* Creation Date: 2026-01-13
* Creation Date: 2026-01-21
***********************************************************************************************************************/
/***********************************************************************************************************************
@ -33,11 +33,9 @@ Includes
#include "r_cg_cgc.h"
#include "r_cg_port.h"
#include "r_cg_serial.h"
#include "r_cg_adc.h"
#include "r_cg_wdt.h"
/* Start user code for include. Do not edit comment generated here */
#include "common.h"
#include "anaout.h"
#include "dipSwitch.h"
#include "gatectrl.h"
#include <string.h>
@ -46,14 +44,22 @@ Includes
#include <r_cg_port.h>
#define CMD_MAX 529
#define RS485_BRIDGE_FIFO_SZ 256
volatile uint8_t uart_rx_done = 0;
volatile uint8_t uart_rx_index = 0;
volatile uint8_t uart_rx_buffer[UART_RX_BUF_SIZE] = {0};
volatile uint16_t uart_rx_length = 0;
volatile uint8_t rs485_rx_done = 0;
volatile uint8_t rs485_rx_index = 0;
volatile uint8_t rs485_rx_buffer[UART_RX_BUF_SIZE] = {0};
volatile uint16_t rs485_rx_length = 0;
volatile uint8_t g_rs485_bridge_active = 0;
volatile uint8_t g_rs485_bridge_done = 0;
// (1~32)
static uint8_t g_fixed_addr = 1;
uint8_t g_fixed_addr = 1;
/* End user code. Do not edit comment generated here */
#include "r_cg_userdefine.h"
@ -62,6 +68,52 @@ Pragma directive
***********************************************************************************************************************/
/* Start user code for pragma. Do not edit comment generated here */
static volatile uint8_t s_rb_fifo[RS485_BRIDGE_FIFO_SZ];
static volatile uint8_t s_rb_head = 0;
static volatile uint8_t s_rb_tail = 0;
void RS485_Bridge_Push(uint8_t b)
{
uint8_t next = (uint8_t)(s_rb_head + 1);
if (next >= RS485_BRIDGE_FIFO_SZ) next = 0;
// FIFO full이면 tail을 당겨서 “최신 데이터 우선”으로 유지(드랍 정책)
if (next == s_rb_tail) {
uint8_t t = (uint8_t)(s_rb_tail + 1);
if (t >= RS485_BRIDGE_FIFO_SZ) t = 0;
s_rb_tail = t;
}
s_rb_fifo[s_rb_head] = b;
s_rb_head = next;
}
static void RS485_Bridge_ResetFifo(void)
{
s_rb_head = 0;
s_rb_tail = 0;
}
static void RS485_Bridge_DrainToPC(void)
{
// UART1이 전송 중이면(드라이버 카운트) 새 전송 시작하지 않음
extern volatile uint16_t g_uart1_tx_count;
static char out[2];
while (s_rb_tail != s_rb_head) {
if (g_uart1_tx_count != 0U) break;
out[0] = (char)s_rb_fifo[s_rb_tail];
out[1] = '\0';
uart1_send_string(out); // PC(UART1)로 1바이트 전송 시작
s_rb_tail++;
if (s_rb_tail >= RS485_BRIDGE_FIFO_SZ) s_rb_tail = 0;
}
}
static unsigned char hex2byte(char h, char l)
{
unsigned char hi, lo;
@ -72,23 +124,176 @@ static unsigned char hex2byte(char h, char l)
return (unsigned char)((hi << 4) | lo);
}
static int parse_x_prefix(const char *s, int len, uint8_t *addr, uint8_t *ch, int *payload_pos)
typedef enum {
PREFIX_NONE = 0,
PREFIX_CAL,
PREFIX_EOL
} PrefixMode;
static PrefixMode s_prefix_mode = PREFIX_NONE;
static int parse_x_prefix(const char *s, int len,
uint8_t *addr, uint8_t *ch,
char *mode, uint8_t *hash_on, uint8_t *anaout_on, uint8_t *check_on, int *payload_pos)
{
if (len < 9) return 0;
if (toupper((unsigned char)s[0]) != 'X') return 0;
*hash_on = 0;
*anaout_on = 0;
*check_on = 1;
if (len < 8) return 0;
if (!(s[0] == 'x' || s[0] == 'X')) return 0;
if (!isdigit((unsigned char)s[1]) || !isdigit((unsigned char)s[2])) return -1;
if (toupper((unsigned char)s[3]) != 'C') return -1;
if (s[3] == 'c' || s[3] == 'C') *mode = 'C';
else if (s[3] == 'e' || s[3] == 'E') *mode = 'E';
else return -1;
if (s[4] != '_') return -1;
if (!isdigit((unsigned char)s[5]) || !isdigit((unsigned char)s[6]) || !isdigit((unsigned char)s[7])) return -1;
if (s[8] != ':') return -1;
*addr = (uint8_t)((s[1] - '0') * 10 + (s[2] - '0'));
*ch = (uint8_t)((s[5] - '0') * 100 + (s[6] - '0') * 10 + (s[7] - '0'));
*payload_pos = 9;
// prefix만 온 케이스: x01e_001 / x01c_001
if (len == 8) {
*payload_pos = len;
return 1;
}
// payload 있는 케이스: x01c_001:...
if (s[8] == ':') {
*payload_pos = 9;
return 1;
}
// 3) flags: x01c_001011 or x01c_001011:...
if (len >= 11 &&
(s[8] == '0' || s[8] == '1') &&
(s[9] == '0' || s[9] == '1') &&
(s[10] == '0' || s[10] == '1'))
{
*hash_on = (uint8_t)(s[8] - '0');
*anaout_on = (uint8_t)(s[9] - '0');
*check_on = (uint8_t)(s[10] - '0');
// flags only
if (len == 11) {
*payload_pos = 11;
return 1;
}
// flags + payload
if (len >= 12 && s[11] == ':') {
*payload_pos = 12;
return 1;
}
return -1;
}
return -1;
}
typedef enum {
CMD_SRC_PC = 0,
CMD_SRC_RS485 = 1
} CmdSource;
static void OUT_PRINT(CmdSource src, const char *s)
{
if (src == CMD_SRC_PC) PC_PRINT(s);
else RS485_PRINT(s);
}
// xNNv (예: x00v, x31v) 판별
static int parse_x_v_cmd(const char *s, int len, uint8_t *addr)
{
if (len != 4) return 0; // "x" + 2digit + "v" = 4
if (!(s[0] == 'x' || s[0] == 'X')) return 0;
if (!isdigit((unsigned char)s[1]) || !isdigit((unsigned char)s[2])) return 0;
if (!(s[3] == 'v' || s[3] == 'V')) return 0;
*addr = (uint8_t)((s[1] - '0') * 10 + (s[2] - '0'));
return 1;
}
static void send_v_response(CmdSource src, uint8_t addr)
{
char resp[8];
// "V00\r\n\0"
resp[0] = 'V';
resp[1] = (char)('0' + (addr / 10));
resp[2] = (char)('0' + (addr % 10));
resp[3] = '\r';
resp[4] = '\n';
resp[5] = '\0';
OUT_PRINT(src, resp);
}
// 보드1이 addr(1~31)을 RS485로 조회하고, 응답이 오면 스트리밍으로 PC에 전달
static void scan_one_addr_rs485(uint8_t addr)
{
char cmdline[8];
unsigned long guard;
// "xNNv\r\n"
cmdline[0] = 'x';
cmdline[1] = (char)('0' + (addr / 10));
cmdline[2] = (char)('0' + (addr % 10));
cmdline[3] = 'v';
cmdline[4] = '\r';
cmdline[5] = '\n';
cmdline[6] = '\0';
// 브릿지 준비
g_rs485_bridge_active = 1;
g_rs485_bridge_done = 0;
RS485_Bridge_ResetFifo();
R_UART0_Receive((uint8_t*)&rs485_rx_buffer[0], 1);
// 조회 커맨드 송신
RS485_PRINT(cmdline);
// 응답 들어오면(done)까지 드레인
guard = 0;
while (!g_rs485_bridge_done && guard++ < 300000UL) {
RS485_Bridge_DrainToPC();
}
// 남은 FIFO 마저
RS485_Bridge_DrainToPC();
// 브릿지 종료
g_rs485_bridge_active = 0;
// 다음 RS485 RX 재시작(기존 라인처리도 계속 돌릴 거면 유지)
rs485_rx_done = 0;
rs485_rx_index = 0;
rs485_rx_length = 0;
R_UART0_Receive((uint8_t*)&rs485_rx_buffer[0], 1);
}
static int build_line_from_rx(const volatile uint8_t *rx_buf, int rx_len,
char *out, int out_sz)
{
int i, idx = 0;
if (rx_len < 0) rx_len = 0;
if (rx_len > out_sz - 1) rx_len = out_sz - 1;
for (i = 0; i < rx_len && idx < out_sz - 1; i++) {
char c = (char)rx_buf[i];
if (c == '\r') continue;
if (c == '\n') break;
out[idx++] = c;
}
out[idx] = '\0';
return idx;
}
typedef enum {
PROTOCOL_I2CT,
PROTOCOL_OWIT,
@ -96,11 +301,6 @@ typedef enum {
PROTOCOL_I2CR,
PROTOCOL_OWIW,
PROTOCOL_OWIR,
PROTOCOL_I2CA,
PROTOCOL_OWIA,
PROTOCOL_OWID,
PROTOCOL_OWIC,
PROTOCOL_I2CC,
PROTOCOL_UNKNOWN
} ProtocolType;
@ -115,7 +315,7 @@ static ProtocolType detect_protocol(char header1, char header2)
static void cmd_unknown(const unsigned char *d, unsigned int len)
{
uart1_send_string("Unknown cmd\r\n");
HOST_PRINT("Unknown cmd\r\n");
delay(100000);
}
@ -129,172 +329,335 @@ static void process_cmd(ProtocolType protocol, uint8_t id,
case PROTOCOL_I2CR: I2C_Command_Mode_Send((uint8_t)len, id); break;
case PROTOCOL_OWIW: OWI_CommandMode(data, (uint8_t)len, id); break;
case PROTOCOL_OWIR: OWI_ReadBytesAndPrint(len, id); break;
case PROTOCOL_I2CA: I2C_A_Command_Mode_receiveData(data, (uint8_t)len, id); break;
case PROTOCOL_OWIA: OWI_A_CommandMode(data, (uint8_t)len, id); break;
case PROTOCOL_OWID: OWI_disable(); break;
case PROTOCOL_OWIC: OWI_Diagnostic(id); break;
case PROTOCOL_I2CC: I2C_Diagnostic(id); break;
default: cmd_unknown(data, len); break;
}
}
void handle_uart_command_line(void)
static void process_cmd_by_prefix(PrefixMode pm,
ProtocolType protocol, uint8_t id,
const unsigned char *data, unsigned int len)
{
if (pm == PREFIX_EOL) {
// TODO: EOL 전용 처리 필요 시 여기에
process_cmd(protocol, id, data, len);
} else {
// CAL 또는 Prefix 없음
process_cmd(protocol, id, data, len);
}
}
static void process_one_line(CmdSource src, const volatile uint8_t *rx_buf, uint16_t rx_len)
{
char line[UART_RX_BUF_SIZE];
while (1)
uint8_t v_addr = 0;
int is_v = 0;
uint8_t a = 0;
int i;
int idx = 0;
int pos = 2;
ProtocolType proto;
uint8_t id;
unsigned int byte_len;
uint8_t cmd[CMD_MAX];
unsigned int k = 0;
char orig_line[UART_RX_BUF_SIZE];
int orig_len = 0;
s_prefix_mode = PREFIX_NONE;
// 1) RX 버퍼 -> line 구성 (CR/LF 제거)
idx = build_line_from_rx(rx_buf, (int)rx_len, line, (int)sizeof(line));
if (idx <= 0) return;
// xNNv 처리 (x-prefix 처리보다 먼저!)
{
if (uart_rx_done)
{
int i;
int idx = 0;
int pos = 2;
int rx_len;
ProtocolType proto;
uint8_t id;
unsigned int byte_len;
uint8_t cmd[CMD_MAX];
unsigned int k = 0;
uart_rx_done = 0;
rx_len = (int)uart_rx_length;
if (rx_len < 0) rx_len = 0;
if (rx_len > (int)UART_RX_BUF_SIZE - 1) rx_len = (int)UART_RX_BUF_SIZE - 1;
uart_rx_buffer[rx_len] = '\0';
for (i = 0; i < rx_len && i < (int)sizeof(line) - 1; i++) {
char c = (char)uart_rx_buffer[i];
if (c == '\r') continue;
if (c == '\n') break;
line[idx++] = c;
}
line[idx] = '\0';
is_v = parse_x_v_cmd(line, idx, &v_addr);
if (is_v) {
{
uint8_t addr = 0;
uint8_t ch = 0;
int payload_pos = 0;
int r = parse_x_prefix(line, idx, &addr, &ch, &payload_pos);
if (r == -1) {
uart1_send_string("Err:X_prefix\r\n");
goto clear;
}
if (v_addr > 31) { OUT_PRINT(src, "Err:addr_range\r\n"); return; }
if (r == 1) {
if (addr < 1 || addr > 32) { uart1_send_string("Err:addr_range\r\n"); goto clear; }
if (ch < 1 || ch > 20) { uart1_send_string("Err:ch_range\r\n"); goto clear; }
// 보드1(ADDR0) + PC에서 x00v => 00~31 스캔
if (g_fixed_addr == 0 && src == CMD_SRC_PC && v_addr == 0) {
if (addr != g_fixed_addr) {
uart1_send_string("Err:addr_mismatch\r\n");
goto clear;
}
GateCtrl_SelectChannel(ch);
{
int rem = idx - payload_pos;
if (rem <= 0) {
uart1_send_string("<ACK>XC\r\n");
goto clear;
}
for (i = 0; i < rem; i++) line[i] = line[payload_pos + i];
line[rem] = '\0';
idx = rem;
pos = 2;
}
// 자기 자신(00)은 즉시 응답
send_v_response(CMD_SRC_PC, 0);
// 01~31 순차 조회 (존재하는 보드만 VNN이 PC로 흘러옴)
for (a = 1; a <= 31; a++) {
scan_one_addr_rs485(a);
}
return;
}
if (idx < 7) { uart1_send_string("Err:short\r\n"); goto clear; }
{
char h0 = (char)toupper((unsigned char)line[0]);
char h1 = (char)toupper((unsigned char)line[1]);
proto = detect_protocol(h0, h1);
// 그 외: 내 주소와 일치할 때만 응답
if (v_addr == g_fixed_addr) {
send_v_response(src, g_fixed_addr);
}
if (proto == PROTOCOL_UNKNOWN) { uart1_send_string("Err:ID\r\n"); goto clear; }
return; // v 커맨드 처리는 여기서 종료
}
}
if (line[pos] == 't' || line[pos] == 'T') {
if (proto == PROTOCOL_OWIW) proto = PROTOCOL_OWIT;
else if (proto == PROTOCOL_I2CW) proto = PROTOCOL_I2CT;
pos++;
}
if (line[pos] == 'a' || line[pos] == 'A') {
if (proto == PROTOCOL_OWIW) proto = PROTOCOL_OWIA;
else if (proto == PROTOCOL_I2CW) proto = PROTOCOL_I2CA;
pos++;
}
// RS485 중계용 원본 저장
orig_len = idx;
memcpy(orig_line, line, (size_t)orig_len);
orig_line[orig_len] = '\0';
if (line[pos] == 'd' || line[pos] == 'D') {
if (proto == PROTOCOL_OWIW) proto = PROTOCOL_OWID;
pos++;
}
// 2) x-prefix 처리(있으면)
{
uint8_t addr = 0;
uint8_t ch = 0;
char mode = 0;
int payload_pos = 0;
if (line[pos] == 'c' || line[pos] == 'C') {
if (proto == PROTOCOL_OWIW) proto = PROTOCOL_OWIC;
else if (proto == PROTOCOL_I2CW) proto = PROTOCOL_I2CC;
pos++;
}
uint8_t hash_on = 0;
uint8_t anaout_on = 0;
uint8_t check_on = 1;
if (line[pos] == '_' || line[pos] == ':') pos++;
int r = parse_x_prefix(line, idx, &addr, &ch, &mode, &hash_on, &anaout_on, &check_on, &payload_pos);
if (pos + 1 >= idx) { uart1_send_string("Err:id_short\r\n"); goto clear; }
id = hex2byte(line[pos], line[pos+1]);
pos += 2;
if (r == -1) {
OUT_PRINT(src, "Err:X_prefix\r\n");
return;
}
if (r == 1) {
if (addr > 31) { OUT_PRINT(src, "Err:addr_range\r\n"); return; }
if (ch < 1 || ch > 20) { OUT_PRINT(src, "Err:ch_range\r\n"); return; }
// 내 주소가 아니면:
// - 보드1(ADDR0) + PC에서 들어온 것: RS485로 중계 + RS485응답을 PC로 전달
// - 그 외(슬레이브거나 RS485수신): 조용히 무시
if (addr != g_fixed_addr) {
// 보드1(ADDR0) + PC에서 들어온 것만 RS485 중계
if (g_fixed_addr == 0 && src == CMD_SRC_PC) {
// 0) 브릿지 준비
g_rs485_bridge_active = 1;
g_rs485_bridge_done = 0;
RS485_Bridge_ResetFifo();
// 1) RS485 RX 재시작(1바이트씩 계속 받게)
rs485_rx_done = 0;
rs485_rx_index = 0;
rs485_rx_length = 0;
R_UART0_Receive((uint8_t*)&rs485_rx_buffer[0], 1);
// 2) RS485로 커맨드 송신
RS485_PRINT(orig_line);
RS485_PRINT("\r\n");
// 3) “응답이 들어오는 동안” 드레인 하면서 대기
{
unsigned long guard = 0;
while (!g_rs485_bridge_done && guard++ < 600000UL) {
RS485_Bridge_DrainToPC(); // ? 스트리밍
}
// 남은 FIFO도 끝까지 한번 더 드레인
RS485_Bridge_DrainToPC();
// 브릿지 종료
g_rs485_bridge_active = 0;
rs485_rx_done = 0;
rs485_rx_index = 0;
rs485_rx_length = 0;
R_UART0_Receive((uint8_t*)&rs485_rx_buffer[rs485_rx_index], 1);
if (!g_rs485_bridge_done) {
PC_PRINT("Err:rs485_timeout\r\n");
}
}
}
// 슬레이브(다른 보드)에서 addr mismatch는 조용히 무시
return;
}
// addr == g_fixed_addr: 로컬 처리(채널 선택)
if (mode == 'C') {
s_prefix_mode = PREFIX_CAL;
Cal_Init();
Gate_SetByNum(ch, hash_on, anaout_on, check_on);
GateCtrl_SelectChannel(ch);
} else {
s_prefix_mode = PREFIX_EOL;
Eol_Init();
Gate_SetByNum(ch, hash_on, anaout_on, check_on);
GateCtrl_SelectChannel(ch);
if (pos + 2 >= idx ||
!(line[pos] >= '0' && line[pos] <= '9') ||
!(line[pos+1] >= '0' && line[pos+1] <= '9') ||
!(line[pos+2] >= '0' && line[pos+2] <= '9')) {
uart1_send_string("Err:len_dec\r\n"); goto clear;
}
byte_len = (unsigned int)(100*(line[pos]-'0') + 10*(line[pos+1]-'0') + (line[pos+2]-'0'));
pos += 3;
if (byte_len > CMD_MAX) { uart1_send_string("Err:len_range\r\n"); goto clear; }
if (proto == PROTOCOL_I2CA || proto == PROTOCOL_OWIA) {
if (byte_len != 0 && byte_len != 3) {
uart1_send_string("Err:len_a_mode\r\n"); goto clear;
}
if (byte_len == 0) {
if (pos != idx) { uart1_send_string("Err:read_no_payload\r\n"); goto clear; }
} else {
if ((int)(pos + (int)byte_len*2) > idx) { uart1_send_string("Err:len_mismatch\r\n"); goto clear; }
for (k = 0; k < byte_len; k++) {
cmd[k] = hex2byte(line[pos + 2*k], line[pos + 2*k + 1]);
// prefix만 온 경우 / payload 처리
{
int rem = idx - payload_pos;
if (rem <= 0) {
if (mode == 'E') {
// EOL은 payload 없어도 OK
OUT_PRINT(src, "<ACK>XE\r\n");
return;
} else {
// CAL은 payload 필수
OUT_PRINT(src, "Err:CAL_need_payload\r\n");
return;
}
pos += byte_len*2;
if (pos != idx) { uart1_send_string("Err:len_trail\r\n"); goto clear; }
}
}
else if (proto == PROTOCOL_OWIT || proto == PROTOCOL_I2CT ||
proto == PROTOCOL_OWIW || proto == PROTOCOL_I2CW)
{
if (byte_len == 0) { uart1_send_string("Err:payload0\r\n"); goto clear; }
if ((int)(pos + (int)byte_len*2) > idx) { uart1_send_string("Err:len_mismatch\r\n"); goto clear; }
for (k = 0; k < byte_len; k++) {
cmd[k] = hex2byte(line[pos + 2*k], line[pos + 2*k + 1]);
// payload 있는 케이스인데 EOL이면 금지
if (mode == 'E') {
OUT_PRINT(src, "Err:EOL_no_payload\r\n");
return;
}
pos += byte_len*2;
if (pos != idx) { uart1_send_string("Err:len_trail\r\n"); goto clear; }
}
else if (proto == PROTOCOL_OWIR || proto == PROTOCOL_I2CR)
{
if (byte_len == 0) { uart1_send_string("Err:read_len_nonzero\r\n"); goto clear; }
if (pos != idx) { uart1_send_string("Err:read_no_payload\r\n"); goto clear; }
// CAL + payload만 통과: payload를 line 앞으로 당김
for (i = 0; i < rem; i++) line[i] = line[payload_pos + i];
line[rem] = '\0';
idx = rem;
pos = 2;
}
}
// r==0 (prefix 없음): 그냥 아래 일반 커맨드 파싱으로 진행
}
// 3) 최소 길이 체크
if (idx < 7) {
OUT_PRINT(src, "Err:short\r\n");
return;
}
// 4) 프로토콜 판별
{
char h0 = (char)toupper((unsigned char)line[0]);
char h1 = (char)toupper((unsigned char)line[1]);
proto = detect_protocol(h0, h1);
}
if (proto == PROTOCOL_UNKNOWN) {
OUT_PRINT(src, "Err:ID\r\n");
return;
}
// 5) T 모드 처리 (OT/IT 등)
if (line[pos] == 't' || line[pos] == 'T') {
if (proto == PROTOCOL_OWIW) proto = PROTOCOL_OWIT;
else if (proto == PROTOCOL_I2CW) proto = PROTOCOL_I2CT;
pos++;
}
// 6) 구분자 처리
if (line[pos] == '_' || line[pos] == ':') pos++;
// 7) ID (hex 2글자)
if (pos + 1 >= idx) {
OUT_PRINT(src, "Err:id_short\r\n");
return;
}
id = hex2byte(line[pos], line[pos + 1]);
pos += 2;
// 8) 길이(3자리 10진)
if (pos + 2 >= idx ||
!(line[pos] >= '0' && line[pos] <= '9') ||
!(line[pos+1] >= '0' && line[pos+1] <= '9') ||
!(line[pos+2] >= '0' && line[pos+2] <= '9')) {
OUT_PRINT(src, "Err:len_dec\r\n");
return;
}
process_cmd(proto, id, cmd, byte_len);
byte_len = (unsigned int)(100*(line[pos]-'0') + 10*(line[pos+1]-'0') + (line[pos+2]-'0'));
pos += 3;
if (byte_len > CMD_MAX) {
OUT_PRINT(src, "Err:len_range\r\n");
return;
}
// 9) Write 계열: payload(hex) 파싱
if (proto == PROTOCOL_OWIT || proto == PROTOCOL_I2CT ||
proto == PROTOCOL_OWIW || proto == PROTOCOL_I2CW)
{
if (byte_len == 0) {
OUT_PRINT(src, "Err:payload0\r\n");
return;
}
if ((int)(pos + (int)byte_len*2) > idx) {
OUT_PRINT(src, "Err:len_mismatch\r\n");
return;
}
for (k = 0; k < byte_len; k++) {
cmd[k] = hex2byte(line[pos + 2*k], line[pos + 2*k + 1]);
}
pos += (int)byte_len * 2;
if (pos != idx) {
OUT_PRINT(src, "Err:len_trail\r\n");
return;
}
}
// 10) Read 계열: payload 없어야 함
else if (proto == PROTOCOL_OWIR || proto == PROTOCOL_I2CR)
{
if (byte_len == 0) {
OUT_PRINT(src, "Err:read_len_nonzero\r\n");
return;
}
if (pos != idx) {
OUT_PRINT(src, "Err:read_no_payload\r\n");
return;
}
}
// 11) 실제 실행 (prefix 모드 반영)
process_cmd_by_prefix(s_prefix_mode, proto, id, cmd, byte_len);
}
void handle_uart_command_line(void)
{
while (1)
{
// 브릿지 중이면 RS485->PC를 계속 흘려보냄
if (g_rs485_bridge_active) {
RS485_Bridge_DrainToPC();
}
// PC(UART1)
if (uart_rx_done)
{
uart_rx_done = 0;
process_one_line(CMD_SRC_PC, uart_rx_buffer, uart_rx_length);
clear:
idx = 0;
uart_rx_index = 0;
uart_rx_length = 0;
R_UART1_Receive((uint8_t *)&uart_rx_buffer[uart_rx_index], 1);
}
// RS485(UART0)
if (rs485_rx_done)
{
rs485_rx_done = 0;
// 브릿지 중엔 “RS485 라인 커맨드 처리”는 하지 않음(응답 스트리밍 중이니까)
if (!g_rs485_bridge_active) {
process_one_line(CMD_SRC_RS485, rs485_rx_buffer, rs485_rx_length);
}
rs485_rx_index = 0;
rs485_rx_length = 0;
R_UART0_Receive((uint8_t *)&rs485_rx_buffer[rs485_rx_index], 1);
}
}
}
@ -326,6 +689,7 @@ void main(void)
R_UART1_Start(); // PC
R_UART1_Receive((uint8_t *)&uart_rx_buffer[uart_rx_index], 1);
R_UART0_Receive((uint8_t *)&rs485_rx_buffer[rs485_rx_index], 1);
handle_uart_command_line();
@ -352,13 +716,10 @@ void R_MAIN_UserInit(void)
rs485_init();
R_ADC_Create();
R_ADC_Set_OperationOn();
DipSwitch_Init();
g_fixed_addr = DipSwitch_ReadAddr_1to32();
g_fixed_addr = DipSwitch_ReadAddr_0to31();
GateCtrl_Init();
/* End user code. Do not edit comment generated here */
}

4
r_systeminit.c

@ -23,7 +23,7 @@
* Device(s) : R5F10PPJ
* Tool-Chain : CCRL
* Description : This file implements system initializing function.
* Creation Date: 2026-01-13
* Creation Date: 2026-01-21
***********************************************************************************************************************/
/***********************************************************************************************************************
@ -33,7 +33,6 @@ Includes
#include "r_cg_cgc.h"
#include "r_cg_port.h"
#include "r_cg_serial.h"
#include "r_cg_adc.h"
#include "r_cg_wdt.h"
/* Start user code for include. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */
@ -75,7 +74,6 @@ void R_Systeminit(void)
R_SAU0_Create();
R_SAU1_Create();
R_IICA0_Create();
R_ADC_Create();
R_WDT_Create();
/* Set invalid memory access detection control */

60
uart.c

@ -7,8 +7,7 @@
#define RS485_EN_PM PM4
#define RS485_EN_MASK (0x20U) // P4.5
float g_adc_bytes[ADC_NUM_CH] = {0.0f};
uint8_t g_adc_len = 0;
void rs485_set_tx(uint8_t on)
{
@ -123,60 +122,3 @@ void uart1_send_hex(uint8_t val)
/**
* : ADC_ReadAndSend_UART
* : ADC
*
* :
* 1) ADC
* - ADC_NUM_CH
* - : {0x02, 0x03, 0x04, 0x05}
*
* 2)
* for (i = 0; i < ADC_NUM_CH; i++)
* a) ADS
* b) R_ADC_Start()
* c) (ADIF == 1 )
* d) ADIF
* e) : R_ADC_Get_Result(&adc_value)
* f) ADC : R_ADC_Stop()
*
* 3) ADC
* - voltage = (adc_value / ADC_RESOLUTION) * VREF
* - : 12bit ADC, VREF = 5V이면 0~4095 0~5V
*
* 4)
* - g_adc_bytes[i] = voltage
* - g_adc_len
*
* :
* - g_adc_bytes[]:
* - g_adc_len:
*/
void ADC_ReadAndSend_UART(void)
{
static const uint8_t ADC_CHANNELS[ADC_NUM_CH] = { 0x02,0x03,0x04,0x05};
uint16_t adc_value;
float voltage;
int i;
g_adc_len = 0;
for (i = 0; i < ADC_NUM_CH; i++) {
ADS = ADC_CHANNELS[i]; // 채널 선택
R_ADC_Start(); // 변환 시작
while (ADIF == 0U); // 변환 완료 대기
ADIF = 0U;
R_ADC_Get_Result(&adc_value);
R_ADC_Stop();
/* V 계산 */
voltage = (adc_value / ADC_RESOLUTION) * VREF;
g_adc_bytes[i] = voltage;
g_adc_len++;
}
}

18
uart.h

@ -7,18 +7,28 @@
#define ADC_RESOLUTION 1023.0f // 10-bit ADC
#define VREF 5.06f // V
#define ADC_NUM_CH 4
#define RAM_BYTES 13
#define UART_RX_BUF_SIZE 96
#define UART_RX_BUF_SIZE 256
extern float g_adc_bytes[ADC_NUM_CH];
extern uint8_t g_adc_len;
// PC(USB, UART1) 출력 전용
#define PC_PRINT(s) uart1_send_string((s))
#define PC_PRINT_HEX(v) uart1_send_hex((v))
// RS485(UART0) 출력/송신 전용
#define RS485_PRINT(s) uart_send_string((s))
#define RS485_PRINT_HEX(v) uart_send_hex((v))
extern volatile uint8_t uart_rx_done;
extern volatile uint8_t uart_rx_index;
extern volatile uint8_t uart_rx_buffer[UART_RX_BUF_SIZE];
extern volatile uint16_t uart_rx_length;
extern uint8_t g_fixed_addr;
#define HOST_PRINT(s) do { \
if (g_fixed_addr == 0) PC_PRINT(s); \
else RS485_PRINT(s); \
} while(0)
void uart_send_string(const char *str); // UART0(RS485)
void uart_send_hex(uint8_t val); // UART0(RS485)

Loading…
Cancel
Save