- Видео 42
- Просмотров 84 232
Michael Kamprath
США
Добавлен 21 апр 2008
I have many hobbies, including electronics, brewing, data science, retro computers, and family activities. At this channel I will periodically publish videos documenting any one of my endeavors.
Creating a Writable Flags Register on the PUTEY-1 Breadboard TTL CPU
In my last video about my PUTEY-1 TTL Breadboard CPU, I designed and added an advanced ALU. Amongst the features, I added the ability to read the Flags register to the data bus, but the data bus could not write the Flags register. I have come to realize this was a bad design. In this video, I fix that design.
Details on this project are available at: github.com/michaelkamprath/eater-sap-1-improvements/tree/main/bidirectional-flags-register
BespokeASM customizable assembler: github.com/michaelkamprath/bespokeasm
More information on the MCS-85+ by @HelloWorldETX can be found at his channel.
Chapters
00:00 Introduction
00:47 How Other CPUs handle the Flags Register
01:44 Original Flags Register Sch...
Details on this project are available at: github.com/michaelkamprath/eater-sap-1-improvements/tree/main/bidirectional-flags-register
BespokeASM customizable assembler: github.com/michaelkamprath/bespokeasm
More information on the MCS-85+ by @HelloWorldETX can be found at his channel.
Chapters
00:00 Introduction
00:47 How Other CPUs handle the Flags Register
01:44 Original Flags Register Sch...
Просмотров: 1 713
Видео
Upgrading the FEIT Electric Smart WiFi Dimmer for Home Assistant
Просмотров 4,3 тыс.Год назад
I recently upgraded my house to be.a #smarthouse using #homeassistant to automate things and not require a connection to a cloud provider. One of the challenges I had to solve was replacing existing dumb dimmer switches that are part of a 3-way switch circuit. There aren't many smart dimmer switch options that work in a 3-way configuration. I did find one smart dimmer switch that fit my wiring ...
The Vintage T.E.A.M.M.A.T.E. Game Computer - Part 2: Refurbishing and Programming
Просмотров 1 тыс.2 года назад
When I was 10 back in the year 1980, I received a game computer called the T.E.A.M.M.A.T.E. Game Computer made by a company called Logix. It was a quirky device that was somewhere between "computer" and "toy". One thing you could not do on this computer is run your own code, but I intend to change that. Over 40 years later, I will finally attempt to reprogram this vintage computer with my own c...
The Vintage T.E.A.M.M.A.T.E. Game Computer - Part 1: Dumping the ROM
Просмотров 1,9 тыс.2 года назад
When I was 10 back in the year 1980, I received a game computer called the T.E.A.M.M.A.T.E. Game Computer made by a company called Logix. It was a quirky device that was somewhere between "computer" and "toy". One thing you could not do on this computer is run your own code, but I intend to change that. Over 40 years later, I will finally attempt to reprogram this vintage computer with my own c...
Tech Talk on Building a Custom TTL CPU
Просмотров 2,6 тыс.2 года назад
In my professional life I work as an engineer for a company called Tubular Labs, which is a company to measures the performance of social videos on platforms such as RUclips, Facebook, and TikTok. The engineering team frequently has "Tech Talks", during which someone gives a presentation on a technical project, either a project from work or a personal project. I recently gave a tech talk on my ...
Designing an Advanced Arithmetic Logic Unit for the PUTEY-1 Breadboard TTL CPU
Просмотров 3,5 тыс.2 года назад
After much effort, I have finally upgraded my PUTEY-1 breadboard TTL CPU to be able to do 64-bit math. This was done by significantly improving the Arithmetic Logic Unit over the original SAP-1 based ALU. In this video, I review the motivation and hardware design for this change. Short video describing ATF22V10C Programable Logic Device chip: www.tiktok.com/@michaelkamprath/video/71175043482838...
Building the Minisforum EliteMini HX90 Mini PC
Просмотров 3,6 тыс.2 года назад
I find that the Minisforum HX90 to be a great value for the raw performance you get with its AMD Ryzen 5900HX CPU. Combine that with 64GB of 3200 MHz DDR4 RAM and a fast NVME SSD, this computer makes a great low-cost compute node for a personal computer cluster. In this video, I discuss my use case for this computer, then I unbox and build it. If you would like to make a similar build, here are...
Overview of the 74LS194 Bidirectional Shift Register
Просмотров 1,5 тыс.2 года назад
In this #short video I go over the 74LS194 Bidirectional Shift Register. I plan to use this chip in my forthcoming "advanced ALU" improvement to my PUTEY-1 TTL CPU. This chip enables the use of bit shifting to accomplish multiplication and division faster than is possible with 74LS283 adders. More information about my PUTEY-1 breadboard TTL CPU can be found at my Github repository at: github.co...
Upgraded ALU Teaser for PUTEY-1 Breadboard TTL CPU
Просмотров 1 тыс.2 года назад
I have been hard at work designing, building, and debugging an update to my PUTEY-1 breadboard TTL CPU the implements a more capable Arithmetic Logic Unit. I have completed the hardware and software part of the effort, and nor I need to work on documentation and then making one or more videos about he project. Given that I do this in my spare time, it might be a few weeks until the video is rea...
Adding an LCD Display on the PUTEY-1 breadboard TTL CPU
Просмотров 1,8 тыс.2 года назад
In order to better display the results of computations on my PUTEY-1 Beta breadboard TTL CPU, I needed to upgrade the output display from a 2-digit 7-segment display to something that can show a fuller range of characters, and more of them. In this video, I go over the design, integration, and use of a standard 20 by 4 character LCD display (LCD20x4) with my home brew CPU. I also go over in mor...
Adding a Stack Pointer to the PUTEY-1 Breadboard TTL CPU
Просмотров 1,9 тыс.3 года назад
Adding a stack pointer is a significant step in making my breadboard CPU easily programmed. With a stack pointer, I can leverage reusable functions and easily create temporary variable in RAM. But implementing a stack pointer is more complex than just simply adding another register to the CPU, especially if you want to be able to ditch values at arbitrary depths into the stack. In this video I ...
Demonstration of 16-bit Math on 8-bit PUTEY-1 TTL CPU (Beta-2)
Просмотров 7933 года назад
I'm still in the process of finishing out adding a stack pointer to my PUTEY-1 breadboard TTL CPU computer. However, I have gotten things to the point where I can demonstrate functionality. Here, I have programmed the computer to calculate the factorial of a number using 16-bit math. This is an achievement because the ALU and data path on this CPU is 8-bits, still configured as the original Ben...
Building an 8 Bit Instruction Register for the PUTEY-1 TTL CPU
Просмотров 2,6 тыс.3 года назад
Building an 8 Bit Instruction Register for the PUTEY-1 TTL CPU
Fourth of July Fireworks on Minecraft 2021
Просмотров 513 года назад
Fourth of July Fireworks on Minecraft 2021
64K RAM & ROM Module for the Breadboard TTL CPU - Part 2
Просмотров 2,5 тыс.3 года назад
64K RAM & ROM Module for the Breadboard TTL CPU - Part 2
64K RAM & ROM Module for the Breadboard TTL CPU - Part 1
Просмотров 5 тыс.3 года назад
64K RAM & ROM Module for the Breadboard TTL CPU - Part 1
Adding Increment Registers to the Ben Eater SAP-1 Breadboard Computer
Просмотров 3 тыс.3 года назад
Adding Increment Registers to the Ben Eater SAP-1 Breadboard Computer
Adding More Control Lines to the Ben Eater SAP-1 Breadboard Computer
Просмотров 4,2 тыс.3 года назад
Adding More Control Lines to the Ben Eater SAP-1 Breadboard Computer
ASRock DeskMini X300 with AMD Ryzen 7 PRO 4750G Build Time-Lapse
Просмотров 6 тыс.3 года назад
ASRock DeskMini X300 with AMD Ryzen 7 PRO 4750G Build Time-Lapse
Fixing the 74LS157 Signal Integrity Problem on the Eater SAP-1 Computer
Просмотров 2,4 тыс.4 года назад
Fixing the 74LS157 Signal Integrity Problem on the Eater SAP-1 Computer
16x8 RGB LED Matrix - Space Invaders Animation
Просмотров 6944 года назад
16x8 RGB LED Matrix - Space Invaders Animation
Plasma effect on 16x16 RGB LED Matrix
Просмотров 2,1 тыс.5 лет назад
Plasma effect on 16x16 RGB LED Matrix
Demonstration of smooth scrolling with a TMS9918A VDP
Просмотров 1,9 тыс.6 лет назад
Demonstration of smooth scrolling with a TMS9918A VDP
Nyan on RC2014 with TMS9918A Video Board
Просмотров 2,9 тыс.6 лет назад
Nyan on RC2014 with TMS9918A Video Board
Plasma effect on 10x10 RGB LED Matrix
Просмотров 6 тыс.6 лет назад
Plasma effect on 10x10 RGB LED Matrix
Can it run BASIC
this is dope. i wondered how it is done...so it is code burned onto the chip...never knew
Thank you very much!!!! It helped me a lot in solving the problem🙏👍
@00:00 Now thats a Breadboard....Jealous
Thanks, I had exactly the same problem and this fixed it. Great explanation!
Glad it helped!
This is a very old computer, but have you checked if it is Y2K compliant? This is very important, if not people show up on leap-years day when they would have ben free, or people bring back their rental video to late.
I don't think it is Y2K compliant! I'll look into fixing that ;-)
This is wonderful. The microprocessor / microcontroller is interesting, because it was used in a navigator of some kind. How could a jet fighter have been ordered around if the navigating processor only has 64 bytes of memory? I guess it only worked with the four directions of the wind and a home-button.
I didn't know that! But, if it was an incremental improvement over a system that had no internal microprocessor, I could see it doing something useful. For example, 64 bytes of RAM would be sufficient to calculate airspeed based one. a few measurements from a pitot-static tube.
Can i add an additional 2 tb m.2 And two additional 1 tb ssd drives for a total of 4 tb ? Also do these not come with a OS pre installed? When i turn it on?
Awesome video, thanks for taking the time to make this. It really helped me get these costco switches that I bought online Nov 5, 2023 in a three pack to work. One change to the version I got... they are actually using the BK7231N chipset. Now if you try to flash the BK7231N UART file from github you will get a CRC not equal error: $ python uartprogram ~/Downloads/OpenBK7231N_QIO_1.17.661.bin -d /dev/ttyUSB0 -w UartDownloader.... programm.... CRC not equal : |##################################################|[ 15.0k/s] To correct you have to add the -u and -s 0x0 to flash this particular chipset using UartDownloader: python uartprogram ~/Downloads/OpenBK7231N_QIO_1.17.661.bin -d /dev/ttyUSB0 -w -u -s 0x0 UartDownloader.... programm.... Write Successful: |##################################################|[ 14.8k/s] Thanks again!
Thank you for this! I was missing the -u flag and couldn't get past the CRC error. Success!
Can it be programmed for long press and function as a dimmer?
@@GikOnFlik the switch is a dimmer. When you press it you will be controlling the internal dimmer hardware. However, you can connect HA to these signals too.
Thanks for sharing. This is 10/10. In home assistant, under available entities for this switch do you only see on/off or is there dimmer entity as well? If you combine the switch with smart colour bulbs, will the dimming button cause it flashing (due to buttons lowering voltage) or you can setup the dimming buttons as smart buttons and assign home assistant action
@@GikOnFlik if you use the configuration I make reference to in the video, there is a dimmer entity and an entity for LED brightness.
@@MichaelKamprath Thank you for your reply. I got the switches yesterday and solder the pins. Will attempt to figure out the flashing and configuration today. Would you say information in this video is most accurate or maybe there is a post on forum with latest and more detailed information / walk through?
I have the MK38P70 chip and programmed the EPROM that sits on the IC. It works as per your schematic. I am 68 and don't remember this computer, though that was a long time ago. I would like to use a more standard keypad which would require reprogramming the key scan routines. That's where my problem is. The disassembled file in your github has numerous errors in particular BF using the 90 op code and BF using the 94 op code which are supposed to be BR for 90 op code and BNZ for 94 op code. There are other errors in the disassembly that would require painful editing. Its a DASM program error obviously. I will continue with the project using discrete push buttons since it seems interesting with what I have proto boarded so far.
So I ultimately abandoned the disassembled ROM because I realized that there was no easy way to differentiate between in place data and instruction byte code. Furthermore, as you point out, some of the byte code just looked wrong. What I think was happening was they were using the unused bits in the instruction space to store information, but I didn’t spend the time to figure out what. For discrete push buttons, check out this other project I did just to learn programming the MK3870: github.com/michaelkamprath/mostek-38p70-computer
@@MichaelKamprath Excellent work. I have the version that uses the 2764 EPROM. Far more than I could ever hope to use but putting the 2k image for the teammate works fine. I tried experimenting with these 20 years ago but had problems finding an OP code for a lookup table in ROM. I have since favored more capable microcontroller chips but the documentation for the 3870 seems more complete now.
Amazing job figuring this out and providing a solution!
This is a great video, really don't want to take anything away from it at all. I love the very detailed approach. That said, I couldn't get it to work at first, and found some extra help on some web pages elsewhere. Two things that got me going: 1) I was getting a lot of disconnects on the UART, sometimes exactly when I plugged in the board. This was because it had an insufficient power supply. Having a steady, independant 3.3V power supply is almost mandatory for this procedure. Then connect the ground on that power supply to the one on the UART should solve disconnection problems. 2) Some UARTs just flat out don't play nice. The first one I tried was giving write errors, the second one wouldn't find the bus at all... and the third one I tried worked. Again, thanks! These switches are currently on sale near me for $30 (Canadian!) for three. Hoping to get this working in the whole house.
Thanks for these tips! Admittedly my UART “just worked”. But you’re right, there is large variety of UARTs out there.
Thanks! I followed yr steps last night, and no luck, finally I found that my chip is BK7231N. I used python based flasher but I can’t connect the openbk device after setting wifi. So I turned to use gui-flasher and config the ssid & static ip at the same time. Finally, I success!
I watched ben eaters series ~1 year ago and I now love this kind of thing. Great job man
Yeah, same here. Unfortunately (or fortunately depending on perspective) my day job has gotten busy and I don’t have the same time I used to to work this project.
I have about 40 of these dimmers and 50 of the plug packs, as well as many of Feit's LED offerings of all varieties. I have other devices that are different manufactures, but have used Feit as much as possible due to great cost, and trying to keep as much in one brand as possible. I do not like the cloud, but have used it as such as I have not had the time to sit and poke around the firmware. I do have home assistant setup for my IP cameras. Besides the usual culprits of the cloud (tracking, etc...) the one big thing that drives me nuts is the constant having to power cycle (hard breaker shut off or plug removal) to reset communications. I found I get "device offline" errors periodically. No rhyme or reason. Sometimes its often, sometimes I can go months without the error. My biggest curiosity is how your operation and comms have been? I seen from another comment you have been using this setup now for a year? Hoping you say you had no offline error issues!
In the 1+ years I have used these FEIT switches since I refreshed them, I have never had a reliability problem with them. I've only have reliability issues with ESPHome devices.
@@MichaelKamprath Awesome to hear! Appreciate the feedback and now certainly can't wait to make the change myself to my units :)
You could always display the input in the hex display and output to the matrix which is effectively 16 bit.
Yeah, but I would need to implement some sort of scrolling for the hex display as a 16 bit number needs 4 hexadecimal digits to display it (each hexadecimal digit is 4 bits).
@@MichaelKamprath You can display the results in binary on your "16-bit" LED matrix. One nibble per row. The suggestion doesn't make it more user friendly, but hex isn't user friendly either. It's just easier to manipulate. You could effectively show 24 bit integers, if you didn't mind part of it binary and part of it in hex, but I'm not sure if you'd have enough ram to implement something like that.
@@mikechappell4156 oh I totally misunderstood you. Yeah, you're right.
Great explanation. Thank you for producing these. Love to see the differences and enhancements. Geeking out on this series. I'm starting a similar project to really learn how all of this works in practice and have what may sound like a silly idea in regards to the control lines and would love your take or pros/cons. I'd like to make my build using PCBs and be as modular as possible in order to change things, upgrade parts, etc. I'm going down a similar path or model or the control lines (I need more than 16), but instead of having the 238, thinking of adding a +4 bit dip switch on each board to "set an address" and have each board receive that address instead of the single signal. Using an adder or comparator to decode. I realize this adds more ICs for the decode part on each board (say a few $$ is not an issue), but gives me more flexibility in configuring. Do you have any initial thoughts on this model? Yeah/Nay...
Just stumbled on this channel and geeking out the vids and all the info on GitHub. Is there a way to send you an email somehow?
What gauge wire are u using?
Also, another question just came into mind - is it possible to use a RaspberryPi to (re)flash this device since it does have on-board 3.3v its UART pins.
Sounds like you could in theory, you'd just need to use the right port device with the flash software.
Is there any way to read the original firmware off of these units to back them up? I have a bunch of these dimmer switches - bought them from Costco in multipacks and would love to migrate them to be local IoT devices and not rely on someone elses' cloud service. Thanks.
Unfortunately, not that I know of. But I have been using these switches updated as I describe in the video for a little over a year now, and never once thought "I wish I could restore to original cloud based firmware".
@@MichaelKamprath Well, in your video you used the -w parameter for write. I'm guessing there's a -r for reading? I guess I'll be taking apart my unused dimmer switch to find out! I'll let you know how it goes.
@@DarrenYung yeah, but I don’t know how to put the MCU into a state where you can dump its flash memory.
Well looks like I'll have to poke around some more. My board is slightly different than yours. I don't see tx1/rx1 labeled connection points, nor the write pad on my board. I think the chip on my board is labeled ht66f0185.
Well further digging it looks like I have an older device. The Wi-Fi antenna looks like it's on a separate Device unlike yours which looks like it's made onto the board. Also looks like others use tuya to connect it to Home Assistant! Thanks for the quick response and sharing your video. When I get home I'll share my units model number.
This is great! Flashed my switch and it works great. I'm new to MQTT. I can get on off to work fine but when I add dimmer to the config.yml it won't update the current state anymore. I got around it by making 2 different light sections. If you could share your MQTT config that would be super helpful. Thanks for creating this.
I think you mean the config.yaml file for Home Assistant, am I right? My MQTT “config” is just what IP and port the MQTT server is running at (I am using Mosquito in a docker container). Remember, MQTT is just a transport for the messages between the switch and Home Assistant. Think of it like the “wires” between the switch and home assistant. Home Assistant is what you configure to act on the switch actions. I did provide an example Home Assistant configuration for this switch. Admittedly the switch configuration is in the MQTT section of the Home Assistant configuration, but that’s not the same thing as configuring MQTT. To have more than one switch, you don’t make multiple light sections. You just make multiple entries under light. Notice the - preceding the switch’s configuration under light. That is YAML’s list item deliminator. Look up the YAML list syntax if you are not familiar with it. For the second switch configuration, make sure you use a unique ID and command/status topics, and you configure the relevant switch accordingly.
It would be helpful if you described what youre doing during install.
Thank you for the explanation, great video
Glad you liked it
18:28 im only one who reset count on micro code.cpu model is faster when not allways need 8 step
17:35 yes same as A/B/OUT. just register latch data out and in
take register a desing put it in IR and same thing for IRD yes they just 2 register hold data xD same time need change ram for 8bit. even IRD not actuallt need we allready know after read op next is data and we move it straight to ab or out what eva, but nice hace d register LOL. no one stop me make HL pair LOL
Hello, I just learn OpenBK today and was able to flash my new dimmer switchs. Everything work good and I even tweak the Autoexec.bat file to control the LED Status light on POWER state. so led turn OFF when lights ON. this help to find the switch when room is dark. I post my Script on the forum thread of Feit Dimmer
Great video! I will updated the firmware of my switches soon with the procedure that you described, so I will be able to control them with Home Assistant! Thanks for the effort to make this video and the clarity of your explanations!
Glad you found it helpful. I can say these are great switches made batter by removing their cloud connections.
I’m not as concerned with the cloud service scenario.. however I’d like to use these on Apple Home… it doesn’t seem super straight forward, do you have any guides or recommendations on how I go about doing this?
I have never looked into getting these switches connected to Apple’s cloud service. That would be antithetical to what I was trying to accomplish here.
You could use Homebridge or HomeAssistant to expose these switches to your HomeKit
Hi ,thanks for the video. What is the name of the ssd cable and where can I get one?
The SSD cable you saw me use in this video came with the EliteMini HX90. It’s a custom cable for that computer.
Hi, can I use this tool to save a copy of the original bin file? I have one dimmer that I may have screwed up. I would like to use the original bin from one untouched dimmer and put it on the bad one. Is this possible? Thanks.
I do not know if there is a way to dump the original EPROM image.
I wish that I can changed the video card on that it would be cool if they sell GPU chip for Nvidia GPU that would be damn cool if they sell that way
Fantastic little add on to play with the expansion port. Also, really like that purple PBC. I've got a minimal built out on bread boards and it's nice to see another person tinkering with it in addition to slu4 of course.
This was just a "warm up" expansion card. I've got another expansion card for the minimal 64 that is a little more interesting brewing ...
@@MichaelKamprath neat, I'm looking forward to seeing what's next. I'd like to add a sound card myself. Nothing fancy just a PC speaker style setup running off a programmable interrupt timer where the main system stores the pitch in a memory location that is exposed to the timer. Sorting out a timer that stays true to the bare TTL construction of the minimal shouldn't be too bad. Trick will be not letting it be too much of a drag on the system performance.
You might need to provide your own clock for the programmable timer. The Minimal 64 system clock that you get at the expansion port is not consistent. It’s “6 MHz”, but really it’s 8 MHz skipping one cycle but with the peaks still align to the original 8 MHz timing. This means one clock cycle will be twice as long as the other two. Using that to generate a tone will create off harmonics.
@@MichaelKamprath I was thinking of expanding the expansion port to include more of the timing signals. Maybe the oscillator output and the vsync/hsync. The oscillator output run thru a buffer should be clean enough for tone generation. And then also an extra control line or two in addition to the inhibit line to handle bus control when there is more than one expansion card present. Long term the plan is to have a board printed that incorporates 2 to 4 expansion ports and a few other minor changes to the 1.2 design such as replacing the 8 input OR/NOR with easier to source 2 input ORs and NORs+AND, adding a pin header for reset and power on switches located off board. Ideally I'd love to fit this all in a mini-ATX footprint but I think a full size ATX board is more realistic especially if I want to leave the space near the expansion ports fairly empty.
2 AND chips, a NOR chip and 2 XOR chips. I think it might fit but I wonder what the propigation delay would be. At least the 2 AND chips were completely used.
No since if you look its its not if input 1 and 2 are on, if its ONLY 1 and 2. still i think his design could be smaller urs wouild not work
Even though there are many wires you did a great job organising them.
thanks
If you use an mqtt broker like mosquito won't HA autodetect the switch? I'm new to mqtt, but I thought HA will autodetect devices on the same network as the HA server.
The device has to broadcast an announcement message at a path HA is looking at for HA to auto detect it. I believe OpenBK does support using that announce message. Clearly, I didn’t use it.
@MichaelKamprath I am under the impression that tuya cloud cutter supports these dimmers and allows them to function in esphome and can flash these devices over the air. This is what drew me to your video as I currently have several FEIT devices from 2020/2021 that I am currently using with local tuya in my HA instance. I am happy, but would want them to be fully local hence my research.
@@7MBoosted I will have to check that out.
Putey what a beauty !😊
1:03:20 so you made a function that generates a random number?
Well, “pseudorandom number”, but yes, I had to make that function.
Thank you,you are my life saver!I deal with it all day and find this video!
and here is another question,if i change the address , sometimes when i switch back to the origin address, the data will be changed.
Happy it was helpful for you!
never mind,i fixed it
So many wires!
Indeed!
Promo-SM 🌷
Thank you for going in to details on what the analouge parts of the board does, like what the diode is for, and how the transistors are used to ground the leads to the digit displays etc. I learned a lot! I found this video very entertaining and interesting, and I am looking forward to look at the rest of your videos! Happy to have found your channel!
Glad you liked it!
Ok I have a question about the Schottky diode part of the solution. When the clock goes high the capacitor is charged. when the clock goes low how does the capacitor discharge with the Schottky diode in the way of current flow?
Note that on the other side of the capacitor from the diode is a connection to ground through a resistor. That pulls the voltage down on the capacitor side when the clock goes low. It is in fact a “pull down resistor”.
But I realize you mean what discharges the diode side of the capacitor. Admittedly I don’t have a good answer on how the electrons flow there. I can tell you (based on oscilloscope) the voltage does drop.
Thank you.
You're welcome!
There is other way to make a stack pointer, i see some other videos building a simple register and use it as stuck pointer, i wich you could make a video on making a stack pointer standard for the simple guys like me. Thank you for sharing your knowledge.
You're welcome