mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STM32 liest zu langsam ein


Autor: Mehmet Kendi (mkmk)
Datum:
Angehängte Dateien:
  • preview image for tp.gif
    tp.gif
    37,5 KB, 1302 Downloads

Bewertung
0 lesenswert
nicht lesenswert
STM32 liest zu langsam ein. Unsicher, ob ich als Interpunktion ein 
Ausrufezeichen, oder ein Fragezeichen setzen soll. :)

STM32F103VE @ 72MHz
Eingangssignal: 5VDC
Eingansteiler 1:15
Verstaerkung : 10x
Ausgangsignal: 3,3VDC

Wenn ich Port A0 als digitalen Eingang beschalte (GPIO_Mode_IPD, 
GPIO_Mode_IPU oder GPIO_Mode_IN_FLOATING aendert nichts am Problem), 
kann ich das Eingangssignal nur dann eindeutig einlesen, wenn ich nach 
dem Umschalten der HC4051 ca. 20usec warte.
Tue ich das nicht, meint die Software:
- dass an keinem Eingang das Signal anliege
- oder dass an einem falschen Eingang das Signal anliege
- oder dass an 2 benachbarten Eingaengen gleichzeitig das Signal anliege

Die MUX werden via SPI (8Mbps) und 74HC595 angesteuert.
Die Verbindung der Testkarte mit der STM32-Karte erfolgt durch ein 50cm 
langes Flachkabel, wobei SPI (MOSI & CLK) durch eine getrennte RS485 
Leitung übertragen wird.
Alle Signale kommen astrein daher.

Die Rechnerei dauert sehr lange (es werden mehrere Testkarten 
ausgewertet). Wenn es mir gelingen würde, diese 20usec zu eliminieren, 
könnte ich mehrere Sekunden einsparen.

SPI laeuft mit DMA und mit 8Mbps, obwohl das Datenblatt der RS485 
Bausteine nur 5 MBps erlaubt. :)
Also von der Hardware her kann ich nichts mehr machen.

Wieso ich diese 20usec einlegen muss, kann ich mir einfach nicht 
erklaeren. Hat jemand von Euch dafür eine Erklaerung?

Dank im voraus.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Diese MCP6G01 wurden nicht für Wettrennen gebaut. Eine 3dB-Bandbreite 
von 350kHz (~3µs) bei 10facher Verstärkung... Und wenn du deren GSEL 
auch noch dynamisch schalten solltest, dann sind 10-12µs fällig.

