www.mikrocontroller.net

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


Autor: Lasse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kai Riek (kairiek)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schon mal an SPI als Alternative gedacht???

Autor: Lasse (Gast)
Datum:

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

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lasse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mhh ja, an ne Eigenentwicklung habe ich auch schon gedacht...

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

Autor: Kai Riek (kairiek)
Datum:

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

Autor: Kai Riek (kairiek)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Kai Riek (kairiek)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lasse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lasse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kai Riek (kairiek)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kai Riek (kairiek)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Und noch ien Treffer bei Google: siehe Anhang...

Autor: Lasse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, danke :)

Jetzt hab ich's natürlich auch auf der andren Website gefunden...

Danke nochmal :)

cu, Lasse

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.