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
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
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?
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?
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
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.
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.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.