/* 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 */