mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-08-19 17:48:33 -04:00
Commit 3 RX100 low power demos.
This commit is contained in:
parent
2b41be4cb9
commit
2bd7d0c1f5
112 changed files with 37911 additions and 0 deletions
|
@ -0,0 +1,252 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : lcd.c
|
||||
* Device(s) : RX
|
||||
* H/W Platform : RSKRX111
|
||||
* Description : Provides variable and function declarations for lcd.c file
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 08.11.2012 0.01 Beta Release
|
||||
***********************************************************************************************************************/
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Includes <System Includes> , "Project Includes"
|
||||
***********************************************************************************************************************/
|
||||
/* Standard string manipulation & formatting functions */
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
/* Defines standard variable types used in this function */
|
||||
#include <stdint.h>
|
||||
/* Bring in board includes. */
|
||||
#include "platform.h"
|
||||
/* Following header file provides function prototypes for LCD controlling functions & macro defines */
|
||||
#include "lcd.h"
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Private global variables and functions
|
||||
***********************************************************************************************************************/
|
||||
static void lcd_delay(volatile int32_t nsecs);
|
||||
static void lcd_nibble_write(uint8_t data_or_ctrl, uint8_t value);
|
||||
static void lcd_write(uint8_t data_or_ctrl, uint8_t value);
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name : lcd_initialize
|
||||
* Description : Initializes the LCD display.
|
||||
* Arguments : none
|
||||
* Return Value : none
|
||||
***********************************************************************************************************************/
|
||||
void lcd_initialize(void)
|
||||
{
|
||||
/* Set LCD data pins as outputs. */
|
||||
PORT4.PDR.BYTE |= 0x0F;
|
||||
|
||||
/* Set LCD control pins as outputs. */
|
||||
RS_PIN_DDR = 1;
|
||||
E_PIN_DDR = 1;
|
||||
|
||||
/* Power Up Delay for the LCD Module */
|
||||
lcd_delay(50000000);
|
||||
|
||||
/* Display initialises in 8 bit mode - so send one write (seen as 8 bit) to set to 4 bit mode. */
|
||||
lcd_nibble_write(CTRL_WR, 0x03);
|
||||
lcd_delay(5000000);
|
||||
lcd_nibble_write(CTRL_WR, 0x03);
|
||||
lcd_delay(5000000);
|
||||
lcd_nibble_write(CTRL_WR, 0x03);
|
||||
lcd_delay(5000000);
|
||||
|
||||
/* Function Set */
|
||||
lcd_nibble_write(CTRL_WR, 0x02);
|
||||
lcd_delay(39000);
|
||||
lcd_nibble_write(CTRL_WR, 0x02);
|
||||
lcd_nibble_write(CTRL_WR, (LCD_DISPLAY_ON | LCD_TWO_LINE ));
|
||||
lcd_delay(39000);
|
||||
|
||||
/* Display ON/OFF control */
|
||||
lcd_write(CTRL_WR, LCD_CURSOR_OFF);
|
||||
lcd_delay(39000);
|
||||
|
||||
/* Display Clear */
|
||||
lcd_write(CTRL_WR, LCD_CLEAR);
|
||||
lcd_delay(2000000);
|
||||
|
||||
/* Entry Mode Set */
|
||||
lcd_write(CTRL_WR, 0x06);
|
||||
lcd_delay(39000);
|
||||
|
||||
/* Home the cursor */
|
||||
lcd_write(CTRL_WR, LCD_HOME_L1);
|
||||
lcd_delay(5000000);
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name : lcd_clear
|
||||
* Description : Clears the LCD
|
||||
* Arguments : none
|
||||
* Return Value : none
|
||||
***********************************************************************************************************************/
|
||||
void lcd_clear(void)
|
||||
{
|
||||
/* Display Clear */
|
||||
lcd_write(CTRL_WR, LCD_CLEAR);
|
||||
lcd_delay(2000000);
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name : lcd_display
|
||||
* Description : This function controls LCD writes to line 1 or 2 of the LCD.
|
||||
* You need to use the defines LCD_LINE1 and LCD_LINE2 in order to specify the starting position.
|
||||
* For example, to start at the 2nd position on line 1...
|
||||
* lcd_display(LCD_LINE1 + 1, "Hello")
|
||||
* Arguments : position -
|
||||
* Line number of display
|
||||
* string -
|
||||
* Pointer to null terminated string
|
||||
* Return Value : none
|
||||
***********************************************************************************************************************/
|
||||
void lcd_display(uint8_t position, uint8_t const * string)
|
||||
{
|
||||
/* Declare next position variable */
|
||||
static uint8_t next_pos = 0xFF;
|
||||
|
||||
/* Set line position if needed. We don't want to if we don't need to because LCD control operations take longer
|
||||
than LCD data operations. */
|
||||
if (next_pos != position)
|
||||
{
|
||||
if(position < LCD_LINE2)
|
||||
{
|
||||
/* Display on Line 1 */
|
||||
lcd_write(CTRL_WR, ((uint8_t)(LCD_HOME_L1 + position)));
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Display on Line 2 */
|
||||
lcd_write(CTRL_WR, ((uint8_t)((LCD_HOME_L2 + position) - LCD_LINE2)));
|
||||
}
|
||||
|
||||
lcd_delay(39000);
|
||||
|
||||
/* set position index to known value */
|
||||
next_pos = position;
|
||||
}
|
||||
|
||||
do
|
||||
{
|
||||
/* Write character to LCD. */
|
||||
lcd_write(DATA_WR,*string++);
|
||||
|
||||
lcd_delay(43000);
|
||||
|
||||
/* Increment position index */
|
||||
next_pos++;
|
||||
}
|
||||
while(*string);
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name : lcd_delay
|
||||
* Description : Implements LCD required delays.
|
||||
* Arguments : nsecs -
|
||||
* Number of nanoseconds to delay. RX111 has max clock of 32MHz which gives a cycle time of 31.3ns.
|
||||
* This means that nothing under 313ns should be input. 313ns would be 10 cycles which is still
|
||||
* being optimistic for getting in and out of this function.
|
||||
* Return Value : none
|
||||
***********************************************************************************************************************/
|
||||
static void lcd_delay(volatile int32_t nsecs)
|
||||
{
|
||||
while (0 < nsecs)
|
||||
{
|
||||
/* Subtract off 10 cycles per iteration. This number was obtained when using the Renesas toolchain at
|
||||
optimization level 2. The number to nanoseconds to subtract off below is calculated off of the ICLK speed. */
|
||||
nsecs -= (int32_t)((313.0)*(32000000.0/(float)ICLK_HZ));
|
||||
}
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name : lcd_nibble_write
|
||||
* Description : Writes data to display. Sends command to display.
|
||||
* Arguments : value -
|
||||
* The value to write
|
||||
* data_or_ctrl -
|
||||
* Whether to write data or control.
|
||||
* 1 = DATA
|
||||
* 0 = CONTROL
|
||||
* Return Value : none
|
||||
***********************************************************************************************************************/
|
||||
static void lcd_nibble_write(uint8_t data_or_ctrl, uint8_t value)
|
||||
{
|
||||
/* Set Register Select pin high for Data */
|
||||
if (data_or_ctrl == DATA_WR)
|
||||
{
|
||||
/* Data write. */
|
||||
RS_PIN = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Control write. */
|
||||
RS_PIN = 0;
|
||||
}
|
||||
|
||||
/* tsu1 delay */
|
||||
lcd_delay(60);
|
||||
|
||||
/* EN enable chip (HIGH) */
|
||||
E_PIN = 1;
|
||||
|
||||
/* Output the data */
|
||||
PORT4.PODR.BYTE = (value & 0x0F);
|
||||
|
||||
/* tw delay */
|
||||
lcd_delay(450);
|
||||
|
||||
/* Latch data by dropping E */
|
||||
E_PIN = 0;
|
||||
|
||||
/* th2 delay */
|
||||
lcd_delay(10);
|
||||
|
||||
/* tc delay */
|
||||
lcd_delay(480);
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name : lcd_write
|
||||
* Description : This function controls LCD writes to line 1 or 2 of the LCD. You need to use the defines LCD_LINE1 and
|
||||
* LCD_LINE2 in order to specify the starting position.
|
||||
* For example, to start at the 2nd position on line 1...
|
||||
* lcd_display(LCD_LINE1 + 1, "Hello")
|
||||
* Arguments : value -
|
||||
* The value to write
|
||||
* data_or_ctrl -
|
||||
* Whether to write data or control.
|
||||
* 1 = DATA
|
||||
* 0 = CONTROL
|
||||
* Return Value : none
|
||||
***********************************************************************************************************************/
|
||||
static void lcd_write(uint8_t data_or_ctrl, uint8_t value)
|
||||
{
|
||||
/* Write upper nibble first */
|
||||
lcd_nibble_write(data_or_ctrl, (uint8_t)((value & 0xF0) >> 4));
|
||||
|
||||
/* Write lower nibble second */
|
||||
lcd_nibble_write(data_or_ctrl, (uint8_t)(value & 0x0F));
|
||||
}
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : lcd.h
|
||||
* Device(s) : RX
|
||||
* H/W Platform : RSKRX111
|
||||
* Description : Provides variable and function declarations for lcd.c file
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 08.11.2012 0.01 Beta Release
|
||||
***********************************************************************************************************************/
|
||||
|
||||
/* Multiple inclusion prevention macro */
|
||||
#ifndef LCD_H
|
||||
#define LCD_H
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Includes <System Includes> , "Project Includes"
|
||||
***********************************************************************************************************************/
|
||||
/* Defines standard integer variable types used in this file */
|
||||
#include <stdint.h>
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Macro definitions
|
||||
***********************************************************************************************************************/
|
||||
/* RS register select pin */
|
||||
#define RS_PIN PORTC.PODR.BIT.B5
|
||||
#define RS_PIN_DDR PORTC.PDR.BIT.B5
|
||||
/* Display enable pin */
|
||||
#define E_PIN PORTB.PODR.BIT.B1
|
||||
#define E_PIN_DDR PORTB.PDR.BIT.B1
|
||||
/* Data write/read definition */
|
||||
#define DATA_WR 1
|
||||
/* Control write/read definition */
|
||||
#define CTRL_WR 0
|
||||
/* Maximum characters per line of LCD display. */
|
||||
#define NUMB_CHARS_PER_LINE 8
|
||||
/* Number of lines on the LCD display */
|
||||
#define MAXIMUM_LINES 2
|
||||
/* Character position of LCD line 1 */
|
||||
#define LCD_LINE1 0
|
||||
/* Character position of LCD line 2 */
|
||||
#define LCD_LINE2 16
|
||||
/* Clear LCD display and home cursor */
|
||||
#define LCD_CLEAR 0x01
|
||||
/* Move cursor to line 1 */
|
||||
#define LCD_HOME_L1 0x80
|
||||
/* Move cursor to line 2 */
|
||||
#define LCD_HOME_L2 0xC0
|
||||
/* Cursor auto decrement after R/W */
|
||||
#define CURSOR_MODE_DEC 0x04
|
||||
/* Cursor auto increment after R/W */
|
||||
#define CURSOR_MODE_INC 0x06
|
||||
/* Setup, 4 bits,2 lines, 5X7 */
|
||||
#define FUNCTION_SET 0x28
|
||||
/* Display ON with Cursor */
|
||||
#define LCD_CURSOR_ON 0x0E
|
||||
/* Display ON with Cursor off */
|
||||
#define LCD_CURSOR_OFF 0x0C
|
||||
/* Display on with blinking cursor */
|
||||
#define LCD_CURSOR_BLINK 0x0D
|
||||
/* Move Cursor Left One Position */
|
||||
#define LCD_CURSOR_LEFT 0x10
|
||||
/* Move Cursor Right One Position */
|
||||
#define LCD_CURSOR_RIGHT 0x14
|
||||
/* Enable LCD display */
|
||||
#define LCD_DISPLAY_ON 0x04
|
||||
/* Enable both LCD lines */
|
||||
#define LCD_TWO_LINE 0x08
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Exported global functions (to be accessed by other files)
|
||||
***********************************************************************************************************************/
|
||||
/* LCD initialisation function declaration */
|
||||
void lcd_initialize (void);
|
||||
|
||||
/* Update display function declaration */
|
||||
void lcd_display(uint8_t position, uint8_t const * string);
|
||||
|
||||
/* Clear LCD function delcaration */
|
||||
void lcd_clear (void);
|
||||
|
||||
/* End of multiple inclusion prevention macro */
|
||||
#endif
|
|
@ -0,0 +1,50 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : r_bsp.h
|
||||
* H/W Platform : RSKRX111
|
||||
* Description : Has the header files that should be included for this platform.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 08.11.2012 0.01 Beta Release
|
||||
***********************************************************************************************************************/
|
||||
|
||||
#ifndef PLATFORM_BOARD_RSKRX111
|
||||
#define PLATFORM_BOARD_RSKRX111
|
||||
|
||||
/* Make sure that no other platforms have already been defined. Do not touch this! */
|
||||
#ifdef PLATFORM_DEFINED
|
||||
#error "Error - Multiple platforms defined in platform.h!"
|
||||
#else
|
||||
#define PLATFORM_DEFINED
|
||||
#endif
|
||||
|
||||
/***********************************************************************************************************************
|
||||
INCLUDE APPROPRIATE MCU AND BOARD FILES
|
||||
***********************************************************************************************************************/
|
||||
#include "r_bsp_config.h"
|
||||
#include "iorx111.h"
|
||||
#include ".\mcu\rx111\mcu_info.h"
|
||||
#include ".\board\rskrx111\rskrx111.h"
|
||||
#include ".\board\rskrx111\lcd.h"
|
||||
|
||||
#endif /* PLATFORM_BOARD_RSKRX111 */
|
||||
|
||||
|
|
@ -0,0 +1,250 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : r_bsp_config_reference.c
|
||||
* Device(s) : RX111
|
||||
* Description : The file r_bsp_config.h is used to configure your BSP. r_bsp_config.h should be included
|
||||
* somewhere in your package so that the r_bsp code has access to it. This file (r_bsp_config_reference.h)
|
||||
* is just a reference file that the user can use to make their own r_bsp_config.h file.
|
||||
************************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 07.11.2012 0.01 Beta Release
|
||||
***********************************************************************************************************************/
|
||||
#ifndef R_BSP_CONFIG_REF_HEADER_FILE
|
||||
#define R_BSP_CONFIG_REF_HEADER_FILE
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Configuration Options
|
||||
***********************************************************************************************************************/
|
||||
/* Enter the product part number for your MCU. This information will be used to obtain information about your MCU such
|
||||
as package and memory size.
|
||||
To help parse this information, the part number will be defined using multiple macros.
|
||||
R 5 F 51 11 5 A D FM
|
||||
| | | | | | | | | Macro Name Description
|
||||
| | | | | | | | |__MCU_PART_PACKAGE = Package type, number of pins, and pin pitch
|
||||
| | | | | | | |____not used = Products with wide temperature range (D: -40 to 85C G: -40 to 105C)
|
||||
| | | | | | |______not used = Blank
|
||||
| | | | | |________MCU_PART_MEMORY_SIZE = ROM, RAM, and Data Flash Capacity
|
||||
| | | | |___________MCU_PART_GROUP = Group name
|
||||
| | | |______________MCU_PART_SERIES = Series name
|
||||
| | |________________MCU_PART_MEMORY_TYPE = Type of memory (Flash)
|
||||
| |__________________not used = Renesas MCU
|
||||
|____________________not used = Renesas semiconductor product.
|
||||
*/
|
||||
|
||||
/* Package type. Set the macro definition based on values below:
|
||||
Character(s) = Value for macro = Package Type/Number of Pins/Pin Pitch
|
||||
FM = 0x0 = LFQFP/64/0.50
|
||||
FK = 0x1 = LQFP/64/0.80
|
||||
LF = 0x2 = TFLGA/64/0.50
|
||||
FL = 0x3 = LFQFP/48/0.50
|
||||
NE = 0x4 = VQFN/48/0.50
|
||||
NC = 0x5 = HWQFN/36/0.50
|
||||
LM = 0x6 = WFLGA/36/0.50
|
||||
SB = 0x7 = SSOP/36/0.80
|
||||
*/
|
||||
#define MCU_PART_PACKAGE (0x0)
|
||||
|
||||
/* ROM, RAM, and Data Flash Capacity.
|
||||
Character(s) = Value for macro = ROM Size/Ram Size/Data Flash Size
|
||||
5 = 0x5 = 128KB/16KB/8KB
|
||||
4 = 0x4 = 96KB/16KB/8KB
|
||||
3 = 0x3 = 64KB/10KB/8KB
|
||||
1 = 0x1 = 32KB/10KB/8KB
|
||||
J = 0x0 = 16KB/8KB/8KB
|
||||
*/
|
||||
#define MCU_PART_MEMORY_SIZE (0x5)
|
||||
|
||||
/* Group name.
|
||||
Character(s) = Value for macro = Description
|
||||
10 = 0x0 = RX110 Group
|
||||
11 = 0x1 = RX111 Group
|
||||
*/
|
||||
#define MCU_PART_GROUP (0x1)
|
||||
|
||||
/* Series name.
|
||||
Character(s) = Value for macro = Description
|
||||
51 = 0x0 = RX100 Series
|
||||
*/
|
||||
#define MCU_PART_SERIES (0x0)
|
||||
|
||||
/* Memory type.
|
||||
Character(s) = Value for macro = Description
|
||||
F = 0x0 = Flash memory version
|
||||
*/
|
||||
#define MCU_PART_MEMORY_TYPE (0x0)
|
||||
|
||||
/* The 'BSP_DECLARE_STACK' macro is checked so that the stack is only declared in one place (resetprg.c). Every time a
|
||||
'#pragma stacksize' is encountered, the stack size is increased. This prevents multiplication of stack size. */
|
||||
#if defined(BSP_DECLARE_STACK)
|
||||
/* User Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */
|
||||
#pragma stacksize su=0x400
|
||||
/* Interrupt Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */
|
||||
#pragma stacksize si=0x100
|
||||
#endif
|
||||
|
||||
/* Heap size in bytes. */
|
||||
#define HEAP_BYTES (0x400)
|
||||
|
||||
/* After reset MCU will operate in Supervisor mode. To switch to User mode, set this macro to '1'. For more information
|
||||
on the differences between these 2 modes see the CPU >> Processor Mode section of your MCU's hardware manual.
|
||||
0 = Stay in Supervisor mode.
|
||||
1 = Switch to User mode.
|
||||
*/
|
||||
#define RUN_IN_USER_MODE (0)
|
||||
|
||||
|
||||
/* This macro lets other modules no if a RTOS is being used.
|
||||
0 = RTOS is not used.
|
||||
1 = RTOS is used.
|
||||
*/
|
||||
#define RTOS_USED (0)
|
||||
|
||||
/* Clock source select (CKSEL).
|
||||
0 = Low Speed On-Chip Oscillator (LOCO)
|
||||
1 = High Speed On-Chip Oscillator (HOCO)
|
||||
2 = Main Clock Oscillator
|
||||
3 = Sub-Clock Oscillator
|
||||
4 = PLL Circuit
|
||||
*/
|
||||
#define CLOCK_SOURCE (4)
|
||||
|
||||
/* Clock configuration options.
|
||||
The input clock frequency is specified and then the system clocks are set by specifying the multipliers used. The
|
||||
multiplier settings are used to set the clock registers in resetprg.c. If a 16MHz clock is used and the
|
||||
ICLK is 24MHz, PCLKB is 24MHz, FCLK is 24MHz, PCLKD is 24MHz, and CKO is 1MHz then the
|
||||
settings would be:
|
||||
|
||||
XTAL_HZ = 16000000
|
||||
PLL_DIV = 2
|
||||
PLL_MUL = 6 (16MHz x 3 = 48MHz)
|
||||
ICK_DIV = 2 : System Clock (ICLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / ICK_DIV) = 24MHz
|
||||
PCKB_DIV = 2 : Peripheral Clock B (PCLKB) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKB_DIV) = 24MHz
|
||||
PCKD_DIV = 2 : Peripheral Clock D (PCLKD) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKD_DIV) = 24MHz
|
||||
FCK_DIV = 2 : Flash IF Clock (FCLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / FCK_DIV) = 24MHz
|
||||
*/
|
||||
/* XTAL - Input clock frequency in Hz */
|
||||
#define XTAL_HZ (16000000)
|
||||
/* PLL Input Frequency Divider Select (PLIDIV).
|
||||
Available divisors = /1 (no division), /2, /4
|
||||
*/
|
||||
#define PLL_DIV (2)
|
||||
/* PLL Frequency Multiplication Factor Select (STC).
|
||||
Available multipliers = x6, x8
|
||||
*/
|
||||
#define PLL_MUL (6)
|
||||
/* System Clock Divider (ICK).
|
||||
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||
*/
|
||||
#define ICK_DIV (2)
|
||||
/* Peripheral Module Clock B Divider (PCKB).
|
||||
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||
*/
|
||||
#define PCKB_DIV (2)
|
||||
/* Peripheral Module Clock D Divider (PCKD).
|
||||
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||
*/
|
||||
#define PCKD_DIV (2)
|
||||
/* Flash IF Clock Divider (FCK).
|
||||
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||
*/
|
||||
#define FCK_DIV (2)
|
||||
|
||||
/* Below are callback functions that can be used for detecting MCU exceptions, undefined interrupt sources, and
|
||||
bus errors. If the user wishes to be alerted of these events then they will need to define the macro as a
|
||||
function to be called when the event occurs. For example, if the user wanted the function
|
||||
excep_undefined_instr_isr() to be called when an undefined interrupt source ISR is triggered then they would
|
||||
do the following:
|
||||
#define UNDEFINED_INT_ISR_CALLBACK undefined_interrupt_cb
|
||||
If the user does not wish to be alerted of these events then they should comment out the macros.
|
||||
|
||||
NOTE: When a callback function is called it will be called from within a ISR. This means that the function
|
||||
will essentially be an interrupt and will hold off other interrupts that occur in the system while it
|
||||
is executing. For this reason, it is recommended to keep these callback functions short as to not
|
||||
decrease the real-time response of your system.
|
||||
*/
|
||||
/* Callback for Supervisor Instruction Violation Exception. */
|
||||
//#define EXCEP_SUPERVISOR_ISR_CALLBACK supervisor_instr_cb
|
||||
|
||||
/* Callback for Undefined Instruction Exception. */
|
||||
//#define EXCEP_UNDEFINED_INSTR_ISR_CALLBACK undefined_instr_cb
|
||||
|
||||
/* Callback for Non-maskable Interrupt. */
|
||||
//#define NMI_ISR_CALLBACK nmi_cb
|
||||
|
||||
/* Callback for all undefined interrupt vectors. User can set a breakpoint in this function to determine which source
|
||||
is creating unwanted interrupts. */
|
||||
//#define UNDEFINED_INT_ISR_CALLBACK undefined_interrupt_cb
|
||||
|
||||
/* Callback for Bus Error Interrupt. */
|
||||
//#define BUS_ERROR_ISR_CALLBACK bus_error_cb
|
||||
|
||||
/* The user has the option of separately choosing little or big endian for the User Application Area */
|
||||
|
||||
/* Endian mode for User Application.
|
||||
0 = Big Endian
|
||||
Else = Little Endian (Default)
|
||||
*/
|
||||
#define USER_APP_ENDIAN (1)
|
||||
|
||||
|
||||
/* Configure WDT and IWDT settings.
|
||||
OFS0 - Option Function Select Register 0
|
||||
OFS0 - Option Function Select Register 0
|
||||
b31:b15 Reserved (set to 1)
|
||||
b14 IWDTSLCSTP - IWDT Sleep Mode Count Stop Control - (0=can't stop count, 1=stop w/some low power modes)
|
||||
b13 Reserved (set to 1)
|
||||
b12 IWDTRSTIRQS - IWDT Reset Interrupt Request - What to do on underflow (0=take interrupt, 1=reset MCU)
|
||||
b11:b10 IWDTRPSS - IWDT Window Start Position Select - (0=25%, 1=50%, 2=75%, 3=100%,don't use)
|
||||
b9:b8 IWDTRPES - IWDT Window End Position Select - (0=75%, 1=50%, 2=25%, 3=0%,don't use)
|
||||
b7:b4 IWDTCKS - IWDT Clock Frequency Division Ratio - (0=none, 2=/16, 3 = /32, 4=/64, 0xF=/128, 5=/256)
|
||||
b3:b2 IWDTTOPS - IWDT Timeout Period Select - (0=128 cycles, 1=512, 2=1024, 3=2048)
|
||||
b1 IWDTSTRT - IWDT Start Mode Select - (0=auto-start after reset, 1=halt after reset)
|
||||
b0 Reserved (set to 1) */
|
||||
#define OFS0_REG_VALUE (0xFFFFFFFF) //Disable by default
|
||||
|
||||
/* Configure whether voltage detection 1 circuit and HOCO are enabled after reset.
|
||||
OFS1 - Option Function Select Register 1
|
||||
b31:b9 Reserved (set to 1)
|
||||
b8 HOCOEN - Enable/disable HOCO oscillation after a reset (0=enable, 1=disable)
|
||||
b7:b4 STUPLVD1LVL - Startup Voltage Monitoring 1 Reset Detection Level Select
|
||||
0 1 0 0: 3.10 V
|
||||
0 1 0 1: 3.00 V
|
||||
0 1 1 0: 2.90 V
|
||||
0 1 1 1: 2.79 V
|
||||
1 0 0 0: 2.68 V
|
||||
1 0 0 1: 2.58 V
|
||||
1 0 1 0: 2.48 V
|
||||
1 0 1 1: 2.06 V
|
||||
1 1 0 0: 1.96 V
|
||||
1 1 0 1: 1.86 V
|
||||
b3:b2 Reserved (set to 1)
|
||||
b2 STUPLVD1REN - Startup Voltage Monitoring 1 Reset Enable (1=monitoring disabled)
|
||||
b0 FASTSTUP - Power-On Fast Startup Time (1=normal; read only) */
|
||||
#define OFS1_REG_VALUE (0xFFFFFFFF) //Disable by default
|
||||
|
||||
/* Initializes C input & output library functions.
|
||||
0 = Disable I/O library initialization in resetprg.c. If you are not using stdio then use this value.
|
||||
1 = Enable I/O library initialization in resetprg.c. This is default and needed if you are using stdio. */
|
||||
#define IO_LIB_ENABLE (1)
|
||||
|
||||
#endif /* R_BSP_CONFIG_REF_HEADER_FILE */
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : rskrx111.h
|
||||
* H/W Platform : RSKRX111
|
||||
* Description : Board specific definitions for the RSKRX111.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 08.11.2012 0.01 Beta Release
|
||||
***********************************************************************************************************************/
|
||||
|
||||
#ifndef RSKRX111_H
|
||||
#define RSKRX111_H
|
||||
|
||||
/* Local defines */
|
||||
#define LED_ON (0)
|
||||
#define LED_OFF (1)
|
||||
#define SET_BIT_HIGH (1)
|
||||
#define SET_BIT_LOW (0)
|
||||
#define SET_BYTE_HIGH (0xFF)
|
||||
#define SET_BYTE_LOW (0x00)
|
||||
|
||||
/* Switches */
|
||||
#define SW_ACTIVE 0
|
||||
#define SW1 PORT3.PIDR.BIT.B0
|
||||
#define SW2 PORT3.PIDR.BIT.B1
|
||||
#define SW3 PORTE.PIDR.BIT.B4
|
||||
#define SW1_PDR PORT3.PDR.BIT.B0
|
||||
#define SW2_PDR PORT3.PDR.BIT.B1
|
||||
#define SW3_PDR PORTE.PDR.BIT.B4
|
||||
#define SW1_PMR PORT3.PMR.BIT.B0
|
||||
#define SW2_PMR PORT3.PMR.BIT.B1
|
||||
#define SW3_PMR PORTE.PMR.BIT.B4
|
||||
|
||||
/* LEDs */
|
||||
#define LED0 PORTB.PODR.BIT.B7
|
||||
#define LED1 PORTA.PODR.BIT.B0
|
||||
#define LED2 PORT5.PODR.BIT.B4
|
||||
#define LED3 PORT1.PODR.BIT.B7
|
||||
#define LED0_PDR PORTB.PDR.BIT.B7
|
||||
#define LED1_PDR PORTA.PDR.BIT.B0
|
||||
#define LED2_PDR PORT5.PDR.BIT.B4
|
||||
#define LED3_PDR PORT1.PDR.BIT.B7
|
||||
|
||||
|
||||
#endif /* RSKRX111_H */
|
|
@ -0,0 +1,366 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : hwsetup.c
|
||||
* Device(s) : RX
|
||||
* H/W Platform : RSKRX210
|
||||
* Description : Defines the initialization routines used each time the MCU is restarted.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 08.11.2012 0.01 Beta Release
|
||||
***********************************************************************************************************************/
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Includes <System Includes> , "Project Includes"
|
||||
***********************************************************************************************************************/
|
||||
/* I/O Register and board definitions */
|
||||
#include "platform.h"
|
||||
#include "r_switches_if.h"
|
||||
/***********************************************************************************************************************
|
||||
Private global variables and functions
|
||||
***********************************************************************************************************************/
|
||||
/* MCU I/O port configuration function delcaration */
|
||||
static void output_ports_configure(void);
|
||||
|
||||
/* Interrupt configuration function delcaration */
|
||||
static void interrupts_configure(void);
|
||||
|
||||
/* MCU peripheral module configuration function declaration */
|
||||
static void peripheral_modules_enable(void);
|
||||
|
||||
/* Configure MCU clocks. */
|
||||
static void clock_source_select (void);
|
||||
void operating_frequency_set(void);
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name: hardware_setup
|
||||
* Description : Contains setup functions called at device restart
|
||||
* Arguments : none
|
||||
* Return value : none
|
||||
***********************************************************************************************************************/
|
||||
void vHardwareSetup(void)
|
||||
{
|
||||
operating_frequency_set();
|
||||
output_ports_configure();
|
||||
interrupts_configure();
|
||||
peripheral_modules_enable();
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name: output_ports_configure
|
||||
* Description : Configures the port and pin direction settings, and sets the pin outputs to a safe level.
|
||||
* Arguments : none
|
||||
* Return value : none
|
||||
***********************************************************************************************************************/
|
||||
void output_ports_configure(void)
|
||||
{
|
||||
/* Enable LEDs. */
|
||||
/* Start with LEDs off. */
|
||||
LED0 = LED_OFF;
|
||||
LED1 = LED_OFF;
|
||||
LED2 = LED_OFF;
|
||||
LED3 = LED_OFF;
|
||||
|
||||
/* Set LED pins as outputs. */
|
||||
LED0_PDR = 1;
|
||||
LED1_PDR = 1;
|
||||
LED2_PDR = 1;
|
||||
LED3_PDR = 1;
|
||||
|
||||
/* Enable switches. */
|
||||
/* Set pins as inputs. */
|
||||
SW1_PDR = 0;
|
||||
SW2_PDR = 0;
|
||||
SW3_PDR = 0;
|
||||
|
||||
/* Set port mode registers for switches. */
|
||||
SW1_PMR = 0;
|
||||
SW2_PMR = 0;
|
||||
SW3_PMR = 0;
|
||||
|
||||
/* Unlock MPC registers to enable writing to them. */
|
||||
MPC.PWPR.BIT.B0WI = 0 ; /* Unlock protection register */
|
||||
MPC.PWPR.BIT.PFSWE = 1 ; /* Unlock MPC registers */
|
||||
|
||||
/* TXD1 is output. */
|
||||
PORT1.PDR.BIT.B6 = 1;
|
||||
PORT1.PMR.BIT.B6 = 1;
|
||||
MPC.P16PFS.BYTE = 0x0A;
|
||||
/* RXD1 is input. */
|
||||
PORT1.PDR.BIT.B5 = 0;
|
||||
PORT1.PMR.BIT.B5 = 1;
|
||||
MPC.P15PFS.BYTE = 0x0A;
|
||||
|
||||
/* Configure the pin connected to the ADC Pot as an input */
|
||||
PORT4.PDR.BIT.B4 = 0;
|
||||
|
||||
/* Protect off. */
|
||||
SYSTEM.PRCR.WORD = 0xA50B;
|
||||
|
||||
/* Turn off module stop for the A2D converter. */
|
||||
SYSTEM.MSTPCRA.BIT.MSTPA17 = 0;
|
||||
|
||||
/* Protect on. */
|
||||
SYSTEM.PRCR.WORD = 0xA500;
|
||||
|
||||
/* Initialise the first button to generate an interrupt. */
|
||||
R_SWITCHES_Init();
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name: interrupts_configure
|
||||
* Description : Configures interrupts used
|
||||
* Arguments : none
|
||||
* Return value : none
|
||||
***********************************************************************************************************************/
|
||||
void interrupts_configure(void)
|
||||
{
|
||||
/* Add code here to setup additional interrupts */
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name: peripheral_modules_enable
|
||||
* Description : Enables and configures peripheral devices on the MCU
|
||||
* Arguments : none
|
||||
* Return value : none
|
||||
***********************************************************************************************************************/
|
||||
void peripheral_modules_enable(void)
|
||||
{
|
||||
/* Enable triggers to start an ADC conversion. */
|
||||
S12AD.ADCSR.BIT.TRGE = 1;
|
||||
|
||||
/* Only channel 4 is going to be used. */
|
||||
S12AD.ADANSA.BIT.ANSA4 = 1;
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name: operating_frequency_set
|
||||
* Description : Configures the clock settings for each of the device clocks
|
||||
* Arguments : none
|
||||
* Return value : none
|
||||
***********************************************************************************************************************/
|
||||
void operating_frequency_set(void)
|
||||
{
|
||||
/* Used for constructing value to write to SCKCR and CKOCR registers. */
|
||||
uint32_t temp_clock = 0;
|
||||
|
||||
/*
|
||||
Clock Description Frequency
|
||||
----------------------------------------
|
||||
Input Clock Frequency............ 16 MHz
|
||||
PLL frequency (x3)............... 48 MHz
|
||||
Internal Clock Frequency......... 24 MHz
|
||||
Peripheral Clock Frequency....... 24 MHz
|
||||
Clock Out Frequency.............. 1 MHz */
|
||||
|
||||
volatile unsigned int i;
|
||||
|
||||
/* Protect off. */
|
||||
SYSTEM.PRCR.WORD = 0xA50B;
|
||||
|
||||
/* Select the clock based upon user's choice. */
|
||||
clock_source_select();
|
||||
|
||||
|
||||
/* Figure out setting for FCK bits. */
|
||||
#if FCK_DIV == 1
|
||||
/* Do nothing since FCK bits should be 0. */
|
||||
#elif FCK_DIV == 2
|
||||
temp_clock |= 0x10000000;
|
||||
#elif FCK_DIV == 4
|
||||
temp_clock |= 0x20000000;
|
||||
#elif FCK_DIV == 8
|
||||
temp_clock |= 0x30000000;
|
||||
#elif FCK_DIV == 16
|
||||
temp_clock |= 0x40000000;
|
||||
#elif FCK_DIV == 32
|
||||
temp_clock |= 0x50000000;
|
||||
#elif FCK_DIV == 64
|
||||
temp_clock |= 0x60000000;
|
||||
#else
|
||||
#error "Error! Invalid setting for FCK_DIV in r_bsp_config.h"
|
||||
#endif
|
||||
|
||||
/* Figure out setting for ICK bits. */
|
||||
#if ICK_DIV == 1
|
||||
/* Do nothing since ICK bits should be 0. */
|
||||
#elif ICK_DIV == 2
|
||||
temp_clock |= 0x01000000;
|
||||
#elif ICK_DIV == 4
|
||||
temp_clock |= 0x02000000;
|
||||
#elif ICK_DIV == 8
|
||||
temp_clock |= 0x03000000;
|
||||
#elif ICK_DIV == 16
|
||||
temp_clock |= 0x04000000;
|
||||
#elif ICK_DIV == 32
|
||||
temp_clock |= 0x05000000;
|
||||
#elif ICK_DIV == 64
|
||||
temp_clock |= 0x06000000;
|
||||
#else
|
||||
#error "Error! Invalid setting for ICK_DIV in r_bsp_config.h"
|
||||
#endif
|
||||
|
||||
/* Figure out setting for PCKB bits. */
|
||||
#if PCKB_DIV == 1
|
||||
/* Do nothing since PCKB bits should be 0. */
|
||||
#elif PCKB_DIV == 2
|
||||
temp_clock |= 0x00000100;
|
||||
#elif PCKB_DIV == 4
|
||||
temp_clock |= 0x00000200;
|
||||
#elif PCKB_DIV == 8
|
||||
temp_clock |= 0x00000300;
|
||||
#elif PCKB_DIV == 16
|
||||
temp_clock |= 0x00000400;
|
||||
#elif PCKB_DIV == 32
|
||||
temp_clock |= 0x00000500;
|
||||
#elif PCKB_DIV == 64
|
||||
temp_clock |= 0x00000600;
|
||||
#else
|
||||
#error "Error! Invalid setting for PCKB_DIV in r_bsp_config.h"
|
||||
#endif
|
||||
|
||||
/* Figure out setting for PCKD bits. */
|
||||
#if PCKD_DIV == 1
|
||||
/* Do nothing since PCKD bits should be 0. */
|
||||
#elif PCKD_DIV == 2
|
||||
temp_clock |= 0x00000001;
|
||||
#elif PCKD_DIV == 4
|
||||
temp_clock |= 0x00000002;
|
||||
#elif PCKD_DIV == 8
|
||||
temp_clock |= 0x00000003;
|
||||
#elif PCKD_DIV == 16
|
||||
temp_clock |= 0x00000004;
|
||||
#elif PCKD_DIV == 32
|
||||
temp_clock |= 0x00000005;
|
||||
#elif PCKD_DIV == 64
|
||||
temp_clock |= 0x00000006;
|
||||
#else
|
||||
#error "Error! Invalid setting for PCKD_DIV in r_bsp_config.h"
|
||||
#endif
|
||||
|
||||
/* Set SCKCR register. */
|
||||
SYSTEM.SCKCR.LONG = temp_clock;
|
||||
|
||||
/* Choose clock source. Default for r_bsp_config.h is PLL. */
|
||||
SYSTEM.SCKCR3.WORD = ((uint16_t)CLOCK_SOURCE) << 8;
|
||||
|
||||
/* Protect on. */
|
||||
SYSTEM.PRCR.WORD = 0xA500;
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name: clock_source_select
|
||||
* Description : Enables and disables clocks as chosen by the user. This function also implements the software delays
|
||||
* needed for the clocks to stabilize.
|
||||
* Arguments : none
|
||||
* Return value : none
|
||||
***********************************************************************************************************************/
|
||||
static void clock_source_select (void)
|
||||
{
|
||||
/* Declared volatile for software delay purposes. */
|
||||
volatile unsigned int i;
|
||||
|
||||
/* NOTE: AS OF VERSION 0.50 OF THE RX111 HARDWARE MANUAL, ALL OF THE CLOCK
|
||||
* STABILIZATION TIMES ARE TBD. FOR NOW, WHERE EVER A WAIT COUNT REGISTER
|
||||
* IS AVAILABLE, THE DELAY IS SET TO THE MAX NUMBER OF CYCLES. WHERE EVER
|
||||
* DELAY LOOPS ARE PRESENT, THE VALUES FROM THE 63N ARE RE-USED. KEEP IN
|
||||
* MIND THAT THE 63N RUNS ON A FASTER CRYSTAL.
|
||||
*/
|
||||
|
||||
#if (CLOCK_SOURCE == 1)
|
||||
/* HOCO is chosen. Start it operating. */
|
||||
SYSTEM.HOCOCR.BYTE = 0x00;
|
||||
/* The delay period needed is to make sure that the HOCO has stabilized.*/
|
||||
for(i = 0; i< 28; i++) // tHOCOWT2 is TBD
|
||||
{
|
||||
__asm volatile( "NOP" );
|
||||
}
|
||||
#else
|
||||
/* HOCO is not chosen. Stop the HOCO. */
|
||||
SYSTEM.HOCOCR.BYTE = 0x01;
|
||||
#endif
|
||||
|
||||
#if (CLOCK_SOURCE == 2)
|
||||
/* Main clock oscillator is chosen. Start it operating. */
|
||||
SYSTEM.MOSCWTCR.BYTE = 0x07; // Wait 65,536 cycles
|
||||
/* Set the main clock to operating. */
|
||||
SYSTEM.MOSCCR.BYTE = 0x00;
|
||||
/* The delay period needed is to make sure that the main clock has stabilized. */
|
||||
for(i = 0; i< 140; i++) // tMAINOSCWT is TBD
|
||||
{
|
||||
__asm volatile( "NOT" );
|
||||
}
|
||||
#endif
|
||||
|
||||
#if (CLOCK_SOURCE == 3)
|
||||
/* Sub-clock oscillator is chosen. Start it operating. */
|
||||
/* In section 9.8.4, there is a reference to a SOSCWTCR register, but there is no
|
||||
* description for this register in the manual nor reference for it in iorx111.h. */
|
||||
|
||||
/* Set the sub-clock to operating. */
|
||||
SYSTEM.SOSCCR.BYTE = 0x00;
|
||||
/* The delay period needed is to make sure that the sub-clock has stabilized. */
|
||||
for(i = 0; i< 30233; i++) // tSUBOSCWT0 is TBD
|
||||
{
|
||||
__asm volatile( "NOP" );
|
||||
}
|
||||
#else
|
||||
/* Set the sub-clock to stopped. */
|
||||
SYSTEM.SOSCCR.BYTE = 0x01;
|
||||
#endif
|
||||
|
||||
#if (CLOCK_SOURCE == 4)
|
||||
/* PLL is chosen. Start it operating. Must start main clock as well since PLL uses it. */
|
||||
SYSTEM.MOSCWTCR.BYTE = 0x07; // Wait 65,536 cycles
|
||||
/* Set the main clock to operating. */
|
||||
SYSTEM.MOSCCR.BYTE = 0x00;
|
||||
|
||||
/* Set PLL Input Divisor. */
|
||||
SYSTEM.PLLCR.BIT.PLIDIV = PLL_DIV >> 1;
|
||||
|
||||
/* Set PLL Multiplier. */
|
||||
SYSTEM.PLLCR.BIT.STC = (PLL_MUL * 2) - 1;
|
||||
|
||||
/* Set the PLL to operating. */
|
||||
SYSTEM.PLLCR2.BYTE = 0x00;
|
||||
/* The delay period needed is to make sure that the main clock and PLL have stabilized. */
|
||||
for(i = 0; i< 140; i++) // tPLLWT2 is TBD
|
||||
{
|
||||
__asm volatile( "NOP" );
|
||||
}
|
||||
#endif
|
||||
|
||||
/* LOCO is saved for last since it is what is running by default out of reset. This means you do not want to turn
|
||||
it off until another clock has been enabled and is ready to use. */
|
||||
#if (CLOCK_SOURCE == 0)
|
||||
/* LOCO is chosen. This is the default out of reset. */
|
||||
SYSTEM.LOCOCR.BYTE = 0x00;
|
||||
#else
|
||||
/* LOCO is not chosen and another clock has already been setup. Turn off the LOCO. */
|
||||
SYSTEM.LOCOCR.BYTE = 0x01;
|
||||
#endif
|
||||
|
||||
/* Make sure a valid clock was chosen. */
|
||||
#if (CLOCK_SOURCE > 4) || (CLOCK_SOURCE < 0)
|
||||
#error "ERROR - Valid clock source must be chosen in r_bsp_config.h using CLOCK_SOURCE macro."
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : r_bsp.h
|
||||
* Description : Has the header files that should be included for this platform.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 13.01.2012 1.00 First Release
|
||||
* : 27.06.2012 1.10 Updated with new information to reflect udpated r_bsp structure.
|
||||
***********************************************************************************************************************/
|
||||
|
||||
#ifndef PLATFORM_BOARD_USER
|
||||
#define PLATFORM_BOARD_USER
|
||||
|
||||
/* Make sure that no other platforms have already been defined. Do not touch this! */
|
||||
#ifdef PLATFORM_DEFINED
|
||||
#error "Error - Multiple platforms defined in platform.h!"
|
||||
#else
|
||||
#define PLATFORM_DEFINED
|
||||
#endif
|
||||
|
||||
/***********************************************************************************************************************
|
||||
INCLUDE APPROPRIATE MCU AND BOARD FILES
|
||||
***********************************************************************************************************************/
|
||||
/* This is a user defined board. Start off by:
|
||||
1)Copy and rename one of the 'board' folders that most closely matches your system (same MCU Series and Group).
|
||||
2)Substitute in your MCU Group for the *MCU Group* option in the #include below for mcu_info.h.
|
||||
3)Copy the other #includes from the r_bsp.h in the 'board' folder that you copied earlier.
|
||||
4)Configure the BSP for your board by modifying the r_bsp_config_reference.h.
|
||||
5)Copy r_bsp_config_reference.h to your project directory and rename it r_bsp_config.h.
|
||||
You can also add your own include files here as well. */
|
||||
#include "r_bsp_config.h"
|
||||
#include ".\mcu\*MCU Group*\mcu_info.h"
|
||||
|
||||
#endif /* PLATFORM_BOARD_USER */
|
||||
|
||||
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,112 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2011 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : mcu_info.h
|
||||
* Device(s) : RX111
|
||||
* Description : Information about the MCU on this board (RSKRX111).
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 08.11.2012 0.01 Beta Release
|
||||
***********************************************************************************************************************/
|
||||
|
||||
#ifndef _MCU_INFO
|
||||
#define _MCU_INFO
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Includes <System Includes> , "Project Includes"
|
||||
***********************************************************************************************************************/
|
||||
/* Gets MCU configuration information. */
|
||||
#include "r_bsp_config.h"
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Macro definitions
|
||||
***********************************************************************************************************************/
|
||||
/* MCU Series. */
|
||||
#if MCU_PART_SERIES == 0x0
|
||||
#define MCU_SERIES_RX100 (1)
|
||||
#else
|
||||
#error "ERROR - MCU_PART_SERIES - Unknown MCU Series chosen in r_bsp_config.h"
|
||||
#endif
|
||||
|
||||
/* MCU Group name. */
|
||||
#if MCU_PART_GROUP == 0x1
|
||||
#define MCU_RX111 (1)
|
||||
#define MCU_RX11x (1)
|
||||
#else
|
||||
#error "ERROR - MCU_PART_GROUP - Unknown MCU Group chosen in r_bsp_config.h"
|
||||
#endif
|
||||
|
||||
/* Package. */
|
||||
#if MCU_PART_PACKAGE == 0x0
|
||||
#define PACKAGE_LFQFP64 (1)
|
||||
#elif MCU_PART_PACKAGE == 0x1
|
||||
#define PACKAGE_LQFP64 (1)
|
||||
#elif MCU_PART_PACKAGE == 0x2
|
||||
#define PACKAGE_TFLGA64 (1)
|
||||
#elif MCU_PART_PACKAGE == 0x3
|
||||
#define PACKAGE_LFQFP48 (1)
|
||||
#elif MCU_PART_PACKAGE == 0x4
|
||||
#define PACKAGE_VQFN48 (1)
|
||||
#elif MCU_PART_PACKAGE == 0x5
|
||||
#define PACKAGE_HWQFN36 (1)
|
||||
#elif MCU_PART_PACKAGE == 0x6
|
||||
#define PACKAGE_WFLGA36 (1)
|
||||
#elif MCU_PART_PACKAGE == 0x7
|
||||
#define PACKAGE_SSOP36 (1)
|
||||
#else
|
||||
#error "ERROR - MCU_PART_PACKAGE - Unknown package chosen in r_bsp_config.h"
|
||||
#endif
|
||||
|
||||
/* Memory size of your MCU. */
|
||||
#if MCU_PART_MEMORY_SIZE == 0x0 // "J" parts
|
||||
#define ROM_SIZE_BYTES (16384)
|
||||
#define RAM_SIZE_BYTES (8192)
|
||||
#define DF_SIZE_BYTES (8192)
|
||||
#elif MCU_PART_MEMORY_SIZE == 0x1
|
||||
#define ROM_SIZE_BYTES (32768)
|
||||
#define RAM_SIZE_BYTES (10240)
|
||||
#define DF_SIZE_BYTES (8192)
|
||||
#elif MCU_PART_MEMORY_SIZE == 0x3
|
||||
#define ROM_SIZE_BYTES (65536)
|
||||
#define RAM_SIZE_BYTES (10240)
|
||||
#define DF_SIZE_BYTES (8192)
|
||||
#elif MCU_PART_MEMORY_SIZE == 0x4
|
||||
#define ROM_SIZE_BYTES (98304)
|
||||
#define RAM_SIZE_BYTES (16384)
|
||||
#define DF_SIZE_BYTES (8192)
|
||||
#elif MCU_PART_MEMORY_SIZE == 0x5
|
||||
#define ROM_SIZE_BYTES (131072)
|
||||
#define RAM_SIZE_BYTES (16384)
|
||||
#define DF_SIZE_BYTES (8192)
|
||||
#else
|
||||
#error "ERROR - MCU_PART_MEMORY_SIZE - Unknown memory size chosen in r_bsp_config.h"
|
||||
#endif
|
||||
|
||||
/* System clock speed in Hz. */
|
||||
#define ICLK_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / ICK_DIV)
|
||||
/* Peripheral Module Clock B speed in Hz. */
|
||||
#define PCLKB_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKB_DIV)
|
||||
/* Peripheral Module Clock D speed in Hz. */
|
||||
#define PCLKD_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKD_DIV)
|
||||
/* FlashIF clock speed in Hz. */
|
||||
#define FCLK_HZ (((XTAL_HZ/PLL_DIV) * PLL_MUL) / FCK_DIV)
|
||||
|
||||
#endif /* _MCU_INFO */
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
/***********************************************************************/
|
||||
/* */
|
||||
/* PROJECT NAME : RTOSDemo_GCC */
|
||||
/* FILE : typedefine.h */
|
||||
/* DESCRIPTION : Aliases of Integer Type */
|
||||
/* CPU SERIES : RX100 */
|
||||
/* CPU TYPE : RX111 */
|
||||
/* */
|
||||
/* This file is generated by e2studio. */
|
||||
/* */
|
||||
/***********************************************************************/
|
||||
|
||||
|
||||
|
||||
|
||||
typedef signed char _SBYTE;
|
||||
typedef unsigned char _UBYTE;
|
||||
typedef signed short _SWORD;
|
||||
typedef unsigned short _UWORD;
|
||||
typedef signed int _SINT;
|
||||
typedef unsigned int _UINT;
|
||||
typedef signed long _SDWORD;
|
||||
typedef unsigned long _UDWORD;
|
||||
typedef signed long long _SQWORD;
|
||||
typedef unsigned long long _UQWORD;
|
88
FreeRTOS/Demo/RX100-RSK_IAR/Renesas_Files/r_bsp/platform.h
Normal file
88
FreeRTOS/Demo/RX100-RSK_IAR/Renesas_Files/r_bsp/platform.h
Normal file
|
@ -0,0 +1,88 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : platform.h
|
||||
* Description : The user chooses which MCU and board they are developing for in this file. If the board you are using
|
||||
* is not listed below, please add your own or use the default 'User Board'.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 30.11.2011 1.00 First Release
|
||||
* : 13.01.2012 1.10 Moved from having platform defined using macro defintion, to having platform defined
|
||||
* by choosing an include path. This makes this file simpler and cleans up the issue
|
||||
* where HEW shows all header files for all platforms under 'Dependencies'.
|
||||
* : 14.02.2012 1.20 Added RX210 BSP.
|
||||
* : 18.04.2012 1.30 Updated to v0.70 of FIT S/W Spec and v0.20 of FIT r_bsp Spec. This includes adding
|
||||
* locking.c and locking.h in board folders. Also, r_bsp can now be configured through
|
||||
* r_bsp_config.h.
|
||||
* : 26.06.2012 1.40 Added new options such as exception callbacks and the ability to choose your MCU using
|
||||
* its part number in r_bsp_config.h. Moved mcu_info.h to the 'mcu' folder. Made an effort
|
||||
* to remove any extra files that the user would need to touch. Removed the flash_options.c
|
||||
* file and put its contents in vecttbl.c.
|
||||
* : 17.07.2012 1.50 Fixed bug with exception callback function names. Added BCLK_OUTPUT and SDCLK_OUTPUT
|
||||
* macro options in r_bsp_config.h. Added some extra code to handle exceptions in
|
||||
* vecttbl.c. Added vecttbl.h so that user has prototypes for exception callbacks.
|
||||
* : 08.11.2012 1.60 Added RX111 BSP
|
||||
***********************************************************************************************************************/
|
||||
|
||||
#ifndef _PLATFORM_H_
|
||||
#define _PLATFORM_H_
|
||||
|
||||
/***********************************************************************************************************************
|
||||
DEFINE YOUR SYSTEM - UNCOMMENT THE INCLUDE PATH FOR THE PLATFORM YOU ARE USING.
|
||||
***********************************************************************************************************************/
|
||||
/* RSKRX610 */
|
||||
//#include "./board/rskrx610/r_bsp.h"
|
||||
|
||||
/* RSKRX62N */
|
||||
//#include "./board/rskrx62n/r_bsp.h"
|
||||
|
||||
/* RSKRX62T */
|
||||
//#include "./board/rskrx62t/r_bsp.h"
|
||||
|
||||
/* RDKRX62N */
|
||||
//#include "./board/rdkrx62n/r_bsp.h"
|
||||
|
||||
/* RSKRX630 */
|
||||
//#include "./board/rskrx630/r_bsp.h"
|
||||
|
||||
/* RSKRX63N */
|
||||
//#include "./board/rskrx63n/r_bsp.h"
|
||||
|
||||
/* RDKRX63N */
|
||||
//#include "./board/rdkrx63n/r_bsp.h"
|
||||
|
||||
/* RSKRX210 */
|
||||
//#include "./board/rskrx210/r_bsp.h"
|
||||
|
||||
/* RSKRX111 */
|
||||
#include "./board/rskrx111/r_bsp.h"
|
||||
|
||||
/* User Board - Define your own board here. */
|
||||
//#include "./board/user/r_bsp.h"
|
||||
|
||||
/***********************************************************************************************************************
|
||||
MAKE SURE AT LEAST ONE PLATFORM WAS DEFINED - DO NOT EDIT BELOW THIS POINT
|
||||
***********************************************************************************************************************/
|
||||
#ifndef PLATFORM_DEFINED
|
||||
#error "Error - No platform defined in platform.h!"
|
||||
#endif
|
||||
|
||||
#endif /* _PLATFORM_H_ */
|
||||
|
250
FreeRTOS/Demo/RX100-RSK_IAR/Renesas_Files/r_bsp/r_bsp_config.h
Normal file
250
FreeRTOS/Demo/RX100-RSK_IAR/Renesas_Files/r_bsp/r_bsp_config.h
Normal file
|
@ -0,0 +1,250 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2012 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : r_bsp_config_reference.c
|
||||
* Device(s) : RX111
|
||||
* Description : The file r_bsp_config.h is used to configure your BSP. r_bsp_config.h should be included
|
||||
* somewhere in your package so that the r_bsp code has access to it. This file (r_bsp_config_reference.h)
|
||||
* is just a reference file that the user can use to make their own r_bsp_config.h file.
|
||||
************************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 07.11.2012 0.01 Beta Release
|
||||
***********************************************************************************************************************/
|
||||
#ifndef R_BSP_CONFIG_REF_HEADER_FILE
|
||||
#define R_BSP_CONFIG_REF_HEADER_FILE
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Configuration Options
|
||||
***********************************************************************************************************************/
|
||||
/* Enter the product part number for your MCU. This information will be used to obtain information about your MCU such
|
||||
as package and memory size.
|
||||
To help parse this information, the part number will be defined using multiple macros.
|
||||
R 5 F 51 11 5 A D FM
|
||||
| | | | | | | | | Macro Name Description
|
||||
| | | | | | | | |__MCU_PART_PACKAGE = Package type, number of pins, and pin pitch
|
||||
| | | | | | | |____not used = Products with wide temperature range (D: -40 to 85C G: -40 to 105C)
|
||||
| | | | | | |______not used = Blank
|
||||
| | | | | |________MCU_PART_MEMORY_SIZE = ROM, RAM, and Data Flash Capacity
|
||||
| | | | |___________MCU_PART_GROUP = Group name
|
||||
| | | |______________MCU_PART_SERIES = Series name
|
||||
| | |________________MCU_PART_MEMORY_TYPE = Type of memory (Flash)
|
||||
| |__________________not used = Renesas MCU
|
||||
|____________________not used = Renesas semiconductor product.
|
||||
*/
|
||||
|
||||
/* Package type. Set the macro definition based on values below:
|
||||
Character(s) = Value for macro = Package Type/Number of Pins/Pin Pitch
|
||||
FM = 0x0 = LFQFP/64/0.50
|
||||
FK = 0x1 = LQFP/64/0.80
|
||||
LF = 0x2 = TFLGA/64/0.50
|
||||
FL = 0x3 = LFQFP/48/0.50
|
||||
NE = 0x4 = VQFN/48/0.50
|
||||
NC = 0x5 = HWQFN/36/0.50
|
||||
LM = 0x6 = WFLGA/36/0.50
|
||||
SB = 0x7 = SSOP/36/0.80
|
||||
*/
|
||||
#define MCU_PART_PACKAGE (0x0)
|
||||
|
||||
/* ROM, RAM, and Data Flash Capacity.
|
||||
Character(s) = Value for macro = ROM Size/Ram Size/Data Flash Size
|
||||
5 = 0x5 = 128KB/16KB/8KB
|
||||
4 = 0x4 = 96KB/16KB/8KB
|
||||
3 = 0x3 = 64KB/10KB/8KB
|
||||
1 = 0x1 = 32KB/10KB/8KB
|
||||
J = 0x0 = 16KB/8KB/8KB
|
||||
*/
|
||||
#define MCU_PART_MEMORY_SIZE (0x5)
|
||||
|
||||
/* Group name.
|
||||
Character(s) = Value for macro = Description
|
||||
10 = 0x0 = RX110 Group
|
||||
11 = 0x1 = RX111 Group
|
||||
*/
|
||||
#define MCU_PART_GROUP (0x1)
|
||||
|
||||
/* Series name.
|
||||
Character(s) = Value for macro = Description
|
||||
51 = 0x0 = RX100 Series
|
||||
*/
|
||||
#define MCU_PART_SERIES (0x0)
|
||||
|
||||
/* Memory type.
|
||||
Character(s) = Value for macro = Description
|
||||
F = 0x0 = Flash memory version
|
||||
*/
|
||||
#define MCU_PART_MEMORY_TYPE (0x0)
|
||||
|
||||
/* The 'BSP_DECLARE_STACK' macro is checked so that the stack is only declared in one place (resetprg.c). Every time a
|
||||
'#pragma stacksize' is encountered, the stack size is increased. This prevents multiplication of stack size. */
|
||||
#if defined(BSP_DECLARE_STACK)
|
||||
/* User Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */
|
||||
#pragma stacksize su=0x400
|
||||
/* Interrupt Stack size in bytes. The Renesas RX toolchain sets the stack size using the #pragma stacksize directive. */
|
||||
#pragma stacksize si=0x100
|
||||
#endif
|
||||
|
||||
/* Heap size in bytes. */
|
||||
#define HEAP_BYTES (0x001)
|
||||
|
||||
/* After reset MCU will operate in Supervisor mode. To switch to User mode, set this macro to '1'. For more information
|
||||
on the differences between these 2 modes see the CPU >> Processor Mode section of your MCU's hardware manual.
|
||||
0 = Stay in Supervisor mode.
|
||||
1 = Switch to User mode.
|
||||
*/
|
||||
#define RUN_IN_USER_MODE (0)
|
||||
|
||||
|
||||
/* This macro lets other modules no if a RTOS is being used.
|
||||
0 = RTOS is not used.
|
||||
1 = RTOS is used.
|
||||
*/
|
||||
#define RTOS_USED (0)
|
||||
|
||||
/* Clock source select (CKSEL).
|
||||
0 = Low Speed On-Chip Oscillator (LOCO)
|
||||
1 = High Speed On-Chip Oscillator (HOCO)
|
||||
2 = Main Clock Oscillator
|
||||
3 = Sub-Clock Oscillator
|
||||
4 = PLL Circuit
|
||||
*/
|
||||
#define CLOCK_SOURCE (4) // GI org 4
|
||||
|
||||
/* Clock configuration options.
|
||||
The input clock frequency is specified and then the system clocks are set by specifying the multipliers used. The
|
||||
multiplier settings are used to set the clock registers in resetprg.c. If a 16MHz clock is used and the
|
||||
ICLK is 24MHz, PCLKB is 24MHz, FCLK is 24MHz, PCLKD is 24MHz, and CKO is 1MHz then the
|
||||
settings would be:
|
||||
|
||||
XTAL_HZ = 16000000
|
||||
PLL_DIV = 2
|
||||
PLL_MUL = 6 (16MHz x 3 = 48MHz)
|
||||
ICK_DIV = 2 : System Clock (ICLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / ICK_DIV) = 24MHz
|
||||
PCKB_DIV = 2 : Peripheral Clock B (PCLKB) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKB_DIV) = 24MHz
|
||||
PCKD_DIV = 2 : Peripheral Clock D (PCLKD) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / PCKD_DIV) = 24MHz
|
||||
FCK_DIV = 2 : Flash IF Clock (FCLK) = (((XTAL_HZ/PLL_DIV) * PLL_MUL) / FCK_DIV) = 24MHz
|
||||
*/
|
||||
/* XTAL - Input clock frequency in Hz */
|
||||
#define XTAL_HZ (16000000)
|
||||
/* PLL Input Frequency Divider Select (PLIDIV).
|
||||
Available divisors = /1 (no division), /2, /4
|
||||
*/
|
||||
#define PLL_DIV (2) // GI org 2
|
||||
/* PLL Frequency Multiplication Factor Select (STC).
|
||||
Available multipliers = x6, x8
|
||||
*/
|
||||
#define PLL_MUL (6) // GI org 6
|
||||
/* System Clock Divider (ICK).
|
||||
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||
*/
|
||||
#define ICK_DIV (2) // NOTE: ICLK CANNOT BE SLOWER THAN PCLK!
|
||||
/* Peripheral Module Clock B Divider (PCKB).
|
||||
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||
*/
|
||||
#define PCKB_DIV (2) // GI org 2
|
||||
/* Peripheral Module Clock D Divider (PCKD).
|
||||
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||
*/
|
||||
#define PCKD_DIV (2)
|
||||
/* Flash IF Clock Divider (FCK).
|
||||
Available divisors = /1 (no division), /2, /4, /8, /16, /32, /64
|
||||
*/
|
||||
#define FCK_DIV (2)
|
||||
|
||||
/* Below are callback functions that can be used for detecting MCU exceptions, undefined interrupt sources, and
|
||||
bus errors. If the user wishes to be alerted of these events then they will need to define the macro as a
|
||||
function to be called when the event occurs. For example, if the user wanted the function
|
||||
excep_undefined_instr_isr() to be called when an undefined interrupt source ISR is triggered then they would
|
||||
do the following:
|
||||
#define UNDEFINED_INT_ISR_CALLBACK undefined_interrupt_cb
|
||||
If the user does not wish to be alerted of these events then they should comment out the macros.
|
||||
|
||||
NOTE: When a callback function is called it will be called from within a ISR. This means that the function
|
||||
will essentially be an interrupt and will hold off other interrupts that occur in the system while it
|
||||
is executing. For this reason, it is recommended to keep these callback functions short as to not
|
||||
decrease the real-time response of your system.
|
||||
*/
|
||||
/* Callback for Supervisor Instruction Violation Exception. */
|
||||
//#define EXCEP_SUPERVISOR_ISR_CALLBACK supervisor_instr_cb
|
||||
|
||||
/* Callback for Undefined Instruction Exception. */
|
||||
//#define EXCEP_UNDEFINED_INSTR_ISR_CALLBACK undefined_instr_cb
|
||||
|
||||
/* Callback for Non-maskable Interrupt. */
|
||||
//#define NMI_ISR_CALLBACK nmi_cb
|
||||
|
||||
/* Callback for all undefined interrupt vectors. User can set a breakpoint in this function to determine which source
|
||||
is creating unwanted interrupts. */
|
||||
//#define UNDEFINED_INT_ISR_CALLBACK undefined_interrupt_cb
|
||||
|
||||
/* Callback for Bus Error Interrupt. */
|
||||
//#define BUS_ERROR_ISR_CALLBACK bus_error_cb
|
||||
|
||||
/* The user has the option of separately choosing little or big endian for the User Application Area */
|
||||
|
||||
/* Endian mode for User Application.
|
||||
0 = Big Endian
|
||||
Else = Little Endian (Default)
|
||||
*/
|
||||
#define USER_APP_ENDIAN (1)
|
||||
|
||||
|
||||
/* Configure WDT and IWDT settings.
|
||||
OFS0 - Option Function Select Register 0
|
||||
OFS0 - Option Function Select Register 0
|
||||
b31:b15 Reserved (set to 1)
|
||||
b14 IWDTSLCSTP - IWDT Sleep Mode Count Stop Control - (0=can't stop count, 1=stop w/some low power modes)
|
||||
b13 Reserved (set to 1)
|
||||
b12 IWDTRSTIRQS - IWDT Reset Interrupt Request - What to do on underflow (0=take interrupt, 1=reset MCU)
|
||||
b11:b10 IWDTRPSS - IWDT Window Start Position Select - (0=25%, 1=50%, 2=75%, 3=100%,don't use)
|
||||
b9:b8 IWDTRPES - IWDT Window End Position Select - (0=75%, 1=50%, 2=25%, 3=0%,don't use)
|
||||
b7:b4 IWDTCKS - IWDT Clock Frequency Division Ratio - (0=none, 2=/16, 3 = /32, 4=/64, 0xF=/128, 5=/256)
|
||||
b3:b2 IWDTTOPS - IWDT Timeout Period Select - (0=128 cycles, 1=512, 2=1024, 3=2048)
|
||||
b1 IWDTSTRT - IWDT Start Mode Select - (0=auto-start after reset, 1=halt after reset)
|
||||
b0 Reserved (set to 1) */
|
||||
#define OFS0_REG_VALUE (0xFFFFFFFF) //Disable by default
|
||||
|
||||
/* Configure whether voltage detection 1 circuit and HOCO are enabled after reset.
|
||||
OFS1 - Option Function Select Register 1
|
||||
b31:b9 Reserved (set to 1)
|
||||
b8 HOCOEN - Enable/disable HOCO oscillation after a reset (0=enable, 1=disable)
|
||||
b7:b4 STUPLVD1LVL - Startup Voltage Monitoring 1 Reset Detection Level Select
|
||||
0 1 0 0: 3.10 V
|
||||
0 1 0 1: 3.00 V
|
||||
0 1 1 0: 2.90 V
|
||||
0 1 1 1: 2.79 V
|
||||
1 0 0 0: 2.68 V
|
||||
1 0 0 1: 2.58 V
|
||||
1 0 1 0: 2.48 V
|
||||
1 0 1 1: 2.06 V
|
||||
1 1 0 0: 1.96 V
|
||||
1 1 0 1: 1.86 V
|
||||
b3:b2 Reserved (set to 1)
|
||||
b2 STUPLVD1REN - Startup Voltage Monitoring 1 Reset Enable (1=monitoring disabled)
|
||||
b0 FASTSTUP - Power-On Fast Startup Time (1=normal; read only) */
|
||||
#define OFS1_REG_VALUE (0xFFFFFFFF) //Disable by default
|
||||
|
||||
/* Initializes C input & output library functions.
|
||||
0 = Disable I/O library initialization in resetprg.c. If you are not using stdio then use this value.
|
||||
1 = Enable I/O library initialization in resetprg.c. This is default and needed if you are using stdio. */
|
||||
#define IO_LIB_ENABLE (0)
|
||||
|
||||
#endif /* R_BSP_CONFIG_REF_HEADER_FILE */
|
||||
|
||||
|
||||
|
100
FreeRTOS/Demo/RX100-RSK_IAR/Renesas_Files/r_bsp/readme.txt
Normal file
100
FreeRTOS/Demo/RX100-RSK_IAR/Renesas_Files/r_bsp/readme.txt
Normal file
|
@ -0,0 +1,100 @@
|
|||
r_bsp Package
|
||||
=============
|
||||
|
||||
Document Number
|
||||
---------------
|
||||
N/A
|
||||
|
||||
Version
|
||||
-------
|
||||
v1.60
|
||||
|
||||
Overview
|
||||
--------
|
||||
The r_bsp package provides a foundation for code to be built on top of. It provides startup code, iodefines, and MCU
|
||||
information for different boards. There are 2 folders that make up the r_bsp package. The 'mcu' folder has iodefine
|
||||
files and a file named 'mcu_info.h' for each MCU group. The 'mcu_info.h' file has information about the MCU on the board
|
||||
and is configured based on the information given in r_bsp_config.h. The information in 'mcu_info.h' is used to help
|
||||
configure Renesas middleware that uses the r_bsp package. The 'board' folder has a folder with startup code for each
|
||||
supported board. Which MCU and board is chosen is decided by the settings in 'platform.h'. The user can choose which
|
||||
board they are using by uncommenting the include path that applies to their board. For example, if you are using the
|
||||
RSK+RX62N then you would uncomment the #include "./board/rskrx62n/r_bsp.h" include path. Users are encouraged to add
|
||||
their own boards to the 'board' directory. BSPs are configured by using the r_bsp_config.h file. Each board will have a
|
||||
reference configuration file named r_bsp_config_reference.h. The user should copy this file to their project, rename it
|
||||
to r_bsp_config.h, and use the options inside the file to configure the BSP for their project.
|
||||
|
||||
Features
|
||||
--------
|
||||
* Provides foundation to build code on top of.
|
||||
* Provides MCU startup code.
|
||||
* Provides SFR access through iodefine.h
|
||||
* Stores details of MCU in 'mcu_info.h' to help configure Renesas middleware.
|
||||
* Easily configure BSP through r_bsp_config.h.
|
||||
* Choose MCU easily by inputting part number details in r_bsp_config.h.
|
||||
* Provides callbacks for MCU exceptions and the bus error interrupt.
|
||||
|
||||
Limitations
|
||||
-----------
|
||||
N/A
|
||||
|
||||
Peripherals Used Directly
|
||||
-------------------------
|
||||
N/A
|
||||
|
||||
Required Packages
|
||||
-----------------
|
||||
* r_glyph [required if you want to use LCD for RDK boards]
|
||||
* r_rspi_rx [required if you want to use LCD for RDK boards]
|
||||
|
||||
How to add to your project
|
||||
--------------------------
|
||||
* Copy the r_bsp folder to your project.
|
||||
* Add an include path to the 'r_bsp' directory.
|
||||
* Add all of the source files for your board from the 'r_bsp\board\--YOUR_BOARD--' directory to your project.
|
||||
* Uncomment the include path for your board in 'platform.h' which is located in the 'r_bsp' directory.
|
||||
* Copy the file r_bsp_config_reference.h from the 'r_bsp\board\--YOUR_BOARD--' directory and copy it to your project's
|
||||
source code directory. Rename the file r_bsp_config.h.
|
||||
* Open r_bsp_config.h and use the macros to configure the BSP for your project.
|
||||
|
||||
File Structure
|
||||
--------------
|
||||
r_bsp
|
||||
| platform.h (choose which board is being used)
|
||||
| readme.txt
|
||||
|
|
||||
+---board (contains supported boards)
|
||||
| +---rdkrx62n (contains BSP source and header files)
|
||||
| |
|
||||
| +---rdkrx63n
|
||||
| |
|
||||
| +---rskrx111
|
||||
| |
|
||||
| +---rskrx210
|
||||
| |
|
||||
| +---rskrx610
|
||||
| |
|
||||
| +---rskrx62n
|
||||
| |
|
||||
| +---rskrx62t
|
||||
| |
|
||||
| +---rskrx630
|
||||
| |
|
||||
| +---rskrx63n
|
||||
| |
|
||||
| \---user
|
||||
|
|
||||
\---mcu
|
||||
+---rx111 (contains common files to this MCU group, e.g. iodefine.h)
|
||||
|
|
||||
+---rx210
|
||||
|
|
||||
+---rx610
|
||||
|
|
||||
+---rx62n
|
||||
|
|
||||
+---rx62t
|
||||
|
|
||||
+---rx630
|
||||
|
|
||||
\---rx63n
|
||||
|
Binary file not shown.
|
@ -0,0 +1,47 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2011 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : r_switches_config.c
|
||||
* Description : Configures the switches code
|
||||
************************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 17.01.2012 1.00 First Release
|
||||
* : 17.02.2012 1.10 Added RSKRX210 support.
|
||||
* : 08.03.2012 1.20 Added GetVersion() function (though it's really a macro).
|
||||
* : 04.06.2012 1.30 Code can now be interrupt or poll driven.
|
||||
***********************************************************************************************************************/
|
||||
#ifndef SWITCHES_CONFIG_HEADER_FILE
|
||||
#define SWITCHES_CONFIG_HEADER_FILE
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Configuration Options
|
||||
***********************************************************************************************************************/
|
||||
/* This macro sets whether interrupts or polling is used for detecting switch presses. The benefit of using interrupts
|
||||
is that no extra processing is used for polling and the use of a system timer tick is not a requirement. The downside
|
||||
of using interrupts is that callback functions are called from within an interrupt so if your ISR is long then it can
|
||||
degrade the real-time response of your system. The benefit of polling is that functions are called at the application
|
||||
level and debouncing is supported. The downside to polling is that your system must call the R_SWITCHES_Update() on a
|
||||
regular basis which requires extra processing.
|
||||
|
||||
0 = Use interrupts
|
||||
1 = Use polling
|
||||
*/
|
||||
#define SWITCHES_DETECTION_MODE (0)
|
||||
|
||||
#endif /* SWITCHES_CONFIG_HEADER_FILE */
|
|
@ -0,0 +1,72 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2011 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : r_switches_if.h
|
||||
* Description : Functions for using switches with callback functions.
|
||||
************************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 17.01.2012 1.00 First Release
|
||||
* : 17.02.2012 1.10 Added RSKRX210 support.
|
||||
* : 08.03.2012 1.20 Added GetVersion() function (though it's really a macro).
|
||||
* : 04.06.2012 1.30 Code can now be interrupt or poll driven.
|
||||
***********************************************************************************************************************/
|
||||
|
||||
#ifndef SWITCHES_API_HEADER_FILE
|
||||
#define SWITCHES_API_HEADER_FILE
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Includes <System Includes> , "Project Includes"
|
||||
***********************************************************************************************************************/
|
||||
/* Fixed width integer support. */
|
||||
#include <stdint.h>
|
||||
/* Used for configuring the code */
|
||||
#include "r_switches_config.h"
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Macro definitions
|
||||
***********************************************************************************************************************/
|
||||
/* Version Number of API. */
|
||||
#define SWITCHES_VERSION_MAJOR (1)
|
||||
#define SWITCHES_VERSION_MINOR (0)
|
||||
/* The process of getting the version number is done through the macro below. The version number is encoded where the
|
||||
top 2 bytes are the major version number and the bottom 2 bytes are the minor version number. For example,
|
||||
Version 4.25 would be returned as 0x00040019. */
|
||||
#define R_SWITCHES_GetVersion() ((((uint32_t)SWITCHES_VERSION_MAJOR) << 16) | (uint32_t)SWITCHES_VERSION_MINOR)
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Public Functions
|
||||
***********************************************************************************************************************/
|
||||
void R_SWITCHES_Init(void);
|
||||
void R_SWITCHES_Update(void);
|
||||
|
||||
/* Callback prototypes. */
|
||||
#if defined(SW1_CALLBACK_FUNCTION)
|
||||
void SW1_CALLBACK_FUNCTION(void);
|
||||
#endif
|
||||
|
||||
#if defined(SW2_CALLBACK_FUNCTION)
|
||||
void SW2_CALLBACK_FUNCTION(void);
|
||||
#endif
|
||||
|
||||
#if defined(SW3_CALLBACK_FUNCTION)
|
||||
void SW3_CALLBACK_FUNCTION(void);
|
||||
#endif
|
||||
|
||||
#endif /* SWITCHES_API_HEADER_FILE */
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
PLEASE REFER TO THE APPLICATION NOTE FOR THIS MIDDLEWARE FOR MORE INFORMATION
|
||||
|
||||
Switches
|
||||
========
|
||||
|
||||
Document Number
|
||||
---------------
|
||||
N/A
|
||||
|
||||
Version
|
||||
-------
|
||||
v1.40
|
||||
|
||||
Overview
|
||||
--------
|
||||
Configures port pins for switches and calls user defined function on switch press. Switch presses can be detected using
|
||||
IRQ interrupts or by polling. The benefit of using interrupts is that no extra processing is used for polling and the
|
||||
use of a system timer tick is not a requirement. The downside of using interrupts is that callback functions are called
|
||||
from within an interrupt so if your ISR is long then it can degrade the real-time response of your system. The benefit
|
||||
of polling is that functions are called at the application level and debouncing is supported. The downside to polling is
|
||||
that your system must call the R_SWITCHES_Update() on a regular basis which requires extra processing.
|
||||
|
||||
Features
|
||||
--------
|
||||
* Call one function to setup switches.
|
||||
* Define function to call when switch is pressed.
|
||||
* Can be configured to be interrupt or poll driven.
|
||||
|
||||
Supported MCUs
|
||||
--------------
|
||||
* RX610 Group
|
||||
* RX621, RX62N Group
|
||||
* RX62T Group
|
||||
* RX630 Group
|
||||
* RX631, RX63N Group
|
||||
* RX210 Group
|
||||
* RX111 Group
|
||||
|
||||
Boards Tested On
|
||||
----------------
|
||||
* RSKRX610
|
||||
* RSK+RX62N
|
||||
* RSKRX62T
|
||||
* RDKRX62N
|
||||
* RSKRX630
|
||||
* RSKRX63N
|
||||
* RDKRX63N
|
||||
* RSKRX111
|
||||
|
||||
Limitations
|
||||
-----------
|
||||
* None
|
||||
|
||||
Peripherals Used Directly
|
||||
-------------------------
|
||||
* None
|
||||
|
||||
Required Packages
|
||||
-----------------
|
||||
* None
|
||||
|
||||
How to add to your project
|
||||
--------------------------
|
||||
* Add src\r_switches.c to your project.
|
||||
* Add an include path to the 'r_switches' directory.
|
||||
* Add an include path to the 'r_switches\src' directory.
|
||||
* Configure middleware through r_switches_config.h.
|
||||
* Add a #include for r_switches_if.h to files that need to use this package.
|
||||
|
||||
Toolchain(s) Used
|
||||
-----------------
|
||||
* Renesas RX v1.02
|
||||
|
||||
File Structure
|
||||
--------------
|
||||
r_switches
|
||||
| readme.txt
|
||||
| r_switches_config.h
|
||||
| r_switches_if.h
|
||||
|
|
||||
\---src
|
||||
r_switches.c
|
||||
|
|
@ -0,0 +1,232 @@
|
|||
/***********************************************************************************************************************
|
||||
* DISCLAIMER
|
||||
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
|
||||
* other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
|
||||
* applicable laws, including copyright laws.
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
|
||||
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
|
||||
* EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
|
||||
* SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
|
||||
* SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
|
||||
* this software. By using this software, you agree to the additional terms and conditions found by accessing the
|
||||
* following link:
|
||||
* http://www.renesas.com/disclaimer
|
||||
*
|
||||
* Copyright (C) 2011 Renesas Electronics Corporation. All rights reserved.
|
||||
***********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* File Name : r_switches.c
|
||||
* Description : Functions for using switches with callback functions.
|
||||
************************************************************************************************************************
|
||||
* History : DD.MM.YYYY Version Description
|
||||
* : 17.01.2012 1.00 First Release
|
||||
* : 17.02.2012 1.10 Added RSKRX210 support.
|
||||
* : 08.03.2012 1.20 Added GetVersion() function (though it's really a macro).
|
||||
* : 04.06.2012 1.30 Code can now be interrupt or poll driven.
|
||||
* : 07.11.2012 1.40 Added support for RSKRX111
|
||||
***********************************************************************************************************************/
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Includes <System Includes> , "Project Includes"
|
||||
***********************************************************************************************************************/
|
||||
/* Board and MCU support. */
|
||||
#include "platform.h"
|
||||
/* Switches prototypes. */
|
||||
#include "r_switches_if.h"
|
||||
/* Scheduler includes. */
|
||||
#include "FreeRTOS.h"
|
||||
typedef int bool;
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Macro definitions
|
||||
***********************************************************************************************************************/
|
||||
/* This helps reduce the amount of unique code for each supported board. */
|
||||
#define X_IRQ( x ) XX_IRQ( x )
|
||||
#define XX_IRQ( x ) _ICU_IRQ##x
|
||||
|
||||
/* These macros define which IRQ pins are used for the switches. Note that these defintions cannot have parentheses
|
||||
around them. */
|
||||
#if defined(PLATFORM_BOARD_RSKRX111)
|
||||
#define SW1_IRQ_NUMBER 0
|
||||
#define SW2_IRQ_NUMBER 1
|
||||
#define SW3_IRQ_NUMBER 4
|
||||
#else
|
||||
#error This file is only for use on the RX100 RSK
|
||||
#endif
|
||||
|
||||
/* Number of switches on this board. */
|
||||
#define SWITCHES_NUM (3)
|
||||
|
||||
/* Register definitions not yet correct in iorx111.h. */
|
||||
#define MPC_P30PFS_REG ( * ( unsigned char * ) 0x0008C158 )
|
||||
#define MPC_P31PFS_REG ( * ( unsigned char * ) 0x0008C159 )
|
||||
#define MPC_PE4PFS_REG ( * ( unsigned char * ) 0x0008C1B4 )
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Typedef definitions
|
||||
***********************************************************************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
bool active;
|
||||
int32_t debounce_cnt;
|
||||
} switch_t;
|
||||
|
||||
/***********************************************************************************************************************
|
||||
Private global variables and functions
|
||||
***********************************************************************************************************************/
|
||||
#if SWITCHES_DETECTION_MODE == 1
|
||||
/* Update Hz */
|
||||
static uint32_t g_sw_debounce_cnts;
|
||||
/* Used for debounce. */
|
||||
switch_t g_switches[SWITCHES_NUM];
|
||||
#endif
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function Name: R_SWITCHES_Init
|
||||
* Description : Initializes pins to be input and interrupt on switch presses.
|
||||
* Arguments :
|
||||
* Return Value : none
|
||||
***********************************************************************************************************************/
|
||||
|
||||
void R_SWITCHES_Init (void)
|
||||
{
|
||||
/* Unlock protection register */
|
||||
MPC.PWPR.BYTE &= 0x7F;
|
||||
/* Unlock MPC registers */
|
||||
MPC.PWPR.BYTE |= 0x40;
|
||||
|
||||
/* Make switch pins inputs. */
|
||||
PORT3.PDR.BYTE &= 0xFC;
|
||||
PORTE.PDR.BYTE &= 0xEF;
|
||||
|
||||
/* Set port mode registers for switches. */
|
||||
PORT3.PMR.BYTE &= 0xFC;
|
||||
PORTE.PMR.BYTE &= 0xEF;
|
||||
|
||||
MPC_P30PFS_REG = 0x40; /* P30 is used as IRQ pin */
|
||||
MPC_P31PFS_REG = 0x40; /* P31 is used as IRQ pin */
|
||||
MPC_PE4PFS_REG = 0x40; /* PE4 is used as IRQ pin */
|
||||
|
||||
/* Set IRQ type (falling edge) */
|
||||
ICU.IRQCR[ SW1_IRQ_NUMBER ].BYTE = 0x04;
|
||||
ICU.IRQCR[ SW2_IRQ_NUMBER ].BYTE = 0x04;
|
||||
ICU.IRQCR[ SW3_IRQ_NUMBER ].BYTE = 0x04;
|
||||
|
||||
/* Set interrupt priorities, which must be below
|
||||
configMAX_SYSCALL_INTERRUPT_PRIORITY. */
|
||||
_IPR( X_IRQ(SW1_IRQ_NUMBER) ) = configKERNEL_INTERRUPT_PRIORITY;
|
||||
_IPR( X_IRQ(SW2_IRQ_NUMBER) ) = configKERNEL_INTERRUPT_PRIORITY;
|
||||
_IPR( X_IRQ(SW3_IRQ_NUMBER) ) = configKERNEL_INTERRUPT_PRIORITY;
|
||||
|
||||
/* Clear any pending interrupts */
|
||||
_IR( X_IRQ(SW1_IRQ_NUMBER) ) = 0;
|
||||
_IR( X_IRQ(SW2_IRQ_NUMBER) ) = 0;
|
||||
_IR( X_IRQ(SW3_IRQ_NUMBER) ) = 0;
|
||||
|
||||
/* Enable the interrupts */
|
||||
_IEN( X_IRQ(SW1_IRQ_NUMBER) ) = 1;
|
||||
_IEN( X_IRQ(SW2_IRQ_NUMBER) ) = 1;
|
||||
_IEN( X_IRQ(SW3_IRQ_NUMBER) ) = 1;
|
||||
}
|
||||
|
||||
/* If using polling then the user must call the update function. */
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Function name: R_SWITCHES_Update
|
||||
* Description : Polls switches and calls callback functions as needed. If you are using IRQ mode then this function
|
||||
* is not needed and can be removed if desired. It is left in so that code will not fail when switching
|
||||
* between polling or IRQ mode.
|
||||
* Arguments : none
|
||||
* Return value : none
|
||||
***********************************************************************************************************************/
|
||||
void R_SWITCHES_Update (void)
|
||||
{
|
||||
#if SWITCHES_DETECTION_MODE == 1
|
||||
/* This code is only needed for polling mode. */
|
||||
/* Check switch 1. */
|
||||
if (SW1 == SW_ACTIVE)
|
||||
{
|
||||
if (g_switches[0].active != true)
|
||||
{
|
||||
if (++g_switches[0].debounce_cnt >= g_sw_debounce_cnts)
|
||||
{
|
||||
/* Set this to true so we only call the callback function once per press. */
|
||||
g_switches[0].active = true;
|
||||
|
||||
/* Call callback function. */
|
||||
SW1_CALLBACK_FUNCTION();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (0 == g_switches[0].debounce_cnt)
|
||||
{
|
||||
g_switches[0].active = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_switches[0].debounce_cnt--;
|
||||
}
|
||||
}
|
||||
|
||||
/* Check switch 2. */
|
||||
if (SW2 == SW_ACTIVE)
|
||||
{
|
||||
if (g_switches[1].active != true)
|
||||
{
|
||||
if (++g_switches[1].debounce_cnt >= g_sw_debounce_cnts)
|
||||
{
|
||||
/* Set this to true so we only call the callback function once per press. */
|
||||
g_switches[1].active = true;
|
||||
|
||||
/* Call callback function. */
|
||||
SW2_CALLBACK_FUNCTION();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (0 == g_switches[1].debounce_cnt)
|
||||
{
|
||||
g_switches[1].active = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_switches[1].debounce_cnt--;
|
||||
}
|
||||
}
|
||||
|
||||
/* Check switch 3. */
|
||||
if (SW3 == SW_ACTIVE)
|
||||
{
|
||||
if (g_switches[2].active != true)
|
||||
{
|
||||
if (++g_switches[2].debounce_cnt >= g_sw_debounce_cnts)
|
||||
{
|
||||
/* Set this to true so we only call the callback function once per press. */
|
||||
g_switches[2].active = true;
|
||||
|
||||
/* Call callback function. */
|
||||
SW3_CALLBACK_FUNCTION();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (0 == g_switches[2].debounce_cnt)
|
||||
{
|
||||
g_switches[2].active = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_switches[2].debounce_cnt--;
|
||||
}
|
||||
}
|
||||
#endif /* SWITCHES_DETECTION_MODE */
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue