Autor |
Digitales Signal erzeugen und auswerten mit PIC Suche nach: pic (2056) |
|
|
|
|
BID = 440237
Peo Gesprächig
Beiträge: 181 Wohnort: Baden-W.
|
|
Hallo
Ich würde gerne mit einem PIC mehrere andere PICs ansteuern, ohne bei dem "Master-PIC" für jeden gesteuerten PIC einen PIN zu nutzen.
Am geschicktesten wäre dafür ja z. B. ein binäres Signal vom Master zu senden, dass dann die anderen nur auswerten müssen.
Als etwas "rustikale" Lösung habe ich mir gedacht, dass eine Leitung auf High geschaltet wird und die anderen PICs zählen, wie viele Impulse während dessen auf Leitung zwei gesendet werden. Sobald die Stuerleitung wieder Low ist, werten die PICs die Zahl aus und handeln entsprechend. Geht die Steuerleitung wieder auf High, geht es von vorne los.
So etwas kann ich problemlos programmieren. Aber ich finde, es ist weder elegant noch praktikabel, wenn man bis zu 20 PICs ansteuern will.
Wie kann ich es dann machen, dass ich die Botschaft binär verschlüssle und dann entschlüsseln kann.
mfg
Peo |
|
BID = 440241
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
|
Wenn du "problemlos" programmieren kannst, dann benutze doch einfach I²C.
Ich bin grade ebenfalls an einer, allerdings bidirektionalen, Vernetzung mehrer µCs.
Allerdings bin ich AVR-Nutzer, und die AVRs, die ich programmiere unterstützen auch den sog. SLave-Modus: Ein Register wird mit einer Adresse geladen und sobald diese Adresse angesprochen wird, kann er sich die Daten vom Bus holen.
Nur eben so, dass jeder µC berechtig ist, an andere Daten zu senden.
Bei dir ist es noch einfacher, da du nur in eine Richtung Daten senden willst:
Jeder PIC bekommt eine Adresse, der Master sendet dann erst die Adresse und nach einem Acknoledgement (Bestätigung) eines Slaves kommen dann die Daten.
Sollte der PIC keinen Slave-Modus unterstützen, musst du I²C softwaremäßig implementieren.
Edit:
Es gingen auch noch viele andere Möglochekteiten, z.b. wie eine UART, SPI oder eine eigene serielle Schnittstelle mit Interruptleitung, Takt- und Datenleitung. Findige Leute nutzen die Interruptleitung gleich als Taktleitung, somit reduziert sich die Hardware auf 2 IO-Pins.
Du musst nur zusehen, dass der Takt nicht zu hoch ist, damit der andere PIC sich synchronisieren kann. Interruptleitung ergibt insofern Sinn, dass die Taktleitung nicht gepollt werden muss.
Dann geht es analog zum I²C-Bus weiter: Erst Adresse, dann Daten senden. Möglicherweise noch eine Checksumme (, die allerdings nur dann Sinn macht, wenn die Verbindung bidirektional ist, was wieder komplizierter wird.)
Kurz gesagt: sehr viele Wege führen nach Rom.
_________________
[ Diese Nachricht wurde geändert von: DonComi am 1 Jul 2007 17:30 ] |
|
BID = 440372
hajos118 Schreibmaschine
Beiträge: 2453 Wohnort: Untermaiselstein
|
Aufgabenstellung klingt nach SPI - Bus: fixe Hardware (1 Master xxx-Slaves) Alle Slaves und der Master in einem Ring vernetzen, dann ist der Rest nur noch Software ...
|
BID = 440394
qutom Gelegenheitsposter
Beiträge: 58 Wohnort: Marl
|
Zum vernetzen von Pics würde ich I2C, SPI oder RS232 nehmen, diese Schnittstellen haben viele Pics als Hardware schon on Chip.
Aber wie siehts mit der Stromversorgung aus? Wenn Du da die Stromversorgung per Bus auch noch nehmen willst, kommste da schnell auf viele Leitungen. Ich würde da den 1-Wire Bus nehmen, dann sinds nur 3 Leitungen.
|
BID = 440529
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Na, der I²C-Bus ist ein "Inter Integrated Circuit"-Bus. Der ist einfach gemacht worden, um verschiedene Periferie auf z.b. einem Board oder einem System zu vernetzen.
Stromversorgung sollte ja kein Problem darstellen, wenn alles in einem System ist, also die gleiche Versorgung hat.
Sollten die PICs aber von verschiedenen Geräten versorgt werden und ein Bus aus dem Gerät herausgeführt werden rate ich dringends zur galvanischen Trennung.
Aber das wird der Fragesteller besser wissen als wir.
Und nebenbei hatte ich UART, I²C und SPI bereits vorgeschlagen.
_________________
|
BID = 440688
Peo Gesprächig
Beiträge: 181 Wohnort: Baden-W.
|
Hallo
Erst einmal Danke für die Tipps.
Da ich neu im Bereich kommunizierender Chips bin, sind mir die ganzen aufgeführten Protokolle unbekannt.
Meine (derzeitig geplante) Lösung sieht wie folgt aus:
2 Kanäle für die Kommunikation.
Kanal 1 ist CLOCK
Kanal 2 wird für die Daten genutzt.
Der Master sendet ein Clock Signal aus, auf das die anderen PICs reagieren und ein Programm aufrufen, mit dem Sie bei den folgenden sechs CLOCK Signalen (ich will 6 Bit senden) jeweils den PIN der Datenleitung testen. Nach jedem Test schieben Sie die Bits im Register eins nach links und addieren 0 oder 1 zum Register dazu.
Nachdem der 6. Zyklus durchlaufen ist. wertet jeder PIC den übertragenen Wert aus in dem er ihn mit einem gespeicherten Wert vergleicht und dann entsprechend handelt.
Die andere Frage ist die der galvanischen Trennung. Wie schnell sind denn Optokoppler? Ich kann entweder den Master vom den anderen PICs trennen (2 Optokoppler pro PIC) oder alle PICs mit der gleichen Stromversorgung antreiben und deren Ausgänge galvanisch trennen (4 Optokoppler je PIC).
mfg
Peo
[ Diese Nachricht wurde geändert von: Peo am 3 Jul 2007 15:16 ]
|
BID = 440700
cholertinu Inventar
Beiträge: 3755 Wohnort: CH
|
Zitat :
Peo hat am 3 Jul 2007 15:15 geschrieben :
|
(4 Optokoppler je PIC).
|
Wie kommst du auf 4 bei zwei verwendeten Übertragungsleitungen (Clock+Data)?
Du arbeitest ja unidirektional.
|
BID = 440705
hajos118 Schreibmaschine
Beiträge: 2453 Wohnort: Untermaiselstein
|
Zitat :
Peo hat am 3 Jul 2007 15:15 geschrieben :
|
Hallo
Erst einmal Danke für die Tipps.
Da ich neu im Bereich kommunizierender Chips bin, sind mir die ganzen aufgeführten Protokolle unbekannt.
|
Diese Protokolle haben den Vorteil, dass sie von relativ viel Hardware "verstanden" wird.
Adressierung (welcher der angeschlossenen Slaves ist gemeint) und Kommandos (was soll der Slave denn tun) sind im protokoll schon festgelegt, wobei natürlich nicht jeder beliebige Slave auch jedes Kommando versteht.
Ebenso sollte es einen Slave nicht stören, wenn ein anderer ein Kommando bekommt.
Zitat :
Peo hat am 3 Jul 2007 15:15 geschrieben :
|
Die andere Frage ist die der galvanischen Trennung. Wie schnell sind denn Optokoppler? Ich kann entweder den Master vom den anderen PICs trennen (2 Optokoppler pro PIC) oder alle PICs mit der gleichen Stromversorgung antreiben und deren Ausgänge galvanisch trennen (4 Optokoppler je PIC).
|
Eine galv. Trennung brauchst Du für die Sende - und Empfangsrichtung pro Leitung.
Wenn möglich entkoppelt man die Empfänger, da es immer nur einen Sender, jedoch mehrere Empfänger geben kann.
Aufwändiger werden bidirektionale Signalleitungen (Datenleitungen)
Hier muss die Empfangsrichtung "stumm" geschaltet werden, wenn gesendet wird. Per default sollte diese Leitung aber immer abgehört werden. (Evtl. um einer Datenkollision vorzubeugen).
|
BID = 440823
Peo Gesprächig
Beiträge: 181 Wohnort: Baden-W.
|
Hallo
Also schließe ich die Empfänger-Pics über Optokoppler an den Sender PIC an.
Brauche ich da nun pro Empfänger-PIC die Optokoppler oder reicht es, wenn ich die Ausgänge des Master-PIC an die Optokoppler anschließe und das Signal dann von dort an alle Sender-PIC verteile?
Wie schnell schaltet ein Optokoppler? Wenn das Signal zu schnell ist, würde ja sonst die Übertragung nicht funktionieren.
mfg
Peo
Nachtrag: die vier Optokoppler hätten den jeweiligen gesteuerten PIC von den angehängten Bauelementen getrennt.
|
BID = 440866
hajos118 Schreibmaschine
Beiträge: 2453 Wohnort: Untermaiselstein
|
Zitat :
Peo hat am 4 Jul 2007 07:25 geschrieben :
|
Also schließe ich die Empfänger-Pics über Optokoppler an den Sender PIC an.
Brauche ich da nun pro Empfänger-PIC die Optokoppler oder reicht es, wenn ich die Ausgänge des Master-PIC an die Optokoppler anschließe und das Signal dann von dort an alle Sender-PIC verteile?
|
Für alle PICs (Sender / Empfänger ist erstmal Nebensache), die auf gemeinsamen Potential sind (=gleiche Masse), benötigst Du keinen Optokoppler (wg. galv. Trennung).
Alle anderen musst Du mit Optokoppler anklemmen, sonst ist die Trennung nicht mehr gegeben.
Zitat :
|
Wie schnell schaltet ein Optokoppler? Wenn das Signal zu schnell ist, würde ja sonst die Übertragung nicht funktionieren.
|
Gibt's sicherlich in ausreichender Geschwindigkeit.
Früher hab' ich die bei HP gesucht - bin abert schon zu lange nicht mehr in der Richtung aktiv gewesen, um Dir einen aktuellen Tip zu geben, sorry!
|
BID = 440871
cholertinu Inventar
Beiträge: 3755 Wohnort: CH
|
Zitat :
hajos118 hat am 4 Jul 2007 10:14 geschrieben :
|
Wie schnell schaltet ein Optokoppler? Wenn das Signal zu schnell ist, würde ja sonst die Übertragung nicht funktionieren.
|
Was ist für dich "schnell"?
Wir verwenden für die etwas schnellere Übertragung mit Optokopplern häufig den Sharp PC410:
http://www.datasheetcatalog.com/dat.....shtml
Oder für zwei Leitungen den Typ PC4 D10, da sind gleich zwei drin.
Mit diesen Optokopplern kommst du locker bis zu einer Übertragungsrate von 1MBit/s hoch.
|
BID = 441334
Peo Gesprächig
Beiträge: 181 Wohnort: Baden-W.
|
Hallo
Danke für die Tipps.
mfg
Peo
|