Module | |
Temperatursensor DS1820/DS1822 | |
Datenstrukturen | |
struct | ow_dev_flags_s |
One Wire Geräteflags. Mehr... | |
struct | ow_device_s |
One Wire Geräteeintrag. Mehr... | |
struct | ow_rom_code_s |
One Wire ROM Code. Mehr... | |
Low-Level Zugriff und Geräteverwaltung | |
typedef ow_rom_code_s | ow_rom_code_st |
Typvereinbarung für einen One Wire ROM Code. | |
typedef ow_device_s | ow_device_st |
Typvereinbarung für einen One Wire Geräteeintrag. | |
unsigned char | ow_init (void) |
(Re-)Initialisirung des One Wire Moduls. | |
unsigned char | ow_rom_search (ow_device_st *ow_dev) |
One Wire ROM Code Ermittlung. | |
unsigned char | ow_byte_read (void) |
Lesen eines Bytes vom One Wire Bus. | |
unsigned char | ow_byte_write (unsigned char byte) |
Schreiben eines Bytes zum One Wire Bus. | |
Spezialfunktionen | |
unsigned char | ow_ready (void) |
Primitiver Bereitschaftstest. | |
unsigned char | ow_buf_read (unsigned char *buf, size_t buf_size, unsigned char crc_included) |
Bytes vom One Wire Bus in einen Puffer lesen. | |
unsigned char | ow_buf_write (unsigned char *buf, size_t buf_size, unsigned char crc_included) |
Bytes aus einem Puffer zum One Wire Bus schreiben. | |
unsigned char | ow_function (unsigned char code, unsigned char device) |
Bytes aus einem Puffer zum One Wire Bus schreiben. | |
CodeVision Konformität | |
unsigned char | w1_init (void) |
unsigned char | w1_read (void) |
unsigned char | w1_write (unsigned char data) |
unsigned char | w1_crc8 (void *p, unsigned char n) |
#include <avrhal/ow.h>
Diese Headerdatei deklariert einen einfachen Low-Level Zugang zum Eindrahtkommunikationssystem One Wire von Dallas. Mit dessen Hilfe können daran angeschlossene Sensoren, Speicher oder sonstige I/O-Bausteine angesprochen werden. Der One Wire Bus ist an PORTD
Bit 4 angeschlossen. Zur Zeit sind folgende One Wire Geräte über ein eigenes API ansprechbar:
ow_device_st
bereitstellen, da alle Funktionen dieser One Wire Implementierung keinerlei Tests auf Speicherüberläufe durchfüren. Das Feld muß also für jedes physisch am Bus befindliche One Wire Gerät ein Feldeintrag vorhalten, in dem dann, nach erfolgreichem Suchen, der zugehörige ROM Code abgelegt ist.
Für die Erstellung dieses Codes wurden folgende Referenzen benutzt: [1], [2], [3],
init1
Integration einer One Wire ALARM Ereignisbehandlung.
Code-Optimierung bei Eingerätebenutzung (Wegfall der Umfangreichen ROM Code Suche, Wrapper Macros).
|
Typvereinbarung für einen One Wire Geräteeintrag.
|
|
Typvereinbarung für einen One Wire ROM Code.
|
|
Bytes vom One Wire Bus in einen Puffer lesen. Mit dieser Funktion können unter Zuhilfenahme von ow_byte_read() so viele Bytes hintereinander vom One Wire Bus in den über buf referenzierten Puffer gelesen werden, wie über buf_size angegeben sind. Auf Wunsch erfolgt zusätzlich mit crc8_ow() ein Test der im letzten Byte enthaltenen CRC Summe, wenn crc_included ungleich Null ist. Das jeweilige One Wire Gerät, von dem gelesen werden soll, muß zuvor durch andere Funktionen entsprechend vorbereitet werden (z.B. mit ow_function()).
|
|
Bytes aus einem Puffer zum One Wire Bus schreiben. Mit dieser Funktion können unter Zuhilfenahme von ow_byte_write() so viele Bytes hintereinander aus den über buf referenzierten Puffer zum One Wire Bus geschrieben werden, wie über buf_size angegeben sind. Auf Wunsch erfolgt zusätzlich mit crc8_ow() die Berechnung einer CRC Summe im letzten Byte des Puffers, wenn crc_included ungleich Null ist. Das jeweilige One Wire Gerät, in das geschrieben werden soll, muß zuvor durch andere Funktionen entsprechend vorbereitet werden (z.B. mit ow_function()).
|
|
Lesen eines Bytes vom One Wire Bus. Mit dieser Funktion wird die Signalfolge zum Lesen von genau einem Byte vom One Wire Bus ausgelöst. Das jeweilige One Wire Gerät, von dem gelesen werden soll, muß zuvor durch andere Funktionen entsprechend vorbereitet werden (z.B. mit ow_function()).
|
|
Schreiben eines Bytes zum One Wire Bus. Mit dieser Funktion wird die Signalfolge zum Schreiben von genau einem Byte am One Wire Bus ausgelöst. Das zu schreibende Byte wird mit byte übergeben. Das jeweilige One Wire Gerät, in das geschrieben werden soll, muß zuvor durch andere Funktionen entsprechend vorbereitet werden (z.B. mit ow_function()).
|
|
Bytes aus einem Puffer zum One Wire Bus schreiben.
Mit dieser Funktion wird unter Zuhilfenahme von ow_byte_write() und ow_buf_write() ein neues Gerätekommando code an das über device referenzierte One Wire Gerät initiert. Hierbei stellt device einen Index in dem der Funktion ow_rom_search() übergebenen Feld vom Typ
|
|
(Re-)Initialisirung des One Wire Moduls. Mit Aufruf dieser Funktion wird der One Wire Bus durch ein entsprechendes Busreset initialisiert und die interne Geräteverwaltung zurückgesetzt.
|
|
Primitiver Bereitschaftstest. Mit dieser Funktion kann die Bereitschaft eines One Wire Gerätes nach Ausführung eines vorher abgesetzten Kommandos durch einen einfachen Bitlesezyklus getestet werden. Viele One Wire Geräte zeigen so die Beendigung einer Aktion an, so z.B. die einmalige Temperaturmessung im Sensor DS1820. Zum Schutz gegen endloses Warten aufgrund fehlerhafter One Wire Geräte oder Störungen beim Lesen eines Bits vom Bus, ist der Testzyklus mit einer Zeitschleife von 1 Sekunde versehen. Nach erfolglosem Test über diese Zeit hinaus wird automatisch abgebrochen!
|
|
One Wire ROM Code Ermittlung.
Mit dieser Funktion wird der One Wire Bus so wie in [2] beschrieben nach Geräten durchsucht, wobei deren ROM Codes ermittelt und in einem Feld vom Typ
|
|
|
|
|
|
|
|
|