PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 1-Wire? Daten zwischen 2 µC´s austauschen



MrQu
06.02.2006, 15:51
Ein HALLO an Euch,

hat sich von Euch schon mal einer mit "1-Wire" bestäftigt???

Ich brauche eine Möglichkeit das zwei µC´s Daten miteinander austauschen.
Wollte das zuerst über IC2 machen, habe jetzt aber an einem µC nur noch eine Leitung frei.

Da hab ich mir gedacht ich verwende den 1-Wire-Bus von Maxim.
Habe jetzt aber null Ahnung wie ich das genau machen soll.

Von der Hardware ist das ja eigendlich nur ein "kastrierter" IC2 Bus.
Eine Leitung und nen Widerstand gegen +VCC - fertig.

Aber wie programmiere ich das ganze nun?

Hilfe???


Gruß MrQu

SprinterSB
06.02.2006, 16:27
Bei Maxim gibt's glaub Application Notes und auch Beispiel-Code. Das ganze ist aber nicht ganz einfach, wenn ich mich recht erinnere. Vor allem hast du ja keine HW-Unterstützung wie etwa bei I²C, und wie hart die Echtzeitanforderungen bei dem 1W-Bus sind weiß ich auch net.

Vielleicht kannst du ja den UART verwenden? Da hast du wenigstens in einer Richtung HW-Unterstützung und wenig Overhead. In die andere Richtung müsste dann ein SW-UAR/T herhalten, Umschaltung wird durch's Protokoll geregelt.

Oder einen der anderen Ports geschickt einsparen?

MrQu
06.02.2006, 16:51
Hi @SprinterSB,

Port einsparen geht nimmer! Hatte zuerst 4 Ports zu wenig jetzt blos noch einen. Mehr geht nimmer, ist n ATTiny26L.

HW-IC2 hat der µC eh nicht und bei HW-RS232 ist auch "nullO".

Also ich hab folgendes vor, sag mir mal wie du das lössen würdest.

Anwendung:
Habe noch einen PIN frei, dieser soll Daten an einen zweiten µC übergeben (8Bit-seriel). Der 2te µC soll diese Daten auf 8Bit-parallel umwandeln und damit ein DOT-Display ansteuern. Es soll auch noch ein kleiner Lautsprecher an dem 2ten µC angeschlossen werden.

Ich möchte im 2tenµC einen "Schriftsatz" hinterlegen mit dem ich die DOT-Matrix und den Lautsprecher ansteuern will.

Gruß MrQu

SprinterSB
06.02.2006, 16:57
Um 8-Bit seriell zu Übergeben genügt ein unidirektionale Leitung. Der Haupt-Controller ist Master (Client) und der Display-µC muss schlucken, was kommt (ist Slave/Server).

Auf einer Line geht z.B. ein Soft-Uart. Den bin ich gerade am Proggen, wenn du so was brauchst, kannst die Quellen habn. Momentan fehlt noch eine fifo, um den Client (Receive) gut echtzeitfähig zu machen.

MrQu
06.02.2006, 19:38
@ SprinterSB

Abend,

ich habe gerade eine Idee wie ich das vielleicht noch vereinfachen kann.

Ich habe gerade mal aufgeschrieben was ich darstellen will.
Da komme ich auf 8 (feste) Teste und 3 (feste) Töne.
Das heißt doch ich habe 11 Zustände (bzw. 14) wenn ich manche Texte mit den Tönen kombinieren muß.
Ich könnte doch die 14 "Zustände" die angezeigt/ausgegeben werden sollen auf dem 2ten µC als Array speichern.

Dann könnte ich doch hergehen und eine HEX-Zahl über die eine Leitung übertragen, daß würde doch schon reichen um eine der 14 (max. 16) Array´s auszulösen.

Mehr muß doch eigendlich nicht passieren, ODER?

Wie würdest du das lösen, ich brauche ja eigendlich gar keine "echte" Schnittstelle oder?


Gruß MrQu

danst
07.02.2006, 09:33
Hallo,

ich habe mal versucht, so einen 1-Draht-Bus mit einem der Infrarot-Fernbedienungsprotokolle zu erstellen... Hat z.T. auch nicht schlecht geklappt, jedoch hat mir das Oszilloskop gefehlt um die Sache richtig zum laufen zu bringen...

Viele Grüße,

Daniel

SprinterSB
07.02.2006, 11:26
RC5 wär natürlich auch cool, wenn man ne PWM-Einheit hat. Dann wärst du drahtlos. Ein TSOP kostet schlappe 1/2 Euro.

Wie ich es realisieren würde kann ich nicht sagen, weil ich nicht weiß, was du an Hardware (Timer, etc) frei hast bzw nutzbar machen kannst. Optimal wär es, wenn es auf dem Client einen Timer gäbe, der ne Zeitbasis erzeugt. Ich schreib mal auf, was ich hab: https://www.roboternetz.de/wissen/index.php/Software-UART_mit_avr-gcc

Einen einbytigen Code zu schicken ist natürlich das einfachste und verlagert Daten näher ans Display.