===============================================================================================
                               Base Timer IO mode example program
===============================================================================================

Copyright (C) 2013 Spansion LLC. All Rights Reserved. 

This software is owned and published by: 
Spansion LLC, 915 DeGuigne Dr. Sunnyvale, CA  94088-3453 ("Spansion").

BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND 
BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.

This software contains source code for use with Spansion 
components. This software is licensed by Spansion to be adapted only 
for use in systems utilizing Spansion components. Spansion shall not be 
responsible for misuse or illegal use of this software for devices not 
supported herein.  Spansion is providing this software "AS IS" and will 
not be responsible for issues arising from incorrect user implementation 
of the software.  

SPANSION MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE,
REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS), 
ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING, 
WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED 
WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED 
WARRANTY OF NONINFRINGEMENT.  
SPANSION SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT, 
NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT 
LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, 
LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR 
INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT, 
INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA, 
SAVINGS OR PROFITS, 
EVEN IF SPANSION HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 
YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR
INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED 
FROM, THE SOFTWARE.  

This software may be replicated in part or whole for the licensed use, 
with the restriction that this Disclaimer and Copyright notice must be 
included with each copy of this software, whether used in part or whole, 
at all times.  

===============================================================================================
History 
Date        Ver    AE           IAR     ARM   Description
2013-06-24  0.1    EZ           6.50.1  4.70  first version
===============================================================================================                                                       
Function description:
===============================================================================================
Demo the BT IO mode 1~7.

[BT IO mode 1]
BT ch.0 and ch.1 are integrated to a 32-bit timer, ch51's TIOB and TIOA pin are used as ch.1'ECK
and TGIN pin. 

[BT IO mode 2,3]
For these modes, BT ch.0 and ch.1 are configured to Mode 2, BT ch.2 and ch.3 are configured 
to Mode 3. A external trigger starts BT ch.0 and 
ch.1, the trigger signal then outputs to BT ch.2 and ch.3 and starts ch.2 and ch.3.

[BT IO mode 2,8]
For these modes, BT ch.0 and ch.1 are configured to Mode 2, BT ch.2 and ch.3 are configured to Mode 8. A external trigger starts BT ch.0 and 
ch.1, the trigger signal then outputs to BT ch.2 and ch.3 and starts ch.2 and ch.3.

[BT IO mode 4]
In this mode, BT ch.0 is started by a external trigger, then the output of BT ch.0 can control
start/stop of BT ch.1.

[BT IO mode 5]
In this mode, BT ch.0 and ch.1 can be started simultaneously by software startup signal.

[BT IO mode 6]
In this mode, BT ch.0 is started by a software startup signal, then the output of BT ch.0 
can control start/stop of BT ch.1.

[BT IO mode 7]
In this mode, BT ch.0 is started by a software trigger, then the output of BT ch.0 
can trigger BT ch.1 start.

===============================================================================================
Environment
===============================================================================================
Test Board:
---------------------
SK-FM0P-48LQFP-9AF160K

Assistance tool:
---------------------
Oscilloscope

Assistance software:
---------------------
None

===============================================================================================
Usage Procedure:
===============================================================================================
[BT IO mode 1]
1) Connect P3F/TIOA1_0 with P0F
2) In the main.c file, set following definition 
   #define  DEMO_MODE                      DEMO_BT_IOMODE_1    
3) Compile and start debug
4) Run
5) Press SW2
6) Observe the wave at the TIOA0_0

[BT IO mode 2,3]
1) Connect P49/TIOB0_0 with P0F
2) In the main.c file, set following definition 
   #define  DEMO_MODE                      DEMO_BT_IOMODE_2_3   
3) Compile and start debug
4) Run
5) Press SW2 
6) Observe the wave at the TIOA0_0, TIOA2_0

[BT IO mode 2,8]
1) Connect P49/TIOB0_0 with P0F
2) In the main.c file, set following definition 
   #define  DEMO_MODE                      DEMO_BT_IOMODE_2_8   
3) Compile and start debug
4) Press SW2 down
5) Run
6) Observe the wave at the TIOA0_0, TIOA2_0
7) Release SW2 and find TIOA2_0 stops.

[BT IO mode 4]
1) In the main.c file, set following definition 
   #define  DEMO_MODE                      DEMO_BT_IOMODE_4   
2) Compile and start debug
3) Run
4) Observe the wave from TIOA0_0, TIOA1_0

[BT IO mode 5]
1) In the main.c file, set following definition 
   #define  DEMO_MODE                      DEMO_BT_IOMODE_5 
2) Compile and start debug
3) Run
4) Observe the wave from TIOA0_0, TIOA1_0

[BT IO mode 6]
1) In the main.c file, set following definition 
   #define  DEMO_MODE                      DEMO_BT_IOMODE_6
2) Compile and start debug
3) Run
4) Observe the wave from TIOA0_0, TIOA1_0

[BT IO mode 7]
1) In the main.c file, set following definition 
   #define  DEMO_MODE                      DEMO_BT_IOMODE_7
2) Compile and start debug
3) Run
4) Observe the wave from TIOA0_0, TIOA1_0 (Set Oscilloscope to TIOA0_0 rising trigger)

===============================================================================================
Notice:
===============================================================================================
1) The printf content can be output to debug viewer In IAR with semi-hosting mode.
2) The printf content can be output to debug viewer In Keil MDK via SWO line. 
   However SWO pin is not available in FM0+ product, the "putchar" re-target method can be used here.
   With this mothed, printf can output to UART0 (SOT0_0).
   Make following steps to enable this method:
   - Set "PDL_PERIPHERAL_ENABLE_MFS0" and "PDL_UTILITY_ENABLE_UART_PRINTF" to PDL_ON in pdl.user.h
   - Call "Uart_Printf_Init()" at the begin of main function 

===============================================================================================