Master Strike PCB : The Intelligent Control Center

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.

Change log will be put into post #3

5V DC to DC Step Up - 1xAA

http://static.sparkfun.com/images/products/DCtoDC1-02-L.jpg

or integrate a step up into the masterstrike
example NCP1400-5V Step-Up Breakout

http://static.sparkfun.com/images/products/08999-03-L.jpg

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…

lookie lookie what the mailman brought to my door today!

I got a lot of work ahead of me…

http://i3.photobucket.com/albums/y86/blu2fourty/BlankBoards.jpg

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

:bgrin:

just picked up my set 10xArcEyes and 1x MasterStrike V1
here is a reference shot

i will name my new project ArcMaster!

http://www.fakesite.com/arcmaster.jpg

can’t wait to see what happens when i put an ATMEGA328 on it with Arduino Bootloader and LED Controller Sketch LOL

secondly working on a shield for the MasterStrike to make it breadboard friendly… …gonna be fun!

Nice! Are you sure about ArcMaster? And not EyeStrike? XD

Man, you guys already doing LED Controller with Arduino?
I was going to do that too. :sad:

^lol at purplearms… I may have to agree with 32teeth on that name when i get my order :slight_smile: 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

i will post pics of my shield once i finish it!

Pin out is fixed. Find it here

Click here for MasterStrike REMIX Eagle Schematics and Change Log

Just an update… i’m testing beta code right now…

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):

  1. 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)

  2. 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

  3. 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!)

http://i579.photobucket.com/albums/ss240/purplearms/AEInstall1.jpg

http://i579.photobucket.com/albums/ss240/purplearms/AEInstall2.jpg

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 :cool: 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 :confused:

Okay, implemented a cleaner signal phase.

Ahh, I forget the de-bouncing…

The source I sent you is still without debouncing.

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 :wink:

ahh, and for the Arduino. Here`s is the Pin Mapping

http://itp.nyu.edu/physcomp/uploads/arduino_pinmap.png

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

Inputs

SIGNALS (ATMEGA detects if these are pulled low):
Pin 18 (PB4): S1
Pin 19 (PB5): S2
HLP mehere mike : S3
Pin 23 (PC0): S4
Pin 24 (PC1): S5
Pin 25 (PC2): S6
Pin 26 (PC3): S7
Pin 27 (PC4): S8

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]
}

void selectGet(boolean listen)
{
if(listen)
{
[INDENT] // listen to anaolog pins
for(int n = 0; n < 2; n++){stickDirection[n] = analogRead(stickPin[n]);}
}
else
{
// execute selection
selectSet();
}[/INDENT]
}

void selectSet()
{
if(selectMode == true)
{
[INDENT] // do your schnazy stuff here

// serial dump
Serial.print("x=");    
Serial.print(stickDirection[0]);
Serial.print(":");
Serial.print("y=");    
Serial.println(stickDirection[1]);    

// reset selectMode
selectMode = false;

}[/INDENT]
}

i could kiss you!

and my pseudo above is not reflecting proper pins but you get the picture