Browse Source

fix ROM copy

Juraj Ďuďák 2 years ago
parent
commit
9200beb0ae
4 changed files with 13 additions and 4 deletions
  1. 4 0
      Inc/memory_ec20.h
  2. 1 0
      Inc/one_wire.h
  3. 5 0
      Src/memory_ec20.c
  4. 3 4
      Src/one_wire.c

+ 4 - 0
Inc/memory_ec20.h

@@ -2,6 +2,8 @@
 #define __1W_EC20
 
 #include "one_wire.h"
+#include <string.h>
+
 
 #define DS28EC20_FAMILY_CODE            0x43
 #define CMD_WRITE_SCRATCHPAD            0x0F
@@ -38,6 +40,8 @@ uint16_t DS28EC20_readData2B(uint16_t address);
 uint8_t DS28EC20_writeData4B(uint32_t, uint16_t );
 uint8_t DS28EC20_writeData2B(uint16_t data, uint16_t  adr);
 
+uint8_t DS28EC20_getId(uint8_t*);
+
 //uint8_t DS28EC20_writeData4char(uint8_t *data, uint16_t  adr);
 
 #endif

+ 1 - 0
Inc/one_wire.h

@@ -38,6 +38,7 @@
 #include "stm32l4xx_hal.h"
 #endif
 
+#include <string.h>
 
 #define TRUE  0x01					// konstanty v kniznici 1-wire
 #define FALSE 0x00

+ 5 - 0
Src/memory_ec20.c

@@ -116,6 +116,11 @@ uint8_t DS28EC20_writeData2B(uint16_t data, uint16_t adr) {
     return DS28EC20_writeMem(adr,2);
 }
 
+uint8_t DS28EC20_getId(uint8_t* data) {
+	owGetROM(mem_page.ROM);
+	memcpy(data, mem_page.ROM, 8);
+	return 8;
+}
 /*
 uint8_t DS28EC20_writeData4char(uint8_t *data, uint16_t adr) {
     mem_page.buffer_tx[0] = data[0];

+ 3 - 4
Src/one_wire.c

@@ -218,12 +218,11 @@ void owSelect() {
 }
 
 /**
-* Odovzdá ako odkaz obsah ROM.
-* @param mem_page pole bytov[8], kre bude uložený obsah ROM_NO
+* Skopíruje  obsah ROM.
+* @param mem_page pole bytov[8], kde bude uložený obsah ROM_NO
 */
 void owGetROM(uint8_t *mem_page) {
-    *mem_page = *oneWireDrv.ROM_NO;
-    *(mem_page +4)= *(oneWireDrv.ROM_NO+4);
+	memcpy(mem_page, oneWireDrv.ROM_NO, 8);
 }