Schnelligkeit ADC vs I2C

OP #4151643
Lesenswert?

Hallo alle zusammen,

ich frage mich was schneller den Rohwert im Mikrocontroller bereitstellt 
( also vom Compiler weiterverarbeitet werden kann )

Wenn ich mir jetzt das Datenblatt des Atmega328p anschaue sehe ich vor 
lauter Bäumen den Wald nicht mehr.
Ich habe für den ADC = "13 - 260 µs Conversion Time" gefunden was Pie 
mal Daumen 3,8 kHz bedeutet und für den I2C soll ja 100 KHz, bzw. 400 
KHz sein.

Heißt das jetzt echt das das wenn ich die Wahl habe ein Bauteil über 
Analog oder I2C auszulesen lieber I2C nehmen sollte wenn diese 
Verbindung Zeitkritisch ist ?
Gast #4151685
Lesenswert?

Hi

>Ich habe für den ADC = "13 - 260 µs Conversion Time" gefunden was Pie
>mal Daumen 3,8 kHz bedeutet

Der ATMega kann bei voller Auflösung bis etwa 15kS/s

>und für den I2C soll ja 100 KHz, bzw. 400
>KHz sein.

Und bei 10Bit müssen mindestens 2 Byte über den Bus geschickt werden, 
macht also 100kHz bzw. 400kHz/16. Können aber auch mehr sein. Abgesehen 
davon sagen die 100/400kHz nichts über die Wandlungsgeschwindigkeit des 
ADCs aus, sondern nur wie schnell der Wert ausgelesen werden kann.

MfG Spess
#4151691
Lesenswert?

Auch ein externer ADC wird seine Wandlungszeit benötigen. Manche sind 
schneller (und dafür teuer), manche langsamer und billig. Zu der 
Wandlungszeit kommt dann noch die Transferzeit. Beim internen ADC sind 
das nur zwei Registerzugriffe, also wenige Prozessortakte.

Das ganze hängt von vielen verschiedenen Faktoren ab: Geschwindigkeit 
des DAC, Auflösung,...
Und: SPI ist fast immer schneller.

Ein anderer Grund für externe ADCs: Störungen. So ein Prozessor, der 
viele schnelle Schaltvorgänge hat, kann empfindliche analoge Schaltungen 
sehr leicht stören. Hier ist es günstig, den Prozessor so weit wie 
möglich von dem Analogteil zu trennen und externe ADCs einzusetzen. 
Diese haben weniger Schaltvorgänge, verursachen weniger Störungen und 
haben oft auch bessere technische Daten als die im Prozessor eingebauten 
ADCs. Genaue analoge Schaltungen und schnelle digitale Schaltungen 
benötigen unterschiedliche Halbleiterfertigungsprozesse. Die eingebauten 
ADCs sind deswegen sehr oft nur mittelmäßig.

fchk
Gast #4151938
Lesenswert?

Björn ------------ schrieb:
> Heißt das jetzt echt, dass das, wenn ich die Wahl habe, ein Bauteil über
> Analog oder I2C auszulesen, lieber I2C nehmen sollte

Wenn es schnell gehen soll ist ein externer ADC per SPI die schnellste 
Version. Die Begrenzung liegt beim ATmega, wie schnell er SPI-Daten 
einlesen kann. 100 kS/s sind dabei kein Problem.
#4154413
Lesenswert?

Dieter Werner schrieb:
> Es gibt auch Mikrocontroller mit schnellerem internen A/D Wandler, dann
> würde der Flaschenhals Schnittstelle wegfallen.
Die Coretex-Controller sind deutlich schneller. Der ADC kann mit 1MS/s 
feuern und die Daten per DMA gleich ins RAM schreiben.

Dieter Werner schrieb:
> Ich kenne mich allerdings mit Atmel nicht aus und weiß nicht ob die so
> was im Programm haben.
Klar, XMega oder ARM-Derivat (SAMxyz nennen die sich glaub ich).
#4154449
Lesenswert?

Björn ------------ schrieb:
> Heißt das jetzt echt das das wenn ich die Wahl habe ein Bauteil über
> Analog oder I2C auszulesen lieber I2C nehmen sollte wenn diese
> Verbindung Zeitkritisch ist ?

Nö.
Das I2C kostet Dich richtig viel Zeit, wärend der Du nichts anderes 
machen kannst. Auch I2C als Interrupt bringt kaum was, da der ganze 
Interrupt-Overhead bei jedem Byte hinzu kommt. Und es sind ja mindestens 
5 Byte nötig (Adresse+W, ADC-Startbyte, Adresse+R, Daten-low, 
Daten-high).

Dagegen schreibt Dir der interne ADC das Ergebnis direkt in 2 Register 
und wärend der nächsten Wandlung kannst Du den Wert schon bearbeiten.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren