Amador Valley High School Robotics Team / MODDMA

Fork of MODDMA by Andy K

Revision:
0:c409efd8df78
Child:
4:67f327b9278e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/example1.cpp	Tue Nov 23 14:50:39 2010 +0000
@@ -0,0 +1,71 @@
+#ifdef COMPILE_EXAMPLE_CODE_MODDMA
+
+#include "mbed.h"
+#include "MODDMA.h"
+#include "MODSERIAL.h"
+
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+DigitalOut led4(LED4);
+MODDMA dma;
+MODSERIAL pc(USBTX, USBRX);
+//Serial pc(USBTX, USBRX);
+
+void dmaCallback(void) {
+    led2 = 1;
+}
+
+void C0callback(void) {
+    MODDMA_Config *config = dma.getConfig();
+    dma.haltAndWaitChannelComplete( (MODDMA::CHANNELS)config->channelNum());
+    dma.Disable( (MODDMA::CHANNELS)config->channelNum() );
+    if (dma.irqType() == MODDMA::TcIrq)  {
+        led3 = 1;
+        dma.clearTcIrq();
+    }
+    if (dma.irqType() == MODDMA::ErrIrq) {
+        led4 = 1;
+        dma.clearErrIrq();
+    }
+}
+
+int main() {
+    char s[] = "**DMA** ABCDEFGHIJKLMNOPQRSTUVWXYZ **DMA**";
+    
+    pc.baud(115200);
+    
+    dma.isrIntTCStat.attach(&dmaCallback);
+    
+    MODDMA_Config *config = new MODDMA_Config;
+    config
+     ->channelNum    ( MODDMA::Channel_0 )
+     ->srcMemAddr    ( (uint32_t) &s )
+     //->dstMemAddr    ( 0 )
+     ->transferSize  ( sizeof(s) )
+     ->transferType  ( MODDMA::m2p )
+     //->transferWidth ( 0 )
+     //->srcConn       ( 0 )
+     ->dstConn       ( MODDMA::UART0_Tx )
+     //->dmaLLI        ( 0 )
+     ;//->isrIntTCStat->attach(&C0callback)
+    ; // config end
+   
+    dma.Setup(config);
+    
+    //dma.Enable( MODDMA::Channel_0 );
+    dma.Enable( config->channelNum() );
+    
+    pc.printf("123456789\r\n");
+    pc.printf("\r\nRESERVED9 = %p", &LPC_SC->RESERVED9);
+    pc.printf("\r\nOther = %p", &LPC_UART0->DMAREQSEL);
+    
+    while (1) {
+        led1 = !led1;
+        wait(0.2);
+        led1 = !led1;
+        wait(0.2);
+    }
+}
+
+#endif