aboutsummaryrefslogtreecommitdiff
path: root/tcl/chip/atmel/at91/rtt.tcl
blob: 2dd74fab92ce6b28256b6609b262f8e3e2c4e4b0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

set RTTC_RTMR [expr $AT91C_BASE_RTTC + 0x00]
set RTTC_RTAR [expr $AT91C_BASE_RTTC + 0x04]
set RTTC_RTVR [expr $AT91C_BASE_RTTC + 0x08]
set RTTC_RTSR [expr $AT91C_BASE_RTTC + 0x0c]
global RTTC_RTMR
global RTTC_RTAR
global RTTC_RTVR
global RTTC_RTSR

proc show_RTTC_RTMR_helper { NAME ADDR VAL } {
    set rtpres [expr $VAL & 0x0ffff]
    global BIT16 BIT17
    if { $rtpres == 0 } {
	set rtpres 65536;
    }
    global AT91C_SLOWOSC_FREQ
    # Nasty hack, make this a float by tacking a .0 on the end
    # otherwise, jim makes the value an integer
    set f [expr $AT91C_SLOWOSC_FREQ.0 / $rtpres.0]
    echo [format "\tPrescale value: 0x%04x (%5d) => %f Hz" $rtpres $rtpres $f]
    if { $VAL & $BIT16 } {
	echo "\tBit16 -> Alarm IRQ Enabled"
    } else {
	echo "\tBit16 -> Alarm IRQ Disabled"
    }
    if { $VAL & $BIT17 } {
	echo "\tBit17 -> RTC Inc IRQ Enabled"
    } else {
	echo "\tBit17 -> RTC Inc IRQ Disabled"
    }
    # Bit 18 is write only.
}

proc show_RTTC_RTSR_helper { NAME ADDR VAL } {
    global BIT0 BIT1
    if { $VAL & $BIT0 } {
	echo "\tBit0 -> ALARM PENDING"
    } else {
	echo "\tBit0 -> alarm not pending"
    }
    if { $VAL & $BIT1 } {
	echo "\tBit0 -> RTINC PENDING"
    } else {
	echo "\tBit0 -> rtinc not pending"
    }
}

proc show_RTTC { } {

    show_mmr32_reg RTTC_RTMR
    show_mmr32_reg RTTC_RTAR
    show_mmr32_reg RTTC_RTVR
    show_mmr32_reg RTTC_RTSR
}