]> rtime.felk.cvut.cz Git - arc.git/commitdiff
Simpler MCU implementation for HCS12
authorMattias Ekberg <mattias.ekberg@arccore.com>
Wed, 3 Mar 2010 07:42:25 +0000 (08:42 +0100)
committerMattias Ekberg <mattias.ekberg@arccore.com>
Wed, 3 Mar 2010 07:42:25 +0000 (08:42 +0100)
arch/hc1x/hcs12d/drivers/Cpu.h [deleted file]
arch/hc1x/hcs12d/drivers/Mcu.c
boards/hcs12_elmicro_card12/config/Mcu_Cfg.c
boards/hcs12_elmicro_card12/config/Mcu_Cfg.h
include/Mcu.h

diff --git a/arch/hc1x/hcs12d/drivers/Cpu.h b/arch/hc1x/hcs12d/drivers/Cpu.h
deleted file mode 100644 (file)
index f76961f..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/*\r
- * cpu.h\r
- *\r
- *  Created on: 8 feb 2010\r
- *      Author: mahi\r
- */\r
-\r
-#ifndef CPU_H_\r
-#define CPU_H_\r
-\r
-#define Irq_Disable()\r
-#define Irq_Enable()\r
-\r
-#define Irq_SuspendAll()       Irq_Disable()\r
-#define Irq_ResumeAll()        Irq_Enable()\r
-\r
-#define Irq_SuspendOs()        Irq_Disable()\r
-#define Irq_ResumeOs()         Irq_Enable()\r
-\r
-\r
-\r
-#endif /* CPU_H_ */\r
index 22d31f65c3bad830c65a6c21340b2447886c9362..a953eccc542faf7af7f3cdd4b4bbf9d71cd7c923 100644 (file)
 #include <stdint.h>
 #include "Std_Types.h"\r
 #include "Mcu.h"\r
-//#include "Det.h"          // TODO Mattias restore\r
-//#include <assert.h>       // TODO Mattias restore\r
+#include "Det.h"\r
+#include <assert.h>\r
 #include "Cpu.h"\r
-#include <string.h>
-//#include "hcs12.h"\r
-//#include "Ramlog.h"       // TODO Mattias restore\r
+#include <string.h>\r
+#include "Ramlog.h"\r
 \r
-//#define USE_TRACE 1\r
-//#define USE_DEBUG 1\r
-//#include "Trace.h"        // TODO Mattias restore
+#define USE_TRACE 1\r
+#define USE_DEBUG 1\r
+#include "Trace.h"
 
 
-#define PORTIO_8               *(volatile unsigned char *)
-#define IO_BASE        0
-#define  CLKSEL    PORTIO_8(IO_BASE + 0x39)   /* clock select register */
-#define  PLLCTL    PORTIO_8(IO_BASE + 0x3a)   /* PLL control register */
-#define  CRGFLG    PORTIO_8(IO_BASE + 0x37)   /* clock generator flag register */
-#define  SYNR      PORTIO_8(IO_BASE + 0x34)   /* synthesizer register */
-#define  REFDV     PORTIO_8(IO_BASE + 0x35)   /* reference divider register */
-
+#define  PORTIO_8       *(volatile unsigned char *)
+#define  IO_BASE        0
+#define  CLKSEL      PORTIO_8(IO_BASE + 0x39)   /* clock select register */
+#define  PLLCTL      PORTIO_8(IO_BASE + 0x3a)   /* PLL control register */
+#define  CRGFLG      PORTIO_8(IO_BASE + 0x37)   /* clock generator flag register */
+#define  SYNR        PORTIO_8(IO_BASE + 0x34)   /* synthesizer register */
+#define  REFDV       PORTIO_8(IO_BASE + 0x35)   /* reference divider register */
+#define  S12_REFCLK     8000000                // PLL internal reference clock
 
