Forum: Mikrocontroller und Digitale Elektronik 1 Wire: string senden


von Gasst (Gast)


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)?

: Verschoben durch User
von Patrick J. (ho-bit-hun-ter)


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

von Wolfgang (Gast)


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 ;-)

von Joe F. (easylife)


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);

von Falk B. (falk)


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!

von Joe F. (easylife)


Lesenswert?

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

Ein UART wäre da wohl passender.
+++ AT Z (<-- ein Witz für insider)

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.