Forum: Mikrocontroller und Digitale Elektronik AD Wandler am AT90S2313


von Michael Lippert (Gast)


Lesenswert?

Hallo,

ich habe einen ADS7822 12 bit 75 kHz AD Wandler mit seriellem Output an
einen 2313 gepackt um das Ding auszulesen und die Daten an den PC zu
senden. Ich benutze BASCOM und ich habe den leichten Verdacht, dass
meine Lösung, für jedes der 12 seriellen Bits eine eigene Variable mit
1 Bit Größe zu benutzen seeehhhrr seehhr suboptimal ist. Wie würde man
sowas denn normalerweise ansteuern? Und existiert eine einfache 1 Chip
Lösung um per USB schneller die Daten an den PC zu senden als nur mit
der RS232 Schnittstelle?

Viele Grüße und vielen Dank,
Michael

von HansHans (Gast)


Lesenswert?

Ja und warum nimmst du lauter  Bit Variablen ?
und nicht 2 x Byte oder 1x Word die Restlichen
Bit s sind dann halt Low ..
Ich lese die Daten von einem 16 Bit ADC
(3Bit Control ) + 16Bit Wert) = 19bit so ein

Shiftin Pinb.4 , Portd.6 , Control , 1 , 3  ‘3bit lesen
Shiftin Pinb.4 , Portd.6 , Wert , 1 , 16  ’16 Bit lesen

und das geht ohne Probleme allerdings brauche ich keine 75khz ,
aber auch das sollte gehen .
Gruss HansHans

von Rufus T. Firefly (Gast)


Lesenswert?

Für die einfache Anbindung an einen PC wurden hier bereits oft genug
FT245/232 erwähnt. Beide erlauben höherer Übertragungsraten als eine
"echte" serielle Schnittstelle (~10 kByte/sec) - ob die mit Deinem
Wandler theoretisch erforderlichen 115 kByte/sec (12 Bits/Sample * 75
kSample/sec) übertragen werden können, hängt auch von der
Verarbeitungsgeschwindigkeit Deines µCs ab. Schneller als der FT232
wird der FT245, der aber benötigt ein 8 Bit breites Parallelinterface
zuzüglich einiger Handshakeleitungen.
Theoretisch könnte man auch den Prozessor weglassen und mit einem
Schieberegister in Hardware den FT245 mit Daten versorgen. Da scheint
ein CPLD praktisch zu sein.

Allerdings: Was machst Du mit 75 kSample/sec?

von Michael Lippert (Gast)


Lesenswert?

Hallo,

das ganze ist zum messen der Aktivität von Nervenzellen. Was ist ein
CPLD? Und eine zweite Frage: Wenn ich einen CCD auslese und die Daten
in Echtzeit an den PC senden möchte, wie macht man sowas? Ich hatte die
Idee einen der neuen PICs mit USB2 Interface zu nehmen und einen
schnellen 14 bit ADC. Hat man damit eine Chance?

von Michael Lippert (Gast)


Lesenswert?

Ich hatte auch die Idee mit dem Byte oder Word, aber wie kann ich das
praktisch machen?
Mit IF und dann zB %B0010000000000... addieren? Geht es auch
schneller?

Viele Grüße,
Micha

von Rufus T. Firefly (Gast)


Lesenswert?

Um 75 kSample/sec zu übertragen, selbst bei 12 Bit Samplegröße, ist noch
lange kein USB2 erforderlich.

Was das mit Deinem CCD betrifft, ist die zu erwartende Datenrate
entscheidend - und die dürfte wohl auch vom CCD selbst abhängen.


Betr. Deine Addition: Anscheinend benutzt Du Bascom.
Um Dein Sample zu speichern, musst Du einen 16-Bit-Integer verwenden.

Der Shiftin-Befehl von Bascom unterstützt direkt das Verarbeiten von
Wortlängen > 8; Du musst also nur

  Dim Variable As Integer

  Shiftin Pinb.0, Portb.1, Variable, 1, 12

verwenden und fertig.

Um das dann byteweise zu verarbeiten, kannst Du mit den Bascom-Befehlen
Low und High auf die zwei Bytes zugreifen, aus denen Deine Variable
besteht.

  Portc = High(Variable)
  Portc = Low(Variable)

... ob das so sinnvoll ist, hängt von Deiner Hardware ab.
Angenommen, ein FT245 wird verwendet und hängt an Portc, musst Du nach
jedem Anlegen eines Bytes an Portc noch einen Schreibstrobe für den
FT245 erzeugen (Pin /WR auf Low, warten, Pin /WR auf High) und
natürlich dessen Fifofüllstand testen (Pin /TXE testen).
Aber das beschreibt das Datenblatt des FT245.

von Michael Lippert (Gast)


Lesenswert?

Danke für die guten Tipps!
Der CCD ist fix genug, also die zu verarbeitende Datenrate wären 5 Mio
14 bit Werte pro sek. Also 70 MBit pro s, was gäbs da noch anderes als
USB 2?
Ich habe mal so einen FT245 bestellt und schau mal ob ich mit den 8
MBit schon was machen kann.

von Rufus T. Firefly (Gast)


Lesenswert?

USB2 ist schnell genug um die knapp 10 MByte/sec des CCD zu übertragen.
Allerdings sollte auch überlegt werden, was auf der PC-Seite damit
geschehen soll - mit einer derartigen Datenmenge irgendwas sinnvolles
anzufangen beginnt etwas schwierig zu werden.

Sowohl für die Signalaufbereitung als auch die Ansteuerung des
USB2-Controllers ist allerdings was deutlich leistungsfähigeres als ein
AVR erforderlich.
USB2-Device-Controller gibt es beispielsweise von Philips, und mit
'nem ARM sollte auch genügend Rechenleistung zur Verfügung stehen.
Du kannst Dir auch mal die EzUSB FX-Controller von Cypress ansehen, die
haben zwar nur einen MCS51-Kern, aber dafür einen sehr gut angebundenen
USB-Device-Controller.

Was möchtest Du mit den CCD-Daten anfangen? Ist das ein
kontinuierlicher Datenstrom? Oder tritt diese Datenrate nur
gelegentlich auf?

von Michael Lippert (Gast)


Lesenswert?

Hallo,

also die Daten sollen auf die Platte in Rohform wandern, jedes Frame
als ~500.000 Element Array. Da wird logischerweise die Platte schnell
voll, deswegen läuft es jedesmal auch nur ca. 20 s mit dieser
Datenrate, dann müsste man bei einem neuen Versuch wieder neu per Hand
starten. Nunja, und dann laden wir die Daten in matlab subtrahieren die
einzelnen Frames voneinander und  sehen dem Gehirn der Ratte bei der
Arbeit zu. Deswegen auch die 14 bit, weil es sonst nichts zu sehen
gibt.

Viele Grüße,
Micha

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.