Hallo! Ich möchte zur Heimautomation gerne mehrer AVR's zusammen auf einen Bus hängen. Dabei soll jeder Busteilnehmer gleichberechtigt sein (multimaster bus). CAN kommt allerdings nicht in Frage, da die Controller einfach zu teuer und komplex sind (busteilnehmer sollen noch in eine unterputzdose passen). Ich dachte eher an RS485. Nun steh ich vor dem Problem wie ich ein Carrier Detect (erkennung ob schon traffic auf dem bus ist) realisieren könnte... Hab Ihr ne Idee?? Gruss, Michael
Ein Collision Detect meinst Du. Du checkst immer beim Senden eines Teilnehmer den Empfang mit. Sende und Empfangsprotokoll müssen dabei identisch sein! Hat jemand dazwischengesabbelt, gibt's 'ne Kollision. Dann stellst Du die Übertragung für eine durch Zufall(Pseudo) ermittelte Wartezeit ein, prüfst dann ob frei ist und beginnst nochmal mit dem Übertragen. Reiner
Ein SO-28 Chip sollte spielend in eine unterputzdose passen. Ja, daß Du bei RS-485 im Gegensatz zu CAN vor einem Haufen Probleme stehst kann ich voll bestätigen. Siehe auch: http://www.mikrocontroller.net/forum/read-1-22412.html#22426 http://www.mikrocontroller.net/forum/read-1-22412.html#22728 http://www.mikrocontroller.net/forum/read-1-19974.html#19986 Peter
Hallo! Erstmal danke für die Antworten. ok, platzmässig würde CAN funktionieren - wenn der Preis für die Controller nicht so hoch wäre. Bei 4-5 clients am bus wäre der Preis kein Problem, aber ich möchte duzende schalter, steckdosen, garagentore etc. kostengünstig vernetzen. Was haltet Ihr von der Idee CAN bus transreceiver (also nur einen Treiberbaustein,z.B. PCA82c250) direkt an den UART eines AVR zu hängen. Vorm senden könnte man prüfen ob etwas im Eingangpuffer ist. Falls nicht wird gesendet. Nach dem senden sollte die gesendete message im Eingangspuffer liegen. Falls nicht wird nach ablauf einer zufälligen nochmal gesendet. Zusätzlich würde ich noch einen CRC check einbauen. Könnte das funktionieren?? Gruss, Michael
Ich entwickle gerade soetwas auf basis des i2c bus. Es ist kostengünstig, da nur ein transistor als externes bauteil gebraucht wird. Kolision detection müsste auch kein problem sein ( hatte noch keine Zeit es auszuprobieren).
@daniel, i2c wäre ne möglichkeit... aber das mit dem transistor sagt mir nicht zu. da invenstiere ich lieber 1.80euro für einen vernüftigen, praxis erprobten transreceiver und brauch mir keine gedanken über kurzschluss und extere störsignale machen. aber halte mich/uns mal auf dem laufenden. gruss, Michael
Mit I2C kannst Du solche Entfernungen auch gar nicht überbrücken. Da ist ein differentieller Transreceiver schon das richtige, wenn's Kabelgebunden sein soll. Reiner
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.