Ignore:
Timestamp:
08/01/95 15:33:39 (28 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, 5, master
Children:
4f90134
Parents:
4a6e64d
Message:

updated mvme162 code from Misha (mms@…)

Location:
c/src/lib/libbsp/m68k/mvme162/timer
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • c/src/lib/libbsp/m68k/mvme162/timer/timer.c

    r4a6e64d rc6fb8e90  
    3232 */
    3333
    34 
    3534#include <rtems.h>
    3635#include <bsp.h>
    3736
    3837/* Periodic tick interval */
    39 #define TICK_INTERVAL                                   0x10000
    40 #define TIMER_INT_LEVEL                         6
     38#define TICK_INTERVAL         0x10000U
     39#define TIMER_INT_LEVEL       6
    4140
    42 int Ttimer_val;
    43 rtems_boolean Timer_driver_Find_average_overhead;
     41rtems_unsigned32    Ttimer_val;
     42rtems_boolean       Timer_driver_Find_average_overhead;
    4443
    4544rtems_isr timerisr();
     
    4746void Timer_initialize()
    4847{
    49   (void) set_vector( timerisr, (VECTOR_BASE >> 28) * 0x10 + 0x8, 0 );
    50 
    51   Ttimer_val = 0;                                    /* clear timer ISR count */
    52   lcsr->vector_base = 0x67800000;                /* set vb, enable interrupts */
     48  (void) set_vector( timerisr, VBR0 * 0x10 + 0x8, 0 );
     49 
     50  Ttimer_val = 0;                     /* clear timer ISR count */
     51  lcsr->vector_base |= MASK_INT;      /* unmask VMEchip2 interrupts */
     52  lcsr->intr_clear |= 0x01000000;     /* clear pending interrupt */
    5353  lcsr->to_ctl = 0xE7;                /* prescaler to 1 MHz (see Appendix A1) */
    5454  lcsr->timer_cmp_1 = TICK_INTERVAL;
    55   lcsr->timer_cnt_1 = 0;                                     /* clear counter */
    56   lcsr->board_ctl |= 7;        /* increment, reset-on-compare, clear-ovfl-cnt */
     55  lcsr->timer_cnt_1 = 0;              /* clear counter */
     56  lcsr->board_ctl |= 7;               /* increment, reset-on-compare, */
     57                                      /*   and clear-overflow-cnt */
    5758
    58   lcsr->intr_level[0] |= TIMER_INT_LEVEL;                    /* set int level */
    59   lcsr->intr_ena |= 0x01000000;              /* enable tick timer 1 interrupt */
     59  lcsr->intr_level[0] |= TIMER_INT_LEVEL; /* set int level */
     60  lcsr->intr_ena |= 0x01000000;           /* enable tick timer 1 interrupt */
    6061}
    6162
    62 #define AVG_OVERHEAD      6  /* It typically takes 3.0 microseconds */
    63                              /* (6 countdowns) to start/stop the timer. */
    64 #define LEAST_VALID       10 /* Don't trust a value lower than this */
     63#define AVG_OVERHEAD      3U    /* It typically takes 3.0 microseconds */
     64                                /* (3 countdowns) to start/stop the timer. */
     65#define LEAST_VALID       10 /* Don't trust a value lower than this */
    6566
    66 int Read_timer()
     67int Read_timer() 
    6768{
    68   unsigned long                 total;
     69  rtems_unsigned32    total;
    6970
    7071  total = (Ttimer_val * TICK_INTERVAL) + lcsr->timer_cnt_1;
     
    7677    return 0;            /* below timer resolution */
    7778
    78   return (total-AVG_OVERHEAD);                  /* in musec units */
     79  return (total-AVG_OVERHEAD) >> 1;
    7980}
     81
    8082
    8183rtems_status_code Empty_function( void )
  • c/src/lib/libbsp/m68k/mvme162/timer/timerisr.s

    r4a6e64d rc6fb8e90  
    3434.set RELOAD,              0x01000000      | clear tick 1 interrupt
    3535
     36        PUBLIC (Ttimer_val)
    3637        PUBLIC (timerisr)
    3738SYM (timerisr):
Note: See TracChangeset for help on using the changeset viewer.