mirror of
https://github.com/sergeyyarkov/attiny45v_thermometer.git
synced 2026-10-11 10:19:03 +03:00
show negative numbers
This commit is contained in:
parent
9fae0d671e
commit
7fa07e9e57
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,7 +1,7 @@
|
||||
:1000000013C01AC019C018C017C016C015C014C03C
|
||||
:1000100013C012C011C010C00FC00EC00DC03F06EB
|
||||
:100020005B4F666D7D077F6F11241FBECFE5D1E06A
|
||||
:10003000DEBFCDBF30D11EC3E3CFF894C09AC29AC1
|
||||
:10003000DEBFCDBF4FD148C3E3CFF894C09AC29A78
|
||||
:100040008DE08A95F1F70000C0988DE08A95F1F770
|
||||
:100050000000C29878940895F894C298C0988DE0F2
|
||||
:100060008A95F1F70000C29A8DE08A95F1F70000B9
|
||||
@ -19,87 +19,92 @@
|
||||
:100120000895CF93DF93C82FD62F80E4D8DF85DFE3
|
||||
:100130008D2F806CA0DF8C2F9EDF8EDFDF91CF9123
|
||||
:10014000089562E080E4EDDF61E080E4EADF60E0F2
|
||||
:1001500080E4E7DF089521E08A30910550F021E046
|
||||
:10016000EAE0F0E0BF015FD2CB012F5F6A3071059A
|
||||
:10017000C8F7822F0895AF92BF92CF92DF92EF928D
|
||||
:10018000FF920F931F93CF93DF9300D01F92CDB7B1
|
||||
:10019000DEB7B62EF42E009749F461113BC08C01F6
|
||||
:1001A000883E93407CF007EE13E00CC08C01883E43
|
||||
:1001B00023E0920714F007EE13E099231CF4119545
|
||||
:1001C00001951109C801C7DFA82E2AE030E0C80157
|
||||
:1001D000B9013DD28B83CB01B90139D28A83C801E1
|
||||
:1001E00064E670E034D2CB01B90131D2898331E0C9
|
||||
:1001F000A31691F083E0D82EDA1882E08D15A8F1CD
|
||||
:1002000010E000E0C12C82E090E09C012F19310940
|
||||
:10021000790118C08C01D3CFDA2CF2CFE1E0F0E005
|
||||
:10022000EC0FFD1FED0DF11DE081F0E0E25EFF4FF0
|
||||
:1002300084916C2D76DFD394C3940F5F1F4F82E0BF
|
||||
:100240008D15A0F0E016F10649F733E0A31631F35F
|
||||
:10025000E1E0F0E0EC0FFD1FED0DF11DE081F0E0BD
|
||||
:10026000E25EFF4F84918068E4CFC12CEB2DF0E07B
|
||||
:10027000E25EFF4F84916C2D54DF0F900F900F9032
|
||||
:10028000DF91CF911F910F91FF90EF90DF90CF9072
|
||||
:10029000BF90AF900895CF93DF93CDB7DEB764974B
|
||||
:1002A0000FB6F894DEBF0FBECDBF6BE0CE01019656
|
||||
:1002B000E5D028E042E062E080E019DF42DF04E6BA
|
||||
:1002C00010E001C03EDFCE01019613D18111FACFBB
|
||||
:1002D000CE01019621D18B899C89B801A4D141E03E
|
||||
:1002E00089899A8948DFEFCFF894BC9A8FEB93E025
|
||||
:1002F0000197F1F700C00000BC989AEB9A95F1F7CE
|
||||
:1003000000C086B3E3E3F3E03197F1F700C00000EB
|
||||
:1003100078948295817091E08927089598E00DC0C6
|
||||
:10032000BC9A20EA2A95F1F7BC982AE12A95F1F7C0
|
||||
:1003300000C078948695915069F0F89480FFF0CFD2
|
||||
:10034000BC9A20E12A95F1F7BC982AEA2A95F1F7A0
|
||||
:1003500000C0EFCF089598E080E007C022E92A9519
|
||||
:10036000F1F700C07894915071F0F8948695BC9A9A
|
||||
:1003700020E12A95F1F7BC9828E12A95F1F7B49B82
|
||||
:10038000EDCF8068EBCF0895AFDF811101C00895F4
|
||||
:100390008CECC4DF81E0FBCF0F931F93CF93DF93EF
|
||||
:1003A0008C01A2DF811105C0DF91CF911F910F91C8
|
||||
:1003B000089583E3B3DFE801085F1F4FCCDF899323
|
||||
:1003C000C017D107D9F781E0EFCFFC01680F791F83
|
||||
:1003D00080E02CE80BC08695915029F080FFFBCF80
|
||||
:1003E00086958227F9CFE617F70721F091918927A3
|
||||
:1003F00098E0F4CF0895EF92FF920F931F93CF935D
|
||||
:10040000DF937C01C1DF8EEB89DFE7018701085FA5
|
||||
:100410001F4FA1DF8993C017D107D9F768E070E0BB
|
||||
:10042000C701D3DFC82F97DF91E0C81390E0892F71
|
||||
:10043000DF91CF911F910F91FF90EF90089554DFBE
|
||||
:10044000811101C00895A0DF88E468DF8FE19EE498
|
||||
:100450000197F1F700C0000081E0F4CFCF93DF9364
|
||||
:10046000EC0192DF8EE45ADF888158DF898156DF04
|
||||
:100470008A8154DFE4DFDF91CF910895FF920F93DB
|
||||
:100480001F93CF93DF9300D01F92CDB7DEB78C01BF
|
||||
:10049000F62EB1DFF8018281898383818A83FAE0B5
|
||||
:1004A000FF16B9F08BE0F81689F0E9E0FE16A1F02E
|
||||
:1004B0008FE78B83CE010196D1DF0F900F900F90C5
|
||||
:1004C000DF91CF911F910F91FF9008958FE58B835E
|
||||
:1004D000F1CF8FE38B83EECF8FE18B83EBCF04DF04
|
||||
:1004E000811101C008958CEC19DF84E417DF81E0ED
|
||||
:1004F000F9CFCF93DF93EC01F7DE811104C081E0E7
|
||||
:10050000DF91CF910895CE01089646DF81E098856E
|
||||
:100510009832B1F780E0F4CFCF93DF93EC01DFDFC7
|
||||
:10052000882309F456C02C81822F90E08095909505
|
||||
:1005300080769927892B09F04FC02FE78FE492E14D
|
||||
:10054000215080409040E1F700C00000CE0153DF11
|
||||
:10055000882309F43EC029813881522F432FCA01D4
|
||||
:1005600099230CF45BC095958795959587959595FE
|
||||
:10057000879595958795998B888B287F11F0319574
|
||||
:10058000388388818F70282F30E0C901880F991F28
|
||||
:1005900082959295907F9827807F9827821B930B56
|
||||
:1005A000880F991F880F991F820F931F880F991F1B
|
||||
:1005B000880F991F880F991F9C0199238CF13595FD
|
||||
:1005C00027953595279535952795359527953B8B17
|
||||
:1005D0002A8BDF91CF91089526FF0AC02FEB87E287
|
||||
:1005E00099E0215080409040E1F700C00000AECF7C
|
||||
:1005F00025FF0AC02FEF86E994E02150804090400B
|
||||
:10060000E1F700C00000A2CF2FE78BE492E0215079
|
||||
:1006100080409040E1F700C0000098CF0F96A3CF34
|
||||
:10062000215F3F4FCCCFAA1BBB1B51E107C0AA1FC4
|
||||
:10063000BB1FA617B70710F0A61BB70B881F991F83
|
||||
:100640005A95A9F780959095BC01CD01089597FB27
|
||||
:10065000072E16F4009406D077FD08D0E4DF07FCDF
|
||||
:1006600005D03EF4909581959F4F089570956195C2
|
||||
:080670007F4F0895F894FFCFBD
|
||||
:1001500080E4E7DF0895992384F021E08A30910557
|
||||
:1001600054F021E0EAE0F0E0BF019BD2CB012F5F29
|
||||
:100170006A307105CCF7822F089591958195910988
|
||||
:10018000ECCF9F92AF92BF92CF92DF92EF92FF920D
|
||||
:100190000F931F93CF93DF9300D01F92CDB7DEB79D
|
||||
:1001A000D62EA42EB92EBB1CBB24BB1CB22AE82E13
|
||||
:1001B000F92E88EEE81683E0F80634F00F2EF7EEFD
|
||||
:1001C000EF2EF3E0FF2EF02DBB2009F47BC0F1945D
|
||||
:1001D000E194F108C701BFDFC82E82E011E0C81228
|
||||
:1001E00010E02AE030E0C701B9015BD28B83CB017C
|
||||
:1001F000B90157D28A83C70164E670E052D2CB01BD
|
||||
:10020000B9014FD2898381E0C81679F003E00C1957
|
||||
:10021000033008F041C082E090E07C01EA18F10868
|
||||
:100220006894AA24A7F8912C1AC00C2DF4CF892D1C
|
||||
:10023000B1102AC08A2D28C0E1E0F0E0EC0FFD1FCC
|
||||
:10024000E00FF11DE081F0E0E25EFF4F8491612F4D
|
||||
:1002500068DF1123D9F00F5F1F5F0330E8F41E152C
|
||||
:100260001F0451F783E0C81639F3E1E0F0E0EC0F2A
|
||||
:10027000FD1FE00FF11DE081F0E0E25EFF4FE49131
|
||||
:1002800082E0C816A1F28A2D8E2BE1CFBB2019F394
|
||||
:10029000692D80E446DFDFCFED2DF0E0E25EFF4F19
|
||||
:1002A0008491612F3EDF0F900F900F90DF91CF91DF
|
||||
:1002B0001F910F91FF90EF90DF90CF90BF90AF9084
|
||||
:1002C0009F900895C70147DFC82E82E0C81288CFEB
|
||||
:1002D00010E087CFCF93DF93CDB7DEB765970FB62A
|
||||
:1002E000F894DEBF0FBECDBF6BE0CE010196E6D025
|
||||
:1002F00028E042E062E080E0FADE23DF04E610E07E
|
||||
:1003000001C01FDFCE01019614D18111FACFCE01B9
|
||||
:10031000019622D18B899C89B801AFD12D8941E00A
|
||||
:1003200089899A892EDFEECFF894BC9A8FEB93E0FF
|
||||
:100330000197F1F700C00000BC989AEB9A95F1F78D
|
||||
:1003400000C086B3E3E3F3E03197F1F700C00000AB
|
||||
:1003500078948295817091E08927089598E00DC086
|
||||
:10036000BC9A20EA2A95F1F7BC982AE12A95F1F780
|
||||
:1003700000C078948695915069F0F89480FFF0CF92
|
||||
:10038000BC9A20E12A95F1F7BC982AEA2A95F1F760
|
||||
:1003900000C0EFCF089598E080E007C022E92A95D9
|
||||
:1003A000F1F700C07894915071F0F8948695BC9A5A
|
||||
:1003B00020E12A95F1F7BC9828E12A95F1F7B49B42
|
||||
:1003C000EDCF8068EBCF0895AFDF811101C00895B4
|
||||
:1003D0008CECC4DF81E0FBCF0F931F93CF93DF93AF
|
||||
:1003E0008C01A2DF811105C0DF91CF911F910F9188
|
||||
:1003F000089583E3B3DFE801085F1F4FCCDF8993E3
|
||||
:10040000C017D107D9F781E0EFCFFC01680F791F42
|
||||
:1004100080E02CE80BC08695915029F080FFFBCF3F
|
||||
:1004200086958227F9CFE617F70721F09191892762
|
||||
:1004300098E0F4CF0895EF92FF920F931F93CF931C
|
||||
:10044000DF937C01C1DF8EEB89DFE7018701085F65
|
||||
:100450001F4FA1DF8993C017D107D9F768E070E07B
|
||||
:10046000C701D3DFC82F97DF91E0C81390E0892F31
|
||||
:10047000DF91CF911F910F91FF90EF90089554DF7E
|
||||
:10048000811101C00895A0DF88E468DF8FE19EE458
|
||||
:100490000197F1F700C0000081E0F4CFCF93DF9324
|
||||
:1004A000EC0192DF8EE45ADF888158DF898156DFC4
|
||||
:1004B0008A8154DFE4DFDF91CF910895FF920F939B
|
||||
:1004C0001F93CF93DF9300D01F92CDB7DEB78C017F
|
||||
:1004D000F62EB1DFF8018281898383818A83FAE075
|
||||
:1004E000FF16B9F08BE0F81689F0E9E0FE16A1F0EE
|
||||
:1004F0008FE78B83CE010196D1DF0F900F900F9085
|
||||
:10050000DF91CF911F910F91FF9008958FE58B831D
|
||||
:10051000F1CF8FE38B83EECF8FE18B83EBCF04DFC3
|
||||
:10052000811101C008958CEC19DF84E417DF81E0AC
|
||||
:10053000F9CFCF93DF93EC01F7DE811104C081E0A6
|
||||
:10054000DF91CF910895CE01089646DF81E098852E
|
||||
:100550009832B1F780E0F4CFCF93DF93EC01DFDF87
|
||||
:10056000882309F45DC02C81822F90E080959095BE
|
||||
:1005700080769927892B09F056C02FE73FE482E166
|
||||
:10058000215030408040E1F700C00000CE0153DF31
|
||||
:10059000882309F445C0898190E04881242F382FB1
|
||||
:1005A00033230CF462C035952795359527953595FD
|
||||
:1005B000279535952795398B288B80959095887F41
|
||||
:1005C0009927892B09F054C081E08C8B4195488391
|
||||
:1005D00088818F70282F30E0C901880F991F82957C
|
||||
:1005E0009295907F9827807F9827821B930B880F86
|
||||
:1005F000991F880F991F820F931F880F991F880FCB
|
||||
:10060000991F880F991F9C019923A4F1359527956F
|
||||
:100610003595279535952795359527953B8B2A8BCD
|
||||
:10062000DF91CF91089526FF0AC09FEB27E239E0C2
|
||||
:10063000915020403040E1F700C00000A7CF25FFD7
|
||||
:100640000AC08FEF96E924E0815090402040E1F706
|
||||
:1006500000C000009BCF3FE78BE492E03150804028
|
||||
:100660009040E1F700C0000091CF215F3F4F9BCF4A
|
||||
:100670001C8AAECF215F3F4FC9CFAA1BBB1B51E1E4
|
||||
:1006800007C0AA1FBB1FA617B70710F0A61BB70B02
|
||||
:10069000881F991F5A95A9F780959095BC01CD01A7
|
||||
:1006A000089597FB072E16F4009406D077FD08D026
|
||||
:1006B000E4DF07FC05D03EF4909581959F4F0895A7
|
||||
:0C06C000709561957F4F0895F894FFCF6E
|
||||
:00000001FF
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -195,7 +195,7 @@ END GROUP
|
||||
.rela.plt
|
||||
*(.rela.plt)
|
||||
|
||||
.text 0x0000000000000000 0x678
|
||||
.text 0x0000000000000000 0x6cc
|
||||
*(.vectors)
|
||||
.vectors 0x0000000000000000 0x1e /home/sergeyyarkov/.mchp_packs/Microchip/ATtiny_DFP/3.0.151/gcc/dev/attiny45/avr25/crtattiny45.o
|
||||
0x0000000000000000 __vectors
|
||||
@ -291,64 +291,64 @@ END GROUP
|
||||
0x0000000000000142 0x14 build/default/production/main.o
|
||||
0x0000000000000142 TM1637_DisplayLine
|
||||
.text.get_int_length
|
||||
0x0000000000000156 0x20 build/default/production/main.o
|
||||
0x0000000000000156 0x2c build/default/production/main.o
|
||||
0x0000000000000156 get_int_length
|
||||
.text.TM1637_DisplayFixedNum
|
||||
0x0000000000000176 0x120 build/default/production/main.o
|
||||
0x0000000000000176 TM1637_DisplayFixedNum
|
||||
.text.main 0x0000000000000296 0x52 build/default/production/main.o
|
||||
0x0000000000000296 main
|
||||
0x0000000000000182 0x152 build/default/production/main.o
|
||||
0x0000000000000182 TM1637_DisplayFixedNum
|
||||
.text.main 0x00000000000002d4 0x54 build/default/production/main.o
|
||||
0x00000000000002d4 main
|
||||
.text.OneWire_Presence
|
||||
0x00000000000002e8 0x34 build/default/production/onewire.o
|
||||
0x00000000000002e8 OneWire_Presence
|
||||
0x0000000000000328 0x34 build/default/production/onewire.o
|
||||
0x0000000000000328 OneWire_Presence
|
||||
.text.OneWire_WriteByte
|
||||
0x000000000000031c 0x3a build/default/production/onewire.o
|
||||
0x000000000000031c OneWire_WriteByte
|
||||
0x000000000000035c 0x3a build/default/production/onewire.o
|
||||
0x000000000000035c OneWire_WriteByte
|
||||
.text.OneWire_ReadByte
|
||||
0x0000000000000356 0x32 build/default/production/onewire.o
|
||||
0x0000000000000356 OneWire_ReadByte
|
||||
0x0000000000000396 0x32 build/default/production/onewire.o
|
||||
0x0000000000000396 OneWire_ReadByte
|
||||
.text.OneWire_SkipROM
|
||||
0x0000000000000388 0x10 build/default/production/onewire.o
|
||||
0x0000000000000388 OneWire_SkipROM
|
||||
0x00000000000003c8 0x10 build/default/production/onewire.o
|
||||
0x00000000000003c8 OneWire_SkipROM
|
||||
.text.OneWire_ReadROM
|
||||
0x0000000000000398 0x32 build/default/production/onewire.o
|
||||
0x0000000000000398 OneWire_ReadROM
|
||||
0x00000000000003d8 0x32 build/default/production/onewire.o
|
||||
0x00000000000003d8 OneWire_ReadROM
|
||||
.text.OneWire_CRC8_Update
|
||||
0x00000000000003ca 0x2c build/default/production/onewire.o
|
||||
0x00000000000003ca OneWire_CRC8_Update
|
||||
0x000000000000040a 0x2c build/default/production/onewire.o
|
||||
0x000000000000040a OneWire_CRC8_Update
|
||||
.text.DallasTemp_ReadScratchpad
|
||||
0x00000000000003f6 0x48 build/default/production/dstemperature.o
|
||||
0x00000000000003f6 DallasTemp_ReadScratchpad
|
||||
0x0000000000000436 0x48 build/default/production/dstemperature.o
|
||||
0x0000000000000436 DallasTemp_ReadScratchpad
|
||||
.text.DallasTemp_CopyScratchpad
|
||||
0x000000000000043e 0x1e build/default/production/dstemperature.o
|
||||
0x000000000000043e DallasTemp_CopyScratchpad
|
||||
0x000000000000047e 0x1e build/default/production/dstemperature.o
|
||||
0x000000000000047e DallasTemp_CopyScratchpad
|
||||
.text.DallasTemp_WriteScratchpad
|
||||
0x000000000000045c 0x20 build/default/production/dstemperature.o
|
||||
0x000000000000045c DallasTemp_WriteScratchpad
|
||||
0x000000000000049c 0x20 build/default/production/dstemperature.o
|
||||
0x000000000000049c DallasTemp_WriteScratchpad
|
||||
.text.DallasTemp_SetResolution
|
||||
0x000000000000047c 0x62 build/default/production/dstemperature.o
|
||||
0x000000000000047c DallasTemp_SetResolution
|
||||
0x00000000000004bc 0x62 build/default/production/dstemperature.o
|
||||
0x00000000000004bc DallasTemp_SetResolution
|
||||
.text.DallasTemp_Convert
|
||||
0x00000000000004de 0x14 build/default/production/dstemperature.o
|
||||
0x00000000000004de DallasTemp_Convert
|
||||
0x000000000000051e 0x14 build/default/production/dstemperature.o
|
||||
0x000000000000051e DallasTemp_Convert
|
||||
.text.DallasTemp_CheckError
|
||||
0x00000000000004f2 0x26 build/default/production/dstemperature.o
|
||||
0x00000000000004f2 DallasTemp_CheckError
|
||||
0x0000000000000532 0x26 build/default/production/dstemperature.o
|
||||
0x0000000000000532 DallasTemp_CheckError
|
||||
.text.DallasTemp_GetTemperature
|
||||
0x0000000000000518 0x10e build/default/production/dstemperature.o
|
||||
0x0000000000000518 DallasTemp_GetTemperature
|
||||
0x0000000000000558 0x122 build/default/production/dstemperature.o
|
||||
0x0000000000000558 DallasTemp_GetTemperature
|
||||
.text.libgcc.div
|
||||
0x0000000000000626 0x28 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_udivmodhi4.o)
|
||||
0x0000000000000626 __udivmodhi4
|
||||
0x000000000000067a 0x28 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_udivmodhi4.o)
|
||||
0x000000000000067a __udivmodhi4
|
||||
.text.libgcc.div
|
||||
0x000000000000064e 0x26 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_divmodhi4.o)
|
||||
0x000000000000064e __divmodhi4
|
||||
0x000000000000064e _div
|
||||
0x0000000000000674 . = ALIGN (0x2)
|
||||
0x00000000000006a2 0x26 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_divmodhi4.o)
|
||||
0x00000000000006a2 __divmodhi4
|
||||
0x00000000000006a2 _div
|
||||
0x00000000000006c8 . = ALIGN (0x2)
|
||||
*(.fini9)
|
||||
.fini9 0x0000000000000674 0x0 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_exit.o)
|
||||
0x0000000000000674 exit
|
||||
0x0000000000000674 _exit
|
||||
.fini9 0x00000000000006c8 0x0 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_exit.o)
|
||||
0x00000000000006c8 exit
|
||||
0x00000000000006c8 _exit
|
||||
*(.fini9)
|
||||
*(.fini8)
|
||||
*(.fini8)
|
||||
@ -367,11 +367,11 @@ END GROUP
|
||||
*(.fini1)
|
||||
*(.fini1)
|
||||
*(.fini0)
|
||||
.fini0 0x0000000000000674 0x4 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_exit.o)
|
||||
.fini0 0x00000000000006c8 0x4 /opt/avr8-gnu-toolchain-linux_x86_64/bin/../lib/gcc/avr/7.3.0/avr25/libgcc.a(_exit.o)
|
||||
*(.fini0)
|
||||
0x0000000000000678 _etext = .
|
||||
0x00000000000006cc _etext = .
|
||||
|
||||
.data 0x0000000000800060 0x0 load address 0x0000000000000678
|
||||
.data 0x0000000000800060 0x0 load address 0x00000000000006cc
|
||||
[!provide] PROVIDE (__data_start, .)
|
||||
*(.data)
|
||||
*(.data*)
|
||||
@ -389,8 +389,8 @@ END GROUP
|
||||
*(.bss*)
|
||||
*(COMMON)
|
||||
[!provide] PROVIDE (__bss_end, .)
|
||||
0x0000000000000678 __data_load_start = LOADADDR (.data)
|
||||
0x0000000000000678 __data_load_end = (__data_load_start + SIZEOF (.data))
|
||||
0x00000000000006cc __data_load_start = LOADADDR (.data)
|
||||
0x00000000000006cc __data_load_end = (__data_load_start + SIZEOF (.data))
|
||||
|
||||
.noinit 0x0000000000800060 0x0
|
||||
[!provide] PROVIDE (__noinit_start, .)
|
||||
|
||||
@ -98,10 +98,20 @@ void DallasTemp_GetTemperature(DallasSensor *Sensor) {
|
||||
* Двойное дополнение для дробной части если минусовая температура:
|
||||
* проверяем что последние пять битов в старшем байте температуры стоят в единице
|
||||
*/
|
||||
if (Sensor->SCRATCHPAD[1] & 0xf8) Sensor->SCRATCHPAD[0] = -Sensor->SCRATCHPAD[0];
|
||||
if (!(~Sensor->SCRATCHPAD[1] & 0xf8)) {
|
||||
Sensor->T_NEGATIVE = 1;
|
||||
Sensor->SCRATCHPAD[0] = -Sensor->SCRATCHPAD[0];
|
||||
} else {
|
||||
Sensor->T_NEGATIVE = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получаем дробную часть через битовую маску 0x0f, умножаем для получения точности.
|
||||
*/
|
||||
Sensor->TEMPERATURE_FRACTION = ((Sensor->SCRATCHPAD[0] & 0x0f) * 1000) / 16;
|
||||
}
|
||||
}
|
||||
|
||||
//float DallasTemp_GetFloatTemperature(DallasSensor *Sensor) {
|
||||
// DallasTemp_GetTemperature(Sensor);
|
||||
// return (float)((float)Sensor->TEMPERATURE + ((float)Sensor->TEMPERATURE_FRACTION / 1000));
|
||||
//}
|
||||
@ -6,6 +6,11 @@
|
||||
#define DS18B20_CMD_CPSCRATCHPAD 0x48
|
||||
#define DS18B20_CONST_FAMILY_CODE 0x28
|
||||
|
||||
#define DS_TEMP_ADC_RESOLUTION_12 12
|
||||
#define DS_TEMP_ADC_RESOLUTION_11 11
|
||||
#define DS_TEMP_ADC_RESOLUTION_10 10
|
||||
#define DS_TEMP_ADC_RESOLUTION_9 9
|
||||
|
||||
#ifndef DSTEMPERATURE_H
|
||||
#define DSTEMPERATURE_H
|
||||
|
||||
@ -14,6 +19,7 @@ typedef struct DallasSensor {
|
||||
uint8_t ROM[8]; // ПЗУ (код семейства, серийный код, CRC8)
|
||||
int16_t TEMPERATURE; // Температура в градусах цельсия (целая часть)
|
||||
uint16_t TEMPERATURE_FRACTION; // Дробная часть
|
||||
uint8_t T_NEGATIVE;
|
||||
} DallasSensor;
|
||||
|
||||
// TODO сделать чтобы все работало с несколькими датчиками а не с одним (выполнять команду skiprom если один датчик, иначе выбирать к какому датчику обращаться)
|
||||
@ -56,10 +62,17 @@ void DallasTemp_SetResolution(DallasSensor *Sensor, uint8_t r);
|
||||
|
||||
/**
|
||||
* Получает оцифрованное значение датчика и конвертирует занчение в читаемый вид.
|
||||
* @param Sensor - датчика
|
||||
* @param Sensor - датчик
|
||||
*/
|
||||
void DallasTemp_GetTemperature(DallasSensor *Sensor);
|
||||
|
||||
/**
|
||||
* Преобразует целую и дробную часть в тип числа с плавающей точкой
|
||||
* @param Sensor - датчик
|
||||
* @return Возвращает температуру
|
||||
*/
|
||||
//float DallasTemp_GetFloatTemperature(DallasSensor *Sensor);
|
||||
|
||||
/**
|
||||
* Читает семейный код датчика и проверяет его правильность
|
||||
* @param Sensor - датчик
|
||||
|
||||
37
main.c
37
main.c
@ -164,7 +164,7 @@ void TM1637_DisplayInt(int16_t num) {
|
||||
|
||||
if (is_signed) {
|
||||
tmp = -tmp;
|
||||
TM1637_DisplaySymbol(0x40, 0); // sign symbol
|
||||
TM1637_DisplaySymbol(0x40, 0);
|
||||
}
|
||||
|
||||
do {
|
||||
@ -174,8 +174,9 @@ void TM1637_DisplayInt(int16_t num) {
|
||||
} while (--i);
|
||||
}
|
||||
|
||||
uint8_t get_int_length(uint16_t num) {
|
||||
uint8_t get_int_length(int16_t num) {
|
||||
uint8_t l = 1;
|
||||
if (num < 0) num = -num;
|
||||
while (num > 9) {
|
||||
num /= 10;
|
||||
l++;
|
||||
@ -183,10 +184,8 @@ uint8_t get_int_length(uint16_t num) {
|
||||
return l;
|
||||
}
|
||||
|
||||
|
||||
// TODO сделать отображение минусовой температуры для этой функции
|
||||
void TM1637_DisplayFixedNum(int16_t num, uint8_t frac, uint8_t presicion) {
|
||||
uint8_t is_signed = (num < 0) | (num == 0 && frac > 0);
|
||||
void TM1637_DisplayFixedNum(int16_t num, uint8_t frac, uint8_t presicion, uint8_t sign) {
|
||||
uint8_t is_signed = (num < 0) | (sign);
|
||||
num = num > 999 ? 999 : num;
|
||||
|
||||
if (is_signed) {
|
||||
@ -194,7 +193,8 @@ void TM1637_DisplayFixedNum(int16_t num, uint8_t frac, uint8_t presicion) {
|
||||
}
|
||||
|
||||
uint8_t length = get_int_length(num);
|
||||
uint8_t i = TM1637_DIGITS_COUNT, j = 0;
|
||||
uint8_t is_overflow = length + 1 == TM1637_DIGITS_COUNT;
|
||||
uint8_t i = TM1637_DIGITS_COUNT, j = is_overflow && is_signed ? 1 : 0;
|
||||
uint8_t buffer[TM1637_DIGITS_COUNT];
|
||||
|
||||
do {
|
||||
@ -209,19 +209,17 @@ void TM1637_DisplayFixedNum(int16_t num, uint8_t frac, uint8_t presicion) {
|
||||
}
|
||||
|
||||
while (i < TM1637_DIGITS_COUNT) {
|
||||
// if (j == 0) {
|
||||
//// if (is_signed) {
|
||||
//// TM1637_DisplaySymbol(0x40, 0);
|
||||
//// }
|
||||
// i++;
|
||||
// j++;
|
||||
// continue;
|
||||
// }
|
||||
TM1637_DisplaySymbol(
|
||||
(j == TM1637_DIGITS_COUNT - 1 - presicion && TM1637_DIGITS_COUNT != length)
|
||||
? get_symbol(buffer[i]) | 0x80 // точка
|
||||
? get_symbol(buffer[i]) | (is_overflow && is_signed ? 0 : 0x80) // точка
|
||||
: get_symbol(buffer[i]),
|
||||
j);
|
||||
|
||||
if (j == 0) {
|
||||
if (is_signed) {
|
||||
TM1637_DisplaySymbol(0x40, 0);
|
||||
}
|
||||
}
|
||||
i++;
|
||||
j++;
|
||||
}
|
||||
@ -231,12 +229,11 @@ void TM1637_DisplayFixedNum(int16_t num, uint8_t frac, uint8_t presicion) {
|
||||
|
||||
int main(void) {
|
||||
DallasSensor Sensor_01;
|
||||
|
||||
DallasTemp_SetResolution(&Sensor_01, 11);
|
||||
DallasTemp_SetResolution(&Sensor_01, DS_TEMP_ADC_RESOLUTION_11);
|
||||
|
||||
TM1637_Init(PORT_TWI_DIO, PORT_TWI_CLK, TM1637_BRIGHTNESS_2, TM1637_DISP_ON);
|
||||
TM1637_DisplayLine();
|
||||
|
||||
|
||||
while (1) {
|
||||
/**
|
||||
* Проверка датчика
|
||||
@ -250,7 +247,7 @@ int main(void) {
|
||||
* Получение температуры и вывод на индикатор
|
||||
*/
|
||||
DallasTemp_GetTemperature(&Sensor_01);
|
||||
TM1637_DisplayFixedNum(Sensor_01.TEMPERATURE, Sensor_01.TEMPERATURE_FRACTION / 100, 1);
|
||||
TM1637_DisplayFixedNum(Sensor_01.TEMPERATURE, Sensor_01.TEMPERATURE_FRACTION / 100, 1, Sensor_01.T_NEGATIVE);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user