+/*
 #define BM_RTIF                0x80
 #define BM_PORF                0x40
 //#define reserved     0x20
@@ -78,7 +78,8 @@
 #define BM_SCME                0x01
 
 
-#define S12_REFCLK      8000000                // PLL internal reference clock
+
+*/
 \r
 \r
 typedef struct {\r
@@ -154,12 +155,6 @@ static void Mcu_LossOfLock( void  ) {
 void Mcu_Init(const Mcu_ConfigType *configPtr)\r
 {\r
   VALIDATE( ( NULL != configPtr ), MCU_INIT_SERVICE_ID, MCU_E_PARAM_CONFIG );\r
-
-/*\r
-  if( !SIMULATOR() ) {\r
-         Mcu_CheckCpu();\r
-  }\r
-*/
 \r
   memset(&Mcu_Global.stats,0,sizeof(Mcu_Global.stats));\r
 
@@ -199,30 +194,11 @@ Std_ReturnType Mcu_InitClock(const Mcu_ClockType ClockSetting)
   Mcu_Global.clockSetting = ClockSetting;\r
   clockSettingsPtr = &Mcu_Global.config->McuClockSettingConfig[Mcu_Global.clockSetting];\r
 
-/*
-#define S12_OSCCLK     16000000                // input frequency from Xtal/Osc
-#define S12_PLLCLK     48000000                // desired output frequency of PLL
-*/
-// PLL clock generation formula, according to CRG Block User Guide:
-// PLLCLK = OSCCLK * 2(SYNR+1) / (REFDV+1)
-
-//#define S12_ECLK     (S12_PLLCLK/2)  // final bus clock frequency (ECLK)
-//#define S12_ECLK     (S12_OSCCLK/2)  // bus clock if PLL not in use / off
-
-  uint8 s12_refdv = (uint8)(clockSettingsPtr->McuClockReferencePointFrequency / S12_REFCLK) - 1;
-  uint8 s12_synr  = (uint8)(clockSettingsPtr->PllClock / (2 * S12_REFCLK) ) -1;\r
-
-  //PLLCLK = 2 * OSCCLK * (SYNR + 1) / (REFDV + 1)
-
   CLKSEL &= ~BM_PLLSEL; // Turn off PLL
   PLLCTL |= BM_PLLON+BM_AUTO;  // Enable PLL module, Auto Mode
 
-  REFDV = s12_refdv;  // Set reference divider
-  SYNR = s12_synr;  // Set synthesizer multiplier
-
-  // the following dummy write has no effect except consuming some cycles,
-  // this is a workaround for erratum MUCTS00174 (mask set 0K36N only)
-  // CRGFLG = 0;
+  REFDV = clockSettingsPtr->Pll1;  // Set reference divider
+  SYNR = clockSettingsPtr->Pll2;  // Set synthesizer multiplier
 
   while (Mcu_GetPllStatus() != MCU_PLL_LOCKED) ;
   CLKSEL |= BM_PLLSEL; // Switch to PLL clock
index f10e3fb07787a5c223025f9bb645367312133153..7de49903ebc6091b83e0555224f4b82cf512f4db 100644 (file)
@@ -36,7 +36,8 @@ Mcu_ClockSettingConfigType Mcu_ClockSettingConfigData[] =
 {\r
   {\r
     .McuClockReferencePointFrequency = 16000000,\r
-    .Pll1 = 16000000\r
+    .Pll1    = 1,
+    .Pll2    = 0,\r
   }\r
 };\r
 \r
index 2a480a45511a03545e1cc1be257d29aa5dae31e8..cbaf280ddf2539d5fce609289b3271ec1eaeaf5f 100644 (file)
@@ -17,7 +17,7 @@
 #ifndef MCU_CFG_H_\r
 #define MCU_CFG_H_
 \r
-#define MCU_DEV_ERROR_DETECT   STD_OFF\r
+#define MCU_DEV_ERROR_DETECT   STD_ON\r
 #define MCU_PERFORM_RESET_API  STD_ON\r
 #define MCU_VERSION_INFO_API   STD_ON\r
 
index 6bfb88f3f4fca9f15e7cdf7b113b1bc502a6d515..1edcb076cc8ec5af771351d7e613fab79185fa0d 100644 (file)
  */
 
 #ifndef MCU_H_\r
-#define MCU_H_\r
+#define MCU_H_
+
+#define MCU_SW_MAJOR_VERSION           2
+#define MCU_SW_MINOR_VERSION               0
+#define MCU_SW_PATCH_VERSION           0
+
+#define MCU_AR_MAJOR_VERSION           2
+#define MCU_AR_MINOR_VERSION           2
+#define MCU_AR_PATCH_VERSION           2\r
 \r
 #include "Cpu.h"\r
 #include "irq_types.h"
@@ -167,13 +175,6 @@ void Mcu_PerformReset( void );
 void Mcu_SetMode( const Mcu_ModeType McuMode );\r
 \r
 #if ( MCU_VERSION_INFO_API == STD_ON )\r
-#define MCU_SW_MAJOR_VERSION           2\r
-#define MCU_SW_MINOR_VERSION           0\r
-#define MCU_SW_PATCH_VERSION           0\r
-#define MCU_AR_MAJOR_VERSION           2\r
-#define MCU_AR_MINOR_VERSION           2\r
-#define MCU_AR_PATCH_VERSION           2\r
-\r
 #define Mcu_GetVersionInfo(_vi) STD_GET_VERSION_INFO(_vi,MCU)\r
 #endif\r
 \r