etisserant@0: /* etisserant@0: This file is part of CanFestival, a library implementing CanOpen Stack. etisserant@0: etisserant@0: Author: Christian Fortin (canfestival@canopencanada.ca) etisserant@0: etisserant@0: See COPYING file for copyrights details. etisserant@0: etisserant@0: This library is free software; you can redistribute it and/or etisserant@0: modify it under the terms of the GNU Lesser General Public etisserant@0: License as published by the Free Software Foundation; either etisserant@0: version 2.1 of the License, or (at your option) any later version. etisserant@0: etisserant@0: This library is distributed in the hope that it will be useful, etisserant@0: but WITHOUT ANY WARRANTY; without even the implied warranty of etisserant@0: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU etisserant@0: Lesser General Public License for more details. etisserant@0: etisserant@0: You should have received a copy of the GNU Lesser General Public etisserant@0: License along with this library; if not, write to the Free Software etisserant@0: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA etisserant@0: */ etisserant@0: etisserant@0: /** etisserant@0: * Définitions pour le LPC2138. etisserant@0: */ etisserant@0: etisserant@0: #if !defined(_LPC2138_DEF_H_) etisserant@0: #define _LPC2138_DEF_H_ etisserant@0: etisserant@0: #include etisserant@0: etisserant@0: // #include "types.h" etisserant@0: etisserant@0: #define BITMASK_0 0x00000000 etisserant@0: #define BITMASK_1 0x00000001 etisserant@0: #define BITMASK_2 0x00000003 etisserant@0: #define BITMASK_4 0x0000000F etisserant@0: #define BITMASK_8 0x000000FF etisserant@0: #define BITMASK_16 0x0000FFFF etisserant@0: #define BITMASK_32 0xFFFFFFFF etisserant@0: etisserant@0: typedef volatile unsigned char REG8; etisserant@0: typedef volatile unsigned char *REG8_ADDR; etisserant@0: typedef volatile unsigned short REG16; etisserant@0: typedef volatile unsigned short *REG16_ADDR; etisserant@0: typedef volatile unsigned int REG32; etisserant@0: typedef volatile unsigned int *REG32_ADDR; etisserant@0: etisserant@0: etisserant@0: #define SET_EQ_SET = etisserant@0: #define SET_EQ_CLR = etisserant@0: etisserant@0: #define P0_IOPIN_ADDR 0xE0028000 etisserant@0: #define P0_IOSET_ADDR 0xE0028004 etisserant@0: #define P0_IODIR_ADDR 0xE0028008 etisserant@0: #define P0_IOCLR_ADDR 0xE002800C etisserant@0: #define P0_PINSEL0_ADDR 0xE002C000 etisserant@0: #define P0_PINSEL1_ADDR 0xE002C004 etisserant@0: etisserant@0: #define P1_IOPIN_ADDR 0xE0028010 etisserant@0: #define P1_IOSET_ADDR 0xE0028014 etisserant@0: #define P1_IODIR_ADDR 0xE0028018 etisserant@0: #define P1_IOCLR_ADDR 0xE002801C etisserant@0: #define P1_PINSEL2_ADDR 0xE002C014 etisserant@0: etisserant@0: #define DACR_ADDR 0xE006C000 etisserant@0: etisserant@0: /* Vectored Interrupt Controller (VIC) */ etisserant@0: #define VICVectAddr_ADDR 0xFFFFF030 etisserant@0: #define VICVectAddr0_ADDR 0xFFFFF100 etisserant@0: #define VICVectCntl0_ADDR 0xFFFFF200 etisserant@0: #define VICIntEnable_ADDR 0xFFFFF010 etisserant@0: etisserant@0: /* External Interrupts */ etisserant@0: #define EXTINT_ADDR 0xE01FC140 etisserant@0: #define INTWAKE_ADDR 0xE01FC144 etisserant@0: #define EXTMODE_ADDR 0xE01FC148 etisserant@0: #define EXTPOLAR_ADDR 0xE01FC14C etisserant@0: etisserant@0: #ifdef TEST etisserant@0: #include "test_stubs.h" etisserant@0: #endif etisserant@0: etisserant@0: /* Vectored Interrupt Controller (VIC) */ etisserant@0: #define VICIRQStatus (*((REG32_ADDR) 0xFFFFF000)) etisserant@0: #define VICFIQStatus (*((REG32_ADDR) 0xFFFFF004)) etisserant@0: #define VICRawIntr (*((REG32_ADDR) 0xFFFFF008)) etisserant@0: #define VICIntSelect (*((REG32_ADDR) 0xFFFFF00C)) etisserant@0: #define VICIntEnable (*((REG32_ADDR) 0xFFFFF010)) etisserant@0: #define VICIntEnClr (*((REG32_ADDR) 0xFFFFF014)) etisserant@0: #define VICSoftInt (*((REG32_ADDR) 0xFFFFF018)) etisserant@0: #define VICSoftIntClr (*((REG32_ADDR) 0xFFFFF01C)) etisserant@0: #define VICProtection (*((REG32_ADDR) 0xFFFFF020)) etisserant@0: #define VICVectAddr (*((REG32_ADDR) 0xFFFFF030)) etisserant@0: #define VICDefVectAddr (*((REG32_ADDR) 0xFFFFF034)) etisserant@0: #define VICVectAddr0 (*((REG32_ADDR) 0xFFFFF100)) etisserant@0: #define VICVectAddr1 (*((REG32_ADDR) 0xFFFFF104)) etisserant@0: #define VICVectAddr2 (*((REG32_ADDR) 0xFFFFF108)) etisserant@0: #define VICVectAddr3 (*((REG32_ADDR) 0xFFFFF10C)) etisserant@0: #define VICVectAddr4 (*((REG32_ADDR) 0xFFFFF110)) etisserant@0: #define VICVectAddr5 (*((REG32_ADDR) 0xFFFFF114)) etisserant@0: #define VICVectAddr6 (*((REG32_ADDR) 0xFFFFF118)) etisserant@0: #define VICVectAddr7 (*((REG32_ADDR) 0xFFFFF11C)) etisserant@0: #define VICVectAddr8 (*((REG32_ADDR) 0xFFFFF120)) etisserant@0: #define VICVectAddr9 (*((REG32_ADDR) 0xFFFFF124)) etisserant@0: #define VICVectAddr10 (*((REG32_ADDR) 0xFFFFF128)) etisserant@0: #define VICVectAddr11 (*((REG32_ADDR) 0xFFFFF12C)) etisserant@0: #define VICVectAddr12 (*((REG32_ADDR) 0xFFFFF130)) etisserant@0: #define VICVectAddr13 (*((REG32_ADDR) 0xFFFFF134)) etisserant@0: #define VICVectAddr14 (*((REG32_ADDR) 0xFFFFF138)) etisserant@0: #define VICVectAddr15 (*((REG32_ADDR) 0xFFFFF13C)) etisserant@0: #define VICVectCntl0 (*((REG32_ADDR) 0xFFFFF200)) etisserant@0: #define VICVectCntl1 (*((REG32_ADDR) 0xFFFFF204)) etisserant@0: #define VICVectCntl2 (*((REG32_ADDR) 0xFFFFF208)) etisserant@0: #define VICVectCntl3 (*((REG32_ADDR) 0xFFFFF20C)) etisserant@0: #define VICVectCntl4 (*((REG32_ADDR) 0xFFFFF210)) etisserant@0: #define VICVectCntl5 (*((REG32_ADDR) 0xFFFFF214)) etisserant@0: #define VICVectCntl6 (*((REG32_ADDR) 0xFFFFF218)) etisserant@0: #define VICVectCntl7 (*((REG32_ADDR) 0xFFFFF21C)) etisserant@0: #define VICVectCntl8 (*((REG32_ADDR) 0xFFFFF220)) etisserant@0: #define VICVectCntl9 (*((REG32_ADDR) 0xFFFFF224)) etisserant@0: #define VICVectCntl10 (*((REG32_ADDR) 0xFFFFF228)) etisserant@0: #define VICVectCntl11 (*((REG32_ADDR) 0xFFFFF22C)) etisserant@0: #define VICVectCntl12 (*((REG32_ADDR) 0xFFFFF230)) etisserant@0: #define VICVectCntl13 (*((REG32_ADDR) 0xFFFFF234)) etisserant@0: #define VICVectCntl14 (*((REG32_ADDR) 0xFFFFF238)) etisserant@0: #define VICVectCntl15 (*((REG32_ADDR) 0xFFFFF23C)) etisserant@0: etisserant@0: #define P0_IOPIN (*((REG32_ADDR) P0_IOPIN_ADDR)) etisserant@0: #define P0_IOSET (*((REG32_ADDR) P0_IOSET_ADDR)) etisserant@0: #define P0_IODIR (*((REG32_ADDR) P0_IODIR_ADDR)) etisserant@0: #define P0_IOCLR (*((REG32_ADDR) P0_IOCLR_ADDR)) etisserant@0: #define P0_PINSEL0 (*((REG32_ADDR) P0_PINSEL0_ADDR)) etisserant@0: #define P0_PINSEL1 (*((REG32_ADDR) P0_PINSEL1_ADDR)) etisserant@0: etisserant@0: #define P1_IOPIN (*((REG32_ADDR) P1_IOPIN_ADDR)) etisserant@0: #define P1_IOSET (*((REG32_ADDR) P1_IOSET_ADDR)) etisserant@0: #define P1_IODIR (*((REG32_ADDR) P1_IODIR_ADDR)) etisserant@0: #define P1_IOCLR (*((REG32_ADDR) P1_IOCLR_ADDR)) etisserant@0: #define P1_PINSEL2 (*((REG32_ADDR) P1_PINSEL2_ADDR)) etisserant@0: etisserant@0: #define DACR (*((REG32_ADDR) DACR_ADDR)) etisserant@0: etisserant@0: /* External Interrupts */ etisserant@0: #define EXTINT (*((REG32_ADDR) EXTINT_ADDR)) etisserant@0: #define INTWAKE (*((REG32_ADDR) INTWAKE_ADDR)) etisserant@0: #define EXTMODE (*((REG32_ADDR) EXTMODE_ADDR)) etisserant@0: #define EXTPOLAR (*((REG32_ADDR) EXTPOLAR_ADDR)) etisserant@0: etisserant@0: etisserant@0: /* Timer 0 */ etisserant@0: #define T0IR (*((REG32_ADDR) 0xE0004000)) etisserant@0: #define T0TCR (*((REG32_ADDR) 0xE0004004)) etisserant@0: #define T0TC (*((REG32_ADDR) 0xE0004008)) etisserant@0: #define T0PR (*((REG32_ADDR) 0xE000400C)) etisserant@0: #define T0PC (*((REG32_ADDR) 0xE0004010)) etisserant@0: #define T0MCR (*((REG32_ADDR) 0xE0004014)) etisserant@0: #define T0MR0 (*((REG32_ADDR) 0xE0004018)) etisserant@0: #define T0MR1 (*((REG32_ADDR) 0xE000401C)) etisserant@0: #define T0MR2 (*((REG32_ADDR) 0xE0004020)) etisserant@0: #define T0MR3 (*((REG32_ADDR) 0xE0004024)) etisserant@0: #define T0CCR (*((REG32_ADDR) 0xE0004028)) etisserant@0: #define T0CR0 (*((REG32_ADDR) 0xE000402C)) etisserant@0: #define T0CR1 (*((REG32_ADDR) 0xE0004030)) etisserant@0: #define T0CR2 (*((REG32_ADDR) 0xE0004034)) etisserant@0: #define T0CR3 (*((REG32_ADDR) 0xE0004038)) etisserant@0: #define T0EMR (*((REG32_ADDR) 0xE000403C)) etisserant@0: #define T0CTCR (*((REG32_ADDR) 0xE0004070)) etisserant@0: etisserant@0: /* Timer 1 */ etisserant@0: #define T1IR (*((REG32_ADDR) 0xE0008000)) etisserant@0: #define T1TCR (*((REG32_ADDR) 0xE0008004)) etisserant@0: #define T1TC (*((REG32_ADDR) 0xE0008008)) etisserant@0: #define T1PR (*((REG32_ADDR) 0xE000800C)) etisserant@0: #define T1PC (*((REG32_ADDR) 0xE0008010)) etisserant@0: #define T1MCR (*((REG32_ADDR) 0xE0008014)) etisserant@0: #define T1MR0 (*((REG32_ADDR) 0xE0008018)) etisserant@0: #define T1MR1 (*((REG32_ADDR) 0xE000801C)) etisserant@0: #define T1MR2 (*((REG32_ADDR) 0xE0008020)) etisserant@0: #define T1MR3 (*((REG32_ADDR) 0xE0008024)) etisserant@0: #define T1CCR (*((REG32_ADDR) 0xE0008028)) etisserant@0: #define T1CR0 (*((REG32_ADDR) 0xE000802C)) etisserant@0: #define T1CR1 (*((REG32_ADDR) 0xE0008030)) etisserant@0: #define T1CR2 (*((REG32_ADDR) 0xE0008034)) etisserant@0: #define T1CR3 (*((REG32_ADDR) 0xE0008038)) etisserant@0: #define T1EMR (*((REG32_ADDR) 0xE000803C)) etisserant@0: #define T1CTCR (*((REG32_ADDR) 0xE0008070)) etisserant@0: etisserant@0: /* Real Time Clock */ etisserant@0: #define ILR (*((REG8_ADDR) 0xE0024000)) etisserant@0: #define CTC (*((REG16_ADDR) 0xE0024004)) etisserant@0: #define CCR (*((REG8_ADDR) 0xE0024008)) etisserant@0: #define CIIR (*((REG8_ADDR) 0xE002400C)) etisserant@0: #define AMR (*((REG8_ADDR) 0xE0024010)) etisserant@0: #define CTIME0 (*((REG32_ADDR) 0xE0024014)) etisserant@0: #define CTIME1 (*((REG32_ADDR) 0xE0024018)) etisserant@0: #define CTIME2 (*((REG32_ADDR) 0xE002401C)) etisserant@0: #define SEC (*((REG8_ADDR) 0xE0024020)) etisserant@0: #define MIN (*((REG8_ADDR) 0xE0024024)) etisserant@0: #define HOUR (*((REG8_ADDR) 0xE0024028)) etisserant@0: #define DOM (*((REG8_ADDR) 0xE002402C)) etisserant@0: #define DOW (*((REG8_ADDR) 0xE0024030)) etisserant@0: #define DOY (*((REG16_ADDR) 0xE0024034)) etisserant@0: #define MONTH (*((REG8_ADDR) 0xE0024038)) etisserant@0: #define YEAR (*((REG16_ADDR) 0xE002403C)) etisserant@0: #define ALSEC (*((REG8_ADDR) 0xE0024060)) etisserant@0: #define ALMIN (*((REG8_ADDR) 0xE0024064)) etisserant@0: #define ALHOUR (*((REG8_ADDR) 0xE0024068)) etisserant@0: #define ALDOM (*((REG8_ADDR) 0xE002406C)) etisserant@0: #define ALDOW (*((REG8_ADDR) 0xE0024070)) etisserant@0: #define ALDOY (*((REG16_ADDR) 0xE0024074)) etisserant@0: #define ALMON (*((REG8_ADDR) 0xE0024078)) etisserant@0: #define ALYEAR (*((REG16_ADDR) 0xE002407C)) etisserant@0: #define PREINT (*((REG16_ADDR) 0xE0024080)) etisserant@0: #define PREFRAC (*((REG16_ADDR) 0xE0024084)) etisserant@0: etisserant@0: /* SPI Registers */ etisserant@0: #define S0SPCR (*((REG32_ADDR) 0xE0020000)) etisserant@0: #define S0SPSR (*((REG32_ADDR) 0xE0020004)) etisserant@0: #define S0SPDR (*((REG32_ADDR) 0xE0020008)) etisserant@0: #define S0SPCCR (*((REG32_ADDR) 0xE002000C)) etisserant@0: #define S0SPINT (*((REG32_ADDR) 0xE002001C)) etisserant@0: etisserant@0: /* SSP Registers */ etisserant@0: #define SSPCR0 (*((REG32_ADDR) 0xE0068000)) etisserant@0: #define SSPCR1 (*((REG32_ADDR) 0xE0068004)) etisserant@0: #define SSPDR (*((REG32_ADDR) 0xE0068008)) etisserant@0: #define SSPSR (*((REG32_ADDR) 0xE006800C)) etisserant@0: #define SSPCPSR (*((REG32_ADDR) 0xE0068010)) etisserant@0: #define SSPIMSC (*((REG32_ADDR) 0xE0068014)) etisserant@0: #define SSPRIS (*((REG32_ADDR) 0xE0068018)) etisserant@0: #define SSPMIS (*((REG32_ADDR) 0xE006801C)) etisserant@0: #define SSPICR (*((REG32_ADDR) 0xE0068020)) etisserant@0: etisserant@0: etisserant@0: typedef enum { etisserant@0: LPC2138_MODE_INPUT = 0, etisserant@0: LPC2138_MODE_OUTPUT = 1 etisserant@0: } LPC2138_MODE; etisserant@0: etisserant@0: typedef enum { etisserant@0: P0 = 0, etisserant@0: P1 = 1 etisserant@0: } LPC2138_PORT; etisserant@0: etisserant@0: /* === Fonctions "#define" génériques ======================================= */ etisserant@0: etisserant@0: #define _cat(a, b) a##b etisserant@0: #define _CAT(a, b) _cat(a, b) etisserant@0: etisserant@0: #define _PIN(pin) LPC2138_##pin etisserant@0: #define _PORT(pin) LPC2138_##pin##_PORT etisserant@0: #define _SIZE(pin) LPC2138_##pin##_SIZE etisserant@0: etisserant@0: /* ((P[0|1]_IOPIN >> pin) & BITMASK_[0-32]) */ etisserant@0: #define lpc2138_get(pin) \ etisserant@0: ((_CAT(_PORT(pin), _IOPIN) >> _PIN(pin)) & _CAT(BITMASK_, _SIZE(pin))) etisserant@0: etisserant@0: #define lpc2138_set(pin, i) \ etisserant@0: { if (_SIZE(pin) == 1) { lpc2138_set_bit(pin, i); } \ etisserant@0: else { lpc2138_set_all(pin, i); } } etisserant@0: etisserant@0: #define lpc2138_set_bit(pin, i) \ etisserant@0: { if ((i) == 1) { _CAT(_PORT(pin), _IOSET) SET_EQ_SET (1 << _PIN(pin)); } \ etisserant@0: else { _CAT(_PORT(pin), _IOCLR) SET_EQ_CLR (1 << _PIN(pin)); } } etisserant@0: etisserant@0: #define lpc2138_set_all(pin, i) \ etisserant@0: (_CAT(_PORT(pin), _IOPIN) = \ etisserant@0: (_CAT(_PORT(pin), _IOPIN) & \ etisserant@0: ~(_CAT(BITMASK_, _SIZE(pin)) << _PIN(pin))) | ((i) << _PIN(pin))) etisserant@0: etisserant@0: /* Identique à lpc2138_set(p, f, nbits, i) sans effet secondaire (plus lent). */ etisserant@0: #define lpc2138_set_SAFE_(pin, i) \ etisserant@0: ((_SIZE(pin) == 1) && lpc2138_set_bit_SAFE_(pin, (i)) || \ etisserant@0: lpc2138_set_all(pin, (i))) etisserant@0: etisserant@0: /* Identique à lpc2138_set_bit(p, f, i) sans effet secondaire (plus lent). */ etisserant@0: #define lpc2138_set_bit_SAFE_(pin, i) \ etisserant@0: ((i == 1) && (_CAT(_PORT(pin), _IOSET) SET_EQ_SET (1 << _PIN(pin))) || \ etisserant@0: (_CAT(_PORT(pin), _IOCLR) SET_EQ_CLR (1 << _PIN(pin)))) etisserant@0: etisserant@0: #define lpc2138_set_mode(pin, mode) \ etisserant@0: (_CAT(_PORT(pin), _IODIR) = (mode == LPC2138_MODE_OUTPUT) ? \ etisserant@0: (_CAT(_PORT(pin), _IODIR)|(_CAT(BITMASK_, _SIZE(pin)) << _PIN(pin))) : \ etisserant@0: (_CAT(_PORT(pin), _IODIR) & ~(_CAT(BITMASK_, _SIZE(pin)) << _PIN(pin)))) etisserant@0: etisserant@0: #define lpc2138_set_pinsel(pin, func) \ etisserant@0: lpc2138_pinsel_set(_PIN(pin), _PORT(pin), _SIZE(pin), func) etisserant@0: etisserant@0: /* === Fonctions pinout "#define" par défaut ================================ */ etisserant@0: etisserant@0: #ifndef lpc2138_uart0_tx_set_pinsel etisserant@0: #define lpc2138_uart0_tx_set_pinsel(func) lpc2138_set_pinsel(uart0_tx, func) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_uart0_rx_set_pinsel etisserant@0: #define lpc2138_uart0_rx_set_pinsel(func) lpc2138_set_pinsel(uart0_rx, func) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_cs_s1d13706_get etisserant@0: #define lpc2138_cs_s1d13706_get() lpc2138_get (cs_s1d13706) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_cs_s1d13706_set etisserant@0: #define lpc2138_cs_s1d13706_set(i) lpc2138_set (cs_s1d13706, i) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_cs_s1d13706_set_mode etisserant@0: #define lpc2138_cs_s1d13706_set_mode(mode) lpc2138_set_mode (cs_s1d13706, mode) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_cs_s1d13706_set_pinsel etisserant@0: #define lpc2138_cs_s1d13706_set_pinsel(func) lpc2138_set_pinsel(cs_s1d13706, func) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_cs_sja1000_get etisserant@0: #define lpc2138_cs_sja1000_get() lpc2138_get (cs_sja1000) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_cs_sja1000_set etisserant@0: #define lpc2138_cs_sja1000_set(i) lpc2138_set (cs_sja1000, i) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_cs_sja1000_set_mode etisserant@0: #define lpc2138_cs_sja1000_set_mode(mode) lpc2138_set_mode (cs_sja1000, mode) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_cs_sja1000_set_pinsel etisserant@0: #define lpc2138_cs_sja1000_set_pinsel(func) lpc2138_set_pinsel(cs_sja1000, func) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_wait_get etisserant@0: #define lpc2138_wait_get() lpc2138_get (wait) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_wait_set etisserant@0: #define lpc2138_wait_set(i) lpc2138_set (wait, i) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_wait_set_mode etisserant@0: #define lpc2138_wait_set_mode(mode) lpc2138_set_mode (wait, mode) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_wait_set_pinsel etisserant@0: #define lpc2138_wait_set_pinsel(func) lpc2138_set_pinsel(wait, func) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_bhe_get etisserant@0: #define lpc2138_bhe_get() lpc2138_get (bhe) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_bhe_set etisserant@0: #define lpc2138_bhe_set(i) lpc2138_set (bhe, i) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_bhe_set_mode etisserant@0: #define lpc2138_bhe_set_mode(mode) lpc2138_set_mode (bhe, mode) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_bhe_set_pinsel etisserant@0: #define lpc2138_bhe_set_pinsel(func) lpc2138_set_pinsel(bhe, func) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_interrupt_sja1000_get etisserant@0: #define lpc2138_interrupt_sja1000_get() lpc2138_get (interrupt_sja1000) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_interrupt_sja1000_set etisserant@0: #define lpc2138_interrupt_sja1000_set(i) lpc2138_set (interrupt_sja1000, i) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_interrupt_sja1000_set_mode etisserant@0: #define lpc2138_interrupt_sja1000_set_mode(mode) lpc2138_set_mode (interrupt_sja1000, mode) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_interrupt_sja1000_set_pinsel etisserant@0: #define lpc2138_interrupt_sja1000_set_pinsel(func) lpc2138_set_pinsel(interrupt_sja1000, func) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_redgreenled_get etisserant@0: #define lpc2138_redgreenled_get() lpc2138_get (redgreenled) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_redgreenled_set etisserant@0: #define lpc2138_redgreenled_set(i) lpc2138_set (redgreenled, i) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_redgreenled_set_mode etisserant@0: #define lpc2138_redgreenled_set_mode(mode) lpc2138_set_mode (redgreenled, mode) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_redgreenled_set_pinsel etisserant@0: #define lpc2138_redgreenled_set_pinsel(func) lpc2138_set_pinsel(redgreenled, func) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_dac0_set etisserant@0: #define lpc2138_dac0_set() lpc2138_set (dac0, i) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_dac0_set_value etisserant@0: #define lpc2138_dac0_set_value(i) DACR = ((1 << 16) | ((i & 0x3FF) << 6)) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_dac0_set_pinsel etisserant@0: #define lpc2138_dac0_set_pinsel(func) lpc2138_set_pinsel(dac0, func) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_spi0_set etisserant@0: #define lpc2138_spi0_set() lpc2138_set (spi0, i) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_spi0_set_value etisserant@0: #define lpc2138_spi0_set_value(i) SSPDR = i etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_spi0_set_pinsel etisserant@0: #define lpc2138_spi0_set_pinsel(func) lpc2138_set_pinsel(spi0, func) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_ale_get etisserant@0: #define lpc2138_ale_get() lpc2138_get (ale) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_ale_set etisserant@0: #define lpc2138_ale_set(i) lpc2138_set (ale, i) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_ale_set_mode etisserant@0: #define lpc2138_ale_set_mode(mode) lpc2138_set_mode (ale, mode) etisserant@0: #endif etisserant@0: #ifndef lpc2138_ale_set_pinsel etisserant@0: #define lpc2138_ale_set_pinsel(func) lpc2138_set_pinsel(ale, func) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_rd_get etisserant@0: #define lpc2138_rd_get() lpc2138_get (rd) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_rd_set etisserant@0: #define lpc2138_rd_set(i) lpc2138_set (rd, i) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_rd_set_mode etisserant@0: #define lpc2138_rd_set_mode(mode) lpc2138_set_mode (rd, mode) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_rd_set_pinsel etisserant@0: #define lpc2138_rd_set_pinsel(func) lpc2138_set_pinsel(rd, func) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_wr_get etisserant@0: #define lpc2138_wr_get() lpc2138_get (wr) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_wr_set etisserant@0: #define lpc2138_wr_set(i) lpc2138_set (wr, i) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_wr_set_mode etisserant@0: #define lpc2138_wr_set_mode(mode) lpc2138_set_mode (wr, mode) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_wr_set_pinsel etisserant@0: #define lpc2138_wr_set_pinsel(func) lpc2138_set_pinsel(wr, func) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_data_get etisserant@0: #define lpc2138_data_get() lpc2138_get (data) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_data_set etisserant@0: #define lpc2138_data_set(i) lpc2138_set (data, i) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_data_set_mode etisserant@0: #define lpc2138_data_set_mode(mode) lpc2138_set_mode (data, mode) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_data_set_pinsel etisserant@0: #define lpc2138_data_set_pinsel(func) lpc2138_set_pinsel(data, func) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_addresses_get etisserant@0: #define lpc2138_addresses_get() ((lpc2138_get (a17_mr) << 17) | \ etisserant@0: (lpc2138_get (a16) << 16) | \ etisserant@0: (lpc2138_get (a0_a15))) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_addresses_set etisserant@0: #define lpc2138_addresses_set(i) lpc2138_set (a17_mr, ((i >> 17) & BITMASK_1)); \ etisserant@0: lpc2138_set (a16, ((i >> 16) & BITMASK_1)); \ etisserant@0: lpc2138_set (a0_a15, ((i) & BITMASK_16)) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_addresses_set_mode etisserant@0: #define lpc2138_addresses_set_mode(mode) (lpc2138_set_mode (a17_mr, mode), \ etisserant@0: lpc2138_set_mode (a16, mode), \ etisserant@0: lpc2138_set_mode (a0_a15, mode)) etisserant@0: #endif etisserant@0: etisserant@0: #ifndef lpc2138_addresses_set_pinsel etisserant@0: #define lpc2138_addresses_set_pinsel(func) (lpc2138_set_pinsel(a17_mr, func), \ etisserant@0: lpc2138_set_pinsel(a16, func), \ etisserant@0: lpc2138_set_pinsel(a0_a15, func)) etisserant@0: #endif etisserant@0: etisserant@0: #define CMR 1 etisserant@0: #define RRB 2 // 1=released message in fifo are released etisserant@0: #define AT 1 // 1= cancel next tranmission etisserant@0: #define SR 2 etisserant@0: #define TBS 2 // 1=released the cpu may write a message in the transmit buffer etisserant@0: #define SRR 4 // 1=present a message shall be transmit and receive sim etisserant@0: #define TR 0 // 1=present a message shall be transmit etisserant@0: etisserant@0: etisserant@0: /* etisserant@0: FLASH etisserant@0: */ etisserant@0: #define EE_SEC_L 1 // Flash sector where EEPROM begins (see UM for details) etisserant@0: #define EE_SEC_H 3 // Flash sector where EEPROM ends (see UM for details) etisserant@0: #define EE_ADDR_L 0x00001000 // Must match the EE_SEC_L Flash sector start address etisserant@0: #define EE_ADDR_H 0x00003FFF // Must match the EE_SEC_H Flash sector end address etisserant@0: #define EE_CCLK 60000 // system clock cclk expressed in kHz (5*12 MHz) etisserant@0: #define EE_BUFFER_SIZE 256 etisserant@0: #define EE_START_MASK 0xFFFFFF00 etisserant@0: #define EE_BUFFER_MASK 0x000000F0 etisserant@0: etisserant@0: etisserant@0: #endif