www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Daten von parallelem ADC einlesen


Autor: Luky S. (luky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe einen AT91SAM7S an welchem bislang ein SPI ADC mit 3MSPS hängt.
Leider reicht die Geschwindigkeit nicht ganz aus und ich muss einen 
schnelleren ADC verwenden. 10-20MSPS wären toll. Es wird aber nicht 
dauernd eingelesen, sondern nur 1024 Werte auf einmal und diese dann 
abgespeichert, bearbeitet und ev. verschickt.
Bevor ich nun auf eine anderen Prozessor wechsle möchte ich mal 
nachfragen wie schnell ich die Daten in den AT91 bekommen würde. Wäre es 
eine alternative den externen Datenbus des AT91SAM7SE zum Anschluss 
eines parallelen ADCs zu missbrauchen?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lukas Slz wrote:
> Wäre es
> eine alternative den externen Datenbus des AT91SAM7SE zum Anschluss
> eines parallelen ADCs zu missbrauchen?

Alternative zu was?

Memory mapped IO ist der übliche Weg, um parallele IO-Devices 
anzusprechen.

Nur wenn kein externer Datenbus existiert, muß man notgedrungen 
umständlich mit den Bits wackeln.


Peter

Autor: Luky S. (luky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alternative zu manuellem Pinwackeln und Port einlesen.
Wie nutzt man Memory mapped IO auf einem AT91SAM7? Welche 
Einlesegeschwindigkeit (ohne Verarbeitung der Daten) kann man damit 
erwarten?

Autor: 3348 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Datenblatt sollte ein Kapitel zum externen Bus beinhalten. Mit 
Daten, zykluszeiten usw.

Autor: Luky S. (luky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also muss ich auf den AT91SAM7SE wechseln.
Gibt es keine Möglichkeit die Daten schnell mit einem Sam7S ohne 
Externem Businterface einzulesen z.B. mit DMA?
Zum Ansteuern des ADC muss dabei mit einem Pin ein Taktsignal generiert 
werden und gleichzeitig 12Bits vom Port eingelesen und abgespeichert 
werden.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Zum Ansteuern des ADC muss dabei mit einem Pin ein Taktsignal generiert
>werden und gleichzeitig 12Bits vom Port eingelesen und abgespeichert
>werden.

Damit hast du dir die Frage doch zur Hälfte schon selbst beantwortet. 
Jetzt musst du nur noch herausfinden, wielange das dauert.

Autor: Luky S. (luky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit einfachem Ansteuern des PIO Controllers des AT91SAM7S gehts nur bis 
ca. 2MSPS. Mehr wäre schön...
for (loop = 0; loop < (LOOPS); loop++) { //Messe 

  p2PIO->PIO_SODR = (1<<8); //High
  value  = ((p2PIO->PIO_PDSR) & 0xFF); //Read Pin
  p2PIO->PIO_CODR = (1<<8); //LOW
  buffer[loop] = value;

} //for

Ich kann auch den Controller Wechseln, er sollte aber möglichst klein 
und trotzdem handlötbar bleiben.

Autor: 3348 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Diese Funktionalitaet kann man sonst auch einem CPLD anhaengen...

Autor: Luky S. (luky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mir wäre ehrlich gesagt lieber bei einem in C programmierbaren 
Controller zu bleiben und mich nicht noch extra in VHDL einzuarbeiten
So extrem sind meine Geschwindigkeitsanforderungen auch wieder nicht...

Autor: Maik Lindemann (chufu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du schon eine lösung gefunden?

Autor: schablonski (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie wärs mit einem ram oder fifo als zwischenbuffer und dann ganz 
gemütlich ins avr einlesen

Autor: Maik Lindemann (chufu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In meinem Anwendungsfall wird ein direkter weg benötigt.

Der ADC wird ausgelesen, die Werte manipuliert und über DAC ausgegeben. 
Dies soll nach möglichkeit schneller als 500ns sein.

Hat jemand eine Idee?

Autor: Luky S. (luky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe was nettes gefunden, hatte aber keine Zeit zum ausprobieren:
CY7C68013 "FX2" mit AD9283 ADC ohne weitere ICs
http://volodya-project.sourceforge.net/SR/sr.php
Wenns ohne PC sein soll würde ich mir mal bei den DSPs umsehen da haben 
einige (u.A von Analog Devices) parallele DMA-Schnittstellen

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Irgendwie hagelt es da die Zehnerpotenzen durcheinander:
>10-20MSPS wären toll.

>Der ADC wird ausgelesen, die Werte manipuliert und über DAC ausgegeben.
Aber schon um alle 1024 Werte mit 20MSps einzulesen brauchst du 51µs. 
Gleich darauf heisst es:
>Dies soll nach möglichkeit schneller als 500ns sein.
500ns sind aber nur 2MSps, die hattest du doch schon mit der 
Softwarelösung.

Die lässt sich auch noch optimieren:
int *pbuffer = buffer;
for (loop = 0; loop < (LOOPS); loop++) { //Messe 
  p2PIO->PIO_SODR    = (1<<8);  //
  *(pbuffer++)       = p2PIO->PIO_PDSR; // keine Zwischenvariable,
                                        // nicht jedesmal Adresse neu berechnen
  p2PIO->PIO_CODR    = (1<<8);  //
} //for
Da hilft ein Blick ins Listing, und dann dem Compiler nach dem Maul 
programmieren... ;-)


Was soll denn jetzt wie schnell in welcher Zeit passieren?

Autor: Maik Lindemann (chufu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achtung! Die 1024 Werte mit den 20MSps und die 500ns sind 2 völlig 
voneinander verschiedene Probleme von verschiedenen Autoren. Sie passen 
blos thematisch zusammen ;-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.