@@ -116,6 +116,7 @@ J Standard 410
116
116
#define SKIP_ROM 0xCC
117
117
#define CONVERT_T 0x44
118
118
#define READ_SCRATCHPAD 0xBE
119
+ #define WRITE_SCRATCHPAD 0x4E
119
120
120
121
int OWReset (int Pin )
121
122
{
@@ -285,13 +286,56 @@ int DS1820_getTemp()
285
286
return t ;
286
287
}
287
288
289
+ commandResult_t Cmd_SetResolution (const void * context , const char * cmd , const char * args , int cmdFlags ) {
290
+ Tokenizer_TokenizeString (args , 0 );
291
+ if (Tokenizer_CheckArgsCountAndPrintWarning (cmd , 1 )) {
292
+ return CMD_RES_NOT_ENOUGH_ARGUMENTS ;
293
+ }
294
+ int arg = Tokenizer_GetArgInteger (0 );
295
+ if (arg > 12 || arg < 9 )
296
+ return CMD_RES_BAD_ARGUMENT ;
297
+
298
+ if (ds18_family != 0x28 ) {
299
+ DS1820_LOG (ERROR , "DS1820_SetResolution not supported by sensor" );
300
+ return CMD_RES_UNKNOWN_COMMAND ;
301
+ }
302
+
303
+ uint8_t cfg = arg ;
304
+ cfg = cfg - 9 ;
305
+ cfg = cfg * 32 ;
306
+ cfg |= 0x1F ;
307
+
308
+ if (OWReset (Pin ) == 0 )
309
+ {
310
+ DS1820_LOG (ERROR , "WriteScratchpad Reset failed" );
311
+ return CMD_RES_ERROR ;
312
+ }
313
+
314
+ OWWriteByte (Pin , SKIP_ROM );
315
+ OWWriteByte (Pin , WRITE_SCRATCHPAD ); //Write Scratchpad command
316
+ OWWriteByte (Pin , 0x7F ); //TH
317
+ OWWriteByte (Pin , 0x80 ); //TL
318
+ OWWriteByte (Pin , cfg ); //CFG
319
+
320
+ //temperature conversion was interrupted
321
+ dsread = 0 ;
322
+
323
+ return CMD_RES_OK ;
324
+ }
325
+
288
326
// startDriver DS1820 [conversionPeriod (seconds) - default 15]
289
327
void DS1820_driver_Init ()
290
328
{
291
329
ds18_conversionPeriod = Tokenizer_GetArgIntegerDefault (1 , 15 );
292
330
lastconv = 0 ;
293
331
dsread = 0 ;
294
332
ds18_family = 0 ;
333
+
334
+ //cmddetail:{"name":"DS1820_SetResolution","args":"[int]",
335
+ //cmddetail:"descr":"Sets resolution for connected DS1820 sensor (9/10/11/12 bits)",
336
+ //cmddetail:"fn":"Cmd_SetResolution","file":"drv/drv_ds1820_simple.c","requires":"",
337
+ //cmddetail:"examples":""}
338
+ CMD_RegisterCommand ("DS1820_SetResolution" , Cmd_SetResolution , NULL );
295
339
};
296
340
297
341
void DS1820_AppendInformationToHTTPIndexPage (http_request_t * request )
0 commit comments