📄 tpu_qom_example7.c
字号:
/**************************************************************************/
/* FILE NAME: tpu_qom_example7.c COPYRIGHT (c) MOTOROLA 2002 */
/* VERSION: 1.1 All Rights Reserved */
/* */
/* DESCRIPTION: This sample program shows a simple example of a program */
/* that uses the QOM API to control an output pin. */
/* The program is targeted for the MPC555 but should work on any MPC500 */
/* device with a TPU. For other devices the setup routines will also need */
/* to be changed. */
/*========================================================================*/
/* HISTORY ORIGINAL AUTHOR: Jeff Loeliger */
/* REV AUTHOR DATE DESCRIPTION OF CHANGE */
/* --- ----------- --------- --------------------- */
/* 1.0 J. Loeliger 30/Sep/02 Initial version of function. */
/* 1.1 J. Loeliger 13/Dec/02 Added while(1) to end code. */
/**************************************************************************/
#include "mpc555.h" /* Define all of the MPC555 registers, this needs to */
/* changed if other MPC500 devices are used. */
#include "mpc500.c" /* Configuration routines for MPC555 EVB, will need */
/* to be changed if other hardware is used. */
#include "mpc500_util.h" /* Utility routines for using MPC500 devices */
#include "tpu_qom.h" /* TPU qom functions */
/* 4 constant events that can be put into ROM/FLASH*/
const union event_tag event1[4] = {(0x0200 << 1) + TPU_QOM_RISING_EDGE,\
(0x0600 << 1) + TPU_QOM_FALLING_EDGE,\
(0x0200 << 1) + TPU_QOM_RISING_EDGE,\
(0x0200 << 1) + TPU_QOM_FALLING_EDGE};
const union event_tag event2[4] = {(0x0600 << 1) + TPU_QOM_RISING_EDGE,\
(0x0700 << 1) + TPU_QOM_FALLING_EDGE,\
(0x0200 << 1) + TPU_QOM_RISING_EDGE,\
(0x0600 << 1) + TPU_QOM_FALLING_EDGE};
void main ()
{
struct TPU3_tag *tpua = &TPU_A; /* pointer for TPU routines */
setup_mpc500(40); /*Setup device and program PLL to 40MHz*/
/********************************************************************/
/* Define output: 2 pulses */
/* channel: 4 */
/* mode: single shot */
/* timebase: TCR2 */
/* initial pin state: low */
/* first match: immediate */
/* loop count: NA (not used in immediate first match mode) */
/* reference parameter: NA (not used in immediate first match mode) */
/* number of events: 4 */
/* event 1: $0200 counts then drive pin high. */
/* event 2: $0600 counts then drive pin low. */
/* event 3: $0200 counts then drive pin high. */
/* event 4: $0200 counts then drive pin low. */
/********************************************************************/
tpu_qom_init(tpua, 4, TPU_PRIORITY_HIGH, TPU_QOM_SINGLE_SHOT,\
TPU_QOM_TCR2, TPU_QOM_INIT_PIN_LOW, TPU_QOM_IMMEDIATE,\
0, 0, 4, (void *)event1);
/* wait until initialization routine is done */
tpu_ready(tpua, 4);
/* the QOM function generates an interrupt request after init., so clear it*/
tpu_clear_interrupt(tpua, 4);
/* wait until the first pulse train is finish */
while (tpu_check_interrupt(tpua,4) == 0);
/* configure next pulse train */
/********************************************************************/
/* Define output: 2 pulses */
/* channel: 4 */
/* mode: single shot */
/* timebase: TCR2 */
/* initial pin state: no change */
/* first match: last event time */
/* loop count: NA (not used in single shot match mode) */
/* reference parameter: NA (not used in last event first match mode)*/
/* number of events: 4 */
/* event 1: $0600 counts then drive pin high. */
/* event 2: $0700 counts then drive pin low. */
/* event 3: $0200 counts then drive pin high. */
/* event 4: $0600 counts then drive pin low. */
/********************************************************************/
tpu_qom_init(tpua, 4, TPU_PRIORITY_HIGH, TPU_QOM_SINGLE_SHOT,\
TPU_QOM_TCR2, TPU_QOM_INIT_PIN_NO_CHANGE, TPU_QOM_LAST_EVENT,\
0, 0, 4, (void *)event2);
while(1);
}
/*********************************************************************
*
* Copyright:
* MOTOROLA, INC. All Rights Reserved.
* You are hereby granted a copyright license to use, modify, and
* distribute the SOFTWARE so long as this entire notice is
* retained without alteration in any modified and/or redistributed
* versions, and that such modified versions are clearly identified
* as such. No licenses are granted by implication, estoppel or
* otherwise under any patents or trademarks of Motorola, Inc. This
* software is provided on an "AS IS" basis and without warranty.
*
* To the maximum extent permitted by applicable law, MOTOROLA
* DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED, INCLUDING
* IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
* PURPOSE AND ANY WARRANTY AGAINST INFRINGEMENT WITH REGARD TO THE
* SOFTWARE (INCLUDING ANY MODIFIED VERSIONS THEREOF) AND ANY
* ACCOMPANYING WRITTEN MATERIALS.
*
* To the maximum extent permitted by applicable law, IN NO EVENT
* SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING
* WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS
* INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY
* LOSS) ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE.
*
* Motorola assumes no responsibility for the maintenance and support
* of this software
********************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -