📄 armio16.c
字号:
//=====================================================================
// TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION
// Property of Texas Instruments -- For Unrestricted Internal Use Only
// Unauthorized reproduction and/or distribution is strictly prohibited
// This product is protected under copyright law and trade secret law as
// an unpublished work.Created 1987,(C) Copyright 1997 Texas Instruments.
// All rights reserved.
// Filename : armio.c
//
// Description : Set of functions useful to test the HELEN ARMIO
//
// Project : Saturn/Dione
// Modified for Helen
//
// Author : pmonteil@tif.ti.com Patrice Monteil.
// First modifier : jp_ulpiano@ti.com
//
//=====================================================================
#include "armio16.h"
/*----------------------------------------------------------
ARMIO_InitIO : Initialize one bit of the ARMIO port
-----------------------------------------------------------*/
void ARMIO_InitIO(char direction, char port)
{
UWORD16 armioCntl = * (UWORD16 *) ARMIO_IO_CNTL;
armioCntl &= ~(1 << port);
* (UWORD16 *) ARMIO_IO_CNTL = (direction ? (armioCntl | (1 << port))
: armioCntl);
}
/*----------------------------------------------------------
ARMIO_InitAll : Initialize all ARMIO ports
-----------------------------------------------------------*/
void ARMIO_InitAll(UWORD16 direction)
{
* (UWORD16 *) ARMIO_IO_CNTL = direction;
}
/*----------------------------------------------------------
ARMIO_ReadCntl : Read I/O control port of ARMIO
-----------------------------------------------------------*/
UWORD16 ARMIO_ReadCntl(void)
{
return(* (UWORD16 *) ARMIO_IO_CNTL);
}
/*----------------------------------------------------------
ARMIO_ReadIO : read from one ARMIO port
-----------------------------------------------------------*/
char ARMIO_ReadIO(char port)
{
return(((* (UWORD16 *) ARMIO_IN) >> port) & 1);
}
/*----------------------------------------------------------
ARMIO_ReadAll : read from all ARMIO ports
-----------------------------------------------------------*/
UWORD16 ARMIO_ReadAll(void)
{
return(* (UWORD16 *) ARMIO_IN);
}
/*----------------------------------------------------------
ARMIO_WriteIO : write to one ARMIO port
-----------------------------------------------------------*/
void ARMIO_WriteIO(char data, char port)
{
UWORD16 armioOut = * (UWORD16 *) ARMIO_OUT;
armioOut &= ~(1 << port);
* (UWORD16 *) ARMIO_OUT = (data ? (armioOut | (1 << port))
: armioOut);
}
/*----------------------------------------------------------
ARMIO_WriteAll : write to all ARMIO ports
-----------------------------------------------------------*/
void ARMIO_WriteAll(UWORD16 data)
{
* (UWORD16 *) ARMIO_OUT = data;
}
/*----------------------------------------------------------
ARMIO_ReadOut : read from ARMIO output ports
-----------------------------------------------------------*/
UWORD16 ARMIO_ReadOut(void)
{
return(* (UWORD16 *) ARMIO_OUT);
}
/*----------------------------------------------------------
ARMIO_ReadKbRows : Read the keyboard rows
-----------------------------------------------------------*/
char ARMIO_ReadKbRows(void)
{
return((char) (* (UWORD16 *) ARMIO_KBR) & ROWS_MASK);
}
/*----------------------------------------------------------
ARMIO_ReadKbRows8X8 : Read the keyboard rows
-----------------------------------------------------------*/
char ARMIO_ReadKbRows8X8(void)
{
return((char) (* (UWORD16 *) ARMIO_KBR) & ROWS8_MASK);
}
/*----------------------------------------------------------
ARMIO_WriteKbCol : Write to the keyboard columns
-----------------------------------------------------------*/
void ARMIO_WriteKbCol(char data)
{
* (UWORD16 *) ARMIO_KBC = (UWORD16) data;
}
/*----------------------------------------------------------
ARMIO_ReadKbCol : Read the keyboard columns
-----------------------------------------------------------*/
char ARMIO_ReadKbCol(void)
{
return((char) (*(UWORD16 *) ARMIO_KBC) & COLUMNS_MASK);
}
/*----------------------------------------------------------
ARMIO_ENABLE : Enable ARMIO CLK
-----------------------------------------------------------*/
void ARMIO_Enable(void)
{
* (UWORD16 *) ARMIO_CNTL |= ARMIO_ENABLE;
}
/*----------------------------------------------------------
ARMIO_ReadClk: Read the ARMIO Clk
-----------------------------------------------------------*/
char ARMIO_ReadClk(void)
{
return((char) ((*(UWORD16 *) ARMIO_CNTL) >> 5) & ARMIO_ENABLE);
}
/******************************************************************************
NAME : ARMIO_TestResetValue()
DESCRIPTION : Test the registers reset value
RETURN VALUE : None
PARAMETERS : None
LIMITATIONS : None
******************************************************************************/
void ARMIO_TestResetValue(void)
{
TEST_REGISTER_RESET_VALUE8(ARMIO_IO_CNTL);
TEST_FIELD_RESET_VALUE8(ARMIO_CNTL,ARMIO_FREE);
TEST_FIELD_RESET_VALUE8(ARMIO_CNTL,ARMIO_SOFT);
TEST_FIELD_RESET_VALUE8(ARMIO_CNTL,ARMIO_CKEN);
TEST_FIELD_RESET_VALUE8(ARMIO_KBC,ARMIO_KBC);
TEST_FIELD_RESET_VALUE8(ARMIO_GPIO_EVENT_MODE,SET_GPIO_EVENT_MODE);
TEST_FIELD_RESET_VALUE8(ARMIO_GPIO_EVENT_MODE,PIN_SELECT);
TEST_REGISTER_RESET_VALUE8(ARMIO_GPIO_IE);
TEST_REGISTER_RESET_VALUE8(ARMIO_KBD_IT);
TEST_REGISTER_RESET_VALUE8(ARMIO_GPIO_IT);
TEST_REGISTER_RESET_VALUE8(ARMIO_KBD_MASK_IT);
TEST_REGISTER_RESET_VALUE8(ARMIO_GPIO_MASK_IT);
TEST_REGISTER_RESET_VALUE8(ARMIO_GPIO_DEBOUNCING);
TEST_REGISTER_RESET_VALUE8(ARMIO_GPIO_LATCH_REG);
ARE_RESET_VALUES_OK();
}
/******************************************************************************
NAME : ARMIO_TestRegistersAccess()
DESCRIPTION : Test the registers reset value
RETURN VALUE : None
PARAMETERS : None
LIMITATIONS : None
******************************************************************************/
void ARMIO_TestRegistersAccess(void)
{
MODIFY_REGISTER_UNDEFINED16(ARMIO_OUT);
MODIFY_REGISTER_RESET_VALUE8(ARMIO_IO_CNTL);
MODIFY_FIELD_RESET_VALUE8(ARMIO_CNTL,ARMIO_FREE);
MODIFY_FIELD_RESET_VALUE8(ARMIO_CNTL,ARMIO_SOFT);
MODIFY_FIELD_RESET_VALUE8(ARMIO_CNTL,ARMIO_CKEN);
MODIFY_FIELD_RESET_VALUE8(ARMIO_KBC,ARMIO_KBC);
MODIFY_FIELD_RESET_VALUE8(ARMIO_GPIO_EVENT_MODE,SET_GPIO_EVENT_MODE);
MODIFY_FIELD_RESET_VALUE8(ARMIO_GPIO_EVENT_MODE,PIN_SELECT);
MODIFY_REGISTER_RESET_VALUE8(ARMIO_GPIO_IE);
MODIFY_REGISTER_RESET_VALUE8(ARMIO_KBD_MASK_IT);
MODIFY_REGISTER_RESET_VALUE8(ARMIO_GPIO_MASK_IT);
MODIFY_REGISTER_RESET_VALUE8(ARMIO_GPIO_DEBOUNCING);
ARE_RESET_VALUES_OK();
}
/*----------------------------------------------------------
ARMIO_InitGpioMode : Init GPIO interrupt mode routine
-----------------------------------------------------------*/
void ARMIO_InitGpioMode (char enable,char inputpin,char edge)
{
*(volatile UWORD16 *) ARMIO_GPIO_EVENT_MODE = ((UWORD16)enable | (UWORD16)(inputpin << 1) | (UWORD16)(edge << 5));
}
/*----------------------------------------------------------------------
ARMIO_WriteGpioDebouncing : Write the debouncing value - 500 us to 8 ms
by step of 500 us (range : 0000-ffff)
-----------------------------------------------------------------------*/
void ARMIO_WriteGpioDebouncing (char debounce)
{
*(UWORD16 *)ARMIO_GPIO_DEBOUNCING =(UWORD16)debounce;
}
/*----------------------------------------------------------------------
ARMIO_ReadGpioLatch
-----------------------------------------------------------------------*/
UWORD16 ARMIO_ReadGpioLatch (void)
{
return(*(volatile UWORD16 *)ARMIO_GPIO_LATCH_REG);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -