]> rtime.felk.cvut.cz Git - pes-rpp/rpp-lib.git/commitdiff
SPI fixes for tms570_hydctr
authorMichal Sojka <sojkam1@fel.cvut.cz>
Wed, 2 Sep 2015 16:35:49 +0000 (18:35 +0200)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Thu, 3 Sep 2015 08:22:12 +0000 (10:22 +0200)
With these changes SPI started to work.

rpp/include/sys/sys_vim.h
rpp/src/drv/spi_tms570.c
rpp/src/rpp/rpp.c
rpp/src/sys/_tms570_hydctr/sys_startup.c
rpp/src/sys/ti_drv_mibspi.c

index 706f1e7935d4086d041b822620069d8cee03dcd6..c08324ee6c0df012ca6331e9b9502e2623b91b05 100644 (file)
@@ -52,6 +52,8 @@ extern void spi2LowLevelInterrupt(void);
 extern void can2HighLevelInterrupt(void);
 extern void mibspi3HighInterruptLevel(void);
 extern void mibspi3LowLevelInterrupt(void);
+extern void mibspi5HighLevelInterrupt(void);
+extern void mibspi5LowLevelInterrupt(void);
 extern void can3HighLevelInterrupt(void);
 extern void spi4HighLevelInterrupt(void);
 extern void adc2Group1Interrupt(void);
index cc5d1fa0d45df87475512fb3110424f7ab7023d9..5857bb3ece49034971dbc8b30fce816856584a0a 100644 (file)
@@ -578,3 +578,19 @@ void mibspi3LowLevelInterrupt(void)
 
        spi_tms570_isr(3 - 1, flags);
 }
+
+#pragma INTERRUPT(mibspi5HighLevelInterrupt, IRQ)
+void mibspi5HighLevelInterrupt(void)
+{
+       uint32_t flags = mibspi_compat_REG5->FLG; // & (~mibspiREG5->LVL & 0x035F);
+
+       spi_tms570_isr(5 - 1, flags);
+}
+
+#pragma INTERRUPT(mibspi5LowLevelInterrupt, IRQ)
+void mibspi5LowLevelInterrupt(void)
+{
+       uint32_t flags = mibspi_compat_REG5->FLG; // & (~mibspiREG5->LVL & 0x035F);
+
+       spi_tms570_isr(5 - 1, flags);
+}
index 14f122728891c25e31a43633ff312edc70f89f18..2967907cf8dcc73c8c6048c972430d9539ee5808 100644 (file)
@@ -34,6 +34,7 @@ int8_t rpp_init()
        rpp_initialized = TRUE;
 
 #ifndef FREERTOS_POSIX
+
        dmmInit();
        gioInit();
        hetInit();
@@ -53,7 +54,11 @@ int8_t rpp_init()
        rpp_eth_init();
 #endif
        rpp_gio_init(RPP_GIO_PORT_ALL);
+#ifdef TARGET_HAS_SPI
+       rpp_spi_init();
+#endif
        _enable_IRQ();
+
 #endif
 
        return SUCCESS;
index 838eac81205804f2578d9b6e65d20c65d904e7b5..705651eda93047904ce0c39f0ad1a1eae03ba8af 100644 (file)
@@ -93,7 +93,7 @@ static const t_isrFuncPTR s_vim_init[] =
     &phantomInterrupt,
     &phantomInterrupt,      // 10
     &phantomInterrupt,
