Hi, da ich momentan ein Bussystemplane, bei dem ich möglichst auf festbelegte Pins verzichten möchte (siehe unten) wollte ich euch fragen, ob jemand bereits eine 1-Wire Schnittstelle für AVRs (Tiny / Mega) realisiert hat und mir sagen kann, wie aufwändig das ist. (In Assembler versteht sich ;)) Ich möchte auf Pins (wie z.B. die vorbelegten I²C Pins) verzichten, da ich in meinen "Modulen" nicht das I²C-Feature "zerstören" möchte. Stellt euch es so vor: Ich habe ein Motherboard mit einem Hauptprozessor (vermutl. Mega32), auf dieses Stecke ich jetzt mehrere Platinen mit anderen AVRs (vermutl. Mega8 / Tiny). Der Hauptprozi soll jetzt als Master mit den Modul-AVRs als Slaves kommunizieren. Da auf den Modulen aber u.U. auch I²C-Chips sein sollen und die Modul-AVRs mit diesen kommunizieren sollen, kann ich nicht die "Original"-Pins für I²C belegen, da dann durch die intramoduläre Datenübertragung die intermodulare gestört werden würde (die I²C Leitungen Motherboard<>Module seien als ausgelastet angesehen...) Vielleicht kommt euch ja noch eine andere Idee als 1-Wire (soll wohl recht einfach sein, wie ich gehört habe) für mein Problem. Natürlich sollte es möglichst pinsparend sein (1-Wire braucht halt auch nur one wire ;)) Ich hoffe ihr könnt mir helfen :) Gruß, Lasse
Ja, aber ansich gleiches Problem, nur mit mehr "verbrauchten" Pins... Was mach ich, wenn ich SPI-Devices auf den Modulen haben möchte?
Es ist einigermassen haarig, einen 1-Wire-Slave per Software exakt nach Vorschrift zu implementieren. Denn so ganz von allein bleibt der Pin ja nicht auf 0, wenn der Master ihn runterzieht aber nach 1µs wieder loslässt. genau das muss der Slave aber tun. Kann man mit zusätzlicher Hardware realisieren, das ist aber wohl nicht der Sinn der Sache. Wenn das freilich nicht wirklich 1-Wire sein muss, kann man sich ja davon lose inspirieren lassen und die Problemzonen umschiffen. Beispielsweise indem man nur definiert, dass der Pin zum Abfragezeitraum (z.B. 10-20µs nach dem Takt) auf 0 oder 1 sein muss, dazwischen aber undefiniert sein darf. Dann wird's handhabbar. Beachte ggf. die rechtliche Seite. Wenn das mehr werden soll, als persönliche Bastelei, dann könnte Maxim/Dallas da patentrechtlich mitmischen wollen.
Mhh ja, an ne Eigenentwicklung habe ich auch schon gedacht... Und nein, soll nur fürn Privatzweck sein ;)
Wenn's nicht schnell sein muss, programmier doch noch ein I2C als Software. Sonst gibts noch die UART sofern nicht auch schon belegt.
Was solls den eigentlich genau werden, was du da bauen willst. Vlt gibts noch ne Lösung, an die sonst noch keiner gedacht hat, wenn wir wissen, was du bauen willst.
Man, da fällt mir doch gerade noch ein, dass ich sowas mal mit Manchester Codierung gemacht habe. Braucht auch nur eine Leitung. Denk mal drüber nach.
Was ich vorhabe: Ich baue mir einen Roboter mit einem "Mainboard" auf das ich mehrere Module stecken möchte. Auf dem Mainboard wird ein Mega32 sitzen, der Daten von den Modulen bekommen soll und Daten an die Module senden soll. Bei UART gibt es genau das gleiche Problem, was mache ich, wenn ich z.B. eine UART schnittstelle auf das Modul packen möchte? Es wird also vermutlich auf jeden Fall auf was selbst programmiertes hinauslaufen... Das sollte natürlich recht einfach und auch relativ zeitunkritisch sein. Besonders schnell ist nicht umbedingt erforderlich (aber es darf auch nicht total lahm sein) Gruß, Lasse
Nimm das HW-I2C nur zur Kommunikation zwischen den AVRs. Um IO-Expander, EEPROM usw. anzusprechen reicht ein Single-Master I2C in Software, ist außerdem viel einfacher und Du kannst beliebige Pins nehmen. Peter
Wenn du meinst ;) Hast du zufällig Code da? Am besten Assembler, oder aber was andres, kann ich mir ja trotzdem mal angucken um so in etwa zusehen, was ich da machen muss :) Gruß, Lasse
Hallo, bei Atmel habe ich auf die Schnelle keine passende App-Note entdeckt, aber für den PIC hat Microchip was geschrieben: http://ww1.microchip.com/downloads/en/appnotes/00554c.pdf Lass dich davon etwas inspirieren... MFG Kai
Ja, danke :) Jetzt hab ich's natürlich auch auf der andren Website gefunden... Danke nochmal :) cu, Lasse
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.