Frage zur Kommunikation mit zwei Steckkarten
-
- träumt vom eigenen c't-Lab
- Beiträge: 8
- Registriert: 21.08.2008, 19:13
- Wohnort: Bad Wurzach
- Kontaktdaten:
Frage zur Kommunikation mit zwei Steckkarten
Hallo
Ich schreibe eine Dokumentation über den Aufbau des c't Labs. Beim ADA-IO bin ich mir nicht sicher, wie das mit den Daten der Steckkarten zum Atmega funktioniert. Wenn man die D/A und die A/D Karte gleichzeitig einsteckt, dann verwenden doch beide Karten gleichzeitig den Port B des Mikrokontrollers. Wie geht das, dass die sich nicht in die Quere kommen?
Ich schreibe eine Dokumentation über den Aufbau des c't Labs. Beim ADA-IO bin ich mir nicht sicher, wie das mit den Daten der Steckkarten zum Atmega funktioniert. Wenn man die D/A und die A/D Karte gleichzeitig einsteckt, dann verwenden doch beide Karten gleichzeitig den Port B des Mikrokontrollers. Wie geht das, dass die sich nicht in die Quere kommen?
- ompf
- kann c't-Lab-Module konstruieren
- Beiträge: 168
- Registriert: 19.01.2008, 13:03
- Wohnort: Dortmund
Die Wandler werden über SPI angesprochen, die Ports über I2C. Beides sind serielle Schnittstellen.
Bei I2C haben die Geräte Adressen. Da kann man 64 Teilnehmer dranhängen.
SPI verwendet Chip Select-Leitungen, um die Adressierung vorzunehmen. Jede Karte hat ihre eigene Leitung, woraus sich auch ergibt, das bei einer AD- und einer DA-Karte der Vollausbau erreicht ist.
Gruß
Patrick
Bei I2C haben die Geräte Adressen. Da kann man 64 Teilnehmer dranhängen.
SPI verwendet Chip Select-Leitungen, um die Adressierung vorzunehmen. Jede Karte hat ihre eigene Leitung, woraus sich auch ergibt, das bei einer AD- und einer DA-Karte der Vollausbau erreicht ist.
Gruß
Patrick
- ompf
- kann c't-Lab-Module konstruieren
- Beiträge: 168
- Registriert: 19.01.2008, 13:03
- Wohnort: Dortmund
SPI kann man sich vorstellen, wie zwei verbundene Schieberegister. Auf beiden Seiten packt man Daten rein und nach einer bestimmten Anzahl von Taktzyklen kann man die auf der jeweils anderen Seite wieder auslesen. Hierzu braucht man drei Leitungen: master out, slave in (MOSI), master in, slave out (MISO) und den Takt (SCLK). Wenn mehrere Kommunikationspartner beteiligt sind, gibt's für jeden noch eine eigene Leitung zur Auswahl (chip select, CS). Daran merkt der jeweilige Baustein, daß die Daten für ihn bestimmt sind.Tobsel hat geschrieben:Danke für die Antwort. Wie meinst du das mit der eigenen Leitung und dass dann der Vollausbau erreicht ist?
Bei der ADA-C ist das so realisiert:
Pin 32: SCLK (Takt)
Pin 31: SDATAOUT (MOSI, Daten zu den Karten)
Pin 29: STR_DAC (CS für die DA16-8)
Pin 28: STR_ADC (CS für die AD16-8)
Pin 27: SDATAIN1 (MISO, Daten von den Karten)
Pin 26: SDATAIN2 (das ganze nochmal)
Wenn Du weitere Karten mit SPI-Interface einbinden wolltest, bräuchtest Du zusätzliche CS-Leitungen. Leider sind jedoch alle Pins bereits belegt, so daß mit dem bestehenden Konzept außer der AD16-8 und der DA16-8 keine weiteren Module mehr angesprochen werden können.
Patrick
- ompf
- kann c't-Lab-Module konstruieren
- Beiträge: 168
- Registriert: 19.01.2008, 13:03
- Wohnort: Dortmund
I2C verwendet 7 Adressbits (also 128 Teilnehmer, nicht 64). Jeder I2C-Befehl beginnt mit der Adresse, gefolgt von einem bit zur Unterscheidung, ob gelesen oder geschrieben werden soll, gefolgt von den Daten, Befehlen oder was halt so übertragen werden soll.Tobsel hat geschrieben:Weist du, wie die Adressauswahl mit I2C bei der Kommunikation mit den Ports funktioniert?
Bei den PCA9554A sind die oberen vier Adressbits fest verschaltet und die unteren vier auf die Pins 1..3 des Käfers gelegt. Damit kann man maximal 8 Stück in einer Schaltung haben.
Auf den IO8-32 sitzen jeweils vier Bausteine, die über die fest angeschlossenen A0 und A1-Leitungen unterschieden werden. A2 ist auf einen Jumper geführt, so daß man zwei Karten verbauen kann, um auf die möglichen acht zu kommen.
I2C ist eine Erfindung von Philips (heute NXP) und war zur Vernetzung von TV-ICs gedacht. Bei Philips findet sich auch eine Application Note, die das Protokoll ausführlich beschreibt.
Gruß
Patrick
- moosmichel001
- kann c't-Lab-Module konstruieren
- Beiträge: 175
- Registriert: 06.12.2007, 10:09
- Wohnort: Schwerin
Vereinfacht:
Das sind I2C-Porterweiterungen, die bekommen seriell 8bit übermittelt und legen diese an die I/O-Pins bzw. es werden die Zustände der I/O-Pins ausgelesen. Wir benutzen also nur 2 Pins des Atmega und haben jede Menge I/O-Pins. Bis zu 64.
A0 und A1 sind auf der Platine festverdrahtet.
Mit dem Jumper wird das Adressbit A2 der der 2. IO8-32 gesetzt. Dann wird Vcc an A2 gelegt.
Durch R1(10k) fließt nur ein Strom von 0,5 mA, da sind wir von einem Kurzschluß weit entfernt.
Das sind I2C-Porterweiterungen, die bekommen seriell 8bit übermittelt und legen diese an die I/O-Pins bzw. es werden die Zustände der I/O-Pins ausgelesen. Wir benutzen also nur 2 Pins des Atmega und haben jede Menge I/O-Pins. Bis zu 64.
A0 und A1 sind auf der Platine festverdrahtet.
Mit dem Jumper wird das Adressbit A2 der der 2. IO8-32 gesetzt. Dann wird Vcc an A2 gelegt.
Durch R1(10k) fließt nur ein Strom von 0,5 mA, da sind wir von einem Kurzschluß weit entfernt.
Eine genagelte Schraube hält besser als ein geschraubter Nagel.
FPGA v2.61 CORERAM/COREIO/(LCD)
ADAC v1.73 IO8-32/DA12-8(16bit)/AD16-8/CVC/REL8/OUT8
2 DCG(16bit) v2.91 DCP/BF + EDL 2A v1.78 + DIV v3.10 TRMSC
DDS v3.71 TRMSC + DIV v3.10 TRMSC + EDL 10A
FPGA v2.61 CORERAM/COREIO/(LCD)
ADAC v1.73 IO8-32/DA12-8(16bit)/AD16-8/CVC/REL8/OUT8
2 DCG(16bit) v2.91 DCP/BF + EDL 2A v1.78 + DIV v3.10 TRMSC
DDS v3.71 TRMSC + DIV v3.10 TRMSC + EDL 10A
-
- träumt vom eigenen c't-Lab
- Beiträge: 8
- Registriert: 21.08.2008, 19:13
- Wohnort: Bad Wurzach
- Kontaktdaten:
Und für was kann man das mit den I/O Pins benutzen? Für was braucht man beim internen A/D Wandler die Widerstände und Kondensatoren nochmal? Sorry für die dummen Fragen aber ich glaube, ich stehe kurz vor dem Durchbruch.
Ich hab das so gemeint, dass dann 0V drauf sind auf dem Versorgungsspannungsanschluss des Bausteins und dieser dann nicht mehr funktioniert, aber des ist nicht so wichtig.
Gruß
Tobi
Ich hab das so gemeint, dass dann 0V drauf sind auf dem Versorgungsspannungsanschluss des Bausteins und dieser dann nicht mehr funktioniert, aber des ist nicht so wichtig.
Was genau meintest du damit? Wo sind die verschaltet?ompf hat geschrieben:Bei den PCA9554A sind die oberen vier Adressbits fest verschaltet
Gruß
Tobi
- ompf
- kann c't-Lab-Module konstruieren
- Beiträge: 168
- Registriert: 19.01.2008, 13:03
- Wohnort: Dortmund
Wofür Du die I/O-Pins benutzen willst, solltest Du eigentlich geklärt haben, bevor Du die Platine aufgebaut hast. Terrarienheizung und -lampe, Modelleisenbahn-Weichen, Rolladen und Klolicht, oder die Tasterein- und Relaisausgänge eines Bordnetzsteuergerätes in einem HIL-Simulationsaufbau...Tobsel hat geschrieben:Und für was kann man das mit den I/O Pins benutzen?
Halt überall da, wo sich die Schaltfunktion auf "ein" und "aus" beschränkt.
1) vor jedem AD-Wandler muß ein Tiefpaß sitzen, der die Frequenzen am Eingang auf die halbe Abtastrate begrenzt. Sonst misst man völligen Müll. Der 300k-Widerstand bildet zusammen mit dem Kondensator diesen Tiefpass. Google mal nach "Abtasttheorem" und "RC-Tiefpass".Für was braucht man beim internen A/D Wandler die Widerstände und Kondensatoren nochmal?
2) Die Kombination aus 300k und 100k-Widerstand stellt einen Spannungsteiler dar. Der teilt die Eingangsspannung durch vier, so daß der Meßbereich bis 10V geht. "Spannungsteiler" kennt Google auch.
Dass diese eigentlich zur Basisplatine gehörenden Bauteile auf der IO8-32 sitzen, ist nicht wirklich sinnvoll. Grund dafür dürften einfach Platzprobleme gewesen sein.
Im Inneren des ICs. Du solltest Dir mal die Datenblätter der beteiligten ICs anschauen. http://www.alldatasheet.com , und dann bei "Part Name" die Typenbezeichnung eingeben. In der Ergebnisliste führt dann ein Klick auf das pdf-Symbol zum Datenblatt.tobsel hat geschrieben:Was genau meintest du damit? Wo sind die verschaltet?ompf hat geschrieben:Bei den PCA9554A sind die oberen vier Adressbits fest verschaltet
Gruß
Patrick
- moosmichel001
- kann c't-Lab-Module konstruieren
- Beiträge: 175
- Registriert: 06.12.2007, 10:09
- Wohnort: Schwerin
Der ADC kann aufgrund der Spannungsreferenz nur bis 2,5V messen und hat dann den Maximalwert 1023 erreicht.
Wenn du nun 10V an den Spannungsteiler legst kommen am ADC 2,5V an.
Wenn du nun 10V an den Spannungsteiler legst kommen am ADC 2,5V an.
Eine genagelte Schraube hält besser als ein geschraubter Nagel.
FPGA v2.61 CORERAM/COREIO/(LCD)
ADAC v1.73 IO8-32/DA12-8(16bit)/AD16-8/CVC/REL8/OUT8
2 DCG(16bit) v2.91 DCP/BF + EDL 2A v1.78 + DIV v3.10 TRMSC
DDS v3.71 TRMSC + DIV v3.10 TRMSC + EDL 10A
FPGA v2.61 CORERAM/COREIO/(LCD)
ADAC v1.73 IO8-32/DA12-8(16bit)/AD16-8/CVC/REL8/OUT8
2 DCG(16bit) v2.91 DCP/BF + EDL 2A v1.78 + DIV v3.10 TRMSC
DDS v3.71 TRMSC + DIV v3.10 TRMSC + EDL 10A
-
- träumt vom eigenen c't-Lab
- Beiträge: 8
- Registriert: 21.08.2008, 19:13
- Wohnort: Bad Wurzach
- Kontaktdaten:
Danke!
Hab mir jetzt nochmal das mit den Wandlern überlegt.
Oder kann es sein, dass in den Schaltplänen etwas mit der Pinbelegung nicht stimmt (siehe Bild)?
Was bringt es beim IFP, dass die 3 Empfangsleitungen über Dioden, wie in der Beschreibung beschrieben, "verodert" sind?
Hab mir jetzt nochmal das mit den Wandlern überlegt.
Wie kommt es, dass der MISO Anschluss des Atmega nicht mit den Wandlern verbunden ist? Wie können die dann ein Signal zurückschicken?ompf hat geschrieben:Bei der ADA-C ist das so realisiert:
Pin 32: SCLK (Takt)
Pin 31: SDATAOUT (MOSI, Daten zu den Karten)
Pin 29: STR_DAC (CS für die DA16-8)
Pin 28: STR_ADC (CS für die AD16-8)
Pin 27: SDATAIN1 (MISO, Daten von den Karten)
Pin 26: SDATAIN2 (das ganze nochmal)
Oder kann es sein, dass in den Schaltplänen etwas mit der Pinbelegung nicht stimmt (siehe Bild)?
Was bringt es beim IFP, dass die 3 Empfangsleitungen über Dioden, wie in der Beschreibung beschrieben, "verodert" sind?
- ompf
- kann c't-Lab-Module konstruieren
- Beiträge: 168
- Registriert: 19.01.2008, 13:03
- Wohnort: Dortmund
Weil hier nicht die schnelle Hardware-SPI des ATmega verwendet, sondern die Funktion in Software nachgebildet wird. Das ist zwar langsamer, läßt sich aber universeller an verschiedene Wandlerbausteine anpassen.Tobsel hat geschrieben:Wie kommt es, dass der MISO Anschluss des Atmega nicht mit den Wandlern verbunden ist?
Wenn Du in den Code guckst, siehts Du wie es funktioniert.
So kann man Daten von drei Quellen (RS-232, USB und 10base-T - LAN) empfangen, ohne irgendwas umschalten zu müssen. Du kannst sogar alle drei Schnittstellen gleichzeitig benutzen, wobei natürlich Müll entsteht, wenn auf zweien gleichzeitig Kommandos reinkommen.Was bringt es beim IFP, dass die 3 Empfangsleitungen über Dioden, wie in der Beschreibung beschrieben, "verodert" sind?
Du kannst z.B. Deinen PC mit Labview am LANport anschließen und gleichzeitig zum Fehlersuchen das Notebook mit HyperTerminal am USB betreiben.
Patrick