Commit Graph

4 Commits

Author SHA1 Message Date
Paul Molloy 0dd8828744 Long over due commit...
-Updated STM devices to always run @ 48MHz
 Doesn't seem to cause any problems with SNES flashing couple thousand SF2
 boards have been flashed with this build without issues
-Added note to usb_operations.c as manf/prod ID can't be read if drivers
 aren't installed.  Caused issues for Todd as he hadn't installed drivers
 for new hardware.
-STM swim operations are working pretty well for SNES v2 and v3 boards
 Haven't even touched SWIM on AVR core yet...
 SWIM is pretty pin independent but only implemented on EXP0 so far
 Reads "ROTF" aren't bullet proof but they're pretty good.  Biggest
 room for improvement aside from adding a legit pullup would be to have
 an interrupt trigger the device header bit falling edge instead of the
 current polling method which has decent amount of jitter.
 Implementing interrupts would also probably allow for more easily
 supporing reads longer than a single byte...
2017-10-22 17:09:21 -05:00
Paul Molloy 49b4639aa4 Have basic Low Speed SWIM read on the fly working.
Only reads one byte, but good enough.. to get things done.

Code should actually work for low and high speed, but have only tested
high speed on writes so far.

Having issue where reads can fail at times.  Esp with long strings of
'0'..  Perhaps operating at high speed would improve matters..
Although I'm also realizing maybe I'm not waiting for the device to reset
and reload HSI trim factory value, need to check that..

The new assembly file/function does everything needed so can start cutting
out inline assembly from swim_out function.

Swim code needs to run at 48Mhz.  Realizing this is pretty vital to having
enough time to handle high speed.  And timing of artificial pull-up
requires high trimmability..
2017-09-12 22:36:25 -05:00
Paul Molloy f4bbad3d4a Have SWIM write communications working on STM Adatper and INL6.
Able to enter active mode and Write on the fly.
Simple test to toggle LED on STM8 GPIO works!
Still quite far from ideal setup.  Some things needed:
-defines for ACK/NAK/NO_RESP in dictionary to report inteligbly to lua
-move test SWIM code into separate lua script
-define STM8-CIC registers for easier calling from lua
-entering active mode is too board dependent, need to use swim_base
-Need to make better use of device timers for entering active mode
-arm assembly is quite a mess, unaware of calling convention when writting
-stopping more than just r0-4, r5+ need to be restored if used
-thinking I'd like a full out assmebly file that gets compiled separately
-nothing is done to support SWIM with AVR
-hacking lack of powerful enough pullup on SWIM pin
	not much that can be done to get around this...
	don't want to add resistors to programmer for every pin I 'might' use
	don't want to add resistors to each board that's made
-seems to work well enough, but reads will prob prove challenging
-currently only running at slow speed with ton of NOPs
2017-09-04 13:53:37 -05:00
Paul Molloy 6eb0570335 Have stm devices activating SWIM on SNES STM8 CIC.
AVR not yet working, performing low level SWIM operations will require
decent amount of core specific code due to differences in pin driver
styles, timers, cycles per instruction, etc.  The fact that SWIM pin
changes based on the board ADDR0, DATA0, EXP0, etc multiplies this low
level code...  Thinking about executing SWIM low level drivers from SRAM.
Initialization could include loading these routines to SRAM.
For now just focusing on supporting SWIM on STM cores for SNES boards.
2017-09-02 12:38:56 -05:00