1 Wire: string senden

Gast #4911070
Lesenswert?

Hallo, wie kann ich einen string über die Funktion
> void write(uint8_t v, uint8_t power = 0);
oder
> void write_bytes(const uint8_t *buf, uint16_t count, bool power = 0);
in der OneWire Bibliothek für Arduino an einen anderen Arduino senden?
Bzw. für was steht "v" (1. Funktion) und "count" (2. Funktion)?
#4912108
Lesenswert?

Hi

Kenne die Routienen beide nicht, also kann's auch kompletter Mist sein:

V wird für Variable stehen, Deren Inhalt gesendet werden soll.

Count die Anzahl an Byte ab der Adresse buf(fer).

Die jeweiligen 'power' werden wohl den eigenen Pull-Up aktivieren.

... reine Hüft-Schüsse, dürfte aber zumindest die Richtung sein.

MfG
Gast #4912123
Lesenswert?

Patrick J. schrieb:
> Die jeweiligen 'power' werden wohl den eigenen Pull-Up aktivieren.
>
> ... reine Hüft-Schüsse, dürfte aber zumindest die Richtung sein.

Einfacher wäre wahrscheinlich, beispielsweise die Kommentare im 
Quellcode zu lesen. Da wird deutlich mehr, als der Pull-Up aktiviert ;-)
1
// Write a byte. The writing code uses the active drivers to raise the
2
// pin high, if you need power after the write (e.g. DS18S20 in
3
// parasite power mode) then set 'power' to 1, otherwise the pin will
4
// go tri-state at the end of the write to avoid heating in a short or
5
// other mishap.
6
void OneWire::write(uint8_t v, uint8_t power /* = 0 */) {
7
...
8
//

Gasst schrieb:
> wie kann ich einen string ... an einen anderen Arduino senden?

Erstmal brauchst du für den anderen Arduino eine Bibliothek, mit der er 
sich als 1-Wire Slave fühlt. Vorher macht es wenig Sinn, zu senden ;-)
#4912124
Lesenswert?

...einfach mal in OneWire.h gucken:
1
// Write a byte. If 'power' is one then the wire is held high at
2
// the end for parasitically powered devices. You are responsible
3
// for eventually depowering it by calling depower() or doing
4
// another read or write.
5
void write(uint8_t v, uint8_t power = 0);
#4912127
Lesenswert?

@Gasst (Gast)

>Hallo, wie kann ich einen string über die Funktion
>> void write(uint8_t v, uint8_t power = 0);

Damit kann man ein einziges Byte über OneWire senden. v ist das 
Datenbyte, power eine Option, welche bewirkt, daß nach dem Schreiben des 
Bytes der String Pull Up eingeschaltet wird. Das braucht man für 
parasitär versorgte ICs, welche für bestimmte Operationen (Temperatur 
messen, Daten in EEPROM speichern etc.) viel Strom brauchen.

>oder
>> void write_bytes(const uint8_t *buf, uint16_t count, bool power = 0);

Damit kann man mehrere Bytes schreiben.

*buf ist ein Zeiger auf den Datenblock,
count ist die Anzahl der zu schreibenden Bytes.

>>in der OneWire Bibliothek für Arduino an einen anderen Arduino senden?

Dann muss auf dem empfangenden Arduino aber eine passende Bibliothek 
laufen, welche als OneWire Slave arbeiten kann. Die "normalen" 
Bibliotheken können nur Master!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren