-
Du bekommst (imho) nen Interrupt bei den AVR Controllern, wenn da Daten über I²C ankommen.
Aber bei 1-wire muss ich die ganze Zeit pollen und wenn ich dann noch ne Leitung brauche, die sagt, ob gerade gesendet wird (deine INT-Leitung), dann habe ich wieder zwei Leitungen und kann gleich I²C benutzen, oder gibt es versteckte Vorteile beim 1-Wire (was ich ja auch noch per Software im µC basteln muss...)
-
es iss schneller, es kann weitere strecken überbrücken, und sich selbst per strong-pullup versorgen, dann brauche ich mit int-leitung nur 3 leitungen... es sind bis zu 80 devices pro sekunde scannbar
Martin
-
Moin
Also dein Projekt hört sich wirklich sehr interessant an. Vorallem da du es auch so gut planst. Das ist bei mir immer das Problem, dass cih zu schnell was sehen will :D
Also wie hier schon gesagt würde: Ich würde noch weitere Interruptsdurchschleifen.
Andun
-
Mhh... Wie genau soll denn dieses 1-Wire Zeugs jetzt aussehen, irgendwie finde ich gerade nichts gescheites dazu...
Wenn wir mal davon ausgehen, dass wir sowieso Versorgungsspannung haben, dann brauch man doch nur eine Datenleitung und eben die Interruptleitung..
Die Datenleitung ist klar wofür die ist, die Interruptleitung wird von einzelnen Modulen gesetzt (ob jetzt High oder Low is egal) um zu signalisieren, dass jetzt Daten kommen.
Sobald jetzt die INT-Leitung gesetzt wurde (vom Modul) sendet das Modul über die Datenleitung die Modulnummer usw. usf.
Dieses 1-Wire Protokoll muss ich aber erst noch in meinen Controllern programmieren oder gibt es sowas bei den Atmelprozessoren schon?
Zu den durchgeschliffenen Interrupts: Wofür könnten die Module die denn gebrauchen? Es würden 3 am Mega32 zur Verfügung stehen.
-
also es iss so: eine situation: ein modul erkennt plötzlich, dass sich ein objekt mit der geschwindigkeit 5km/h nähert, dies tut es durch einen sharp-sensor, und einem aufgebauten µc!
1. master führt andere aufgaben aus
2. slave errechnet aus zwei messpunkten geschwindigkeit
3. slave setzt int auf high
4. master geht in ISR
5. slave sendet seine id (um zu erkennen, WELCHES modul nun gesendet hat, dasses neue daten senden will)
6. master spricht den chip mit der id an, und erwartet daten
7. slave sendet daten
8. slvae setzt int auf low
9. master reagiert, da keine daten mehr vorhanden (da int = low)
so ist das gedacht...
das 1-wire gibts einfach in bascom schon, weiß nich ob du das kennst, finde ich ganz praktisch...
das mit den ints:
den erste (master <-> slave) setze ich ein, um zu signalisieren: ein device hat daten für dich
der zweite (master -> slave) setze ich vermutlich ein, um die einzelnen module direkt schnell anzusprechen, der master setzt einige adressleitungen auf die passende adresse, und durch eine logik, die auf jedem modul sitzt, wird diese gegen die moduladresse verglichen, und der int am modulprozessor auf 1 gesetzt, so kann man den modulprozessor aus dem sleep in den normalmodus versetzen, wenn der prozessor daten anfordert.
haste das jetzt so verstanden?
Martin
-
Ja :) Danke :)
Ich habe vor, die Controller mit Assembler zu programmieren ;) SPI und I²C haben daher den Vorteil, dass die Hardwaremäßig schon auf den Controllern drauf sind :) Daher würde ich gerne nur auf die beiden Protokolle zurück greifen, aber ich kann ja auf jeden Fall auch Leitungen für das 1-Wire Protokoll machen, schadet ja nicht (kostet mich aber eine Int-Leitung) Aber ich werd's machen, so kann ich später noch Module bauen, die das 1-Wire Protokoll nutzen :)
Für das zweite (die Addressierung der Module) brauche ich doch aber keine Int-Leitung vom Mega32, das kann ich doch auch über "normale" Portpins machen. Die Logik würde ich auf die Hauptplatine bauen, so dass ich am Modul nur einen Pin habe, der signalisiert, ob das Modul angesprochen wird oder nicht. Das spart Bausteine auf den Modulen und so brauch ich dann auch nicht aufzupassen, dass keine zwei Module die gleiche Adresse haben.
-
So nachdem ich noch länger drübernachgedacht hab:
Ich werde kein SPI und kein 1-Wire benutzen. Da ich eh jede Modulplatine selber entwickeln werde und somit frei in meiner Entscheidung bin, welches Bussystem ich nehme, werde ich I²C nehmen.
Dafür spricht:
Gegenüber SPI braucht es weniger Pins.
Gegenüber 1-Wire ist es einfacher zu benutzen (im Controller schon integeriert) und zudem schneller.
-
1-wire ist schneller als I²C, aber ich will dir nicht deine Meinung nehmen ^^
außerdem iss 1-wire nen extrem einfaches protokoll ^^ musste dir vielleicht mal durchlesen
Martin
-
Hast du denn einen Link zu den Spezifikationen? Ich finde nichts, auch nicht auf der Seite, die du schon gelinkt hast.
Wikipedia:
"1-Wire is similar in concept to I²C, but with lower data rates and a much lower cost."
lower datarate => langsamer (oder?)
Gruß, CowZ
-