Hallo, ich möchte den AD-Umsetzer AD7176-2 von Analog Devices mit dem Arduino Nano mittels SPI auslesen. Bevor ich jetzt allerdings einen Fehler mache, wollte ich fragen ob das überhaupt möglich ist. Ich habe nicht wirklich Daten über die Geschwindigkeit des SPI des Arduino gefunden. Normalerweise sollte es gehen, oder? AD7176-2: http://www.analog.com/en/analog-to-digital-converters/ad-converters/ad7176-2/products/product.html Arduino Nano: http://arduino.cc/de/Main/ArduinoBoardNano#.UzAx5YXLJko Gruß Stefan
:
Bearbeitet durch User
Stefan S. schrieb: > Ich habe nicht wirklich Daten über die Geschwindigkeit des SPI des > Arduino gefunden. Normalerweise sollte es gehen, oder? SPI selber ist ein statischer Bus, den ich sogar mit Tastern bedienen und auslesen könnte. Die eigentliche Frage ist doch eher: welche Geschwindigkeit brauchst du oder dein System?
Das ist mir schon bewusst. Der ADC hat eine Output Rate von 5 SPS bis zu 250 kSPS. Ich würde ihn schon gerne schnellstmöglich auslesen. Was wäre denn die maximale Geschwindigkeit was der Arduino noch schaffen würde?
Stefan S. schrieb: > Was wäre > denn die maximale Geschwindigkeit was der Arduino noch schaffen würde? 1 bit / 2 CPU Oszi-Perioden
Bzw wo kann ich herausfinden wie schnell das SPI des Arduino ist?
Stefan S. schrieb: > Bzw wo kann ich herausfinden wie schnell das SPI des Arduino ist? Du kannst mal im Datenblatt deines Controllers nachschauen. Und dann im Schaltplan deines Arduino, welche Pins da am SPI angeschlossen sind. So ein "Arduino" ist nämlich nur ein uC, der auf eine Platine gelötet wurde, und dazu passende Bibliotheken geliefert bekommt. Die beiden kursiv geschriebenen Informationsträger brauchst du zwingend für eine halbwegs sinnvolle Programmierung. Und dann noch das Handbuch für die verwendeten Bibliotheken (in deinem Fall sind das die Arduino-Bibliotheken). Und dann findest du blitzschnell das hier: http://arduino.cc/de/Reference/SPI#.UzBGnoVCJ8E Und da steht dann evtl. sowas drin:
1 | SPI.setClockDivider() allows you to change the clock speed to make |
2 | your device working properly (default is 4MHz). |
> Ich würde ihn schon gerne schnellstmöglich auslesen.
Warum? Ist das unbedingt nötig?
Auch wenn mein Auto locker 180 läuft, fahre ich trotzdem nur mit 80 ins
Geschäft...
:
Bearbeitet durch Moderator
Die SPI-Hardware ist da nicht das Problem. Du hast aber nur 30 Machinenbefehle um einen Messwert zu verarbeiten. ATmega328 in Assembler wahre da möglich. Mit der bequemen Arduino Library eher nicht.
Rausfinden kann man solche Daten AUF KEINEN FALL NIEMALS NICHT im Datenblatt des verwendeten ICs! Für den Arduino (Uno) den du wahrscheinlich meinst ist es wahrscheinlich das Datenblatt des Atmega 328P, das gibt es hier: http://www.atmel.com/Images/doc8161.pdf Und dort steht auf Seite 174 die Konfiguration des SPIs - als Maximumtakt gibt es da zu lesen 'fosc/2'. Thomas
@Kein Name: Theoretisch sollte man auch mit Arduino die Library weglassen, im Assembler den SPI-Takt auf fosc/2 (also 8 MHz) bringen und mit Inline-Assembler die Daten verarbeiten können. Da das wohl eher etwas mehr Programmierkentnisse braucht: Nimm nen dickeren uC - gibt doch sicher was von STM32/ARM :-) Thomas
Stefan S. schrieb: > er ADC hat eine Output Rate von 5 SPS bis zu > 250 kSPS. Ich würde ihn schon gerne schnellstmöglich auslesen. Was wäre > denn die maximale Geschwindigkeit was der Arduino noch schaffen würde? Mit SPI.setClockDivider(SPI_CLOCK_DIV2); läuft der SPI des Arduino mit 8 MHz clock rate. Ich habe mir deinen ADC nicht angeschaut, aber wenn die Wortlänge zum Übertragen eines Samples nicht > 32 bit ist, sollte das mit den 250 kSPS funktionieren.
Hallo, standardmäßig sind das bei allen Arduino's 4MHz für den SPI Bus. Vollkommen ausreichend. Ich sag nur: http://forum.arduino.cc/index.php?PHPSESSID=kabdbobdkgp3pb76h2m5p78js0&board=31.0 Oben hast eine Befehlsreferenz zu allen.
Thomas schrieb: > Nimm nen > dickeren uC - gibt doch sicher was von STM32/ARM :-) Um bei Arduino zu bleiben: Der Arduino Due (Atmel SAM3EXE Cortex-M3) :-)
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.