OpenCores
URL https://opencores.org/ocsvn/openmsp430/openmsp430/trunk

Subversion Repositories openmsp430

[/] [openmsp430/] [trunk/] [core/] [sim/] [rtl_sim/] [src/] [tA_clkmux.s43] - Rev 111

Go to most recent revision | Compare with Previous | Blame | View Log

/*===========================================================================*/
/* Copyright (C) 2001 Authors                                                */
/*                                                                           */
/* This source file may be used and distributed without restriction provided */
/* that this copyright statement is not removed from the file and that any   */
/* derivative work contains the original copyright notice and the associated */
/* disclaimer.                                                               */
/*                                                                           */
/* This source file is free software; you can redistribute it and/or modify  */
/* it under the terms of the GNU Lesser General Public License as published  */
/* by the Free Software Foundation; either version 2.1 of the License, or    */
/* (at your option) any later version.                                       */
/*                                                                           */
/* This source is distributed in the hope that it will be useful, but WITHOUT*/
/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     */
/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public       */
/* License for more details.                                                 */
/*                                                                           */
/* You should have received a copy of the GNU Lesser General Public License  */
/* along with this source; if not, write to the Free Software Foundation,    */
/* Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA        */
/*                                                                           */
/*===========================================================================*/
/*                                  TIMER A                                  */
/*---------------------------------------------------------------------------*/
/* Test the timer A:                                                         */
/*                        - Check the timer clock input mux.                 */
/*                                                                           */
/* Author(s):                                                                */
/*             - Olivier Girard,    olgirard@gmail.com                       */
/*                                                                           */
/*---------------------------------------------------------------------------*/
/* $Rev: 111 $                                                                */
/* $LastChangedBy: olivier.girard $                                          */
/* $LastChangedDate: 2011-05-20 22:39:02 +0200 (Fri, 20 May 2011) $          */
/*===========================================================================*/

.global main

.set   DMEM_BASE, (__data_start     )
.set   DMEM_200,  (__data_start+0x00)
.set   DMEM_202,  (__data_start+0x02)
.set   DMEM_204,  (__data_start+0x04)
.set   DMEM_206,  (__data_start+0x06)
.set   DMEM_250,  (__data_start+0x50)

.set   BCSCTL1, 0x0057
.set   BCSCTL2, 0x0058

.set   TACTL,   0x0160
.set   TAR,     0x0170
.set   TACCTL0, 0x0162
.set   TACCR0,  0x0172
.set   TACCTL1, 0x0164
.set   TACCR1,  0x0174
.set   TACCTL2, 0x0166
.set   TACCR2,  0x0176
.set   TAIV,    0x012E


WAIT_FUNC:
        dec r14
        jnz WAIT_FUNC
        ret
        
main:
        mov  #DMEM_250, r1      ; # Initialize stack pointer
        mov  #0x0000, &DMEM_200
        mov  #0x0000, r15

        mov.b  #0x00, &BCSCTL1  ; # ACLK /1
        mov.b  #0x06, &BCSCTL2  ; # SMCLK = MCLK/8

        
       /* --------------   TIMER A TEST:  INPUT MUX - TACLK  ----------------- */

        mov  #0x0000, &TACTL
        mov  #0x0000, &TACCTL0
        dint

        mov  #0x0000, &TACTL
        mov  #0x0000, &TACCTL0
        mov  #0x0000, &TAR
        mov  #0x0062, &TACTL    ; # Continuous mode, /2
        mov  #0x0001, r15
        mov  #0x0100, r14
        call #WAIT_FUNC

        dint            
        mov  #0x0000, &DMEM_200
        mov  #0x1000, r15


       /* --------------   TIMER A TEST:  INPUT MUX - ACLK  ----------------- */

        mov  #0x0000, &TACTL
        mov  #0x0000, &TACCTL0
        dint

        mov  #0x0000, &TACTL
        mov  #0x0000, &TACCTL0
        mov  #0x0000, &TAR
        mov  #0x0162, &TACTL    ; # Continuous mode, /2
        mov  #0x1001, r15
        mov  #0x0100, r14
        call #WAIT_FUNC

        dint            
        mov  #0x0000, &DMEM_200
        mov  #0x2000, r15


       /* --------------   TIMER A TEST:  INPUT MUX - SMCLK  ----------------- */

        mov  #0x0000, &TACTL
        mov  #0x0000, &TACCTL0
        dint

        mov  #0x0000, &TACTL
        mov  #0x0000, &TACCTL0
        mov  #0x0000, &TAR
        mov  #0x0262, &TACTL    ; # Continuous mode, /2
        mov  #0x2001, r15
        mov  #0x0100, r14
        call #WAIT_FUNC

        dint            
        mov  #0x0000, &DMEM_200
        mov  #0x3000, r15

        
       /* --------------   TIMER A TEST:  INPUT MUX - INCLK  ----------------- */

        mov  #0x0000, &TACTL
        mov  #0x0000, &TACCTL0
        dint

        mov  #0x0000, &TACTL
        mov  #0x0000, &TACCTL0
        mov  #0x0000, &TAR
        mov  #0x0362, &TACTL    ; # Continuous mode, /2
        mov  #0x3001, r15
        mov  #0x0100, r14
        call #WAIT_FUNC

        dint            
        mov  #0x0000, &DMEM_200
        mov  #0x4000, r15

                
        /* ----------------------         END OF TEST        --------------- */
end_of_test:
        nop
        br #0xffff


        /* ----------------------      INTERRUPT ROUTINES    --------------- */

TIMERA_CCR0_VECTOR:
        inc  &DMEM_200
        reti

        
TIMERA_TAIV_VECTOR:
        mov     &TAR, &DMEM_204
        mov    &TAIV, &DMEM_206
        reti


        /* ----------------------         INTERRUPT VECTORS  --------------- */

.section .vectors, "a"
.word end_of_test        ; Interrupt  0 (lowest priority)    <unused>
.word end_of_test        ; Interrupt  1                      <unused>
.word end_of_test        ; Interrupt  2                      <unused>
.word end_of_test        ; Interrupt  3                      <unused>
.word end_of_test        ; Interrupt  4                      <unused>
.word end_of_test        ; Interrupt  5                      <unused>
.word end_of_test        ; Interrupt  6                      <unused>
.word end_of_test        ; Interrupt  7                      <unused>
.word TIMERA_TAIV_VECTOR ; Interrupt  8                      <unused>
.word TIMERA_CCR0_VECTOR ; Interrupt  9                      <unused>
.word end_of_test        ; Interrupt 10                      Watchdog timer
.word end_of_test        ; Interrupt 11                      <unused>
.word end_of_test        ; Interrupt 12                      <unused>
.word end_of_test        ; Interrupt 13                      <unused>
.word end_of_test        ; Interrupt 14                      NMI
.word main               ; Interrupt 15 (highest priority)   RESET

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.