Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/ibutton.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2014-01-22 22:12:17 +0400
committerAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2014-01-22 22:12:17 +0400
commit3f500c4aed2a20de29661ec851c214634c2fe3cf (patch)
tree8caa33aded9cb43db5ee787b11d24c28f94808a2
parenta0f2b49d1fd2e297e26241fe77186393cafe2900 (diff)
Comments
-rw-r--r--metacom.c4
-rw-r--r--onewire.c26
-rw-r--r--onewire_config.h2
3 files changed, 17 insertions, 15 deletions
diff --git a/metacom.c b/metacom.c
index 55ad24c..a02aaf3 100644
--- a/metacom.c
+++ b/metacom.c
@@ -21,14 +21,14 @@ inline void metacom_send_byte(uint8_t data)
ONEWIRE_WAIT(METACOM_T/3); // 0
ONEWIRE_MASTER_TX_ON;
ONEWIRE_WAIT(METACOM_T*2/3);
- // TX
+ // Тут не надо отпускать TX перед посылкой следующего пакета
}
}
}
void metacom_send(unsigned char* key)
{
- ONEWIRE_MASTER_TX(METACOM_T); //
+ ONEWIRE_MASTER_TX(METACOM_T); // Синхронизирующий бит
ONEWIRE_WAIT(METACOM_T/3); // 0
ONEWIRE_MASTER_TX(METACOM_T*2/3);
diff --git a/onewire.c b/onewire.c
index 18a3a62..0d35fa4 100644
--- a/onewire.c
+++ b/onewire.c
@@ -17,7 +17,7 @@ void onewire_init()
onewire_port_init();
}
-// . 1, .
+// Инициализирует передачу. Возвращает 1, если устройства ответили.
char onewire_write_reset()
{
onewire_port_init();
@@ -38,7 +38,7 @@ char onewire_write_reset()
return res;
}
-// 1
+// Читает 1 бит
char onewire_read_bit()
{ onewire_port_init();
ONEWIRE_MASTER_TX(5); ONEWIRE_WAIT(5);
@@ -57,7 +57,7 @@ char onewire_read_bit()
return cbit;
}
-//
+// Читает байт
unsigned char onewire_read_byte()
{
unsigned char res, bit, cbit;
@@ -86,7 +86,7 @@ void onewire_write_byte(unsigned char b)
}
}
-// CRC
+// Считает CRC
char onewire_check_crc(unsigned char* data, unsigned char size)
{
uint8_t crc=0;
@@ -107,7 +107,7 @@ char onewire_check_crc(unsigned char* data, unsigned char size)
}
-// ?
+// В буфере только нули?
char onewire_all_zeros(unsigned char* data, unsigned char size)
{
uint8_t i;
@@ -118,9 +118,9 @@ char onewire_all_zeros(unsigned char* data, unsigned char size)
return 1;
}
-/*
-// , num - , , out - 8
-// -
+#ifdef ONEWIRE_SEARCH_SUPPORT
+// Поиск устройств, num - битовая маска, по которой идёт ветвление, out - указатель на 8 байт
+// возвращает кол-во пройденных ветвений
int onewire_search(unsigned int num, unsigned char* out)
{
char res = onewire_write_reset();
@@ -158,7 +158,7 @@ int onewire_search(unsigned int num, unsigned char* out)
return conflicts;
}
-//
+// Итерация поиска
void onewire_search_iter(int num, int depth, void (*f)(unsigned char* out))
{
unsigned char serial[8];
@@ -169,17 +169,17 @@ void onewire_search_iter(int num, int depth, void (*f)(unsigned char* out))
int d;
for (d = depth+1; d < conflicts; d++)
- onewire_search_iter(num | (1UL << d), d, f); // .
+ onewire_search_iter(num | (1UL << d), d, f); // углубляемся.
}
-// . f - , , out - 8 , CRC
+// Ищет все устройства. f - указатель к функции, которая вызывается для каждого устройства, out - указатель на 8 байт адреса, включая тип и CRC
void onewire_search_all(void (*f)(unsigned char* out))
{
onewire_search_iter(0, -1, f);
}
-*/
+#endif
-// VCC
+// Включает мощную подтяжку к VCC
void onewire_pullup()
{
if (ONEWIRE_MASTER_RX) return;
diff --git a/onewire_config.h b/onewire_config.h
index d223b24..326ee0a 100644
--- a/onewire_config.h
+++ b/onewire_config.h
@@ -13,4 +13,6 @@
#define ONEWIRE_TIMER_REG TCNT1
#define ONEWIRE_USEC (F_CPU / 8000000UL)
+//#define ONEWIRE_SEARCH_SUPPORT
+
#endif