📄 armio32.h
字号:
//=====================================================================
// 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.h
//
// Description : ARM interrupt vectors
//
// Project : HELEN
//
// Author : pmonteil@ti.com Patrice Monteil for Saturn
// Modified by JP Ulpiano for HELEN
//
//=====================================================================
#ifndef _ARMIO_H
#define _ARMIO_H
#include "mapping.h"
#include "result.h"
#include "test.h"
#ifdef SET32BITS
#undef SET32BITS
#endif
#define SET32BITS(ADDR) ((ADDR)<<2)
//========================
// ARMIO Registers
//========================
//Input register
//==============
#define ARMIO_IN_OFFSET SET32BITS(0x00)
#define ARMIO_IN (ARMIO_ADDR + ARMIO_IN_OFFSET)
#define ARMIO_PIN0 0
#define ARMIO_PIN1 1
#define ARMIO_PIN2 2
#define ARMIO_PIN3 3
#define ARMIO_PIN4 4
#define ARMIO_PIN5 5
#define ARMIO_PIN6 6
#define ARMIO_PIN7 7
#define ARMIO_PIN8 8
#define ARMIO_PIN9 9
#define ARMIO_PIN10 10
#define ARMIO_PIN11 11
#define ARMIO_PIN12 12
#define ARMIO_PIN13 13
#define ARMIO_PIN14 14
#define ARMIO_PIN15 15
//Output register
//===============
#define ARMIO_OUT_OFFSET SET32BITS(0x01)
#define ARMIO_OUT (ARMIO_ADDR + ARMIO_OUT_OFFSET)
#define ARMIO_OUT_SET_VAL 0xFFFF
#define ARMIO_HIGH 1
#define ARMIO_LOW 0
//Input/Output Control register
//=============================
#define ARMIO_IO_CNTL_OFFSET SET32BITS(0x02)
#define ARMIO_IO_CNTL (ARMIO_ADDR + ARMIO_IO_CNTL_OFFSET)
#define ARMIO_IO_CNTL_RES_VAL 0xFFFF
#define ARMIO_INPUT 1
#define ARMIO_OUTPUT 0
//ArmIO Control register
//======================
#define ARMIO_CNTL_OFFSET SET32BITS(0x03)
#define ARMIO_CNTL (ARMIO_ADDR + ARMIO_CNTL_OFFSET)
#define ARMIO_FREE_POS 0x02
#define ARMIO_SOFT_POS 0x03
#define ARMIO_CKEN_POS 0x05
#define ARMIO_FREE_NUMB 1
#define ARMIO_SOFT_NUMB 1
#define ARMIO_CKEN_NUMB 1
#define ARMIO_FREE_RES_VAL 0x0
#define ARMIO_SOFT_RES_VAL 0x0
#define ARMIO_CKEN_RES_VAL 0x0
#define ARMIO_CKEN 1
#define ARMIO_CKDIS 0
#define ARMIO_ENABLE 0x20
#define ARMIO_ALL_INPUT 0xffff
#define ARMIO_ALL_OUTPUT 0x0000
//Keyboard Row Register
//=====================
#define ARMIO_KBR_OFFSET SET32BITS(0x04)
#define ARMIO_KBR (ARMIO_ADDR + ARMIO_KBR_OFFSET)
#define ROWS_MASK 0x1f
#define ROWS8_MASK 0xff
//Keyboard Column Register
//========================
#define ARMIO_KBC_OFFSET SET32BITS(0x05)
#define ARMIO_KBC (ARMIO_ADDR + ARMIO_KBC_OFFSET)
#define ARMIO_KBC_POS 0
#define ARMIO_KBC_NUMB 5
#define ARMIO_KBC_RES_VAL 0x0
#define COLUMNS_MASK 0x3f
#define COLUMNS8_MASK 0xff
//GPIO event mode register
//========================
#define ARMIO_GPIO_EVENT_MODE_OFFSET SET32BITS(0x06)
#define ARMIO_GPIO_EVENT_MODE (ARMIO_ADDR + ARMIO_GPIO_EVENT_MODE_OFFSET)
#define SET_GPIO_EVENT_MODE_POS 0x0
#define SET_GPIO_EVENT_MODE_NUMB 1
#define SET_GPIO_EVENT_MODE_RES_VAL 0x0
#define PIN_SELECT_POS 0x1
#define PIN_SELECT_MASK 0xF
#define PIN_SELECT_NUMB 4
#define PIN_SELECT_RES_VAL 0x0
#define ARMIO_DISEVT 0
#define ARMIO_ENEVT 1
//GPIO interrupt edge
//===================
#define ARMIO_GPIO_IE_OFFSET SET32BITS(0x07)
#define ARMIO_GPIO_IE (ARMIO_ADDR+ARMIO_GPIO_IE_OFFSET)
#define ARMIO_GPIO_IE_RES_VAL 0x0000
#define ARMIO_FALLING_EDGE 0
#define ARMIO_RISING_EDGE 1
//Kbd Interrupt register
//======================
#define ARMIO_KBD_IT_OFFSET SET32BITS(0x08)
#define ARMIO_KBD_IT (ARMIO_ADDR + ARMIO_KBD_IT_OFFSET)
#define ARMIO_KBD_IT_POS 0x0
#define ARMIO_KBD_IT_NUMB 0x1
#define ARMIO_KBD_IT_RES_VAL 0x1
#define ARMIO_KBD_IT_OCCURED 0x1
#define ARMIO_KBD_NO_IT_OCCURED 0x0
//GPIO Interrupt register
//=======================
#define ARMIO_GPIO_IT_OFFSET SET32BITS(0x09)
#define ARMIO_GPIO_IT (ARMIO_ADDR + ARMIO_GPIO_IT_OFFSET)
#define ARMIO_GPIO_IT_RES_VAL 0x0000
#define ARMIO_GPIO_IT_OCCURED 0x1
#define ARMIO_GPIO_NO_IT_OCCURED 0x0
//Kbd Mask Interrupt register
//===========================
#define ARMIO_KBD_MASK_IT_OFFSET SET32BITS(0x0A)
#define ARMIO_KBD_MASK_IT (ARMIO_ADDR + ARMIO_KBD_MASK_IT_OFFSET)
#define ARMIO_KBD_MASK_IT_POS 0x0
#define ARMIO_KBD_MASK_IT_NUMB 0x1
#define ARMIO_KBD_MASK_IT_RES_VAL 0x0
#define ARMIO_ENABLE_IT 0
#define ARMIO_DISABLE_IT 1
//GPIO Mask Interrupt register
//===========================
#define ARMIO_GPIO_MASK_IT_OFFSET SET32BITS(0x0B)
#define ARMIO_GPIO_MASK_IT (ARMIO_ADDR + ARMIO_GPIO_MASK_IT_OFFSET)
#define ARMIO_GPIO_MASK_IT_RES_VAL 0x0000
#define ARMIO_GPIO_ENABLE_ALL_IT 0x00
#define ARMIO_GPIO_DISABLE_ALL_IT 0xFF
//GPIO Debouncing Register
//========================
#define ARMIO_GPIO_DEBOUNCING_OFFSET SET32BITS(0x0C)
#define ARMIO_GPIO_DEBOUNCING (ARMIO_ADDR + ARMIO_GPIO_DEBOUNCING_OFFSET)
#define ARMIO_GPIO_DEBOUNCING_POS 0x0
#define ARMIO_GPIO_DEBOUNCING_NUMB 0x4
#define ARMIO_GPIO_DEBOUNCING_RES_VAL 0x0
//GPIO latch Register
//===================
#define ARMIO_GPIO_LATCH_REG_OFFSET SET32BITS(0x0D)
#define ARMIO_GPIO_LATCH_REG (ARMIO_ADDR + ARMIO_GPIO_LATCH_REG_OFFSET)
#define ARMIO_GPIO_LATCH_REG1 (ARMIO_ADDR + ARMIO_GPIO_LATCH_REG_OFFSET)
#define ARMIO_GPIO_LATCH_REG2 (ARMIO_ADDR + ARMIO_GPIO_LATCH_REG_OFFSET)
#define ARMIO_GPIO_LATCH_REG1_POS 0x0
#define ARMIO_GPIO_LATCH_REG2_POS 0x8
#define ARMIO_GPIO_LATCH_REG1_NUMB 0x7
#define ARMIO_GPIO_LATCH_REG2_NUMB 0x8
#define ARMIO_GPIO_LATCH_REG1_RES_VAL 0x0
#define ARMIO_GPIO_LATCH_REG2_RES_VAL 0x0
// Alias only used by TEST_ARMIO_GPIO
//-----------------------------------------------------
#define time_2ms 2000
#define time_4ms 4000
#define DEB_0US 0
#define DEB_500US 1
#define DEB_1MS 2
#define DEB_2MS 4
#define DEB_4MS 8
#define FALLING_EDGE 0
#define RISING_EDGE 1
//-----------------------------------------------------
#define ARMIO_SET_BIT(Registre,Data,Bit) \
(Registre)=((Data)==0 ? (Registre)&(~(1<<(Bit))):(Registre)|(1<<(Bit)))
#define ARMIO_GET_BIT(Registre,Bit) ( ( (Registre)& (1<<(Bit)) )>>(Bit) )
//=================================================================================
// All the followings are macro. They were used as they are faster than functions
//=================================================================================
//-------------------------------------------------------------------
// NAME : ARMIO_GET_GPIO_ALL
// DESCRIPTION : Returns the 16 bits of the GPIO of the ARMIO
// PARAMETERS : None
// RETURN VALUE: Returns the 16 bits of the GPIO of the ARMIO
// LIMITATIONS : None
//-------------------------------------------------------------------
#define ARMIO_GET_GPIO_ALL() REG16(ARMIO_IN)
//-------------------------------------------------------------------
// NAME : ARMIO_GET_GPIO_BIT
// DESCRIPTION : Returns one of the 16 input bit
// PARAMETERS : The pin of the bit
// RETURN VALUE: Returns one of the 16 input bit
// LIMITATIONS : None
//-------------------------------------------------------------------
#define ARMIO_GET_GPIO_BIT(Bit) ARMIO_GET_BIT(REG16(ARMIO_IN),Bit)
//-------------------------------------------------------------------
// NAME : ARMIO_SET_GPIO_ALL
// DESCRIPTION : Sets all the out bits
// PARAMETERS : The value of all the pins
// RETURN VALUE: None
// LIMITATIONS : None
//-------------------------------------------------------------------
#define ARMIO_SET_GPIO_ALL(Data) REG16(ARMIO_OUT)=Data
//-------------------------------------------------------------------
// NAME : ARMIO_SET_GPIO_BIT
// DESCRIPTION : Set one of the output bit
// PARAMETERS : Data: The value of the bit ARMIO_HIGH / ARMIO_LOW
// and Bit the pin number
// RETURN VALUE: None
// LIMITATIONS : None
//-------------------------------------------------------------------
#define ARMIO_SET_GPIO_BIT(Data,Bit) ARMIO_SET_BIT(REG16(ARMIO_OUT),Data,Bit)
//-------------------------------------------------------------------
// NAME : ARMIO_GET_BIT_IO_CNTL
// DESCRIPTION : Get one of the configuration (I/O) bit
// PARAMETERS : Bit : Pin number
// RETURN VALUE: One of the configuration (I/O) bit
// LIMITATIONS : None
//-------------------------------------------------------------------
#define ARMIO_GET_BIT_IO_CNTL(Bit) ARMIO_GET_BIT(REG16(ARMIO_IO_CNTL),Bit)
//-------------------------------------------------------------------
// NAME : ARMIO_SET_BIT_IO_CNTL
// DESCRIPTION : Set one of the configuration (I/O) bit
// PARAMETERS : Dir : ARMIO_INPUT / ARMIO_OUTPUT, Bit : Pin number
// RETURN VALUE: None
// LIMITATIONS : None
//-------------------------------------------------------------------
#define ARMIO_SET_BIT_IO_CNTL(Dir,Bit) ARMIO_SET_BIT(REG16(ARMIO_IO_CNTL),Dir,Bit)
//-------------------------------------------------------------------
// NAME : ARMIO_GET_ALL_IO_CNTL
// DESCRIPTION : Get all the configuation (I/O) bit
// PARAMETERS : None
// RETURN VALUE: All the configuation (I/O) bit
// LIMITATIONS : None
//-------------------------------------------------------------------
#define ARMIO_GET_ALL_IO_CNTL() REG16(ARMIO_IO_CNTL)
//-------------------------------------------------------------------
// NAME : ARMIO_SET_ALL_IO_CNTL
// DESCRIPTION : Set all the configuation (I/O) bit
// PARAMETERS : Dir : a 16 bits value that represents the configuration
// RETURN VALUE: None
// LIMITATIONS : None
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -