Hallo,
ich stehe gerade auf dem Schlauch bei den versuch per DMA das
Tastverhältnis an den PWM Controller zu senden.
Im Prinzip ganz einfach ;)
1 | g_pdc_tx_packet.ul_addr = (uint32_t) (&(buf[0])); // source Adresse
|
2 | g_pdc_tx_packet.ul_size = BUFFER_SIZE; // Anzahl der Blöcke
|
3 | pdc_tx_init(PDC_PWM, &g_pdc_tx_packet, 0); // init
|
4 |
|
5 | pdc_enable_transfer(PDC_PWM, PERIPH_PTCR_TXTEN); // start des Transfers
|
Nun aber vorher weiß der PWM Controller das die Daten aus den Puffer für
das Tastverhältnis sein sollen ?
PDC_PWM ist die Basisadresse und wie geht es von dieser zu den
entscheiden Registern ? Oder lassen sich nur bestimmte Register per DMA
setzen ?
1 | pwm_channel_init(PWM, &pwm_channel_instance);
|
Hier ist dies klar. Die Funktion setzt die entsprechenden Register aus
der Basisadresse PWM.
Leider sind die Beispiele der API nicht sehr ergiebig zum Verständnis.
Auf Seite 972 der Referenz ist erkenntlich das eigentlich fast alle
Register per DMA sich setzen lassen. Vielleicht kann hier jemand den
Knoten lösen ?