1 Wire: string senden

Gast #4911070
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)?
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
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 ;-)
...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);
@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

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.