Changes

Jump to navigation Jump to search
1,158 bytes added ,  18:55, 20 May 2018
m
no edit summary
Line 105: Line 105:  
| 7
 
| 7
 
| Start/busy      (0=Ready, 1=Start/busy)
 
| Start/busy      (0=Ready, 1=Start/busy)
 +
|}
 +
 +
== I2C_CNTEX ==
 +
{| class="wikitable" border="1"
 +
!  BIT
 +
!  DESCRIPTION
 +
|-
 +
| 0-1
 +
| ? Set to 2 normally.
 +
|}
 +
 +
== I2C_SCL ==
 +
{| class="wikitable" border="1"
 +
!  BIT
 +
!  DESCRIPTION
 +
|-
 +
| 0-5
 +
| ?
 +
|-
 +
| 8-12
 +
| ? Set to 5 normally.
 
|}
 
|}
   Line 337: Line 358:  
| rw
 
| rw
 
| Interrupt mask for register 0x10 (0=enabled,1=disabled)
 
| Interrupt mask for register 0x10 (0=enabled,1=disabled)
   bit00: Power button press
+
   bit00: Power button press (for 27 "ticks")
   bit01: Power button held (the 3DS turns off regardless after a fixed time)
+
   bit01: Power button held (for 375 "ticks"; the 3DS turns off regardless after a fixed time)
   bit02: HOME button press
+
   bit02: HOME button press (for 5 "ticks")
 
   bit03: HOME button release
 
   bit03: HOME button release
 
   bit04: WiFi switch button
 
   bit04: WiFi switch button
 
   bit05: Shell close
 
   bit05: Shell close
 
   bit06: Shell open
 
   bit06: Shell open
   bit07: Fatal hardware condition([[Services#Notifications|?]])
+
   bit07: Fatal hardware condition([[Services#Notifications|?]]) (sent when the MCU gets reset by the Watchdog timer)
 
   bit08: Charger removed
 
   bit08: Charger removed
 
   bit09: Charger plugged in
 
   bit09: Charger plugged in
   bit10: ??? (Power Management related?)
+
   bit10: RTC alarm (when some conditions are met it's sent when the current day and month and year matches the current RTC time)
   bit11: ??? (HID related)
+
   bit11: ??? (accelerometer related)
 
   bit12: HID update
 
   bit12: HID update
 
   bit13: Battery dead(?)
 
   bit13: Battery dead(?)
   bit14: ??? (Power Management related?)
+
   bit14: Battery stop charging(?) (independent of charger state)
   bit15: ??? (Power Management related?)
+
  bit15: Battery start charging(?)
 +
Nonmaskable(?) interrupts
 +
  bit16: ???
 +
   bit17: ??? (opposite even for bit16)
 
   bit22: Volume slider position change
 
   bit22: Volume slider position change
   bit24: ??? (???)
+
   bit23: ??? Register 0x0E update
   bit25: ??? (???)
+
  bit24: ??? (the off event for below bit)
 +
   bit25: ??? (triggered when something related to the GPU is turned on)
 
   bit26: ??? (???)
 
   bit26: ??? (???)
 
   bit27: ??? (???)
 
   bit27: ??? (???)
 
   bit28: ??? (???)
 
   bit28: ??? (???)
   bit29: ??? (???)
+
   bit29: Battery percentage status change (triggered at 10%, 5%, and 0% while discharging)
   bit30: forced off by mcu sysmodule
+
   bit30: bit set by mcu sysmodule
   bit31: forced off by mcu sysmodule
+
   bit31: bit set by mcu sysmodule
 
|-
 
|-
 
| 0x1C
 
| 0x1C
Line 471: Line 496:  
| 0x30
 
| 0x30
 
- 0x37
 
- 0x37
| s
+
| ds
 
| rw
 
| rw
 
| RTC time (system clock). 7 bytes are read from this. The upper nibble of each byte encodes 10s (BCD), so each byte is post-processed with (byte & 0xF) + (10 * (byte >> 4)).
 
| RTC time (system clock). 7 bytes are read from this. The upper nibble of each byte encodes 10s (BCD), so each byte is post-processed with (byte & 0xF) + (10 * (byte >> 4)).
Line 484: Line 509:  
|-
 
|-
 
| 0x38
 
| 0x38
- 0x3A
+
- 0x3C
 
| s
 
| s
 
| rw
 
| rw
 
| RTC alarm registers
 
| RTC alarm registers
   byte 0: minutes
+
   byte 0: minutes(???)
   byte 1: hours
+
   byte 1: hours(???)
   byte 2: week
+
   byte 2: day
 +
  byte 3: month
 +
  byte 4: year
 
|-
 
|-
 
| 0x3B
 
| 0x3B
 
| s
 
| s
 
| rw
 
| rw
| Register 0x3B could be used to upload [[MCU_Services#MCU_firmware_versions|MCU firmware]] if some conditions are met.
+
| Could be used on very old MCU_FIRM versions to upload [[MCU_Services#MCU_firmware_versions|MCU firmware]] if some conditions are met.
|-
  −
| 0x3C
  −
| s
  −
| ro
  −
| ???
   
|-
 
|-
 
| 0x3D
 
| 0x3D
 
0x3E
 
0x3E
| s
+
| ds
 
| ro
 
| ro
 
| RTC tick counter / "ITMC" (when resets to 0 the seconds increase)
 
| RTC tick counter / "ITMC" (when resets to 0 the seconds increase)
Line 619: Line 641:  
| 0x5A
 
| 0x5A
 
| s
 
| s
| rw
+
| ro/rw
| ?
+
| Invalid, do not use! On newer MCU_FIRM versions this is unused, but on older MCU_FIRM versions this is a read-only counter.
 
|-
 
|-
 
| 0x5B
 
| 0x5B
Line 648: Line 670:  
|-
 
|-
 
| 0x7F
 
| 0x7F
| d(0x13)
+
| d(9-0x13)
 
| ro
 
| ro
 
| Various system state information.
 
| Various system state information.
Line 666: Line 688:  
      
 
      
 
     this byte is reset to 0 before an svcBreak takes effect
 
     this byte is reset to 0 before an svcBreak takes effect
 +
 +
On MCU_FIRM major version 1 the size of this is 9, reading past the 9th byte will yield AA instead of FF.
 
|-
 
|-
 
| 0x80
 
| 0x80
Line 679: Line 703:     
Non-shared (dynamic) register: it's a register whose contents separate from the shared register pool. Messing with these registers will not affect the shared register pool at all.
 
Non-shared (dynamic) register: it's a register whose contents separate from the shared register pool. Messing with these registers will not affect the shared register pool at all.
 +
 +
On old versions of MCU_FIRM none of the invalid registers are masked away by the read handler function, but are still read-only. Newer MCU_FIRM versions return the hardcoded value FF instead.
    
== Device 5 & 6 ==
 
== Device 5 & 6 ==
136

edits

Navigation menu