Autor: Mehmet Kendi (mkmk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus A.K.
Der MCP6G01 war anfaenglich auch bei mir der Kandidat, auf den ich 
misstrauisch blickte. Aber ich komme zu keinem endgültigen Urteil, weil 
ich weit unter den Limits des Datenblatts arbeite (oder zu arbeiten 
glaube, weil ich irgendwas im Datenblatt missinterpretiere).
Die GSEL werden nicht dynamisch geschaltet. Sie werden bei der 
Initialisierung gesetzt und bleiben bis zum Schluss des Scans in dieser 
Einstellung.

Autor: Mehmet Kendi (mkmk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe nochmals (weiss gar nicht mehr zum wievielten Male) nachgemessen:
Der Scan, ob ein Signal an einem der 128 Eingaenge vorliegt, wird in 4ms 
durchgeführt.
Davon entfallen für die Warteschleife ca. 2,5ms.
Wenn auf diese verzichte, komme ich auf eine Scan-Dauer von 1,5ms.
1,5ms / 128 -> ca. 85kHz.
Also weit unter dem Limit des MCP6G01.

Irgendwo mache ich irgendwas falsch ..... :(

Autor: Mehmet Kendi (mkmk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kleiner Nachtrag: 85kHz kommen nur dann zustande, wenn an allen 
Eingaengen ein Signal anliegt.
Wenn nur an einem Eingang ein Signal anliegt, liegt die Frequenz 
natürlich noch viel tiefer. Aber auch hier habe ich dasselbe Problem.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie sieht denn die Ansteuerung des HC595 aus? Der braucht ja einen 
Latch-Takt. Gelten die 20µs Wartezeit ab diesem Taktsignal?

Einen Oszi hast du keinen? Denn das schreit geradezu danach.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mehmet Kendi schrieb:

> Wenn nur an einem Eingang ein Signal anliegt, liegt die Frequenz
> natürlich noch viel tiefer. Aber auch hier habe ich dasselbe Problem.

Diese Rechnung bringt dich nicht weiter, denn im Grunde ist die 
Bandbreitenangabe im Datasheet für dein Problem nicht entscheidend. 
Entscheidend ist vielmehr die Pulsantwort auf ein sich änderndes 
Eingangssignal, aber die steht nur für GSEL und CS drin, nicht für das 
Analogsignal. Wenn sich nach der Messzeit ewig nichts rührt, dann sinkt 
die Grundfrequenz des Signals zwar, aber dafür kannst du dir nichts 
kaufen.

Zur Pulsantwort gibt es als Indiz die Slewrate, mit 0,5V/µs bei G=1 und 
2,3V/µs bei G=10. Wenn deine kaskadierten MCPs zusammen G=10 haben, dann 
hat einer davon G=1 und braucht für einen Spannungshub von 3V immerhin 
solide 6µs.

Wobei dabei auch noch offen ist, auf welchen Spannunghub sich dieser 
SR-Wert bezieht. Bei der Bandbreitenangabe steht es dran, 100mVpp am 
Ausgang. Die hier interessantere Grosssignalbandbreite könnte 
OPA-typisch weit darunter liegen.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hoppla, da steht sie ja, in Table 4-1. Die full swing Bandbreite bei G=1 
liegt bei nur 29kHz bei Vdd=5,5V. Bei Vdd=3,3V CMOS-typisch 
wahrscheinlich entsprechend weniger.

Autor: Mehmet Kendi (mkmk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Gelten die 20µs Wartezeit ab diesem Taktsignal?

Yep, nachdem alle HC595 ihre Werte ausgegeben haben, muss ich 20us 
Daeumchen drehen.

A. K. schrieb:
> Zur Pulsantwort gibt es als Indiz die Slewrate, mit 0,5V/µs bei G=1 und
> 2,3V/µs bei G=10. Wenn deine kaskadierten MCPs zusammen G=10 haben, dann
> hat einer davon G=1 und braucht für einen Spannungshub von 3V immerhin
> solide 6µs.

Stimmt. Du hast recht. Au Backe, das tut weh ....
Ich muss nochmals über die Bücher; herzlichen Dank für den Fingerzeig.

Autor: Markus Müller (mmvisual)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei AD und Port A0 gehen bei mir immer die Alarmglocken, da steht doch 
was im Errata?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mag sein, aber derzeit fährt er den erklärtermassen digital.

Autor: Mehmet Kendi (mkmk)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Waere schon zum Schreien, wenn ich diese Arbeit einstampfen müsste.

Autor: Mehmet Kendi (mkmk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A.K. ich mach für heute Schluss.
Ich gebe Dir morgen 'ne Antwort. Danke nochmals für Deine Hilfe.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun ist der Kram ja analog konzipiert, warum betreibst du ihn digital, 
mit grenzwertiger Aussteuerung einer kaskadierten analogen 
Verstärkerstufe, trotz 5Vpp am Eingang und 3,3Vpp am Ausgang? Die Dinger 
sind ja gegengekoppelte Verstärker, keine Komparatoren.

Ist das Szenario ein realistisches, oder ist das ein erster Test unter 
vereinfachten extremen Bedingungen, d.h. mit digitalem Testpattern statt 
den späteren Analogsignalen an den Eingängen?

Aus der bisherigen Analyse ergibt sich ja, dass dein Problem im
Grosssignalverhalten der MCPs zu suchen ist. Bei kleiner Amplitude sind
sie schneller. Wenn du also sicherstellen kannst, dass der Ausgang des
zweiten MCPs im Bereich weniger 100mVpp bleibt, vorzugsweise
um Vdd/2 herum, dann ist die Sache möglicherweise zu retten. Es sieht ja 
sowieso so aus, als ob du eigentlich per ADC messen wolltest.

Aber zum Bild: Ohne Test gleich in die Massenproduktion zu gehen ist
zwar ein moderner vollendet rationalisierter Ansatz - aber nur wenns
auch so funktioniert wie geplant.

Autor: Mehmet Kendi (mkmk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Ohne Test gleich in die Massenproduktion zu gehen ...

Zu meiner Verteidigung: Ist keine Massenproduktion, mehr eine 
Kleinserie. Desweiteren musste das Projekt innerhalb von 3 Monaten 
umgesetzt werden. Da hatte ich keine Zeit um gross angelegte Tests 
durchzuführen. Hinzufügen muss ich noch, dass ich bis heute bei solchen 
Sprüngen ins kalte Wasser noch keine grösseren Vögel abgeschossen habe. 
Vermutlich mehr Glück als Verstand :)

A. K. schrieb:
> Nun ist der Kram ja analog konzipiert, warum betreibst du ihn digital

Gute Frage. Eine (ehrliche) Antwort darauf habe ich nicht. Vermutlich 
habe ich vor Uebermüdung und lauter Baeumen den Wald nicht mehr gesehen. 
Das Geraet hat in der Menü-Führung überall die Wahl zwischen analog und 
digital, wobei die Software auch tatsaechlich dementsprechend misst. 
Wieso ich Depp überhaupt eine digitale Möglichkeit eingefügt habe und 
mich erst noch auf die Digitale festgebissen habe ... ich weiss es 
nicht.
Jetzt, wo ich analog mit 1x Verstaerkung messe, dauert die Messung einer 
Testkarte nicht mehr 700ms, sondern nur noch 20ms.

A.K. wenn Du mir ein Bild von Dir schickst, will ich gerne in meinem 
Office einen kleinen Schrein einrichten, wo ich Dein Bild jeden Tag mit 
frischen Blumen, Früchten  und Raeucherstaebchen schmücken will. :)

Nochmals Danke, vielen Dank!

Autor: 3phg7lqz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Clamping-Dioden gehören bestimmt auf die andere Seite des 
Längswiderstandes.

Autor: Mehmet Kendi (mkmk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Heute das Geraet beim Kunden abgegeben.
Nach 2 Stunden Dauertest: rundum laechelnde Gesichter.
Fehlen zwar noch so "Kleinigkeiten" wie Ethernet-, VGA Monitor- und 
USB-Anschluss ... aber was soll's.

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.