-    &phantomInterrupt,
+    &mibspi1HighLevelInterrupt,
 /*#if serialLine == scilinREG
     &sciHighLevelinterrupt,
 #else
@@ -104,7 +104,7 @@ static const t_isrFuncPTR s_vim_init[] =
     &phantomInterrupt,
     &adc1Group1Interrupt,   // 15
     &phantomInterrupt,
-    &phantomInterrupt,
+    &spi2HighLevelInterrupt,
     &phantomInterrupt,
     &phantomInterrupt,
     &phantomInterrupt,      // 20
@@ -113,19 +113,19 @@ static const t_isrFuncPTR s_vim_init[] =
     &phantomInterrupt,
     &phantomInterrupt,
     &phantomInterrupt,      // 25
+    &mibspi1LowLevelInterrupt,
     &phantomInterrupt,
     &phantomInterrupt,
     &phantomInterrupt,
-    &phantomInterrupt,
-    &phantomInterrupt, // 30
+    &spi2LowLevelInterrupt, // 30
     &phantomInterrupt,
     &phantomInterrupt,
     &phantomInterrupt,
     &phantomInterrupt,
     &phantomInterrupt,    // 35
     &phantomInterrupt,
-    &phantomInterrupt,
-    &phantomInterrupt,
+    &mibspi3HighInterruptLevel,
+    &mibspi3LowLevelInterrupt,
     &phantomInterrupt,
     &phantomInterrupt,      // 40
     &phantomInterrupt,
@@ -136,14 +136,14 @@ static const t_isrFuncPTR s_vim_init[] =
     &phantomInterrupt,
     &phantomInterrupt,
     &phantomInterrupt,
-    &phantomInterrupt,
+    &spi4HighLevelInterrupt,
     &phantomInterrupt,      // 50
     &adc2Group1Interrupt,
     &phantomInterrupt,
-    &phantomInterrupt,
-    &phantomInterrupt,
+    &mibspi5HighLevelInterrupt,
+    &spi4LowLevelInterrupt,
     &phantomInterrupt,      // 55
-    &phantomInterrupt,
+    &mibspi5LowLevelInterrupt,
     &phantomInterrupt,
     &phantomInterrupt,
     &phantomInterrupt,
@@ -769,10 +769,10 @@ void _c_int00()
                         | (0U << 18U)
                         | (1U << 19U)
                         | (0U << 20U)
-                        | (0U << 21U)
+                        | (1U << 21U)
                         | (1U << 22U)
                         | (0U << 23U)
-                        | (0U << 24U)
+                        | (1U << 24U)
                         | (0U << 25U)
                         | (0U << 26U)
                         | (0U << 27U)
index 4a91f642ca6feb1b2a6af9e65d0d4a34af3b5dd7..f9bd58397d61ce12488f1efc243ca89617db51bf 100644 (file)
@@ -569,48 +569,3 @@ void mibspiDisableGroupNotification(mibspiBASE_t *mibspi, uint32_t group)
 {
     mibspi->CLRINTENARDY = 1 << group;
 }
-
-
-
-/** @fn void mibspi5HighLevelInterrupt(void)
-*   @brief Level 0 Interrupt for MIBSPI5
-*/
-#pragma INTERRUPT(mibspi5HighLevelInterrupt, IRQ)
-
-void mibspi5HighLevelInterrupt(void)
-{
-    uint32_t vec = mibspiREG5->INTVECT0;
-
-    if (vec > 0x21U)
-    {
-        uint32_t flags = mibspiREG5->FLG & (~mibspiREG5->LVL & 0x035F);
-        mibspiREG5->FLG = flags;
-        mibspiNotification(mibspiREG5, flags);
-    }
-    else
-    {
-        mibspiGroupNotification(mibspiREG5, ((vec & 0x3FU) >> 1U) - 1U);
-    }
-}
-
-
-/** @fn void mibspi5LowLevelInterrupt(void)
-*   @brief Level 1 Interrupt for MIBSPI5
-*/
-#pragma INTERRUPT(mibspi5LowLevelInterrupt, IRQ)
-
-void mibspi5LowLevelInterrupt(void)
-{
-    uint32_t vec = mibspiREG5->INTVECT1;
-
-    if (vec > 0x21U)
-    {
-        uint32_t flags = mibspiREG5->FLG & (mibspiREG5->LVL & 0x035F);
-        mibspiREG5->FLG = flags;
-        mibspiNotification(mibspiREG5, flags);
-    }
-    else
-    {
-        mibspiGroupNotification(mibspiREG5, ((vec & 0x3FU) >> 1U) - 1U);
-    }
-}