Forum: Mikrocontroller und Digitale Elektronik Generelle Frage zur seriellen DÜ / Samplerate ADC


von Thomas O. (Gast)


Lesenswert?

Hallo,

ich habe mal eine Frage zur seriellen Datenübertragung und zur
Samplerate des ADC's vom ATtiny26.

Ich habe vor mit einem AVR der mir nur A/D-Funktionen ausführt, Daten
möglichst schnell mit wenig Leitungen übertragen. Dazu habe ich mir
folgende Vorgehensweise überlegt ich lege das erste Bit auf z.B. Pin(1)
und teile über Pin(2) dem Empfänger mit, jetzt das Bit an Pin(1)
abzufragen, danach wird dieser Highimpuls wieder gelöscht, das nächste
Bit eingelesen das übertragen werden soll, lege es wieder auf Pin(1)
und gebe dem Empfänger wieder das Startsignal zum Einlesen von Pin(1)
usw.

Nennt sich das ganze syncron oder asyncrone Übertragung?
Gibt es auch eine Möglichkeit diese Übertragungsmöglichkeit mit
Hyperterminal mitzuschneiden? Oder geht da nur das konventionelle
System mit dem Startbit den 8Datenbits und dem Stoppbit wo von
vornerein schon der Takt feststeht? Ansonsten müsste cih was in
Quickbasic machen.

Angenommen ich würde 5 Takte (62,5nSek/Takt) für ein Bit brauchen, dann
hätte ich doch ne Übertragungsrate von ca 400 KBytes/Sek.
5x62,5= 313nSek x8 =2500nSek/Byte 1/0,0000025=400KBytes

Der ADC braucht ja laut Datenblatt eine minimale Wandlungsdauer von
65µS bei 200kHz also knapp 15384 Wandlungen / Sek = 15 Kbytes

Was ich hier noch nicht so genau verstehe ist das mit der Genauigkeit.
Wenn ich nur 8Bit benötige kann ich den Teiler so einstellen das er
über die 200 kHz geht. Was wäre bei 8bit noch ausreichend genau? Bzw.
kann ich den ADC zerstören beim Übertaktet oder spuckt er dann nur Müll
aus. Wäre mal interessant die max. Samplerate bei 8Bit zu wissen evtl.
Taugt er ja als Digiscop, an der Datenübertragungsrate liegts ja nicht
wie man oben sieht.

von Rufus T. Firefly (Gast)


Lesenswert?

Du schilderst eine Art synchrone Datenübertragung; SPI sieht kaum anders
aus (Takt an Pin2, Daten an Pin1).
Viele Prozessoren unterstützen SPI in Hardware, das vereinfacht das
ganze.

Eine asynchrone serielle Schnittstelle (wie die im PC) kann mit sowas
nichts anfangen. Die kommt dafür mit einer Datenleitung ohne Takt aus,
benötigt aber zur synchronisation Start- und Stopbits. Bei 8n1 werden
aber 80% der übertragenen Bits für Nutzdaten verwendet.

"Mit Quickbasic was programmieren" wird dieses Problem nicht beheben
- Du kannst allenfalls eine Art "Bit Bang"-Betrieb implementieren,
und das ist deutlich langsamer als eine serielle Schnittstelle von Haus
aus werden kann. Das sind zwar "nur" 10 kByte/sec, aber das ist auch
schon 'ne ganze Menge.

Höhere Datenübertragungsraten in den PC hinein sind - sofern der PC
auch noch irgendwas anderes machen soll, als sich mit der
Datenübertragung zu beschäftigen - nur mit Verwendung anderer
Schnittstellen hinzubekommen.
USB ist hier definitiv ein Kandidat - da genügt auch die Funktionalität
eines FT245.
Das setzt auf PC-Seite allerdings ein Betriebssystem voraus, das mit
USB umzugehen weiß; war Quickbasic nicht was für DOS?

Wenn Du den ADC überfährst, wird er Mist messen. Je nach Konstruktion
des Wandlers unterschiedlichen - der hier verwendete ist wohl ein
Sigma-Delta-Wandler (im Gegensatz zu einem deutlich schnelleren
Flash-Wandler). Dessen Funktionsweise ist sicherlich irgendwo
ausführlich beschrieben, so daß Du mit Datenblatt und
Funktionsbeschreibung ausgestattet sicherlich 'rausfinden kannst, wie
der sich beim "übertakten" verhält.
Schaden nehmen werden nur die gemessenen Daten.

von Thomas O. (Gast)


Lesenswert?

Hallo,

@Rufus: Danke für deine ausführliche Antwort.

Ja war beim MS-DOS6.22 mit dabei, was man ja auf einem Laptop laufen
lassen könnte. An die Sache mit der Schnittstelle hab ich garnicht
gedacht. Auf jedenfall sollte es halt auch auf einem Rechner ohne USB
funktionieren. Ich müsste also einfach nur 2 Leitungen abfragen können
die Parallele Schnittstelle müsste also auch gehen. Ich könnte die
Daten aber auch in eine Schieberegister schieben und dann parallel zum
Rechner übertragen. Da muss ich mir allerdings nochmal ein Datenblatt
zu einem Schieberegister anschauen und außerdem wären hier auch mind. 2
Leitungen vom AVR nötig. Normalerweise könnte ich 8 Leitungen opfern  um
parallel zu übertragen, allerings müsste ich den Resetpin disablen und
sperre so weitere Updates aus. Und da der ADC eh so langsam ist habe
ich ja genugend Zeit das ganze Softwaremäßig zu machen.

Ja Funktionsweise von Flashwandler ist mir klar wollte nur erstmal
wissen welche Samplingrate mit dem AVR möglich ist vielleicht reicht
das ja aus, da ich eigentlich weniger mit hohen Frequenzen arbeite.
Von welchen Faktor Signalfrequenz/Abtastrate sollte bei einem Digiscop
vorhanden sein?

Falls also jemand nochwas zur Samplerate bzw. zum max. ADC Takt sagen
kann denn ich für eine 8Bit Wandlung noch nehmen kann wäre ich sehr
dankbar.

von Axos (Gast)


Lesenswert?

@Thomas O.
wiso den takt den du bei 8 bit noch nehemn kannst ? des kommt auf den
ADC an. Der ADC-Takt beim internen ADC vom AVR sollte zwischen 50 und
200kHz sein.

von Thomas O. (Gast)


Lesenswert?

Hallo,

so wie ich das mal irgenwo aufgeschnappt habe wird umsohöher man den
ADC-Takt einstellt die Genauikkeit schlechter so das das letzte bzw.
die letzten beiden Bits nichts mehr taugen.

Ich wüsste nicht wie ich das testen soll. evtl. einfach 5Volt
draufgeben und den Takt immer weiter erhöhen bis sich die 255 in 254
bzw. 252 ändert?

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.