]> Pileus Git - ~andy/csm213a-hw/blobdiff - hw2/main.cpp
Get DMA timestamp working
[~andy/csm213a-hw] / hw2 / main.cpp
index 454bed5c5e3290e1c2f5283c6ad0c2980677cfb5..d6a074209846106991cb51d430cd112ca48b5666 100644 (file)
@@ -287,10 +287,10 @@ void test_tpm_run(void)
 {\r
        //static DigitalIn pin(PTC0);\r
        //static DigitalIn pin(PTC2);\r
-       static int pin = 0;\r
+       //static int pin = 0;\r
 \r
-       printf("%lx - PTC0:%08lx GPCR:%08lx:%08lx - SC:%04lx CNT:%04lx MOD:%04lx STATUS:%04lx CONF:%08lx - CnSC:%02lx CnV:%04lx\r\n",\r
-                       (long)pin, PORTC->PCR[0], PORTC->GPCHR, PORTC->GPCLR,\r
+       printf("PTC0:%08lx GPCR:%08lx:%08lx - SC:%04lx CNT:%04lx MOD:%04lx STATUS:%04lx CONF:%08lx - CnSC:%02lx CnV:%04lx\r\n",\r
+                       PORTC->PCR[0], PORTC->GPCHR, PORTC->GPCLR,\r
                        TPM1->SC, TPM1->CNT, TPM1->MOD, TPM1->STATUS, TPM1->CONF,\r
                        TPM1->CONTROLS[1].CnSC, TPM1->CONTROLS[1].CnV);\r
        TPM1->SC     |= TPM_STATUS_TOF_MASK;\r
@@ -349,16 +349,21 @@ void test_uart(void)
        char xmt[32] = "hello, world";\r
        char rcv[32] = {};\r
 \r
+       uint64_t tm1, tm2;\r
+\r
        sdma_write(sdma1, xmt, strlen(xmt));\r
-       sdma_flush(sdma1);\r
+       sdma_flush(sdma1, &tm1);\r
+\r
+       //sdma_read(sdma2, rcv, strlen(xmt));\r
+       sdma_wait(sdma2, &tm2);\r
 \r
-       for (int i = 0; xmt[i]; i++)\r
-               rcv[i] = uart2.getc();\r
+       //printf("send: [%s] -> [%s] ", xmt, rcv);\r
+       //printf("time: %08lx / %08lx ", (uint32_t)tm1, (uint32_t)tm2);\r
+       //printf("tag: dir:%08lx in:%08lx\r\n",\r
+       //              FPTD->PDDR, FPTD->PDIR);\r
 \r
-       printf("xmt: %s    ", xmt);\r
-       printf("rcv: %s    ", rcv);\r
-       printf("tag: dir:%08lx in:%08lx\r\n",\r
-                       FPTD->PDDR, FPTD->PDIR);\r
+       (void)xmt; (void)rcv;\r
+       (void)tm1; (void)tm2;\r
 }\r
 \r
 void test_leds(void)\r
@@ -367,16 +372,25 @@ void test_leds(void)
        led1 = 0; led2 = 1; wait(0.1);\r
 }\r
 \r
+void test_irq(void)\r
+{\r
+       printf("\r\nirq");\r
+}\r
+\r
 int main(int argc, char **argv)\r
 {\r
        uart0.baud(115200);\r
        uart1.baud(115200);\r
        uart2.baud(115200);\r
 \r
-       sdma1 = sdma_open(SDMA_UART1, SDMA_CHANNEL1);\r
-       sdma2 = sdma_open(SDMA_UART2, SDMA_CHANNEL2);\r
+       //sdma0 = sdma_open(SDMA_UART0, SDMA_CHANNEL0, SDMA_CHANNEL1);\r
+       sdma1 = sdma_open(SDMA_UART1, SDMA_CHANNEL0, SDMA_CHANNEL1);\r
+       sdma2 = sdma_open(SDMA_UART2, SDMA_CHANNEL2, SDMA_CHANNEL3);\r
+\r
+       sdma_pinmap(sdma1, PTE0, PTE1);\r
+       sdma_pinmap(sdma2, PTD3, PTD2);\r
 \r
-       test_uart();\r
+       //test_uart();\r
        //test_leds();\r
        test_pit_init();\r
        //test_tpm_init();\r
@@ -386,5 +400,6 @@ int main(int argc, char **argv)
                //test_leds();\r
                //test_pit_run();\r
                //test_tpm_run();\r
+               printf("\r\n");\r
        }\r
 }\r