Changeset c6fb8e90 in rtems for c/src/lib/libbsp/m68k/mvme162/timer
- Timestamp:
- 08/01/95 15:33:39 (28 years ago)
- Branches:
- 4.10, 4.11, 4.8, 4.9, 5, master
- Children:
- 4f90134
- Parents:
- 4a6e64d
- 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 32 32 */ 33 33 34 35 34 #include <rtems.h> 36 35 #include <bsp.h> 37 36 38 37 /* Periodic tick interval */ 39 #define TICK_INTERVAL 0x1000040 #define TIMER_INT_LEVEL 38 #define TICK_INTERVAL 0x10000U 39 #define TIMER_INT_LEVEL 6 41 40 42 intTtimer_val;43 rtems_boolean Timer_driver_Find_average_overhead;41 rtems_unsigned32 Ttimer_val; 42 rtems_boolean Timer_driver_Find_average_overhead; 44 43 45 44 rtems_isr timerisr(); … … 47 46 void Timer_initialize() 48 47 { 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 */ 53 53 lcsr->to_ctl = 0xE7; /* prescaler to 1 MHz (see Appendix A1) */ 54 54 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 */ 57 58 58 lcsr->intr_level[0] |= TIMER_INT_LEVEL; 59 lcsr->intr_ena |= 0x01000000; 59 lcsr->intr_level[0] |= TIMER_INT_LEVEL; /* set int level */ 60 lcsr->intr_ena |= 0x01000000; /* enable tick timer 1 interrupt */ 60 61 } 61 62 62 #define AVG_OVERHEAD 6/* It typically takes 3.0 microseconds */63 /* (6countdowns) 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 10U /* Don't trust a value lower than this */ 65 66 66 int Read_timer() 67 int Read_timer() 67 68 { 68 unsigned longtotal;69 rtems_unsigned32 total; 69 70 70 71 total = (Ttimer_val * TICK_INTERVAL) + lcsr->timer_cnt_1; … … 76 77 return 0; /* below timer resolution */ 77 78 78 return (total-AVG_OVERHEAD) ; /* in musec units */79 return (total-AVG_OVERHEAD) >> 1; 79 80 } 81 80 82 81 83 rtems_status_code Empty_function( void ) -
c/src/lib/libbsp/m68k/mvme162/timer/timerisr.s
r4a6e64d rc6fb8e90 34 34 .set RELOAD, 0x01000000 | clear tick 1 interrupt 35 35 36 PUBLIC (Ttimer_val) 36 37 PUBLIC (timerisr) 37 38 SYM (timerisr):
Note: See TracChangeset
for help on using the changeset viewer.