You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
193 lines
4.6 KiB
C
193 lines
4.6 KiB
C
19 years ago
|
/* m68hc11/ports.h -- Definition of 68HC11 ports
|
||
|
Copyright 1999, 2000, 2003 Free Software Foundation, Inc.
|
||
|
Written by Stephane Carrez (stcarrez@nerim.fr)
|
||
|
|
||
|
Modified by Jefferson L Smith, Robotronics Inc.
|
||
|
|
||
|
This file is part of GDB, GAS, and the GNU binutils.
|
||
|
|
||
|
GDB, GAS, and the GNU binutils are free software; you can redistribute
|
||
|
them and/or modify them under the terms of the GNU General Public
|
||
|
License as published by the Free Software Foundation; either version
|
||
|
1, or (at your option) any later version.
|
||
|
|
||
|
GDB, GAS, and the GNU binutils are distributed in the hope that they
|
||
|
will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||
|
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
||
|
the GNU General Public License for more details.
|
||
|
|
||
|
You should have received a copy of the GNU General Public License
|
||
|
along with this file; see the file COPYING. If not, write to the Free
|
||
|
Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||
|
|
||
|
#ifndef _M68HC11_PORTS_H
|
||
|
#define _M68HC11_PORTS_H
|
||
|
|
||
|
#include "ports_def.h"
|
||
|
|
||
|
/** Define default SCI port registers */
|
||
|
#if defined(M6812_DEF_SCI)
|
||
|
|
||
|
#if M6812_DEF_SCI==2
|
||
|
# define SCI_BASE SCI2_BASE
|
||
|
#elif M6812_DEF_SCI==1
|
||
|
# define SCI_BASE SCI1_BASE
|
||
|
#else /* default M6812_DEF_SCI==0 */
|
||
|
# define SCI_BASE SCI0_BASE
|
||
|
#endif /* default M6812_DEF_SCI==0 */
|
||
|
|
||
|
#else /* M6812_DEF_SCI not defined */
|
||
|
# define SCI_BASE SCI0_BASE
|
||
|
#endif /* M6812_DEF_SCI */
|
||
|
|
||
|
# define SCIBD PORTIO_16(SCI_BASE + _SCIBD)
|
||
|
# define SCICR1 PORTIO_8(SCI_BASE + _SCICR1)
|
||
|
# define SCICR2 PORTIO_8(SCI_BASE + _SCICR2)
|
||
|
# define SCISR1 PORTIO_8(SCI_BASE + _SCISR1)
|
||
|
# define SCISR2 PORTIO_8(SCI_BASE + _SCISR2)
|
||
|
# define SCIDRL PORTIO_8(SCI_BASE + _SCIDRL)
|
||
|
|
||
|
extern inline unsigned short
|
||
|
get_timer_counter (void)
|
||
|
{
|
||
|
return TCNT;
|
||
|
}
|
||
|
|
||
|
extern inline void
|
||
|
set_timer_counter (unsigned short value)
|
||
|
{
|
||
|
TCNT = value;
|
||
|
}
|
||
|
#if 0
|
||
|
extern inline unsigned short
|
||
|
get_input_capture_1 (void)
|
||
|
{
|
||
|
return ((unsigned volatile short*) &_io_ports[M6811_TIC1_H])[0];
|
||
|
}
|
||
|
|
||
|
extern inline void
|
||
|
set_input_capture_1 (unsigned short value)
|
||
|
{
|
||
|
((unsigned volatile short*) &_io_ports[M6811_TIC1_H])[0] = value;
|
||
|
}
|
||
|
|
||
|
extern inline unsigned short
|
||
|
get_input_capture_2 (void)
|
||
|
{
|
||
|
return ((unsigned volatile short*) &_io_ports[M6811_TIC2_H])[0];
|
||
|
}
|
||
|
|
||
|
extern inline void
|
||
|
set_input_capture_2 (unsigned short value)
|
||
|
{
|
||
|
((unsigned volatile short*) &_io_ports[M6811_TIC2_H])[0] = value;
|
||
|
}
|
||
|
|
||
|
extern inline unsigned short
|
||
|
get_input_capture_3 (void)
|
||
|
{
|
||
|
return ((unsigned volatile short*) &_io_ports[M6811_TIC3_H])[0];
|
||
|
}
|
||
|
|
||
|
extern inline void
|
||
|
set_input_capture_3 (unsigned short value)
|
||
|
{
|
||
|
((unsigned volatile short*) &_io_ports[M6811_TIC3_H])[0] = value;
|
||
|
}
|
||
|
|
||
|
/* Get output compare 16-bit register. */
|
||
|
extern inline unsigned short
|
||
|
get_output_compare_1 (void)
|
||
|
{
|
||
|
return ((unsigned volatile short*) &_io_ports[M6811_TOC1_H])[0];
|
||
|
}
|
||
|
|
||
|
extern inline void
|
||
|
set_output_compare_1 (unsigned short value)
|
||
|
{
|
||
|
((unsigned volatile short*) &_io_ports[M6811_TOC1_H])[0] = value;
|
||
|
}
|
||
|
|
||
|
extern inline unsigned short
|
||
|
get_output_compare_2 (void)
|
||
|
{
|
||
|
return ((unsigned volatile short*) &_io_ports[M6811_TOC2_H])[0];
|
||
|
}
|
||
|
|
||
|
extern inline void
|
||
|
set_output_compare_2 (unsigned short value)
|
||
|
{
|
||
|
((unsigned volatile short*) &_io_ports[M6811_TOC2_H])[0] = value;
|
||
|
}
|
||
|
|
||
|
extern inline unsigned short
|
||
|
get_output_compare_3 (void)
|
||
|
{
|
||
|
return ((unsigned volatile short*) &_io_ports[M6811_TOC3_H])[0];
|
||
|
}
|
||
|
|
||
|
extern inline void
|
||
|
set_output_compare_3 (unsigned short value)
|
||
|
{
|
||
|
((unsigned volatile short*) &_io_ports[M6811_TOC3_H])[0] = value;
|
||
|
}
|
||
|
|
||
|
extern inline unsigned short
|
||
|
get_output_compare_4 (void)
|
||
|
{
|
||
|
return ((unsigned volatile short*) &_io_ports[M6811_TOC4_H])[0];
|
||
|
}
|
||
|
|
||
|
extern inline void
|
||
|
set_output_compare_4 (unsigned short value)
|
||
|
{
|
||
|
((unsigned volatile short*) &_io_ports[M6811_TOC4_H])[0] = value;
|
||
|
}
|
||
|
|
||
|
extern inline unsigned short
|
||
|
get_output_compare_5 (void)
|
||
|
{
|
||
|
return ((unsigned volatile short*) &_io_ports[M6811_TOC5_H])[0];
|
||
|
}
|
||
|
|
||
|
extern inline void
|
||
|
set_output_compare_5 (unsigned short value)
|
||
|
{
|
||
|
((unsigned volatile short*) &_io_ports[M6811_TOC5_H])[0] = value;
|
||
|
}
|
||
|
|
||
|
#endif
|
||
|
|
||
|
/* Reset the COP. */
|
||
|
extern inline void
|
||
|
cop_reset (void)
|
||
|
{
|
||
|
ARMCOP = 0x55;
|
||
|
ARMCOP = 0xAA;
|
||
|
}
|
||
|
|
||
|
extern inline void
|
||
|
cop_optional_reset (void)
|
||
|
{
|
||
|
#if defined(M6811_USE_COP) && M6811_USE_COP == 1
|
||
|
cop_reset ();
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
/* Acknowledge the timer interrupt. */
|
||
|
extern inline void
|
||
|
timer_acknowledge (void)
|
||
|
{
|
||
|
CRGFLG = RTIF;
|
||
|
}
|
||
|
|
||
|
/* Initialize the timer. */
|
||
|
extern inline void
|
||
|
timer_initialize_rate (unsigned char divisor)
|
||
|
{
|
||
|
RTICTL = divisor;
|
||
|
}
|
||
|
|
||
|
#endif /* _M68HC11_PORTS_H */
|
||
|
|