EEVblog

  Рет қаралды 46,702

EEVblog

EEVblog

Күн бұрын

Пікірлер: 201
@nychold
@nychold 6 жыл бұрын
(the moment you realize how a 555 timer can be used to turn an analog signal into a digital signal) That's brilliant. Absolutely brilliant.
@mheermance
@mheermance 6 жыл бұрын
You can also use a 555 as a touch or proximity sensor by measuring the effect of hand capacitance on the oscillator.
@NamacilHDx
@NamacilHDx 6 жыл бұрын
my dad is as old as dave i think and xD he once said "555 timers can be used for EVERYTHING, if you knew what people allrady did with 555 timers" ive seen some people building plasma speaker with them as a trigger but xD that is next lvl shit xD
@absalomdraconis
@absalomdraconis 6 жыл бұрын
NamacilHDx : Ha, you can make (odd, and obviously slow) logic gates with them. 555s, resistors, capacitors, inductors, power transistors, and I/O hardware are enough to recreate the modern computer age (just very, very slowly).
@xotmatrix
@xotmatrix 6 жыл бұрын
The Apple II used essentially the same method. An interesting side-effect of software timing, at least with its relatively slow processor, is that games would run noticeably slower when the joystick was pointed right and/or down.
@KuraIthys
@KuraIthys 6 жыл бұрын
I was surprised to read how the Pokey chip in the Atari 8 bit home computers performed analogue input... Then I heard about this trick a day later. XD There are no discrete 555 timers in the Ataris, but I wouldn't be surprised, based on how the documentation describes how it reads the controller pots (those are used for paddle controllers, mostly), that something akin to the 555 was implemented into the Pokey chip itself, because what the chip documentation describes is almost identical in operating principle...
@worroSfOretsevraH
@worroSfOretsevraH 6 жыл бұрын
Dave, you should make a video series on these nice but rather complex old PC schematics in detail explaining every single bit of it. As we saw in this video, there are many many interesting parts. Btw. this joystick technique (hardware) is used even today in RC transmitters.
@mikeselectricstuff
@mikeselectricstuff 6 жыл бұрын
BBC had an ADC as it was intended for other educational uses - datalogging etc. It was labelled as an analogue port, not joystick
@gotj
@gotj 6 жыл бұрын
I ended up buying a BBC micro and you're the culprit. Well not you your video of your "beeb". I plugged it in and puff, the magic smoke escaped. Fuck you RIFA :-) I have yet to fix it to play with it.
@EEVblog
@EEVblog 6 жыл бұрын
Makes sense in that case. Pretty crap voltage reference for datalogging though! But I guess you could software calibrate at temperatures, only 10mV/deg C drift :-/ But good enough to see a waveform.
@Zadster
@Zadster 6 жыл бұрын
Yep, 12 bits / 5ms, but really only intended for school level data logging. Temperature, light levels etc. Not massively useful for audio with
@EVguru
@EVguru 6 жыл бұрын
The built in reference was for Joystick use. You could use an external reference for better accuracy.
@enigma7070
@enigma7070 6 жыл бұрын
If I recall correctly, my TRS-80 Color Computer used a binary resistive network (which was a true analog output) in place of the ramp generator mentioned in the video. Since the software could control each resistor, it would do a successive approximation and stop once the comparator trigged (after backing off to find the least possible value that still triggers). Therefore, there was no need to read a pulse width signal since the software already "knew" the output value. That was when I first learned that an analog output + comparator could serve as an analog input.
@Matthias051
@Matthias051 6 жыл бұрын
Thank you soo much for all the interesting videos. Love it so much. Greetings from Germany, Düsseldorf
@JLSoftware
@JLSoftware 6 жыл бұрын
From Wikipedia on the Apple ][, which premiered in 1977 (PC Jr was 1983): "Rather than use a complex analog-to-digital circuit to read the outputs of the game controller, Wozniak used a simple timer circuit whose period is proportional to the resistance of the game controller, and used a software loop to measure the timer." Sound familiar? Sound earlier? en.wikipedia.org/wiki/Apple_II
@user-qf6yt3id3w
@user-qf6yt3id3w 6 жыл бұрын
Atari computers did something similar for their paddle controllers as well - this dates back to the 2600 and probably to earlier Atari arcade machines. You discharged a capacitor for each channel in the vertical blank and then charged it through a constant current source until it hit some reference voltage. When that happened you latched the horizontal line counter. So you didn't actually need a software loop - software could just read the current potentiometer position out of a register. The Atari 8 bit machines even had a fast scan mode where the capacitors charged in two scan lines rather than a whole screenful. www.atarimagazines.com/v2n4/talkischeap.html The POKEY chip converts the POT resistances into numbers. This technique is called voltage-to frequency conversion, and is noted for low cost and relative inaccuracy, reflected in the speaker output as noise and hiss. Still, most of the original sound remains intact. POKEY normally requires 228 TV scan lines to read the POT. The number produced by POKE is actually a count of scan lines it took to charge a capacitor located in POKEY. If there is little resistance (paddle knob turned right), the capacitor charges in fewer scan lines and the resultant number is smaller. A fast POT-scan mode is available, which causes the capacitors to charge up in only two scan lines. This fast POT-scan is what we use to read the values from the microphone, because the values must be read thousands of times per second and the normal POT-scan mode is much too slow.
@savirien4266
@savirien4266 6 жыл бұрын
Yeah I remember how clever these old joysticks were. I remember fiddling around forever trying to get them to zero out properly (without randomly drifting in one direction). Then you finally get it right and on the next reboot it was back to drifting again! Thank the guy that came up with rotary encoders instead.
@peterschmidt9942
@peterschmidt9942 6 жыл бұрын
It was interesting to see how these little guys worked and explains a lot about how inaccurate the joysticks were back then! I can remember playing games on similar PC's back in the day and all of sudden your character would start walking in the opposite direction to what you'd selected on the joystick. I always thought the software was the cause, but I reckon it was just the slow speed's of the PC and not being able to scan the joystick ports quick enough with the shared resources.
@gotj
@gotj 6 жыл бұрын
The '77 Apple II did it like that too: trigger the 558 in one shot mode and use the µP to count until the pulse ends.
@JLSoftware
@JLSoftware 6 жыл бұрын
Of course. But you'll never see that on PC fanboys videos. OMG it doesn't teh have teh STANDARD USB CONNECTOR!!!
@gotj
@gotj 6 жыл бұрын
JL Software LOL
@p_mouse8676
@p_mouse8676 6 жыл бұрын
Thanks for following my suggestion/question ;) (unintentionally probably) Love this little circuit, so easy yet so extremely useful! Makes you realize how over engineered ADCs actually are.
@jonathanfadden9299
@jonathanfadden9299 6 жыл бұрын
Steve Wozniak (Apple II) first came up with the RC design. In a presentation, he said something about this being cheapest way he could think of. The timing was all done in software.
@JONOVID
@JONOVID 6 жыл бұрын
the 555 was the 1st chip or ic that I used as a kid. 101 use's for it.
@Hogscraper
@Hogscraper 6 жыл бұрын
Wow, I remember the days playing with a joystick like that on a Tandy 1000. Good Times:) Thanks for the video about the inner workings!
@ralph_f16simulator
@ralph_f16simulator 4 жыл бұрын
Man your comment is uplifting, great video thx
@electronash
@electronash 6 жыл бұрын
The Vectrex used a similar method, but using the main DAC instead... The CPU sent out a few incremental values to the DAC, and when the voltage from the DAC matched what was on the pot in the joystick, a comparator then just outputs a High signal to a digital input pin. With the use of a mux chip (4066, IIRC?), it meant that they could just one of the relatively expensive DAC chips for the X/Y/Z, and both joysticks. (the "Z" axis on the Vectrex was just the beam brightness.) Quite a few clever tricks were used to cut costs back then. Sadly, cutting costs these days often means manufacturers using crappy plastics etc. Bring back the heavy IBM cases and tank-like build quality, I say. :p (for non-portables, obviously. lol) Dave - It would be fantastic if you could get hold of some of the MIPS era SGI machines for a teardown. I could be wrong, but I don't think you've covered one of those as yet? Huge amount of engineering went in to the SGI Octane / Indy / Onyx etc., and they had a huge price tag to match. I had an Octane (MIPS R5000) and O2 for a few years. They weighed so much, I was slightly worried about the floorboards. lol
@Starphot
@Starphot 6 жыл бұрын
Nice one, Dave! The venerable 555. I started making transistor multivribrators for my projects in 1972. In 1973, I made a Sputnik beeper for a model rocket using transistor multivibrators. I still have my first 'breadboard' and the rocket beacon, still working. After that, the LM 555 came out and that was a godsend! My first real project was making an LED blinker for a phony security camera body. Since I was the shop tinkerer onboard my ship, I made the blinker for a case with a phony glass lens that looked like the security cams that were available for that day. That seemed to stop the thefts. You open the door and one of the first things you see was the blinking LED on the phony camera body. Later I got an AC synchronous motor drive controller for my telescope with joystick. The circuit in that was MUNTZ unstable and I used a 555 chip and a regulated supply to remedy that problem. The autoguider socket and add-on was added later. I still use it to photograph the night sky.
@rotareneg
@rotareneg 6 жыл бұрын
The Amiga used hardware to count how many scan lines it took to charge a 47 nF cap through the joystick pot. You'd write to a control register during the CRT vertical blanking period to discharge the cap and start the counters and then read the pot register when the next vertical blanking period started, followed by setting the control register again to repeat the process every frame.
@SteveHodge
@SteveHodge 6 жыл бұрын
Clever. Though I think analogue joysticks were rare on the Amiga, certainly all the joysticks I took apart were simple switch-based (digital) designs.
@Fiercesoulking
@Fiercesoulking 6 жыл бұрын
I'm not sure weren't those not the same which were used in the C64 ? Yeah they were switched based but the funny thing is there were certain types of games you could only implement with those kinds of joysticks mainly sport games which was a disappointment when I changed to PC.
@rotareneg
@rotareneg 6 жыл бұрын
Indeed, virtually all joysticks on the Amiga were digital and used the same Atari standard (the controller port was reconfigurable and could use mice, digital or analog joysticks, light pen, or act as a 4 bit I/O port.) A native analog Amiga joystick was supposed to use 470k pots and was not directly interchangeable with PC analog sticks, even accounting for the pin-out difference. The rarity of native sticks lead to there being hardware adapters that let you use PC sticks on the Amiga if you had one of the few Amiga sims that supported analog input. One example, Fighter Duel Pro 2, even supported analog rudder pedals along with an analog stick when using the Smart Port adapter, which fed the rudder axis into the Amiga mixed with the mouse signals by reconfiguring the middle mouse pin to analog mode.
@insoft_uk
@insoft_uk 6 жыл бұрын
I use to program games in DOS, and had to write a calibration routine as CPU speed was an unknown so one had to get the min and max timing and convert it to 0-255 8 bit value
@EEVblog
@EEVblog 6 жыл бұрын
Glad you remember, it's been too long ago for me!
@anlumo1
@anlumo1 6 жыл бұрын
Not only that, the potentiometers also had very “flexible” tolerances and did vary a lot between different joystick models.
@rich1051414
@rich1051414 6 жыл бұрын
Couldn't you store the current time at the end of a frame then wait at the end of the next frame until the appropriate time had elapsed, then the speed of the processor would not matter.
@bkucenski
@bkucenski 6 жыл бұрын
I believe a lot of games had you move the joystick to the upper left corner and then the lower right corner to calibrate the min and max on the axis. I'm thinking if you wanted to not use software to get the digital value, you could use a second 555 timer running astable to increment a binary counter and then grab the data from those pins to get the digital value. Might be useful for an arduino controller you want to minimize computations with. That'd be more expensive but a good exercise with some more chips.
@anlumo1
@anlumo1 6 жыл бұрын
On an Arduino, you could just use the built-in ADC to read the values.
@daveyfenwick
@daveyfenwick 6 жыл бұрын
Of note, the MCS series microcontrollers from Intel were released starting in 1982. They have built in AD converters in them and were used pretty extensively in a variety of applications. My Roland W-30 music workstation had an 8098 in it. The 8061 was primarily built for Ford for their cars, but the 8051 is a classic microcontroller in a bunch of industries. It was released in 1980. However, you're right, it would *never* be cost effective as a simple joystick read circuit. I just wanted to note that there were a quite a few microcontrollers on the market by the time the peanut was released. Programming for the 8097/8098 was a blast though, especially the banked RAM configurations. :)
@ilanmower
@ilanmower 6 жыл бұрын
#1054 Should be about our favorite 50MHz 1Gs/S 4 channel Digital Storage Oscilloscope, with "upgradable" Bandwith, memory and math functions.
@bryandrap123
@bryandrap123 6 жыл бұрын
Hey Dave, As an industrial automation/process control guy I'd like to see a detailed video on how modern industrial transmitters keep a stable constant current loop indifferent to a reasonable (0-1387ohm) resistance.
@Audio_Simon
@Audio_Simon 6 жыл бұрын
Love the comparison between the two timing circuits. I had a joystick that never returned dead center back in the 486 days. Calibrated it and trimmed it but my spaceship would always slide about on is own! >.< Nothing beats mouse and keyboard anyway.
@magiczneshoty4034
@magiczneshoty4034 6 жыл бұрын
Great videos Dave. Thank YOU.
@ChipGuy
@ChipGuy 6 жыл бұрын
Back in the day, when technical solutions were crude but exciting. Today: Pick a microcontroller with USB and a sufficient number of ADC channels...technically much better, but booooring ;)
@absalomdraconis
@absalomdraconis 6 жыл бұрын
Chip Guy Vids : You could always hang a cpld feed by a clock, reset, and timers off of an spi, if you wanted something more interesting ;) .
@ChipGuy
@ChipGuy 6 жыл бұрын
Doesn't sound too bad, actually. Silly but interesting.
@BlackEpyon
@BlackEpyon 6 жыл бұрын
Agreed. I'm working on designing a multi-configuration CompackFlash/ATA2 controller exclusively for the PLUS card interface on the Tandy 1000EX/HX (actually just an XT on a 62-pin BERG connector) based on the popular lo-tech 8-bit CF-IDE card (James Pierce hasn't been active since 2015, but like all of the XT-IDE community projects, his stuff is Open Source). The digital logic of the day was simple enough that with a little electronics know-how, you could make whatever you needed yourself if there wasn't anything available! There's something very satisfying about being able to make your own expansion cards using discrete logic (74xxx series in this case) and a flash chip.
@dave_sic1365
@dave_sic1365 2 жыл бұрын
Yes that's why I'm fascinated by old electronics like radar.
@tandy
@tandy 6 жыл бұрын
The joystick was made by Kraft, it was also sold as the Tandy Deluxe Joystick for the Tandy CoCo and Tandy 1000.
@foo1898
@foo1898 6 жыл бұрын
The joystick port in the SoundBlaster, which later became the PC standard, was directly connected to the bus with a single I/O address. There was no timer, only capacitors. To read the axis positions, software would write to the port to reset the capacitors, and then read the port in a tight loop until the bits flipped. There was no precise enough timers on the PC, so the time was measured using a counter in the loop. Of course this doesn't allow any inference during the loop, which meant disabling all interrupts for devices like the keyboard and soundcard. Which doesn't work that well in a modern multitasking operating system...
@LeMecanoDuDimanche
@LeMecanoDuDimanche 6 жыл бұрын
cool video ! thanks... I wish I had such an interesting electronics teacher back in the days
@vehasmaa
@vehasmaa 6 жыл бұрын
Davecad supports two screens now? :O
@l3p3
@l3p3 6 жыл бұрын
I think Dave upgraded it to version 2.
@UpLateGeek
@UpLateGeek 6 жыл бұрын
Nah, it's the multi-sheet feature, pretty much standard in every half decent cad program. But DaveCAD's got a unique feature that allows you to join multiple sheets to make larger ones!
@TheMrKeksLp
@TheMrKeksLp 6 жыл бұрын
Yeah but you have to have the enterprise version
@TechnikZaba
@TechnikZaba 6 жыл бұрын
It's call the frame buffer :)
6 жыл бұрын
C64 SID chip had 2 analog inputs as well. It could measure the analog values of 2 pots without blocking the CPU, with less parts needed. A "Single Slope" ADC was included in the chip. Cheap ADC in 1982.
@tl1024
@tl1024 6 жыл бұрын
DaveCAD 558 joystick schematic warms my heart. Gotta love the hex address decode, don't remember hex addresses? That's your good, or bad fortune, depends how you look at it..
@Mystickneon
@Mystickneon 6 жыл бұрын
I owned one of them.... the Tandy one, though(for my 1000EX). The neat thing about them is that you could unlock the axii so they didn't automatically return to center. (I see now he covers this in the video - lol, with the same descriptor)
@anlumo1
@anlumo1 6 жыл бұрын
Back when I started with using computers all sound cards had a joystick port built in. From a technical perspective this doesn't make any sense, but you'd want both for playing games, so it was kinda useful.
@Spikejwh1
@Spikejwh1 6 жыл бұрын
I remember I build my own gameport card for my PC on a piece of perfboard back then.... Played many hours of Flightsim 1 and Elite with it.. I think I just copied the schematics from the PC technical reference manual (I worked for IBM at the time so had access to all these books)
@BlackEpyon
@BlackEpyon 6 жыл бұрын
Fun fact: The Tandy 1000 series, up to the RLX (which was, I think, the last model based on the PC-Jr) could use a joystick in lieu of a mouse in DeskMate.
@shurdi3
@shurdi3 6 жыл бұрын
Holy fuck that is beautifully elegant solution Brillian
@PhateShepherd
@PhateShepherd 6 жыл бұрын
The joystick looks suspiciously like the Kraft joystick. Likely just rebranded for IBM. Nearly identical circuit used for the Apple 2 in 1977. A 558 timer.
@JLSoftware
@JLSoftware 6 жыл бұрын
Gee, you think maybe somebody opened up an Apple ][ and took a peek at how Woz did the game paddles? And then erased all of that from everyone's memories? SMH
@PhateShepherd
@PhateShepherd 6 жыл бұрын
I remember converting Apple and PC sticks back and forth. Problem was one use 100K pots, and the other used 150K pots. Who knows, someone else probably did it with a 555 earlier than Apple back in the pong days.
@mattjmwmatt
@mattjmwmatt 6 жыл бұрын
Holy crap, saw 555 liked it!!! Bloody brilliant! Gotta say my first thought was: Meh... just stick a micro in there! Man, engineering back then sure was fun.
@Da40kOrks
@Da40kOrks 6 жыл бұрын
Looks just like a Tandy joystick I have for my Color Computer.
@shickster1
@shickster1 6 жыл бұрын
I recall that joystick being branded "CH Products" and "Kraft".
@Trendinglive
@Trendinglive 5 жыл бұрын
Great videos, add some specific topics also to have some deeper knowledge. Although all your videos are great. 😀👌👍
@-taz-
@-taz- 6 жыл бұрын
It's a Kraft joystick. I had one a lot like that, until my little brother cannibalized it to build a steering wheel and gas pedal to play Stuntz.
@gotj
@gotj 6 жыл бұрын
Vintage tech FTW :-)
@ElectricGears
@ElectricGears 6 жыл бұрын
I think that could be made a lot less software intensive with only 3 extra chips. An 8-bit binary counter driven by the main clock, AND gated with each output channel of the 558 AND one output line of a binary-to-decimal decoder on the main bus. The binary value written to the bus selects the channel that will be delivered via the AND gates (along with the system clock) to the binary counter which will cunt as long as the 558 output is high and transfer that accumulated value to the data bus. I don't know if the main clock would be running at a good speed for this to work but another local oscillator could be used. If you were willing to wait 256 cycles for a full 8 bit resolution position, you could queue up a joystick read 256 cycles ahead of time and do something else. Although I imagine the maximum delay would still be less than the software loop. Another bonus would be waiting a different number of clocks to achieve different resolution counts if some application favored response over precision. The sample rate could be arbitrary for each sample. You might also be able to mix the buttons in there to grab 1 axis (6 bit) + 2 buttons depending on an address value mixed with some more AND gates. I bet there are other clever ways to chain 2 4-bit counters and some extra decode logic to allow 2 axes to be sampled in one read (at 4-bit resolution). Side note: do stand-alone ADCs work this way? I always thought they had a series of comparators (one for each bit) with a precise binary sequence of thresholds. They would all receive the input signal in parallel and the pattern of comparators that were on represented the binary translation of the the analog input.
@AmRadPodcast
@AmRadPodcast 6 жыл бұрын
I still miss using BASIC to make little jingles on that crappy paper cone speaker. Back when computers came with programming manuals.
@gerff01
@gerff01 6 жыл бұрын
No reason you can't still do that...
@kippie80
@kippie80 6 жыл бұрын
Awa, Dave, you could have stuck a signal generator on there to force the triggering. Output would go to buffer .. shouldnt cause lockup.
@EEVblog
@EEVblog 6 жыл бұрын
I would have had to force an active logic line, and it's not the same as running software and watching it do it's thing in a loop.
@13lake
@13lake 5 жыл бұрын
Could you do an in-depth study of how a modern Xbox or Dualshock analog stick works? And why my Joystick tester on PC shows shaky analog axes and drift sometimes?
@johncundiss9098
@johncundiss9098 6 жыл бұрын
Did not Apple have a joystick for its first computers? I think I remember it having a rather smooth fluid feel, it had x/y trim pots on each side. But I think the biggest thing I liked was that you could disengage the centering springs of the stick so it would stay wherever you put it instead of it moving back to center. Both x and y axis.
@Mostlyharmless1985
@Mostlyharmless1985 6 жыл бұрын
That’s exactly what an Apple II joystick looks like. I wonder who came first.
@JLSoftware
@JLSoftware 6 жыл бұрын
Apple: 1976 IBM: 1983 You decide.
@KuraIthys
@KuraIthys 6 жыл бұрын
Ah, the 15 pin PC joystick port. Almost as ubiquitous as the Atari joystick port. Although, more long-lived I suppose. It's actually kinda surprising how many systems ended up with Atari ports or minor variations on it. To this day the best input device for most 8 bit computers (though you have to watch it with some, especially those which deviate from the Atari spec somewhat) often turns out the be a mega drive gamepad. Granted, in existing games only one button and the d-pad works; and given how the IO for most ports works (And the Atari port in particular), with custom software routines the best you'll get is the d-pad and two of the 4 buttons. (2 of the 7 buttons on the 6 button version.) It wouldn't be hard to create a simple adapter that lets you use more buttons, but as is without rewiring either the controller or the port, this somehow just works. It shouldn't, because it doesn't quite match. But it works anyway because the Sega controller expects +5 volts on a pin that according to official atari specs does nothing, but in fact is generally pulled high (eg. gives +5 volts) in most systems. The reason you can't use all the buttons even with custom software is related to this; the Sega specification uses one of the pins as a 'select' switch. Pull it high and you read Button B and C, pull it low and you can read A and Start. It just so happens that the pin chosen for this is the pin that in the Atari specification is used as the power pin. So it's always high. Which is why you get two buttons but cannot access the others; there's no software control over that pin. (There are 4 pins that can be set as either input OR output, but those are the ones that give the D-pad inputs on the Sega controller. - and in fact by default the joystick inputs on a standard Atari joystick as well. Part of why this works at all - the D-pad maps to the same pins as an Atari Joystick, and the B button maps to the atari controller's Fire button. The C button maps to what is officially an unused pin, but which IS readable in software - Except no existing software reads that pin, for obvious reasons.) Kinda weird how many systems used that same standard, or near enough to it, in the end. Nintendo's logic for how to read a game controller is quite different. Though in their case one of the things that might not be obvious is that the NES and SNES controllers have the exact same pinouts and behaviour; Obviously the SNES has extra buttons, but beyond that the only difference is that the two have physically different connectors... For a short summary of the differences, the Atari specification, while it has some variations for stuff like paddles and the like, really just treats the 9 pins as +5 volts, ground, and 7 inputs. - two are unused in the official spec, but you register an input by puling the relevant pin to ground. The Sega controllers are almost identical, barring a change in which is officially the +5 volt pin, and using up the unused pins for extra functions. That's all there is to a Master System controller, but a Mega Drive controller then uses a 'select' pin to swap between two possible interpretations of what the pins mean. An Atari controller therefore is just a bunch of buttons wired such that they pull specific pins to ground as needed. A sega controller is the same but in the Mega Drive adds a bit of logic to switch between multiple sets of buttons. (the active set pulls pins to ground, the inactive set is ignored.). The 6 button controller contains a microcontroller and uses a special timing sequence of the select pin to access the additional buttons. the way Nintendo does it is effectively a simple serial port; Compared to the atari and sega approach (excluding the 6 button controller) this is slightly more complex. But, it's not compex circuitry. The controller simply contains a pair of 8 bit shift registers, which are hooked up to form a 16 bit shift register. The console sends a latch signal to lock the shift registers into a specific state (the combination of buttons when the latch was enabled), then sends a clock signal to shift out the bits one by one, then releases the latch signal. A completely different approach, which is somewhat more complex, but also more adaptable in the long term; All you need to do to get more capable controllers is either add more shift registers or use a microcontroller in the gamepad (depending on the complexity), and redefine what format the serial data that gets returned is in. The n64's controllers have a much faster bus, and have been reduced to just 3 wires from 7 (obviously the fact that the n64's memory cards attach to the controller has implications for what the transmission protocol is capable of; But the SNES controller ports have been adapted to attach some kind of flash storage to, as were the NES ports before them.), but the principle is similar. The gamecube controller still follows roughly this principle... The wired Wii controllers have switched to using an I^2C bus, but it's still roughly the same concept... All this stuff is surprisingly interesting when you look at it up close. (in case you're wondering why I haven't mentioned anything else besides Atari and Nintendo... - well, like I said, the atari standard was VERY influential in the 80's. While a bunch of systems didn't follow the spec all that closely, they still broadly followed the idea of the port, and changes were usually just swapping the meaning of some of the pins around...)
@EEVblog
@EEVblog 6 жыл бұрын
Great input, thanks.
@CODMarioWarfare
@CODMarioWarfare 6 жыл бұрын
And yet, ironically Atari had a 15 pin joystick port that was decidedly NOT ubiquitous
@KuraIthys
@KuraIthys 6 жыл бұрын
@CODMarioWarfare - As I recall both the Atari ST and Amiga used 15 pin ports, but with a breakout cable the result is more or less that each port is two Atari ports put together. Atari did then go on to use an unrelated 15 pin port for the Jaguar... Which matches neither the original Atari spec, the Atari ST 15 pin port spec, the PC 15 pin spec, nor anything else. It's it's own thing, for whatever reason. I mean, the Jaguar had what was it, a dpad, 4 buttons and for some reason a keypad with 12 keys? But... Yeah, I'm not surprised that never caught on if the only thing that used it was the Jaguar. XD Besides which Atari in the 90's was on the brink of collapse, and a mere shadow of what it was in the 1970's. The reason the 9 pin Atari port was so influential can almost certainly be traced to how big Atari was in the late 70's... But by the 90's... I don't think anyone cared anymore...
@mrozu1337
@mrozu1337 6 жыл бұрын
RC Hobby still uses PWM signal for radio transmitter joysticks and servo/motor controlling :) 50Hz, 1000-2000us width signal. Fortunately, "drones"/multirotors are pushing it to digital communication :)
@anlumo1
@anlumo1 6 жыл бұрын
Easy enough to read and generate on a microcontroller.
@cassio-eskelsen
@cassio-eskelsen 6 жыл бұрын
Another great lesson, thanks Dave :)
@SzDavidHUN
@SzDavidHUN 6 жыл бұрын
What an amazing idea. I wonder how precise was it because the software timing, I couldn't make a wav player without interrupts on an esp32 :D
@MatthewSuffidy
@MatthewSuffidy 6 жыл бұрын
I got a free gameport joystick on the internet. I thought it would work with my Creative cards, but windows did not have drivers. It turned out to be more or less a digital joystick with an analog startup. So I made sort of a driver using various thing so it works again and is mentioned on my youtube channel. My stuff works for the Microsoft Sidewinder Precision Pro exclusively be warned.
@MatthewSuffidy
@MatthewSuffidy 6 жыл бұрын
I think I could almost make an analog driver by changing the source in a few places, but since it works 100% ok as is I don't know if I'd really want to inflict in on myself.
@izimsi
@izimsi 6 жыл бұрын
AFAIR windows OSs (like 8+) don't support gameport, just to warn you
@MatthewSuffidy
@MatthewSuffidy 6 жыл бұрын
Yah but it didn't stop be dude. Its history. Here it is in windows 10: kzbin.info/www/bejne/g2eXiHSNiKx6mtE
@betamax80
@betamax80 6 жыл бұрын
I believe CH made the IBM joystick, and produced an identical product under their own brand - they may have bundled that original game card as well.
@RetroBoxRoom
@RetroBoxRoom 6 жыл бұрын
Would it be possible to make an external adapter to convert any PC analogue joystick to a BBC micro? I don't know enough about electronics
@cthree87
@cthree87 6 жыл бұрын
You can use POKE in BIOS BASIC to write to the joystick address.
@rivards1
@rivards1 6 жыл бұрын
Looks like the Kraft joystick for the Apple //. Apple // joysticks and paddles were analog and predated the PC versions.
@JLSoftware
@JLSoftware 6 жыл бұрын
I'm SO glad to see people know the ACTUAL place where this engineering came from: the non-college mind of THE WOZ.
@JimLeonard
@JimLeonard 11 ай бұрын
5 years too late, but you actually didn't need a boot floppy to test the joysticks: The PCjr has built-in diagnostics, including a joystick routine. Hit CTRl-ALT-INS after POST, and then press spacebar until the cursor is by the picture of a joystick, then hit ENTER. At that point, the ports will be constantly triggering to show an image you can use to calibrate the joystick positions.
@1337GameDev
@1337GameDev 6 жыл бұрын
9:00 - Why did they need 4 channels? I thought there was only 2 pots in the joystick? Or was this for "controllers" that had 2 sticks?
@oskardzida
@oskardzida 6 жыл бұрын
0:23-1:03 5 times "actually" ;) Now i know where did my "twice a sentence actually" came from.
@romanpryce3999
@romanpryce3999 6 жыл бұрын
Dave, I thought all of those computers of that era came with BASIC in ROM so would boot into a BASIC interpreter, well the IBM PC did. And you could have used a simple BASIC program to POKE the address of the joystick control and that would have generated the triggers you need with using game software or DOS. Something like this: 10 ADDRESS = ???? 20 POKE ADDRESS, 1 30 GOTO 20 the syntax maybe off but that all you needed. Replace the ???? with the address of the latch/controller.
@brandonleblanc9611
@brandonleblanc9611 6 жыл бұрын
Would you be interested in maybe making a video about an LCD controller board design? Or be able to point me in the direction of something I could read to learn more about it?
@rcmonks
@rcmonks 3 жыл бұрын
I'm not educated in electrical circuits at all. I want to learn enough so that I can build a joystick control system which will control a 12v trolling motor on my kayak. I want to increase the speed as I push the stick forward and go in reverse as I pull the stick back. At the same time I want to be able to steer the kayak by rotating the motor by moving the stick left and right. And finally, if I fall overboard, the motor should stop as the stick automatically goes to the neutral position. I'm guessing the type of analog joystick shown in your video might be able to do this when connected to servos or actuators to rotate the motor. Am I on the right track?
@gotj
@gotj 6 жыл бұрын
The problem with that is 1) it takes a "long" time, and 2) you never know how long it's going to take and 3) you can't read paddle one and immediately after read paddle 2 or 3 or 4 because the readings might be wrong, IIRC
@Peter_S_
@Peter_S_ 6 жыл бұрын
1) Yes, on the Apples I think it was 12uSec per count so maximum was about 3mSec to get the value. 2) Having to waste the extra read loop cycles was always painful when the CPU is running at 1MHz 3) So true, you did need a guard time between successive 558 triggerings. On the Apple][ at least I had code that read all four pots at the same time to sidestep that issue.
@gotj
@gotj 6 жыл бұрын
Yes but the built-in code didn't do that :-)
@SwitchingPower
@SwitchingPower 6 жыл бұрын
So the Tandy 1000 is not compatible with the Microsoft sidewinder gamepads because they use a trick to read the trigger pulse out of the analog input through the discharge transistor of the 555 timer.
@alexanderwikstrom1829
@alexanderwikstrom1829 6 жыл бұрын
Software timing? I would have used some 7400 series counter and an oscillator that is gated by the 555 timer, then fetch that counter value and toss into a buffer for the software to enjoy. Though, it would need two 8 bit counters per joystick, and two AND gates too... But no more software timing!
@gotj
@gotj 6 жыл бұрын
And if you put an LDR you could "measure" light hahaha I did a scanner with that and a plotter
@ajar1000
@ajar1000 6 жыл бұрын
I wonder how much of a delay the timing of the 555 signal width causes to the input signal
@jasonmhite
@jasonmhite 6 жыл бұрын
You mentioned the tolerances on the pots wasn't that great, so I guess that was part of the calibration routine you used to have to run? It was looking for the pulse length corresponding to center, min and max on each channel for your specific stick? I always figured it was more to do with small mechanical differences causing variations in where the stick would center physically, but the values of the pots not being consistent makes a lot of sense.
@absalomdraconis
@absalomdraconis 6 жыл бұрын
nobodybodybody : It was a couple things. Differences between sticks and models, changes over time and temperature (pots do wear out after all), mechanical wiggle and stickiness, it basically covered everything to some level of detail.
@Peter_S_
@Peter_S_ 6 жыл бұрын
Woz invented that circuit in 1976 and used it in the whole AppleX series.
@mheermance
@mheermance 6 жыл бұрын
Externally that joystick looks exactly like the Color Computer one. Except the CoCo used an ADC.
@gerff01
@gerff01 6 жыл бұрын
I HAD ONE OF THOSE!!
@MedSou
@MedSou 6 жыл бұрын
thanks 👍👍
@thewolfin
@thewolfin 6 жыл бұрын
I saw "55?" on the block in the thumbnail and was confused AF. Thank you for the thought-provoking clickbait.
@michaelparker2449
@michaelparker2449 6 жыл бұрын
I've lost count of the times I've had to clean or replace the potentiometers in game controllers when they start to develop stick drift, and the worst part is most people just buy a new controller when this happens.
@trifidsagitarius
@trifidsagitarius 6 жыл бұрын
Use DOS debug and out to port 201H (if I remember correctly) that will trigger the 555 DOS debug commands montcs.bloomu.edu/Information/LowLevel/DOS-Debug.html Example in DOS run debug enter O 201 xx ( output port byte )
@rflberg
@rflberg 6 жыл бұрын
tandy 1000 disk are found here: www.oldskool.org/guides/tvdog/system.html
@logandihel
@logandihel 6 жыл бұрын
Why did they need 4 pulses from the joystick instead of just 2, one for each pot?
@SkyCharger001
@SkyCharger001 6 жыл бұрын
error compensation, increasing accuracy through averaging or the last two pulses are for the buttons (they need to be probed as well)
@gotj
@gotj 6 жыл бұрын
I'm sure Woz didn't do it like the Tandy because he didn't like to mess with analog electronics very much
@Peter_S_
@Peter_S_ 6 жыл бұрын
Woz did it many years before Tandy did it and the 558 solution is about as cheap and simple as it gets which is what drives Woz. The Apple ][ contains multiple little analog blocks but it also contains six 555 timer cores... most systems had eight of them if you count the 556 on the Disk][ controller.
@gotj
@gotj 6 жыл бұрын
He did not do it *like*the*Tandy*
@AxelWerner
@AxelWerner 6 жыл бұрын
Dave, you should start upload your stuff on dtube too.
@NetworkXIII
@NetworkXIII 6 жыл бұрын
The amazing 555, is there anything that it can't do?
@dykodesigns
@dykodesigns 6 жыл бұрын
I hated the analog PC gameport interface with a passion. The reason for this is that it never worked properly in my experience. Every game requireed calibration, some games had poor calibration routines and some games and joystick combo's where not always compatible. Also it beeing analog wasn't great for 90 % of the games that where better suited to digital control. It was kind of designed for flight sims, but horrible for things like pacman. Overall I feel that other systems (who used atari's standard) had a better solution. IBM had no clue at how to design an acutal working joystick interface that would work for most games. All other computer like MSX, Commodore etc did it better by using the atari standard and improving it to some extend whilst preserving backwards compatibilty with atari. Sega was smart, they where wise to do the same.
@tylisirn
@tylisirn 6 жыл бұрын
I remember my Amstrad PC1640 had an Atari joystick port on the keyboard, and if you attached a joystick to it, it "pressed" down the cursor keys. I don't recall what key the fire button actuated. That was pretty clever since the keyboard already is exactly the same type of on-off digital input and games would have keyboard controls anyway, so no special support was needed (other than possibly redefinable keys).
@dykodesigns
@dykodesigns 6 жыл бұрын
I remember that the DOS version Ninja Rabbits had an Amstrad joystick option. I've always wondered what that was until I found out that Amstrad had their own PC compatibles.
@RayMerrell68
@RayMerrell68 6 жыл бұрын
Please teardown ye olde Microsoft Precision Pro and show us how that 'patented optical technology' works.
@rich1051414
@rich1051414 6 жыл бұрын
I tore one down when I was a teenager, but I believe it had an IR LED mounted to the moving part and 2 IR sensors mounted stationary(adjustable), and the output of those sensors were compared to get the location of the IR LED. Not unlike modern motion cap :)
@MrDrifterNL
@MrDrifterNL 6 жыл бұрын
The moment you realize that your Tandy TRS-80 Deluxe Joystick was an IBM clone....
@trcostan
@trcostan 6 жыл бұрын
When and how was MIDI implemented in the game port?
@rdxdt
@rdxdt 6 жыл бұрын
Tyler Costantini im not sure if i recall it correctly but the non mpu 401 compatible interface was integrated on the first Sound Blaster by Creative, they used the unused pins on the gameport connector, all you needed was a cable that splitted the gameport connector to another gameport connector and the midi in and midi out DIN connectors.
@absalomdraconis
@absalomdraconis 6 жыл бұрын
The details escape me, but the implementation was a repurposing of extra power pins, and the actual signal was a optically-insulated current-loop carrying fixed-speed serial.
@gunnish1337
@gunnish1337 6 жыл бұрын
Does it have a what-not-gate?
@binaryglitch64
@binaryglitch64 6 жыл бұрын
How does one go about knowing that NE558N V8407 S is generically known as just a 558 chip... with so much other stuff written on IC's how do you extrapolate what means what, i mean even date codes are written several different ways and are not always present on components, so how does one come to know weather they are looking at a modek number, part number, date code, manufacture specific model number that contains a generic model number, etc.? Is that just experience, or is there a method to the madness that is reading component labeling? My guess is it's a mix.., some combination of methods that one gets a feel for which to apply in a given component type given the rough date and type of electronic circuit being looked at by way of experience. Am I close? My current method is to just type the type of component in to a google search and try following it with what's written on the component one Alphanumeric/numeric code than the next, than the next until i get a hit, but it doesn't always work. I did this with an ac fan relay recently and got some love from google, but sometimes i get no love so any hints would be appreciated.
@apexmike849
@apexmike849 6 жыл бұрын
Experience.
@jimmihenry
@jimmihenry 6 жыл бұрын
Holly smoks you can buy a 5 1/4 Floppy Brand new!!! Guess i need a Floppy drive now. Good old times!
@Seegalgalguntijak
@Seegalgalguntijak 6 жыл бұрын
So how does a Joystick nowadays work, if there are still those? Do they still have a potentiometer for determining their position? Or are there other methods that are more clever for digitally reading the X- and Y- position of a joystick? I think maybe some capacitive thingy with two coils on each axis that move in relation to each other and change the capacity of the circuit, or something like that?
@BlackEpyon
@BlackEpyon 6 жыл бұрын
+Applied Science used to make fiber-optic joysticks for use in medical research involving MRI (say, you need to have a patient manipulate something while inside an MRI so you can see what lights up in his brain, and obviously you can't have any metal nearby. Until the USB era, all joysticks were just dumb pots and contact switches, with the ADC on the motherboard or expansion card.
@Seegalgalguntijak
@Seegalgalguntijak 6 жыл бұрын
Midi has been used for Joysticks since the early 90's, my first sound card that I put in my 386 (which was a really crappy card at that) had a midi port that was designated as a "Joystick port". But how did the mechanical part that translates movement/positioning into data change from pots? optical sensors OK, but they can't have been that accurate, could they? Hall sensors is an interesting concept, is a hall sensor capable of measuring the strength of a magnetic field (as opposed to something like a reed switch which only turns on or off)? And how else could this be done?
@BlackEpyon
@BlackEpyon 6 жыл бұрын
Optical is actually quite accurate. What do you think your computer mouse is using? Here's a couple examples of what Applied Science did for controllers utilizing fiber optics: kzbin.info/www/bejne/mpPVp3-HltKFZrc kzbin.info/www/bejne/jmO4m2Zjd8SAidE I'd highly recommend you check out the rest of his videos. If you like EEVBlog, then Applied Science is right up your alley. I recall one of my early game cards was a Gravis dual-port with a little pot on a dongle hanging out the back of the card. I can't quite recall what that dongle was for though. Adjusting something...
@Seegalgalguntijak
@Seegalgalguntijak 6 жыл бұрын
I'm mainly interested in the transition between mechanical positioning and digital data (of that mechanical position), so it's a 90+% theoretical effort for me.
@BlackEpyon
@BlackEpyon 6 жыл бұрын
Encoding wheels. Same way ball mice used to work.
@qwertyFUBAR
@qwertyFUBAR 6 жыл бұрын
Love 'dem EPLS and WWCD (Easy Peasy Lemon Squeezy, Winner Winner Chicken Dinner)
@mrx1050
@mrx1050 6 жыл бұрын
12:50 all the way with LBJ up to 125 K
@shurdi3
@shurdi3 6 жыл бұрын
15:00 Isn't that integral schematic one of the more primitive ADCs?
@izimsi
@izimsi 6 жыл бұрын
well, it's an ADC with time output.
@EEVblog
@EEVblog 6 жыл бұрын
It's basically single slope integration. Multimeters use dual slope integration for example.
@FASTFabrication
@FASTFabrication 6 жыл бұрын
Hello, do you repairs? I am a 1 handed gamer. I have 2 of the old edimensional access ben heck designed controllers. It uses like 4 universal boards so you can move these little pods into different locations. I have 1 arrangement (eventually i like to make my own permanent controller, because i think the universal boards cause issues.) Anyways all 4 of my joysticks (both lefts and rights [use as lefts sometimes with remapping]) ill show input when not being touched or not resetting to 0 after letting go of joystick. Makes playing ro oncket league really hard. I order a ps2 potentiometer but the one that is in the access controller pod has a small 32 pin connector on bottom of it that connects it to the board. I cant even figure out how to get it out of the pod, im guessing you need to pop off the joy stick pad somehow or remove board from potentometer. I be willing to pay for getting new potentiometers in my access pods
@markharrington5826
@markharrington5826 Жыл бұрын
Don't see engineers like this any more do you ?? Very Interesting and they say engineers of the modern world are good ... Mmmmm In those days , and not that long ago , you had to work to component level even up until the late 1990's early 2000's which meant smt ( surface mount components) There was not to much of this , Oh just throw it away and buy a new one or swap the board story You had to be able to read a schematic , draw and assemble test etc What a joke this is now with most of the supposed technical experts on front line desks who only can answer from a script and they do not have a clue at all You may well ask and rightly so as to , "Do you call that training or producing professionals ?" , because I dont !! Excellent by the way !! I thoroughly enjoying watching and listening to someone whom knows what they are talking about and what a change that makes !! On that note I'm going to let the rest of you work out what they have done with this including how your supposed experts you elected tell you how good they have been with training as this become more and more evident in Industry over all particularly in the UK which is quite disgusting as to what they have done never mind a few other factors surrounding this These are jokers you have had power , controlling business for years as I stated on Instagram , they have actually taught you nothing which is why your imports etc are failing , and you have very few UK made exports Its been sealed throw away junk which of course you wouldn't open being advised its too expensive Is it now I wonder and who is paying the price as usual which also now leaves you without people of this category that have that know and how and where suppliers can easily rip you to smithereens See it doesn't work does it or produce professional engineers , designers , installers and many other factors but who am I to repeat all that many other professionals said years ago Could you do one of the Ps2 and how that all works Id be interested to see that too Thank you by the way , very good explanations
@Combat.Wombat.official
@Combat.Wombat.official 6 жыл бұрын
every game: Calibrate Joystick *holds joystick to bottom left and press button* *holds joystick to top right and press button* Joystick calibrated!!! :D
@ZlayaCo6aka
@ZlayaCo6aka 6 жыл бұрын
The joystick looks an awful lot like a Kraft.
@Dellenite
@Dellenite 6 жыл бұрын
Why didn't they use a DAC?
@absalomdraconis
@absalomdraconis 6 жыл бұрын
Dellenite : This is a type of DAC, and a very cheap one at that. More advanced sticks did all sorts of things too (I've read of some sticks reading out different buttons over the button lines based of charge state on a particular axis).
@km5405
@km5405 6 жыл бұрын
who needs micros when you have 555 timers?
@Bleats_Sinodai
@Bleats_Sinodai 6 жыл бұрын
I have an old Genius joystick that my mom wants to use to play Wolfenstein3D (I got the exact model she used to play when I was a kid), but I'm having trouble getting it to work with the USB adapter I found. If anyone knows of a universal or customizable/calibrating type of gameport-to-usb adapter, I'd be super thankful!
@simontay4851
@simontay4851 6 жыл бұрын
Better/easier way would be to just buy a cheap basic PCI sound card on eBay. A creative ensonique/ PCI 128 for example. They have game ports onboard.
@absalomdraconis
@absalomdraconis 6 жыл бұрын
blackcorvo : You'll need an analog to Genesis converter, the info is available online.
@simontay4851
@simontay4851 6 жыл бұрын
en.m.wikipedia.org/wiki/Ensoniq_AudioPCI
@kd1s
@kd1s 6 жыл бұрын
Yep - I have a wireless XBOX 360 controller hooked to my laptop.
EEVblog #1081 - Are Bypass Capacitors REALLY needed?
35:07
EEVblog
Рет қаралды 99 М.
Memristors for Analog AI Chips
16:25
Asianometry
Рет қаралды 124 М.
DID A VAMPIRE BECOME A DOG FOR A HUMAN? 😳😳😳
00:56
НИКИТА ПОДСТАВИЛ ДЖОНИ 😡
01:00
HOOOTDOGS
Рет қаралды 1,7 МЛН
What's in the clown's bag? #clown #angel #bunnypolice
00:19
超人夫妇
Рет қаралды 12 МЛН
I regret not having learned this secret at age 50! I would die without knowing
33:46
EEVblog #1078 - World's Thinnest Calculator Teardown!
32:09
EEVblog #486 - Does Current Flow Through A Capacitor?
17:17
EEVblog
Рет қаралды 433 М.
EEVblog #1045 - How To Drive an LCD
21:45
EEVblog
Рет қаралды 106 М.
How do Video Game Controllers Work?  || Exploring a PS4 Game Controller
9:15
Analogue to Digital Joystick Conversion
8:07
Brek Martin
Рет қаралды 11 М.
Some of the Biggest CPUs ever made - IBM Power5 - 2/3
13:47
der8auer EN
Рет қаралды 54 М.
EEVblog #49 - Decibels (dB's) for Engineers - A Tutorial
20:48
The Agony And Ecstasy Of The BP6
1:03:23
Cathode Ray Dude - CRD
Рет қаралды 81 М.
DID A VAMPIRE BECOME A DOG FOR A HUMAN? 😳😳😳
00:56