A/D-Wandlung per Software beim TMS320F2812 DSP

Gast #298669
Hallo Leute,

Ich möchte mit meinem TMS320F2812 DSP-Board einen Analogwert einlesen,
diesen in Matlab-Simulink A/D-wandeln und dann auf 14 Pins wieder
ausgeben.
Kann mir jemand dabei behilflich sein, denn mir fehlen dazu noch einige
Grundkenntnisse.
Herzlichen Dank für jede Hilfe!
Gast #298671
Hi!

>mit meinem TMS320F2812 DSP-Board einen Analogwert einlesen,
>diesen in Matlab-Simulink A/D-wandeln

Der A/D-Wandler im DSP wandelt bereits von Analog nach Digital (sonst
würde er ja nicht so heißen). Was willst Du da mit Matlab noch
wandeln?

Gruß Andreas
Gast #298673
Hallo Andreas,

du hast natürlich recht, dass das DSP-Board bereits eigenen A/D-Wandler
besitzt.
Es besitzt aber keine D/A-Wandler und genau das ist mein Problem.

Um in meiner Aufgabe einen Servocontroller anzusteuern, brauche ich
einen möglichst genauen Analogwert. Dabei möchte ich den eingelesenen
A/D-Wert in Simulink durch eine Reglerschaltung schicken (z.B. PID) und
anschließend auf einem externen D/A-Wandler wieder analogisieren, bevor
er auf den Steuereingang des Servocontrollers gegeben wird.

Um den externen D/A-Wandler zu testen will ich momentan erstmal einen
Binärwert ausgeben. Dabei kam der Gedanke den Wert mit mehreren
Schiebeoperationen zu schieben, so dass die jeweiligen Bits auf
verschiedene Ausgängen gegeben werden können.

Möglicherweise würde das auch funktionieren, aber leider weis ich
nicht, wie ich den Dezimalwert der Konstante in einen Binärwert wandeln
kann, um ihn dann zu schieben, Bsp:

Analogwert --> Binärwert
11d        --> 1011b

Gruß, Markus
Gast #298674
Verstehe ich das richtig, dass du einen 14bit Wert (entnehme ich deinen
14 Pins) auf eben 14Pins des Controllers ausgeben willst?

Dann schicke doch einfach den Analogwert des AD-Wandlerregisters auf
das Portregister des TMS. Oder zum Testen halt auch einen beliebigen
Konstantwert. Wenn deine Pins in richtiger Reihenfolge zum gleichen
Port gehören, funktioniert das automatisch.

Oder meinst du das anders?

Gruß
Andreas
Gast #298675
Hallo Markus,

>> Analogwert --> Binärwert
>> 11d        --> 1011b

da brauchst du nichts umzuwandeln, dass sind nur Darstellungsformen
(Hexadezimal, Dezimal oder binär)
Leg einfach deinen Wert von 11d auf dein Datenregister (z.B. GPIO Port
A):

GpioDataRegs.GPADAT.bit.all == 11;

genauso Hexadezimal:
GpioDataRegs.GPADAT.bit.all == 0xB;

binär wüsste ichs spontan nicht aber diese beiden Zeilen haben dieselbe
Wirkung!
Ich hoffe das bringt dich weiter, ansonsten verstehe ich deine Probleme
nicht!

Gruß
Patrick
Gast #298676
!Anmerkung!

Ich meine natürlich:
GpioDataRegs.GPADAT.bit.all = 11;

und:
GpioDataRegs.GPADAT.bit.all = 0xB;

das oben wäre ein Vergleich und KEINE Zuweisung!

Gruß Patrick

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.