Forum: Mikrocontroller und Digitale Elektronik MSP430: Blockiert DMA nur während Übertragung oder auch während Synchronisation?


von Maik Hoepfel (Gast)


Lesenswert?

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.

von Michael (Gast)


Lesenswert?

Der aktuelle CPU Befehl wird noch zu Ende ausgefuehr (daher maximal 5 
Taktzyklen). Danach greift der DMA auf den Bus zu.

Viele Gruesse,
Michael

von Maik Hoepfel (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.