V3 of the MasterStrike Remix schematic.
The only change from the previous one is that the jumper configuration was simplified to a 2x2 configuration.
Previously it was 2x3 to allow separation of battery power from ATMEGA88 vcc.
Hey thanks for the links… We considered integrating a step up to make everything 5v, but the efficiency of step-ups don’t seem to be very good (80% at best, and they tend to drop quite significantly the higher the current). One bad sign is the graph only goes up to 100ma lol…
They’re here! They’re here! Now to wait for you electronic and programming wizards to work your magic, because almost everything from the last few pages is so far over my head… My next custom stick will be killer
^lol at purplearms… I may have to agree with 32teeth on that name when i get my order Arc Master sounds so epic! rofl… Eye Strike sounds like a condition =/ … u cud also combo together Arc Strike (pretty cool) or Eye Master (wait wut?)…
i just need the pinout on the ATMEGA on the MasterStrike to understand what goes where
I have a few extra ATMEGA328 and am tempted to drop one on there once i know the config
the code will be pretty straight forward
build it on your arduino with a proto shield and then move it over to the MasterStrike
S1 and S2 functionality work perfectly
USB switches, pcb power switches…
i’m seeing some unexpected behavior with select + joystick direction to change options… investigating further…
i’m also having trouble flashing ATMEGA88 using AVRDUDE… dunno if anyone out there can tell me what the correct AVRDUDE command line switches are…
i’m using -p m88 to sepcify ATMEGA88 but i’m getting device signature = 0x1e9307 does not match signature for ATMEGA88 1E 93 0A
And this is using 10 pin isp programmer… the 6 pin isp programmer on MSv1 is giving me a cannot set sck period error message…
will continue to work on this… hopefully we can fix the code issues soon so i can at least send out MSV1’s with ATMEGA8L instead of ATMEGA88’s
Ok i’ve finally finished wiring in my project gouken joystick, including my own MSV1!
ISP programming through the ISP pins on MSV1 works, but requires that the processor is powered with +5V. Not a problem for wired/usb users. But wireless/battery users are powering with +3.7v battery so this cannot happen. There is a workaround: Switch off the main power (SPST), then connect +5v to the right SWITCH screw terminal, and ground to the BATT - terminal.
I’m still having trouble getting AVRDUDE to program to an ATMEGA88, but i should be able to figure it out tomorrow after some rest…
As for the beta code, I have encountered the following problems (which i hope we will fix soon):
S1 and S2 are designed to allow switching of PCB power / LED 1 & 2 / USB upon powerup. However, I am also sometimes getting ACC1 or ACC2 powering up too. This is unexpected (ACC1 and ACC2 should not switch unless S3 is pulled low)
For on the fly switching, the processor runs in cycles. This happens many times a second. While holding select + joystick direction, the intention is to switch only once. However, during the time you press a joystick direction and release it, many cycles have happened, which means the code has checked the state of select + joystick direction many times and performed switching many times before you can even release the joystick. Perhaps the solution is to allow switching to occur only once, until you release the joystick direction. You can continue to hold select and select a different direction (or even the same one again), but the point is it would be better to have the code not switch again until the joystick is back to neutral
The actions specified for joystick switching is not quite working as expected. Its almost as if LEDs are being turned on instead of off… will debug the code more tomorrow…
Its progress, but a little slower than anticipated. Sorry to MS customers, since I cannot possibly send out these until I get it solved (soon i hope!)
Lol, don’t worry bout it Purplearms :tup: if anyone has been waiting as long as i have, a little more time to de-bug the system aint no thang lmao… besides… might give me some time to think about adding onto my order ROFL… i’ll let you know whats up if i do ;D… but ya good luck on your endeavor tho, i’d help if i could but anything past LEDs and power consumption is just new territory that i haven’t explored yet
Ok I am now able to program! There were two issues. 1) there are different compile settings for ATMEGA88 as opposed to ATMEGA8 2) i have to force AVRDUDE into programming the atmega88 even though the processor signature check did not quite match.
This is the command I used:
avrdude -p m88 -P usb -c usbasp -U flash:w:V1.hex -F
The new firmware is a lot closer to the goal! Still needs a little more debugging… and debouncing is a big one…
Now i can begin assembling orders while I wait for you to work your magic
TRANSISTORS:
Pin 2 (PD0): Connects to base of Transistor 6 (switches power to 360 PCB)
Pin 4 (PD2): Connects to base of Transistor 5 (switches power to PS3 PCB)
Pin 6 (PD4): Connects to base of Transistor 4 (switches power to ACC2)
Pin 9 (PB6): Connects to base of Transistor 3 (switches power to ACC1)
Pin 11 (PD5): Connects to base of Transistor 2 (switches power to LED 2 / Joy 2)
Pin 13 (PD7): Connects to base of Transistor 1 (switches power to LED 1 / Joy 1)
INDICATOR LED:
Pin 5 (PD3) : Active high RGB LED Blue
Pin 3 (PD1) : Active high RGB LED Green
Pin 28 (PC5) : Active high RGB LED Red
additionally to benaco’s debouncing you can do a state check on ‘select’
pseudo (depending on pulling HIGH for select)
//-----------------------------------------------------------------
// x & y = direction values, xD & yD are anaologue pins
int x, y, xD = 0, yD = 1;
int selectPin = 12; // digital pin for ‘select’ button
int select = 0; // selectPin value (HIGH,LOW)
boolean selectMode = false; // singleton for entering select
int stickPin[2] = {xD, yD}; // analog pin array
int stickDirection[2] = {x, y}; // stickDirections
void setup()
{
// stick directions
for(int n = 0; n < 2; n++){pinMode(stickPin[n], INPUT);}
// select pin
pinMode(selectPin, INPUT);
//startup serial
Serial.begin(9600);
Serial.println(“started”);
}
void loop()
{
select = digitalRead(selectPin);
switch(select)
{
[INDENT] case 1: // HIGH
[INDENT]selectMode = true;
selectGet(true);
break;
case 0: // LOW
selectGet(false);
break;[/INDENT]
}[/INDENT]
}