Forum: Mikrocontroller und Digitale Elektronik 1-Wire auf einem AVR mit Assembler


von Lasse (Gast)


Lesenswert?

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

von Kai R. (kairiek)


Lesenswert?

Schon mal an SPI als Alternative gedacht???

von Lasse (Gast)


Lesenswert?

Ja, aber ansich gleiches Problem, nur mit mehr "verbrauchten" Pins...
Was mach ich, wenn ich SPI-Devices auf den Modulen haben möchte?

von A.K. (Gast)


Lesenswert?

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.

von Lasse (Gast)


Lesenswert?

Mhh ja, an ne Eigenentwicklung habe ich auch schon gedacht...

Und nein, soll nur fürn Privatzweck sein ;)

von Kai R. (kairiek)


Lesenswert?

Wenn's nicht schnell sein muss, programmier doch noch ein I2C als
Software.
Sonst gibts noch die UART sofern nicht auch schon belegt.

von Kai R. (kairiek)


Lesenswert?

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.

von Kai R. (kairiek)


Lesenswert?

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.

von Lasse (Gast)


Lesenswert?

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

von peter dannegger (Gast)


Lesenswert?

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

von Lasse (Gast)


Lesenswert?

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

von Kai R. (kairiek)


Lesenswert?

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

von Kai R. (kairiek)


Angehängte Dateien:

Lesenswert?

Und noch ien Treffer bei Google: siehe Anhang...

von Lasse (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.