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!
Bei TI gibt es die Beispielprogramme für den 2812. DAs ist eigentlich ne gute Grundlage. Gruß Thomas
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
ROTFL - das wollte ich auch gerade sagen! Die Vorstellung ist aber sehr verbreitet: Ich hatte während meiner Zeit an der Uni einen Studenten, der auch der Ansicht war, daß man mit Software AD-Wandeln kann, schließlich kann man mit Software ja auch Filtern. Hier gibt es mehr Infos zu Softwarefiltern: http://www.software.org/tools/math/filter/coffee/arabica-beans.fft
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
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
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
!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
Wie kommst du eigentlich mit den Daten zu Simulink rein bzw. raus ? Gruß Thomas
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.