Hallo liebes Forum, ich habe mir die Aufgabe gestellt, ein Audiosignal mit der höchstmöglichen Qualität über einen CC1100-Transceiver rauszuschicken. Deshalb fange ich langsam an, Taktzyklen zu zählen... Modul ist ein MSP430F1612. In der naiven Implementation wandelt der AD-Wandler timgetriggert in eins seiner Speicherregister. Die DMA holt sich das, wenn der Wandler fertig ist und füllt einen 64-Word-Buffer. Jetzt habe ich in der Dokumetation gelesen, dass der DMA-Controller bis zu 5 MCLK-Zyklen braucht, um einen Transfer durchzuführen. Meine Frage ist: blockiert der DMA-Controller während der gesamten 5 Zyklen die CPU, oder nur während der 2 Zyklen, die er für den Transfer selbst benötigt? Falls dem so wäre, würde das ja bedeuteten, dass der Transfer länger dauert, als wenn die CPU das machen würde (2 MOV mit jeweils zwei Takten). Dann sollte ich vermutlich den AD-Wandler alle seine 16 "Register" befüllen lassen und diesen Block dann per DMA kopieren... das sollte der DMA-Controller ja dann schneller als die CPU schaffen. Vielen Dank, Maik Hoepfel PS. Für Hinweise und Gedanken zu anspruchsvoller AD-/DA-Wandlung bin ich sehr dankbar. Mein Ziel ist, 12+2 Bit (4x Oversampling) bei 32 kHz zu schaffen.
Der aktuelle CPU Befehl wird noch zu Ende ausgefuehr (daher maximal 5 Taktzyklen). Danach greift der DMA auf den Bus zu. Viele Gruesse, Michael
Ob der CPU-Befehl zu Ende ausgefuehrt wird, wird doch durch das DMAONFETCH-Bit gesetzt, oder? Ausserdem gibt es Instruktionen, die alleine schon 6 Zyklen benötigen, deshalb bezweifle ich, dass das so stimmt...
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.