next up previous contents
Next: 9.2.4 table.asm Up: 9.2 Master Previous: 9.2.2 equates.asm

9.2.3 init.asm

******************************************************************************************************
* Studienarbeit      Christopher Odenbach                                                            *
*                                                                                                    *
* WS98/99                                                                                            *
*                                                                                                    *
* mit Dank an Willi                                                                                  *
******************************************************************************************************

******************************************************************************************************
*   MOTOROLA  MC68HC705X32                                                                           *
*                                                                                                    *
*    Initialising subroutine                                                                         *
*                                                                                                    *
*                                                                                                    *
*                                                                                                    *
*                                                                                                    *
*                                                                                                    *
******************************************************************************************************


******************************************************************************************************

INIT                    EQU     *
                        RSP                             ;reset stack pointer
                        JSR     INIT_PROCESSOR
                        JSR     INIT_CAN_IDENT
                        JSR     INIT_MCAN_IF
                        JSR     INIT_SCI_IF
                        JSR     INIT_VARIABLES

WAITLOOP                wait
                        BRA     WAITLOOP


******************************************************************************************************
* Initializing Processor
******************************************************************************************************
INIT_PROCESSOR  EQU     *

                        RTS



******************************************************************************************************
* Initializing CAN identifiers
******************************************************************************************************

INIT_CAN_IDENT          EQU     *

                        LDA     #$00
                        STA     MASTER                  ;Master identifier      000 00000

                        LSLA                            ;shift 3 bits left
                        LSLA
                        LSLA
                        AND     #$E0
                        STA     SENDER_ID_1             ;left 3 bits of ID      (SENDER_ID_1 = xxx00000)

                        LDA     MASTER
                        AND     #$03
                        LSLA                            ;shift 6 bits left
                        LSLA
                        LSLA
                        LSLA
                        LSLA
                        LSLA
                        STA     SENDER_ID_2             ;right 2 bits of ID     (SENDER_ID_2 = xx000000)

                        CLRA
                        STA     SCI                     ;SCI identifier         $00

                        LDA     #$20
                        STA     K_BUS                   ;K_BUS identifier       $20

                        RTS



******************************************************************************************************
* Initializing the MCAN interface
******************************************************************************************************
INIT_MCAN_IF            EQU     *
                        LDA     #$01                    ; set RR Bit to access other registers
                        STA     CCNTRL

                        LDA     MASTER                  ;acceptance code = Master's ID (irrelevant)
                        STA     CACC

                        LDA     #$FF                    ;no bits should be compared
                        STA     CACM

                        LDA     #$01                    ;SJW=1xTscl, P=2 ==> Tscl = 2*P/f_osc = 1 īs @ 4MHz
                        STA     CBT0

                        LDA     #$B4                    ;Tseg1=5, Tseg2=4, three samples per bit
                        STA     CBT1                    ;==> Tbit=10 īs => 100 KBit/s

                        LDA     #$DF                    ;TX1 Push-pull, TX0 Push-pull inv., CAN mode 2
                        STA     COCNTRL

                        LDA     #$22                    ; clear RR bit => MCAN will operate normally
                        STA     CCNTRL

                        LDA     #$84                    ;RX0 passive, release receive buffer
                        STA     CCOM

                        RTS



******************************************************************************************************
* Initializing the SCI interface
******************************************************************************************************
INIT_SCI_IF             EQU     *
                        LDA     #$02
                        STA     SCCR1

                        LDA     #$2E                    ;receiver int., transm., receiver, rec. wake up enable
                        STA     SCCR2

                        LDA     #$C0
                        STA     BAUD                    ; NP=13, NT=1, NR=1 => 9.6 KBaud @ 4 MHz, Fosc/2

                        LDA     #$10                    ; default: Khepera with ID=10000 has SCI access via IR
                        STA     SCI_ID

                        RTS



******************************************************************************************************
* Initializing variables
******************************************************************************************************
INIT_VARIABLES          EQU     *
                        CLRA
                        STA     RAM
                        STA     BC_IN
                        LDX     #$08                    ;clear the RAM transmit buffer
NXTBYTE                 CLRA
                        STA     SCI_TX_RAM-1,X
                        DECX
                        BNE     NXTBYTE

                        LDA     #01
                        STA     RX_RAM_ACC              ;set the receive RAM buffer access

                        CLRA
                        STA     RAM_SIZE
                        STA     CNT3
                        STA     ROBNR

                        LDA     PORT_C
                        AND     #$1F
                        STA     MODE

                        CMP     #$01
                        BEQ     SAY_HELLO
                        BRA     RETURN
SAY_HELLO               JSR     PRINT_RESET
RETURN                  RTS


******************************************************************************************************



Christopher Odenbach
1999-06-01