Was ich tun möchte, ist, einen ATTiny-IC zum Slave auf dem 1-Draht-Bus zu machen, mit einer eigenen S / N- und Befehlsliste für seine spezifischen Funktionen.
Ich möchte wissen, ob ich die One-Wire-Bibliothek von der Arduino-Site verwenden kann, um Daten als Slave zu senden.
Sie können beispielsweise einen Slave in einem Raum mit mehreren Arten von Sensoren haben, die dem Master über die angeforderten Informationen Bericht erstatten, oder der Master kann ihn anweisen, so etwas wie Jalousien zu steuern.
Frage Muss ich die Busleitung überwachen und auf eine Anfrage des Masters antworten und auch berücksichtigen, wie ein normaler Sensor Daten senden würde? Mit welcher Frequenz sollte ich den Slave ausführen, um die beste Funktionalität zu erhalten?
Ich werde keine parasitäre Kraft als Notiz verwenden.
Antworten:
Soweit ich weiß, kann die 1-Draht-Bibliothek, die Sie in Ihrer Frage verlinkt haben, nur als Master und nicht als Slave fungieren.
Ich habe gerade eine Bibliothek veröffentlicht ein Arduino - Board in einen 1-Draht - Slave zu drehen, hier:
https://github.com/neuoy/OneWireArduinoSlave(edit: hergezogen https://gitea.youb.fr/youen/OneWireArduinoSlave ). Ich verwende es in meinem benutzerdefinierten Hausautomationssystem und es funktioniert einwandfrei in meinem Setup (der 1-Draht-Master, ein DS9490R, ist über USB mit einem Laptop verbunden und versorgt auch den Arduino, einen Arduino Uno, mit Strom). Die Bibliothek verarbeitet Details auf niedriger Ebene: Match-Rom, Byte-Senden und -Empfangen (was eigentlich ziemlich schwer zu finden ist, meistens ohne einen Logikanalysator unmöglich). Der Rest liegt an dir.Es ist vollständig mit Interrupts implementiert, alle Kommunikationen werden im Hintergrund ausgeführt, Sie können wie gewohnt anderen Code parallel ausführen und werden durch Rückrufe benachrichtigt, wenn Bytes empfangen werden usw. Das Senden von Bytes an den Master ist ebenfalls asynchron.
Ich weiß auch, dass mindestens eine andere Bibliothek existiert, https://github.com/MarkusLange/OneWireSlave , wie oben von Ryu_hayabusa kommentiert. Es hat bei mir nicht funktioniert (ich weiß nicht, ob es an meinem Hardware-Setup liegt oder aus einem anderen Grund), aber es funktioniert definitiv bei anderen, also auch einen Versuch wert. Es scheint, dass diese Bibliothek nicht mit Interrupts implementiert ist, sodass Ihr Programm blockiert ist, während Sie auf die Masteraktivität warten (was in vielen Szenarien durchaus akzeptabel ist).
quelle