Subversion Repositories HomeAutomation

Rev

Blame | Last modification | View Log | SVN | RSS feed

   1                    .file   "sns_ds18x20.c"
   2                    .arch atmega168
   3                __SREG__ = 0x3f
   4                __SP_H__ = 0x3e
   5                __SP_L__ = 0x3d
   6                __tmp_reg__ = 0
   7                __zero_reg__ = 1
   8                    .global __do_copy_data
   9                    .global __do_clear_bss
  11                    .text
  12                .Ltext0:
 104                .global ReadTemperature_callback
 106                ReadTemperature_callback:
   1:../modules/sns_ds18x20/sns_ds18x20.c **** 
   2:../modules/sns_ds18x20/sns_ds18x20.c **** #include "sns_ds18x20.h"
   3:../modules/sns_ds18x20/sns_ds18x20.c **** 
   4:../modules/sns_ds18x20/sns_ds18x20.c **** void ConvertTemperature(void);
   5:../modules/sns_ds18x20/sns_ds18x20.c **** void ConvertTemperature_callback(uint8_t timer);
   6:../modules/sns_ds18x20/sns_ds18x20.c **** void ReadTemperature(void);
   7:../modules/sns_ds18x20/sns_ds18x20.c **** void ReadTemperature_callback(uint8_t timer);
   8:../modules/sns_ds18x20/sns_ds18x20.c **** 
   9:../modules/sns_ds18x20/sns_ds18x20.c **** uint8_t NumberOfSensors;
  10:../modules/sns_ds18x20/sns_ds18x20.c **** uint16_t SensorIds[] = {0, 0, 0, 0};
  11:../modules/sns_ds18x20/sns_ds18x20.c **** 
  12:../modules/sns_ds18x20/sns_ds18x20.c **** //flags, used to start different tasks in the main loop, used instead of claculating long tasks in 
  13:../modules/sns_ds18x20/sns_ds18x20.c **** uint8_t FlagReadTemperature, FlagConvertTemperature, FlagSearchSensors;
  14:../modules/sns_ds18x20/sns_ds18x20.c **** 
  15:../modules/sns_ds18x20/sns_ds18x20.c **** void ReadTemperature_callback(uint8_t timer)
  16:../modules/sns_ds18x20/sns_ds18x20.c **** {
 108                .LM0:
 109                /* prologue: frame size=0 */
 110                /* prologue end (size=0) */
  17:../modules/sns_ds18x20/sns_ds18x20.c ****  FlagReadTemperature = 1;
 112                .LM1:
 113 0000 81E0              ldi r24,lo8(1)
 114 0002 8093 0000         sts FlagReadTemperature,r24
 115                /* epilogue: frame size=0 */
 116 0006 0895              ret
 117                /* epilogue end (size=1) */
 118                /* function ReadTemperature_callback size 4 (3) */
 120                .Lscope0:
 123                .global ConvertTemperature_callback
 125                ConvertTemperature_callback:
  18:../modules/sns_ds18x20/sns_ds18x20.c **** }
  19:../modules/sns_ds18x20/sns_ds18x20.c **** 
  20:../modules/sns_ds18x20/sns_ds18x20.c **** void ReadTemperature(void)
  21:../modules/sns_ds18x20/sns_ds18x20.c **** {
  22:../modules/sns_ds18x20/sns_ds18x20.c ****  static uint8_t SearchSensorsTimeout = sns_ds18x20_SEARCH_TIMEOUT;
  23:../modules/sns_ds18x20/sns_ds18x20.c ****  static uint8_t CurrentSensor = 0;
  24:../modules/sns_ds18x20/sns_ds18x20.c ****  uint8_t subzero, cel, cel_frac_bits = 0;
  25:../modules/sns_ds18x20/sns_ds18x20.c ****  StdCan_Msg_t txMsg;
  26:../modules/sns_ds18x20/sns_ds18x20.c **** 
  27:../modules/sns_ds18x20/sns_ds18x20.c ****  StdCan_Set_class(txMsg, CAN_MODULE_SNS);
  28:../modules/sns_ds18x20/sns_ds18x20.c ****  StdCan_Set_direction(txMsg, OWNER);
  29:../modules/sns_ds18x20/sns_ds18x20.c ****  txMsg.Header.ModuleType = MODULE_TYPE_sns_ds18x20;
  30:../modules/sns_ds18x20/sns_ds18x20.c ****  txMsg.Header.ModuleId = sns_ds18x20_ID;
  31:../modules/sns_ds18x20/sns_ds18x20.c ****  txMsg.Header.Command = SNS_CMD_TEMPERATURE_CELSIUS;
  32:../modules/sns_ds18x20/sns_ds18x20.c ****  txMsg.Length = 3;
  33:../modules/sns_ds18x20/sns_ds18x20.c **** 
  34:../modules/sns_ds18x20/sns_ds18x20.c ****  txMsg.Data[0] = SensorIds[CurrentSensor];
  35:../modules/sns_ds18x20/sns_ds18x20.c **** 
  36:../modules/sns_ds18x20/sns_ds18x20.c ****  if (DS18X20_read_meas(&gSensorIDs[CurrentSensor][0], &subzero, &cel, &cel_frac_bits) == DS18X20_OK
  37:../modules/sns_ds18x20/sns_ds18x20.c ****  {
  38:../modules/sns_ds18x20/sns_ds18x20.c ****      if (subzero)
  39:../modules/sns_ds18x20/sns_ds18x20.c ****      {
  40:../modules/sns_ds18x20/sns_ds18x20.c ****          txMsg.Data[1] = -cel-1;
  41:../modules/sns_ds18x20/sns_ds18x20.c ****          txMsg.Data[2] = ~(cel_frac_bits<<4);
  42:../modules/sns_ds18x20/sns_ds18x20.c ****      }
  43:../modules/sns_ds18x20/sns_ds18x20.c ****      else
  44:../modules/sns_ds18x20/sns_ds18x20.c ****      {
  45:../modules/sns_ds18x20/sns_ds18x20.c ****          txMsg.Data[1] = cel;
  46:../modules/sns_ds18x20/sns_ds18x20.c ****          txMsg.Data[2] = (cel_frac_bits<<4);
  47:../modules/sns_ds18x20/sns_ds18x20.c ****      }
  48:../modules/sns_ds18x20/sns_ds18x20.c ****  }
  49:../modules/sns_ds18x20/sns_ds18x20.c ****  /* send txMsg */
  50:../modules/sns_ds18x20/sns_ds18x20.c **** 
  51:../modules/sns_ds18x20/sns_ds18x20.c ****  StdCan_Put(&txMsg);
  52:../modules/sns_ds18x20/sns_ds18x20.c **** 
  53:../modules/sns_ds18x20/sns_ds18x20.c ****  CurrentSensor++;
  54:../modules/sns_ds18x20/sns_ds18x20.c ****  if (CurrentSensor < NumberOfSensors)
  55:../modules/sns_ds18x20/sns_ds18x20.c ****      Timer_SetTimeout(sns_ds18x20_TIMER, sns_ds18x20_SEND_DELAY, TimerTypeOneShot, &ReadTemperature_ca
  56:../modules/sns_ds18x20/sns_ds18x20.c ****  else
  57:../modules/sns_ds18x20/sns_ds18x20.c ****  {
  58:../modules/sns_ds18x20/sns_ds18x20.c ****      SearchSensorsTimeout--;
  59:../modules/sns_ds18x20/sns_ds18x20.c ****      if (SearchSensorsTimeout == 0)
  60:../modules/sns_ds18x20/sns_ds18x20.c ****      {
  61:../modules/sns_ds18x20/sns_ds18x20.c ****          SearchSensorsTimeout = sns_ds18x20_SEARCH_TIMEOUT;
  62:../modules/sns_ds18x20/sns_ds18x20.c ****          FlagSearchSensors = 1;
  63:../modules/sns_ds18x20/sns_ds18x20.c ****      }
  64:../modules/sns_ds18x20/sns_ds18x20.c ****      
  65:../modules/sns_ds18x20/sns_ds18x20.c ****      CurrentSensor = 0;
  66:../modules/sns_ds18x20/sns_ds18x20.c **** 
  67:../modules/sns_ds18x20/sns_ds18x20.c ****      Timer_SetTimeout(sns_ds18x20_TIMER, sns_ds18x20_SEND_PERIOD , TimerTypeOneShot, &ConvertTemperatu
  68:../modules/sns_ds18x20/sns_ds18x20.c ****  }
  69:../modules/sns_ds18x20/sns_ds18x20.c **** }
  70:../modules/sns_ds18x20/sns_ds18x20.c **** 
  71:../modules/sns_ds18x20/sns_ds18x20.c **** void ConvertTemperature_callback(uint8_t timer)
  72:../modules/sns_ds18x20/sns_ds18x20.c **** {
 127                .LM2:
 128                /* prologue: frame size=0 */
 129                /* prologue end (size=0) */
  73:../modules/sns_ds18x20/sns_ds18x20.c ****  FlagConvertTemperature = 1;
 131                .LM3:
 132 0008 81E0              ldi r24,lo8(1)
 133 000a 8093 0000         sts FlagConvertTemperature,r24
 134                /* epilogue: frame size=0 */
 135 000e 0895              ret
 136                /* epilogue end (size=1) */
 137                /* function ConvertTemperature_callback size 4 (3) */
 139                .Lscope1:
 142                .global sns_ds18x20_HandleMessage
 144                sns_ds18x20_HandleMessage:
  74:../modules/sns_ds18x20/sns_ds18x20.c **** }
  75:../modules/sns_ds18x20/sns_ds18x20.c **** 
  76:../modules/sns_ds18x20/sns_ds18x20.c **** void ConvertTemperature(void)
  77:../modules/sns_ds18x20/sns_ds18x20.c **** {
  78:../modules/sns_ds18x20/sns_ds18x20.c ****  if (DS18X20_start_meas(DS18X20_POWER_PARASITE, NULL) == DS18X20_OK)
  79:../modules/sns_ds18x20/sns_ds18x20.c ****  {
  80:../modules/sns_ds18x20/sns_ds18x20.c ****      Timer_SetTimeout(sns_ds18x20_TIMER, DS18B20_TCONV_12BIT, TimerTypeOneShot, &ReadTemperature_callb
  81:../modules/sns_ds18x20/sns_ds18x20.c ****  }
  82:../modules/sns_ds18x20/sns_ds18x20.c **** }
  83:../modules/sns_ds18x20/sns_ds18x20.c **** 
  84:../modules/sns_ds18x20/sns_ds18x20.c **** 
  85:../modules/sns_ds18x20/sns_ds18x20.c **** void sns_ds18x20_Init(void)
  86:../modules/sns_ds18x20/sns_ds18x20.c **** {
  87:../modules/sns_ds18x20/sns_ds18x20.c ****  /* Make sure there is no more then 4 sensors. */
  88:../modules/sns_ds18x20/sns_ds18x20.c ****  NumberOfSensors = search_sensors();
  89:../modules/sns_ds18x20/sns_ds18x20.c ****  
  90:../modules/sns_ds18x20/sns_ds18x20.c ****  Timer_SetTimeout(sns_ds18x20_TIMER, sns_ds18x20_SEND_PERIOD , TimerTypeFreeRunning, &ConvertTemper
  91:../modules/sns_ds18x20/sns_ds18x20.c ****  
  92:../modules/sns_ds18x20/sns_ds18x20.c **** }
  93:../modules/sns_ds18x20/sns_ds18x20.c **** 
  94:../modules/sns_ds18x20/sns_ds18x20.c **** void sns_ds18x20_Process(void)
  95:../modules/sns_ds18x20/sns_ds18x20.c **** {
  96:../modules/sns_ds18x20/sns_ds18x20.c ****  if (FlagConvertTemperature)
  97:../modules/sns_ds18x20/sns_ds18x20.c ****  {
  98:../modules/sns_ds18x20/sns_ds18x20.c ****      ConvertTemperature();
  99:../modules/sns_ds18x20/sns_ds18x20.c ****      FlagConvertTemperature = 0;
 100:../modules/sns_ds18x20/sns_ds18x20.c ****  }
 101:../modules/sns_ds18x20/sns_ds18x20.c **** 
 102:../modules/sns_ds18x20/sns_ds18x20.c ****  if (FlagSearchSensors)
 103:../modules/sns_ds18x20/sns_ds18x20.c ****  {
 104:../modules/sns_ds18x20/sns_ds18x20.c ****      NumberOfSensors = search_sensors();
 105:../modules/sns_ds18x20/sns_ds18x20.c ****      uint8_t i, j;
 106:../modules/sns_ds18x20/sns_ds18x20.c **** 
 107:../modules/sns_ds18x20/sns_ds18x20.c ****      for(i = 0; i < NumberOfSensors; i++)
 108:../modules/sns_ds18x20/sns_ds18x20.c ****      {
 109:../modules/sns_ds18x20/sns_ds18x20.c ****          SensorIds[i] = 0;
 110:../modules/sns_ds18x20/sns_ds18x20.c ****          for (j = 0; j < 7; j++)
 111:../modules/sns_ds18x20/sns_ds18x20.c ****          {
 112:../modules/sns_ds18x20/sns_ds18x20.c ****              SensorIds[i] ^= gSensorIDs[i][j];   
 113:../modules/sns_ds18x20/sns_ds18x20.c ****          }
 114:../modules/sns_ds18x20/sns_ds18x20.c ****      }
 115:../modules/sns_ds18x20/sns_ds18x20.c ****      FlagSearchSensors = 0;
 116:../modules/sns_ds18x20/sns_ds18x20.c ****  }
 117:../modules/sns_ds18x20/sns_ds18x20.c **** 
 118:../modules/sns_ds18x20/sns_ds18x20.c ****  if (FlagReadTemperature)
 119:../modules/sns_ds18x20/sns_ds18x20.c ****  {
 120:../modules/sns_ds18x20/sns_ds18x20.c ****      ReadTemperature();
 121:../modules/sns_ds18x20/sns_ds18x20.c ****      FlagReadTemperature = 0;
 122:../modules/sns_ds18x20/sns_ds18x20.c ****  }
 123:../modules/sns_ds18x20/sns_ds18x20.c **** }
 124:../modules/sns_ds18x20/sns_ds18x20.c **** 
 125:../modules/sns_ds18x20/sns_ds18x20.c **** 
 126:../modules/sns_ds18x20/sns_ds18x20.c **** void sns_ds18x20_HandleMessage(StdCan_Msg_t *rxMsg)
 127:../modules/sns_ds18x20/sns_ds18x20.c **** {
 146                .LM4:
 147                /* prologue: frame size=0 */
 148                /* prologue end (size=0) */
 149                /* epilogue: frame size=0 */
 150 0010 0895              ret
 151                /* epilogue end (size=1) */
 152                /* function sns_ds18x20_HandleMessage size 1 (0) */
 154                .Lscope2:
 157                .global sns_ds18x20_List
 159                sns_ds18x20_List:
 128:../modules/sns_ds18x20/sns_ds18x20.c **** }
 129:../modules/sns_ds18x20/sns_ds18x20.c **** 
 130:../modules/sns_ds18x20/sns_ds18x20.c **** void sns_ds18x20_List(uint8_t ModuleSequenceNumber)
 131:../modules/sns_ds18x20/sns_ds18x20.c **** {
 161                .LM5:
 162                /* prologue: frame size=13 */
 163 0012 CF93              push r28
 164 0014 DF93              push r29
 165 0016 CDB7              in r28,__SP_L__
 166 0018 DEB7              in r29,__SP_H__
 167 001a 2D97              sbiw r28,13
 168 001c 0FB6              in __tmp_reg__,__SREG__
 169 001e F894              cli
 170 0020 DEBF              out __SP_H__,r29
 171 0022 0FBE              out __SREG__,__tmp_reg__
 172 0024 CDBF              out __SP_L__,r28
 173                /* prologue end (size=10) */
 132:../modules/sns_ds18x20/sns_ds18x20.c ****  StdCan_Msg_t txMsg;
 133:../modules/sns_ds18x20/sns_ds18x20.c ****  
 134:../modules/sns_ds18x20/sns_ds18x20.c ****  StdCan_Set_class(txMsg, CAN_MODULE_SNS);
 135:../modules/sns_ds18x20/sns_ds18x20.c ****  StdCan_Set_direction(txMsg, OWNER);
 175                .LM6:
 176 0026 9BE1              ldi r25,lo8(27)
 177 0028 9C83              std Y+4,r25
 136:../modules/sns_ds18x20/sns_ds18x20.c ****  txMsg.Header.ModuleType = MODULE_TYPE_sns_ds18x20;
 179                .LM7:
 180 002a 93E0              ldi r25,lo8(3)
 181 002c 9B83              std Y+3,r25
 137:../modules/sns_ds18x20/sns_ds18x20.c ****  txMsg.Header.ModuleId = sns_ds18x20_ID;
 183                .LM8:
 184 002e 21E0              ldi r18,lo8(1)
 185 0030 2A83              std Y+2,r18
 138:../modules/sns_ds18x20/sns_ds18x20.c ****  txMsg.Header.Command = CMD_LIST;
 187                .LM9:
 188 0032 1982              std Y+1,__zero_reg__
 139:../modules/sns_ds18x20/sns_ds18x20.c ****  txMsg.Length = 6;
 190                .LM10:
 191 0034 96E0              ldi r25,lo8(6)
 192 0036 9D83              std Y+5,r25
 140:../modules/sns_ds18x20/sns_ds18x20.c **** 
 141:../modules/sns_ds18x20/sns_ds18x20.c ****  txMsg.Data[3] = NODE_HW_ID&0xff;
 194                .LM11:
 195 0038 9FE1              ldi r25,lo8(31)
 196 003a 9987              std Y+9,r25
 142:../modules/sns_ds18x20/sns_ds18x20.c ****  txMsg.Data[2] = (NODE_HW_ID>>8)&0xff;
 198                .LM12:
 199 003c 9BE0              ldi r25,lo8(11)
 200 003e 9887              std Y+8,r25
 143:../modules/sns_ds18x20/sns_ds18x20.c ****  txMsg.Data[1] = (NODE_HW_ID>>16)&0xff;
 202                .LM13:
 203 0040 90E9              ldi r25,lo8(-112)
 204 0042 9F83              std Y+7,r25
 144:../modules/sns_ds18x20/sns_ds18x20.c ****  txMsg.Data[0] = (NODE_HW_ID>>24)&0xff;
 206                .LM14:
 207 0044 97EB              ldi r25,lo8(-73)
 208 0046 9E83              std Y+6,r25
 145:../modules/sns_ds18x20/sns_ds18x20.c ****  
 146:../modules/sns_ds18x20/sns_ds18x20.c ****  txMsg.Data[4] = NUMBEROFMODULES;
 210                .LM15:
 211 0048 2A87              std Y+10,r18
 147:../modules/sns_ds18x20/sns_ds18x20.c ****  txMsg.Data[5] = ModuleSequenceNumber;
 213                .LM16:
 214 004a 8B87              std Y+11,r24
 148:../modules/sns_ds18x20/sns_ds18x20.c ****  
 149:../modules/sns_ds18x20/sns_ds18x20.c ****  StdCan_Put(&txMsg);
 216                .LM17:
 217 004c CE01              movw r24,r28
 218 004e 0196              adiw r24,1
 219 0050 0E94 0000         call StdCan_Put
 220                /* epilogue: frame size=13 */
 221 0054 2D96              adiw r28,13
 222 0056 0FB6              in __tmp_reg__,__SREG__
 223 0058 F894              cli
 224 005a DEBF              out __SP_H__,r29
 225 005c 0FBE              out __SREG__,__tmp_reg__
 226 005e CDBF              out __SP_L__,r28
 227 0060 DF91              pop r29
 228 0062 CF91              pop r28
 229 0064 0895              ret
 230                /* epilogue end (size=9) */
 231                /* function sns_ds18x20_List size 42 (23) */
 236                .Lscope3:
 238                .global sns_ds18x20_Init
 240                sns_ds18x20_Init:
 242                .LM18:
 243                /* prologue: frame size=0 */
 244                /* prologue end (size=0) */
 246                .LM19:
 247 0066 0E94 0000         call search_sensors
 248 006a 8093 0000         sts NumberOfSensors,r24
 250                .LM20:
 251 006e 20E0              ldi r18,lo8(pm(ConvertTemperature_callback))
 252 0070 30E0              ldi r19,hi8(pm(ConvertTemperature_callback))
 253 0072 41E0              ldi r20,lo8(1)
 254 0074 60E2              ldi r22,lo8(20000)
 255 0076 7EE4              ldi r23,hi8(20000)
 256 0078 81E0              ldi r24,lo8(1)
 257 007a 0E94 0000         call Timer_SetTimeout
 258                /* epilogue: frame size=0 */
 259 007e 0895              ret
 260                /* epilogue end (size=1) */
 261                /* function sns_ds18x20_Init size 13 (12) */
 263                .Lscope4:
 265                .global ConvertTemperature
 267                ConvertTemperature:
 269                .LM21:
 270                /* prologue: frame size=0 */
 271                /* prologue end (size=0) */
 273                .LM22:
 274 0080 60E0              ldi r22,lo8(0)
 275 0082 70E0              ldi r23,hi8(0)
 276 0084 80E0              ldi r24,lo8(0)
 277 0086 0E94 0000         call DS18X20_start_meas
 278 008a 8823              tst r24
 279 008c 41F4              brne .L14
 281                .LM23:
 282 008e 20E0              ldi r18,lo8(pm(ReadTemperature_callback))
 283 0090 30E0              ldi r19,hi8(pm(ReadTemperature_callback))
 284 0092 40E0              ldi r20,lo8(0)
 285 0094 6EEE              ldi r22,lo8(750)
 286 0096 72E0              ldi r23,hi8(750)
 287 0098 81E0              ldi r24,lo8(1)
 288 009a 0E94 0000         call Timer_SetTimeout
 289                .L14:
 290 009e 0895              ret
 291                /* epilogue: frame size=0 */
 292                /* epilogue: noreturn */
 293                /* epilogue end (size=0) */
 294                /* function ConvertTemperature size 16 (16) */
 296                .Lscope5:
 298                .global ReadTemperature
 300                ReadTemperature:
 302                .LM24:
 303                /* prologue: frame size=16 */
 304 00a0 CF93              push r28
 305 00a2 DF93              push r29
 306 00a4 CDB7              in r28,__SP_L__
 307 00a6 DEB7              in r29,__SP_H__
 308 00a8 6097              sbiw r28,16
 309 00aa 0FB6              in __tmp_reg__,__SREG__
 310 00ac F894              cli
 311 00ae DEBF              out __SP_H__,r29
 312 00b0 0FBE              out __SREG__,__tmp_reg__
 313 00b2 CDBF              out __SP_L__,r28
 314                /* prologue end (size=10) */
 316                .LM25:
 317 00b4 1B82              std Y+3,__zero_reg__
 319                .LM26:
 320 00b6 8BE1              ldi r24,lo8(27)
 321 00b8 8F83              std Y+7,r24
 323                .LM27:
 324 00ba 93E0              ldi r25,lo8(3)
 325 00bc 9E83              std Y+6,r25
 327                .LM28:
 328 00be 81E0              ldi r24,lo8(1)
 329 00c0 8D83              std Y+5,r24
 331                .LM29:
 332 00c2 84E0              ldi r24,lo8(4)
 333 00c4 8C83              std Y+4,r24
 335                .LM30:
 336 00c6 9887              std Y+8,r25
 338                .LM31:
 339 00c8 8091 0000         lds r24,CurrentSensor.1722
 340 00cc 9927              clr r25
 341 00ce 880F              lsl r24
 342 00d0 991F              rol r25
 343 00d2 FC01              movw r30,r24
 344 00d4 E050              subi r30,lo8(-(SensorIds))
 345 00d6 F040              sbci r31,hi8(-(SensorIds))
 346 00d8 2081              ld r18,Z
 347 00da 2987              std Y+9,r18
 349                .LM32:
 350 00dc 880F              lsl r24
 351 00de 991F              rol r25
 352 00e0 880F              lsl r24
 353 00e2 991F              rol r25
 354 00e4 9E01              movw r18,r28
 355 00e6 2D5F              subi r18,lo8(-(3))
 356 00e8 3F4F              sbci r19,hi8(-(3))
 357 00ea AE01              movw r20,r28
 358 00ec 4E5F              subi r20,lo8(-(2))
 359 00ee 5F4F              sbci r21,hi8(-(2))
 360 00f0 BE01              movw r22,r28
 361 00f2 6F5F              subi r22,lo8(-(1))
 362 00f4 7F4F              sbci r23,hi8(-(1))
 363 00f6 8050              subi r24,lo8(-(gSensorIDs))
 364 00f8 9040              sbci r25,hi8(-(gSensorIDs))
 365 00fa 0E94 0000         call DS18X20_read_meas
 366 00fe 8823              tst r24
 367 0100 79F4              brne .L16
 369                .LM33:
 370 0102 8981              ldd r24,Y+1
 371 0104 2A81              ldd r18,Y+2
 372 0106 9B81              ldd r25,Y+3
 373 0108 8823              tst r24
 374 010a 31F0              breq .L18
 376                .LM34:
 377 010c 2095              com r18
 378 010e 2A87              std Y+10,r18
 380                .LM35:
 381 0110 9295              swap r25
 382 0112 907F              andi r25,0xf0
 383 0114 9095              com r25
 384 0116 03C0              rjmp .L26
 385                .L18:
 387                .LM36:
 388 0118 2A87              std Y+10,r18
 390                .LM37:
 391 011a 9295              swap r25
 392 011c 907F              andi r25,0xf0
 393                .L26:
 394 011e 9B87              std Y+11,r25
 395                .L16:
 397                .LM38:
 398 0120 CE01              movw r24,r28
 399 0122 0496              adiw r24,4
 400 0124 0E94 0000         call StdCan_Put
 402                .LM39:
 403 0128 8091 0000         lds r24,CurrentSensor.1722
 404 012c 8F5F              subi r24,lo8(-(1))
 405 012e 8093 0000         sts CurrentSensor.1722,r24
 407                .LM40:
 408 0132 9091 0000         lds r25,NumberOfSensors
 409 0136 8917              cp r24,r25
 410 0138 30F4              brsh .L20
 412                .LM41:
 413 013a 20E0              ldi r18,lo8(pm(ReadTemperature_callback))
 414 013c 30E0              ldi r19,hi8(pm(ReadTemperature_callback))
 415 013e 40E0              ldi r20,lo8(0)
 416 0140 64EF              ldi r22,lo8(500)
 417 0142 71E0              ldi r23,hi8(500)
 418 0144 14C0              rjmp .L27
 419                .L20:
 421                .LM42:
 422 0146 8091 0000         lds r24,SearchSensorsTimeout.1721
 423 014a 8150              subi r24,lo8(-(-1))
 424 014c 8093 0000         sts SearchSensorsTimeout.1721,r24
 426                .LM43:
 427 0150 8823              tst r24
 428 0152 31F4              brne .L23
 430                .LM44:
 431 0154 85E0              ldi r24,lo8(5)
 432 0156 8093 0000         sts SearchSensorsTimeout.1721,r24
 434                .LM45:
 435 015a 81E0              ldi r24,lo8(1)
 436 015c 8093 0000         sts FlagSearchSensors,r24
 437                .L23:
 439                .LM46:
 440 0160 1092 0000         sts CurrentSensor.1722,__zero_reg__
 442                .LM47:
 443 0164 20E0              ldi r18,lo8(pm(ConvertTemperature_callback))
 444 0166 30E0              ldi r19,hi8(pm(ConvertTemperature_callback))
 445 0168 40E0              ldi r20,lo8(0)
 446 016a 60E2              ldi r22,lo8(20000)
 447 016c 7EE4              ldi r23,hi8(20000)
 448                .L27:
 449 016e 81E0              ldi r24,lo8(1)
 450 0170 0E94 0000         call Timer_SetTimeout
 451                /* epilogue: frame size=16 */
 452 0174 6096              adiw r28,16
 453 0176 0FB6              in __tmp_reg__,__SREG__
 454 0178 F894              cli
 455 017a DEBF              out __SP_H__,r29
 456 017c 0FBE              out __SREG__,__tmp_reg__
 457 017e CDBF              out __SP_L__,r28
 458 0180 DF91              pop r29
 459 0182 CF91              pop r28
 460 0184 0895              ret
 461                /* epilogue end (size=9) */
 462                /* function ReadTemperature size 115 (96) */
 472                .Lscope6:
 474                .global sns_ds18x20_Process
 476                sns_ds18x20_Process:
 478                .LM48:
 479                /* prologue: frame size=0 */
 480                /* prologue end (size=0) */
 482                .LM49:
 483 0186 8091 0000         lds r24,FlagConvertTemperature
 484 018a 8823              tst r24
 485 018c 21F0              breq .L29
 487                .LM50:
 488 018e 0E94 0000         call ConvertTemperature
 490                .LM51:
 491 0192 1092 0000         sts FlagConvertTemperature,__zero_reg__
 492                .L29:
 494                .LM52:
 495 0196 8091 0000         lds r24,FlagSearchSensors
 496 019a 8823              tst r24
 497 019c 69F1              breq .L31
 498                .LBB2:
 500                .LM53:
 501 019e 0E94 0000         call search_sensors
 502 01a2 682F              mov r22,r24
 503 01a4 8093 0000         sts NumberOfSensors,r24
 504 01a8 50E0              ldi r21,lo8(0)
 505 01aa 22C0              rjmp .L33
 506                .L34:
 508                .LM54:
 509 01ac A52F              mov r26,r21
 510 01ae BB27              clr r27
 511 01b0 FD01              movw r30,r26
 512 01b2 EE0F              lsl r30
 513 01b4 FF1F              rol r31
 514 01b6 E050              subi r30,lo8(-(SensorIds))
 515 01b8 F040              sbci r31,hi8(-(SensorIds))
 516 01ba 1182              std Z+1,__zero_reg__
 517 01bc 1082              st Z,__zero_reg__
 518 01be FD01              movw r30,r26
 519 01c0 73E0              ldi r23,3
 520 01c2 EE0F          1:  lsl r30
 521 01c4 FF1F              rol r31
 522 01c6 7A95              dec r23
 523 01c8 E1F7              brne 1b
 524 01ca E050              subi r30,lo8(-(gSensorIDs))
 525 01cc F040              sbci r31,hi8(-(gSensorIDs))
 526 01ce 40E0              ldi r20,lo8(0)
 527 01d0 20E0              ldi r18,lo8(0)
 528 01d2 30E0              ldi r19,hi8(0)
 529                .L35:
 531                .LM55:
 532 01d4 8191              ld r24,Z+
 533 01d6 9927              clr r25
 534 01d8 2827              eor r18,r24
 535 01da 3927              eor r19,r25
 537                .LM56:
 538 01dc 4F5F              subi r20,lo8(-(1))
 539 01de 4730              cpi r20,lo8(7)
 540 01e0 C9F7              brne .L35
 541 01e2 AA0F              lsl r26
 542 01e4 BB1F              rol r27
 543 01e6 A050              subi r26,lo8(-(SensorIds))
 544 01e8 B040              sbci r27,hi8(-(SensorIds))
 545 01ea 2D93              st X+,r18
 546 01ec 3C93              st X,r19
 548                .LM57:
 549 01ee 5F5F              subi r21,lo8(-(1))
 550                .L33:
 551 01f0 5617              cp r21,r22
 552 01f2 E1F6              brne .L34
 554                .LM58:
 555 01f4 1092 0000         sts FlagSearchSensors,__zero_reg__
 556                .L31:
 557                .LBE2:
 559                .LM59:
 560 01f8 8091 0000         lds r24,FlagReadTemperature
 561 01fc 8823              tst r24
 562 01fe 21F0              breq .L40
 564                .LM60:
 565 0200 0E94 0000         call ReadTemperature
 567                .LM61:
 568 0204 1092 0000         sts FlagReadTemperature,__zero_reg__
 569                .L40:
 570 0208 0895              ret
 571                /* epilogue: frame size=0 */
 572                /* epilogue: noreturn */
 573                /* epilogue end (size=0) */
 574                /* function sns_ds18x20_Process size 66 (66) */
 580                .Lscope7:
 581                .global SensorIds
 582                .global SensorIds
 583                    .section .bss
 586                SensorIds:
 587 0000 0000 0000         .skip 8,0
 587      0000 0000 
 588                    .lcomm CurrentSensor.1722,1
 590                    .data
 593                SearchSensorsTimeout.1721:
 594 0000 05                .byte   5
 596                    .comm BIOS_CanCallback,2,1
 597                    .comm gSensorIDs,32,1
 598                    .comm NumberOfSensors,1,1
 599                    .comm FlagReadTemperature,1,1
 600                    .comm FlagConvertTemperature,1,1
 601                    .comm FlagSearchSensors,1,1
 609                    .text
 611                .Letext0:
 612                /* File "../modules/sns_ds18x20/sns_ds18x20.c": code  261 = 0x0105 ( 219), prologues  20, epilogues
DEFINED SYMBOLS
                            *ABS*:00000000 sns_ds18x20.c
     /tmp/ccg7wOtV.s:3      *ABS*:0000003f __SREG__
     /tmp/ccg7wOtV.s:4      *ABS*:0000003e __SP_H__
     /tmp/ccg7wOtV.s:5      *ABS*:0000003d __SP_L__
     /tmp/ccg7wOtV.s:6      *ABS*:00000000 __tmp_reg__
     /tmp/ccg7wOtV.s:7      *ABS*:00000001 __zero_reg__
     /tmp/ccg7wOtV.s:106    .text:00000000 ReadTemperature_callback
                            *COM*:00000001 FlagReadTemperature
     /tmp/ccg7wOtV.s:125    .text:00000008 ConvertTemperature_callback
                            *COM*:00000001 FlagConvertTemperature
     /tmp/ccg7wOtV.s:144    .text:00000010 sns_ds18x20_HandleMessage
     /tmp/ccg7wOtV.s:159    .text:00000012 sns_ds18x20_List
     /tmp/ccg7wOtV.s:240    .text:00000066 sns_ds18x20_Init
                            *COM*:00000001 NumberOfSensors
     /tmp/ccg7wOtV.s:267    .text:00000080 ConvertTemperature
     /tmp/ccg7wOtV.s:300    .text:000000a0 ReadTemperature
                             .bss:00000008 CurrentSensor.1722
     /tmp/ccg7wOtV.s:586    .bss:00000000 SensorIds
                            *COM*:00000020 gSensorIDs
     /tmp/ccg7wOtV.s:593    .data:00000000 SearchSensorsTimeout.1721
                            *COM*:00000001 FlagSearchSensors
     /tmp/ccg7wOtV.s:476    .text:00000186 sns_ds18x20_Process
                            *COM*:00000002 BIOS_CanCallback

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
StdCan_Put
search_sensors
Timer_SetTimeout
DS18X20_start_meas
DS18X20_read_meas