From 517817b9c7f00b180385c6bdf5310234185e5b98 Mon Sep 17 00:00:00 2001 From: tmk Date: Thu, 15 Jan 2015 17:02:38 +0900 Subject: rn42: Update doc --- keyboard/hhkb_rn42/MEMO.txt | 248 -------------------------------------------- 1 file changed, 248 deletions(-) delete mode 100644 keyboard/hhkb_rn42/MEMO.txt (limited to 'keyboard/hhkb_rn42/MEMO.txt') diff --git a/keyboard/hhkb_rn42/MEMO.txt b/keyboard/hhkb_rn42/MEMO.txt deleted file mode 100644 index f2aaa7c046..0000000000 --- a/keyboard/hhkb_rn42/MEMO.txt +++ /dev/null @@ -1,248 +0,0 @@ -Roving RN-42 -============ - -Bug: -- with Nexus5 keyboard and mouse are very laggy. - -- lose USB connection during power-down mode - DONE - - USB initialize code in main() causes this - WRONG - - Do not power-down during USB connection is active - DONE 11/11 - (USB_DeviceState == USB_DEVICE_Configured) is used to check USB connection - matrix_power_down() matrix.c - 11/23 - -- When given power only from wall wart adapter - - it sleeps. it should not sleep - - Configured state without USB connection? - -- timer is slow while power down - DONE 11/26 - - time out interrupt is lost while power down? - - interrupt of watchdog timer compensates timer counter(avr/suspend.c) - -- USB plug-in fails while BT - - it ends in suspend state - - maybe, not responsive to host enumeration process due to power-down. - - matrix_power_down() only when state is unattached - 11/26 - - need to observe a while -- repeated CHARGING/FULL_CHARGED - - In LTC sharp pulses are observed. - - MCP has no pulse but still has a problem. - - needs more wait before read pin state? - NO -- wrongly suspended when powered from adapter without USB connection - DONE - - suspend event may occur when plug into adapter - - and never wake until conected to real USB line - - without debug print via USB no problem; CSW(wake just after suspend as real USB line) - - seems like USB print causes this problem after suspended - -- Factory Reset PIO4 doesn't work - - the reason is unclear - 12/08 NOT LOOK INTO ANY MORE - - WORKAROUND: use serial pins(3.3V, GND, RX and TX) - - SF,1 and R,1 to set factory defalult - - -Todo: -- LED cover and switch knob and new Slide Switch -- RN42 auto configuration - - configure the module as HID device every time powering up - - this'll reduce work load of assembly - -- move rn42 to protocol directory when it becomes reusable stack - -- sendchar() in lufa.c no buffer - - no buffering. character lost can be caused. -- LUFA sendchar should be buffered and serial_uart.c buffur size is too large(256). - -- switch BT host connections -- BT operations - - disconnect - - new connection - - switch next connection - - remove connection - -- sendchar() in lufa.c block loop - DONE 11/29 - - block loop when powered with AC adapter - - FrameNumber is not updated when adapter powered - -Improving: -- ADC resolution - AVR120 - AVR32138 - - Enhancing ADC resolution by oversampling - AVR121 http://www.atmel.com/images/doc8003.pdf - - disable digital input buffer DIDR(7.8.6) - -Design: -- suspend.h - DONE 11/26 - - remove argument from suspend_power_down() for backward compatitibility -- remove MCU dependent power saving code from core/keyboard - DONE 11/23 - - it should be located in project matrix.c -- HHKB matrix.c needs matrix_prev? - - is_modified() is obsolete now. really needs? -- ADC: removing AREF capacitor C10 - - seems to be better while usb powered - - still bad while battery powered - http://electronics.stackexchange.com/questions/105849/avcc-and-capacitor-using-adc -- ADC: smaller resistors for voltage dividor - - 1K + 1K: not improved. - 11/27 - - -LUFA: -USB connection check: state of USB deivce -- USB_DeviceState: - USB_Deivce_State_t { Unattached, Powered, Default, Addressed, Configured*, Suspended* } - Unattached: unpluged - Powered: pluged with power adapter - Default: enumerate process bigin - Addressed: addressed - Configured: enumerated - Suspended: suspended - -- USB_IsInitialized: state of LUFA core setup - becomes true in USB_Init() USBController_AVR8.c - becomes false in USB_Disable() USBController_AVR8.c -- USB_VBUS_GetStatus(): state of VBUS(power/connection) -- USB_Disable() detaches, disables all interrupts, controller, PLL, regulater. - -- When connect to power adapter - - event happened: CW or CSW or C or DDC - - USB state: not configured - -- USB evnets - - USB connect: CSWRWRW - - USB connect but fail to enumeration: CWRWRWRWS - - USB disconnect: D - - Power adapter connect: CW, CSW, C - - Power adapter disconnect: D - - -Power saving: -- Pro2 current consumption - - active: 138.2mA(no device on Hub) - - suspended: 30.9mA(WakeUp enabled DIPSW6) - - suspended: 0mA->46.0mA(WakeUp disabled DIPSW6) -- Pro current consumption - - active: 54.0mA - - suspended: 40.5mA(WakeUp enabled DIPSW6) - - suspended: 0.3mA(WakeUp disabled DIPSW6) - -- RN42 3.3V - - disconnected(Idle): 5mA (config mode) - - connected(Active): - SW,0000: 23-26mA - SW,0010: 27-29mA worse than 0000 for unknown reason - SW,0020: 17-19mA mouse NG - SW,0030: 13-16mA laggy mouse NG - SW,0050: 10-13mA laggy mouse NG - -- matrix power saving - - power saving while externally powered and not while unpluged -- confirm suspend mode lufa.c: matrix_power_*, suspend_wakeup_condition -- 8MHz clock -- When not connected in a few minutes get into deep sleep to save battery life -- CTS is needed for waking up from deep sleep? How deep sleep is activated? -- firmware controlled 3.3V DC converter to switch on/off BT module -- sleep MCU and BT module(keyboard is not used) -- deep sleep MCU and BT module(keyboard is not used for long time) -- deep sleep MCU and turn off BT module(keyboard is not used and not connected) -- Battery ADC; switching, high resistance - - switching gnd end of divider with PF4 - - high resistor 100K/1M? - capacitor 10nF - http://www.eevblog.com/forum/beginners/measuring-battery-voltage-without-consuming-current/ -- During USB suspend change clock source to internal RC from external Xtal(6.8) -- FRZCLK: you can freeze clock for power saving. still WAKEUPI and VBUSTI interrupts are available while freezing.(21.7.3) -- Suspend: Clear Suspend Bit, Freeze clock, disable PLL, MCU sleep(21.13) -- Voltage reference(8.1.1) - - to reduce power consumption while power down mode -- unset ADEN before sleep(24.7) - - - - - - - -Lipo ----- -850mA lasts around 9 hours(07/28) - -Sparkfun Polymer Lithium Ion Battery 850mAh: -https://www.sparkfun.com/products/341 -Lipo Cell spec: -https://www.sparkfun.com/datasheets/Batteries/063048%20Li-polymer.pdf -Protection spec: -http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Prototyping/BatteryProtection.pdf - min typical max - over-charge 4.255 4.280 4.305 - over-charge discover? 4.030 4.080 4.130 - over-discharge 2.827 2.900 2.973 - over-discharge discover 3.022 3.100 3.178 - -ADC voltage monitor: voltage divider 10K+10K(0.5) - ADC=V*0.5/2.56*1024 - - V ADC - ------------------ - 4.20 0x347(839) - 3.10 0x26b(619) - - - - -TROUBLE SHOOT -------------- -07/16 After fix of voltage dividor on GPIO6, had a trouble that it could not send a char to BT module, though could receive. - Found R8 had wrong 1K resistor and changed to 10K, after that it can send to the module again. Not sure how it had sent with the wrong 1K before. - -07/18 On Linux, had an USB related trouble; keyobard or console didn't work for some reason. Changing PID cured this problem. Very annoying, took very long time before resolved it. - -12/07 rn42_rts() read 1 every time. R12 broke in open mode(no coductive), idk why, too much heat with soldering? and PF1 pin was not soldered. - It resolved with resoldering PF1 and new resistor on R12. - - - - -Done: -- low battery alert(solid light) 09/04 -- *** Rev.E BT test *** - DONE - - with MCP73832, new Schottky, tantalum caps - DONE 12/07 - * MCP73832 doesn't leak from Vcc pin when unpluged and battery powered - 34mV vs 2.07V(MCP73831) at Vcc pin - MCP73832 doesn't need revese protection diode D5 - * PMEG2010ER is very low VF while reverse current/voltage is high - VF=0.96 vs 1.98(RB160M-30TR)with Fluke 175 - Anode of D11 is 680mV vs 20mV(RB160M-30TR) - 780mV is still low < 1.4V VBUS plugin detection(21.11) - this doesn't cause false VBUS detect - and 780mV on MCP73832 Vcc pin is also no problem. - D5 can be removed. - - ADC divider switching - DONE 12/07 - * Drain and Source of Q4 Pch was reversed wrongly on Rev.E. - - - reverse current from Lipo charger - DONE 12/07 - * MCP73832 has no recverse current from Vcc pin unlike MCP73831 - - -- Rev.F design - DONE - - current measure point - DONE 12/08 - - change value of cap 68->47 - DONE 12/08 - - PPTC land pattern: no solder jumper, use 0Ohm resistor instead - CANCEL 12/08 - - Q4 Pch FET: wrong Drain and Source - DONE 12/08 - - D5 can be removed. - DONE 12/08 - - - -- BT_INDICATOR LED turns on wrongly when touching line or pin. -- pull-up enabled on PF6/GPIO2 08/30 -- Lipo charger configuration: fast charge time: USB charger spec? -- used 2kohm -- use LED of charger to alarm low battery. LED should be powered directly from Lipo? - cancel; powered from VUSB -- Use RTS in serial_uart.c to resolve missing chars from help message of RN-42 - done -- CTS/RTS lines are needed? just connect in loop back if no flow control is needed. - done -- add IO pin to charger status CHRG; LED control(low) and detect charge status(input HiZ) 07.24 -- LINKED: add trace on PIO2 to PF6 07.24 -- Lipo voltage ADC sensing -- Lipo charger MCP73831: needs capacitor 4.7uF *2 -- USB connection check - 07.01 -- BT on/off check: whether RX line is pulled up? - checking RTS 07.01 -- USB/BT switching BT is on -> BT, BT is off -> USB - 07.01 -- Under voltage lock out UVLO for protection of Lipo - Lipo has discharge protection at 3.100V 07.01 -- Power saving: HHKB scan, BT radio control - 9h with 850mAh, this is enough 07.01 -- Power selector doesn't work; Q4 MOSFET leaks from Lipo to USB power line. -- use Schottky instead 07/04 -- cgit v1.2.3