555 countdown timer design question

Collapse
X
 
  • Time
  • Show
Clear All
new posts

  • Dannyx
    replied
    Re: 555 countdown timer design question

    Will have to do some real life tests to see what happens in the (very) long run, since the thing will operate 24/7. I read that millis() overflows after approximately 50 days or so.....I obviously can't wait that long, so for now it's something I'll just have to hope doesn't screw me over. If it DOES prove to be an issue, I'll have no choice but to look deeper into it and somehow add more sophisticated timing methods, perhaps even external hardware like I read somewhere about this topic....

    Leave a comment:


  • Curious.George
    replied
    Re: 555 countdown timer design question

    Originally posted by Dannyx
    Long story short: can I make 4 buttons do the same thing without having to fill the code with OR statements ?
    That depends on how the 4 inputs are presented (electrically) to the MCU.

    If they can all be "seen" (queried) in one operation (i.e., readPort or somesuch), then you can examine all of them at the same time.

    Imagine each button indicates when it is "pressed" by reading a HIGH level on some pin. AND, that this HIGH is reflected internally, in the software, as a '1' bit.

    Now, imagine that you "read" something to get the current levels of these bits. Assume that yields an 8bit value:
    76543210
    (the numbers indicating the "bit number", not the "value" of the bit)

    Call your four BIT inputs A, B, C, D. Assume they appear in this 8bit value in these places:
    7A54BD1C
    (note that I've deliberately scrambled their order and NOT arranged for them to be contiguous just to illustrate that they NEED NOT BE!)

    The other bits (7, 5, 4 and 1) may contain other information. Or not. In any case, their values are not of interest to us! So, we effectively have:
    xAxxBDxC
    where the x's mean we don't care about the bit's value.

    We can deliberately ignore these don't cares by masking them off -- forcing them to take a particular value (like '0') with a bit-wise logical operator, in this case, "AND":
    xAxxBDxC
    01001101
    =======
    0A00BD0C

    Now, if NONE of the buttons are pressed, all of A, B, C and D will be '0's so you'll see 00000000 after this operation. If JUST the A button is pressed,
    you'll see 01000000; just B yields 00001000; etc.

    If A and B are pressed, you'll see 01001000; B and C yields 00001001, etc.

    If ANY button or any number of buttons are pressed, you will see something that is NOT "00000000". So:
    buttons = read(whereverthebuttonsare)
    if (buttons & 01001101) { a_button_iss_pressed }

    The "professional" way of doing this is to create symbolic names for each button:
    #define BUTTON_A (0x40)
    #define BUTTON_B (0x08)
    #define BUTTON_C (0x04)
    #define BUTTON_D (0x01)
    and use these to build up a mask that isolates just the buttons:
    #define BUTTON_MASK (BUTTON_A | BUTTON_B | BUTTON_C | BUTTON_D)

    [You'll see that this resolves to 0x4D -- which is 01001101]

    Thereafter, you can do things like:
    masked_buttons = read(whereverthebuttonsare) & BUTTON_MASK;
    if (masked_buttons & BUTTON_A) {at least button A is pressed}
    if (masked_buttons & BUTTON_B) {at least button B is pressed}
    if (masked_buttons & (BUTTON_A | BUTTON_B)) {button A and/or B pressed}

    It gets a little trickier to look for combinations of buttons:
    if ((masked_buttons & (BUTTON_A | BUTTON_B)) == (BUTTON_A | BUTTON_B)){button A and B pressed}

    Also, CuriousGeorge suggested using a variable to store millis(), like NOW or such - should this have "long" before it like the rest of those variables in the code ?
    There's no real SIMPLE right answer, here. There's an inherent flaw in "watching a counter/timer" that my implementation avoids. Pick any size variable (int, long, etc.) There is a maximum value that can be stored in that variable -- just like the "millis()" timer has a maximum value, beyond which it wraps around.

    When the counter/timer/variable gets to that maximum, there is a discontinuity in the values as it wraps around -- the "next" value suddenly is less than the previous value... a LOT less!

    Assume your variable holds values 0-9. When it gets to 9, the next value will be 0. If you are measuring elapsed time by comparing the "current" value to the previous value and forming the arithmetic difference (i.e., current - previous), then suddenly "-9" time units have transpired since that previous time!

    The size of the counter/timer/variable just moves the point at which this happens. E.g., if you can count 0-99 then the 99 to 0 transition looks like "-99" time units.

    Of course, if you happened to capture the value when it was "87" and then again when it was "03" (which is really 103, sort of), you'll see "-84" time units (instead of the 103-87=16 that really elapsed).

    There is a very technical name for this sort of problem. We, in the industry, call it a "bug"! <grin> You have to decide if you want to fix it or live with it... rationalizing that it PROBABLY won't bite you too often...

    Leave a comment:


  • stj
    replied
    Re: 555 countdown timer design question

    you just check your input port for "F" or something else - indicating one of the inputs has changed.

    Leave a comment:


  • Dannyx
    replied
    Re: 555 countdown timer design question

    There's another thing I forgot to talk about: the remote has 4 buttons, hence 4 outputs. My original plan was to have all 4 doing the same thing, which may seem like a stupid idea and defeats the purpose, but will make it easier in the long run for the end user, rather than having to remember which button does what.

    Long story short: can I make 4 buttons do the same thing without having to fill the code with OR statements ? One "hardware" idea I had was to run diodes between each output of the remote module and the same pin I already defined as "button" on the arduino (just to prevent the output of one channel blowing up the rest, though I doubt it would damage anything - just a precaution). The software solution would be to have each channel assigned to a pin and tweak the code, but I'm not sure how you define "button" as being pins 1, 2, 3 AND 4.....not sure if it's possible.

    Also, CuriousGeorge suggested using a variable to store millis(), like NOW or such - should this have "long" before it like the rest of those variables in the code ?

    Leave a comment:


  • Curious.George
    replied
    Re: 555 countdown timer design question

    Originally posted by redwire
    OMG it's Z-80 assembly language! You are dating yourself, I did that kind of coding in the 1980's.
    And, as far as "dating" myself, I started writing code for "microprocessors" on the i4004 -- counting bits to make sure the application would fit in the 1702's.

    Amusing when I see my current designs having more resources on board (many megabytes and gigahertz) than the PDP-11 that hosted the i4004's tools all those years ago!

    Leave a comment:


  • Curious.George
    replied
    Re: 555 countdown timer design question

    Originally posted by redwire
    OMG it's Z-80 assembly language! You are dating yourself, I did that kind of coding in the 1980's.
    I deliberately picked an ASSEMBLY language that was easy for folks to understand. Had I written it for a T-11 or Cortex A5, it would have stumped too many. Selecting a single accumulator machine would clutter the code with lots of loads and stores -- and dramatically increased the RAM requirement.

    I explicitly opted NOT to use any "current" processor as I wasn't inclined to solve anyone's problem "for free"; they'd have to at least invest the time to understand the code and "translate" it to their MCU of choice. Yet, there are still tools available to let someone "motivated" run/simulate the code if they needed proof of its functionality.

    But single chip MCU's are much easier for the hardware build, and higher level languages like C with library routines make software easier.
    HLL's complicate the design in ways that would require far too much effort (on my part) to explain. I.e., try supporting multiple tasks in your HLL implementation of choice without also having to write a fleshier multitasking executive -- and then having to explain how THAT works! I invite you to offer such a solution!

    You'd also need knowledge of the code generator's capabilities so the multitasking executive knows how much state resides on the stack at any given time -- or, add support for a separate stack for each task, etc. I was very clear that the entire application is included in that code -- no support libraries that are buried in some board's firmware.

    Note that there is nothing preventing the pseudocode initially offered from being ported to a HLL environment. But, as it is inherently a multithreaded solution, any such implementation would require illustrating the support (MTOS) required for it, right?

    It's silly to resort to tools that are fancier than necessary. Casually throw in a printf() for debugging and be amazed at how dramatically the code increases in size. <grin>

    Leave a comment:


  • eccerr0r
    replied
    Re: 555 countdown timer design question

    After the end of use of z80s or general purpose computers, they used them extensively for ... microcontrollers. I don't think they were that much more difficult for hardware builds but yes they required more chips due to integration. However I don't think all "modern" microcontrollers are well suited for arbitrary high level languages, especially PIC. The assembly for PIC has so many limitations that doing translation from a higher level language that have scope would be quite messy, though I think PIC is still Turing complete.

    Now the question is who used HC11's and 8051, those were much more popular as well integrated microcontrollers.

    Leave a comment:


  • redwire
    replied
    Re: 555 countdown timer design question

    Originally posted by Curious.George
    Lamp hack.txt
    OMG it's Z-80 assembly language! You are dating yourself, I did that kind of coding in the 1980's. But single chip MCU's are much easier for the hardware build, and higher level languages like C with library routines make software easier.

    Leave a comment:


  • Curious.George
    replied
    Re: 555 countdown timer design question

    Originally posted by Dannyx
    Of course it's going to be a mess - it's my first go at me, your average Joe, writing...though that's an overstatement....messing around with a code this long
    Even after you "clean it up", you will find it hard to understand (without reading every statement) the BASIC actions that you're presenting. I.e., that you're watching for one of two different types of button presses and doing different things based on where the code is at that time. The "states" in the code aren't readily apparent.

    True, I did make the equal vs DOUBLE equal sign error a lot, but I had no idea the environment could be able to differentiate between this being an error or intended, since the symbol is correct either way code-wise and won't stop it from compiling, like a missing { or ; does.
    If you declare certain identifiers to be constants, then the compiler will (can) tell you if you do something (stupid) like try to change one of them after it has been assigned its ONE initial value. So, anything that tries to change longPressTime will generate an error!

    (Imagine what would happen if you could write "true = false"!)

    There was a time (before compilers got smarter) when you would write things like:

    if (12 == count)

    instead of:

    if (count == 12)

    because screwing up the "==" in the first case would be flagged as an error (can't RESET the value of "12" to whatever "count" is, presently). But, this is really hard to read (it feels backwards) AND doesn't handle all cases:

    boxfull = (LARGE == boxsize) 144 : 12;
    if (boxfull == count) ...

    I.e., boxfull is a variable so where should it sit relative to the "=="?

    Not sure what you mean about setup not being used correctly there.
    I'm not saying it is incorrectly used. Rather, that I (without intimate knowledge of the programming environment that you're using) have no idea of how it is supposed to be used and the role it plays. I can only make educated guesses -- assumptions (the root cause of ALL bugs!).

    For example, if I gave you that code for an unknown processor and it contained something called "initialize()" with a bunch of code, you'd probably ASSUME that it was serving the role of your "setup()". In fact, it could have been dead code (code that isn't used!). So, you'd read it and ASSUME that all of those things were being done when, in fact, none of them were! You would miss the bugs that they're absence was actually causing:

    "Gee, the software behaves as if longPressTime was not initialized. Yet, I can see that it is, right over here..." (nope! that code is not running)

    The "NOW" idea is doable. I just had no idea there's a difference in accuracy. Might implement that too.
    There is no way the "environment" (support library) can know that you're expecting millis() to have the same value it did previously.

    x = millis();
    y = millis() + 1;
    if (millis() > y) ...

    this looks like the conditional is taken one millisecond after time x. But, in fact, x might be 45 and y can be 47 (in the case where millis() had advanced to 46 just after the assignment to x and before the assignment to y).

    Reading your feedback, which is very professional indeed and leaves very little room for comment, there are some parts which hint you may not be fully aware of the hardware I'm using, so it's an ArduinoProMini (there's your CamelCase ), so an atmega328p, though I do get your point: you're trying to be cross-compatible and make the codes/language whatever as universally applicable as possible, not just restrict them to this setup...goes to show you know your stuff. Cheers
    Exactly. I shouldn't have to have intimate knowledge of your target platform to understand your code. That makes it less portable, less understandable.

    If there is something that is intentionally unique about an implementation, you want to draw attention to it -- unless you can reasonably expect readers to know it ahead of time.

    For example: "You are parked immediately to the right of another vehicle. So, be sure to ONLY turn the steering wheel hard to the LEFT when moving forward!"

    This appears to be exactly backwards as turning the wheel to the left would cause your car's nose to crash into the adjacent vehicle! OTOH, if "you" are driving a forklift, turning the wheel to the RIGHT would actually cause the damage as the ass-end of the truck would crush the adjacent vehicle (cuz forklifts steer from the back; turning RIGHT causes the ass-end to move to the LEFT so the front end heads off to the right.)

    If I was writing for a forkllift operator, I wouldn't add this explanation. OTOH, if I had no control over my audience, I'd be obligated to include it lest they ASSUME that I had been mistaken in my initial comment (to steer LEFT).

    Leave a comment:


  • Dannyx
    replied
    Re: 555 countdown timer design question

    Of course it's going to be a mess - it's my first go at me, your average Joe, writing...though that's an overstatement....messing around with a code this long

    Nobody is going to mess with the code besides me and it's a work in progress, so comments on each line could come in handy and SHALL be added - true that. For formatting, since I haven't done this before and thus had no definitive style (and there's definitely no rule for this AFAIK - though I may be proven wrong) I chose what I thought would be easy FOR ME to follow. I do favor what you call "CamelCase" - makes the most sense to me. Lined up the If statements with their actions and their "elses"....threw in a blank space between major blocks....just how I thought it should look - no real reason.

    True, I did make the equal vs DOUBLE equal sign error a lot, but I had no idea the environment could be able to differentiate between this being an error or intended, since the symbol is correct either way code-wise and won't stop it from compiling, like a missing { or ; does.

    Not sure what you mean about setup not being used correctly there.

    The "NOW" idea is doable. I just had no idea there's a difference in accuracy. Might implement that too.

    My work procedure involves creating backups as I go, so I'd have like "shortPressTest" > "shortPressWorking"...timer test > timer working (just some examples), then combine the two, so if I screwed up at any point and could no longer follow along with my own code (which rarely happened despite what it looks like), I could backtrack and also keep the work safe. This goes for every work, written or otherwise, that I do: backup the hell out of it !

    Reading your feedback, which is very professional indeed and leaves very little room for comment, there are some parts which hint you may not be fully aware of the hardware I'm using, so it's an ArduinoProMini (there's your CamelCase ), so an atmega328p, though I do get your point: you're trying to be cross-compatible and make the codes/language whatever as universally applicable as possible, not just restrict them to this setup...goes to show you know your stuff. Cheers

    Leave a comment:


  • Curious.George
    replied
    Re: 555 countdown timer design question

    Originally posted by Dannyx
    Here's what I believe to be the completed project. Thoughts, possible issues, opinions are all welcome, just don't sound too professional
    There are two schools of thought regarding this sort of thing.
    • The first is, "if it works, nothing else matters".
    • The second is, "if it works NOW, will it continue to work when someone tries to change it, later?" (could you revisit this code in 3 months and make a significant change WITHOUT BREAKING IT?)

    The (longterm) problem with this style of coding is that you can't "see" what's happening; you have to wade through all of the details to understand just the basics of what it's trying to accomplish.

    [Contrast that with the state tables in the source code I posted -- even if you don't understand the code itself -- and you can make a good guess as to what is happening, there!]

    For example, my code adds a "Precharge delay" after the lamp extinguishes that forces the lamp to stay off for 3 seconds before it can be relit. How hard would that be to work into your code? How hard would it be to add that feature a few months from now (when you've forgotten how your code works)? How hard would it be for someone else to add that to your code?

    Or, add a feature that causes the lamp to flash for the last 5 seconds before it shuts off (so folks walking ddown a long hall don't SUDDENLY find themselves in the dark).

    Having said all that, some specifics regarding your "style":

    Using names for things (like "longPressTime") is a win. It lets you make LIKELY changes without having to chase down weird "numbers" in the code. But, there is nothing that tells me (the guy who has to tweek your code after you've gone) how they are used. E.g., that one represents a time expressed in milliseconds (not seconds, etc.).

    Additionally, there is nothing that tells me that longPressTime is actually a CONSTANT while longPressMoment is a VARIABLE that you happen to be initializing to "0".

    Worse, there is nothing that tells the code these things (so the compiler can't help you catch your mistakes). E.g., imagine writing

    if (longPressTime = millis() - longPressMoment) ...

    when you meant to write

    if (longPressTime == millis() - longPressMoment) ...

    In the former case, longPressTime would CHANGE from the constant value that you intended to some value that depends on millis() and longPressMoment. Modern compilers will catch this sort of thing.

    Consider adding another variable called "now" (or similar). At the top of the loop, assign the value of millis() to this variable. Thereafter, use "now" in the body of the loop. This is marginally more efficient (there is a cost to getting the current time via millis() which in many systems can be considerably larger than just reading a STORED time from a variable). While your current system may have no/little added cost to the millis() reference, when you borrow this code fragment for some future application, you may be chagrined to discover that it is a hugely expensive operation on that "new" system.

    But, the subtler reason is that your code probably hasn't considered the case where millis() changes during a single iteration of the loop. This can cause really hard to locate bugs to creep into the code cuz your mind assumes that millis() on line Y is the same value (point in time) as it was on line X -- even though it could have changed!

    Use whitespace liberally in your code. Note how I injected blank lines and broke lines into paragraphs/stanzas in my source code. Its easier for folks to read a series of statements expressed one per line than it is to see them all crammed onto the same line.

    Develop a personal preference (no real right answer, here) for how you create identifiers. E.g., do you use all caps for constants? (true, false) Do you use CamelCase or under_scores for complex identifiers?

    Nothing references "setup()". I have to assume this is peculiar to the environment you're coding in and some magical entity invokes it BEFORE it invokes loop(). Likewise, I am left guessing what pinMode(), millis(), etc. actually do and the proper way to use them.

    I'm also curious as to the resource utilization, here -- how much CODE, how much DATA -- so you can see how small the potential devices could be to host the application (e.g., nothing indicates the need for longs over ints where you've used them). How do you know it will fit in the particular part you've chosen? How do you know how much you have "to spare" for future additions?

    Leave a comment:


  • Dannyx
    replied
    Re: 555 countdown timer design question

    Here's what I believe to be the completed project. Thoughts, possible issues, opinions are all welcome, just don't sound too professional Does it work ? Yes it does, otherwise I wouldn't have posted it here Ok, so there are a few insignificant details that need to be addressed, like increasing the countdown timer from 2 seconds to 60 seconds, since it was used for testing the functionality of the code and waiting for 60 seconds to elapse every time would've driven me mad The output to the relay is called LED1 but it doesn't matter, that's what I meant by "insignificant details" - things that don't affect the functionality of the code.

    So far it appears to be running OK in both states and the combinations between them, since that was actually the biggest challenge: telling the thing what to do when you're in a state and you issue it a command for the OTHER state.
    Attached Files

    Leave a comment:


  • Curious.George
    replied
    Re: 555 countdown timer design question

    Originally posted by Dannyx
    Never claimed I knew anything - just enough to get by Never took coding training courses or anything
    Most folks are terrified of a "blank sheet of paper", in whatever form it takes.

    I've had innumerable clients completely clueless as to what they wanted their product to do. They needed to see something (i.e., someone else's ideas) -- which they could then criticize: "That's not what I want!"

    In the free software world (FOSS), this is evidenced by the large numbers of people who can "maintain" someone else's codebase -- even contributing significant enhancements! -- compared to the scant few folks who can "create" original works.

    Leave a comment:


  • Curious.George
    replied
    Re: 555 countdown timer design question

    Attached is something that should work -- assuming there are no typographical errors (I just wrote it in Notepad so nothing to check syntax, unresolved symbols, etc. so I fully expect there to be apparently ambiguous SOME_SYMBOL, SomeSymbol and SOMESYMBOL instances).
    Crap, I don't see my attachment! Let's try this, again... (ah, apparently have to click UPLOAD for any attachments -- and, previewing this post I now see it, so, fingers crossed...)

    I will attempt to locate an appropriate assembler/linkage editor tomorrow; today was "goodie day" so I've spent the last 10 hours trying to integrate a fair bit of new kit and don't have access to my software development workstation until I finish these additions. I'd like to be able to discard the kit that's being replaced, ASAP (i.e., tomorrow) so that's the priority!
    Sadly, haven't had time to chase down those tools -- too much kit to sort through and Uncle Sam insists that I have it done by end of calendar year.

    [Of course, each year, I know that year end is coming so you'd think I would learn to start the equipment shuffle earlier...
    Attached Files

    Leave a comment:


  • eccerr0r
    replied
    Re: 555 countdown timer design question

    Hey, Tektronix made a 9 minute delay with an RC delay and an op amp for my 'scope.
    I could not believe they did it this way, but it works!

    3 hours however, this definitely should go into the digital realm to combat leakage inaccuracies...

    Leave a comment:


  • Dannyx
    replied
    Re: 555 countdown timer design question

    Originally posted by redwire
    Hang in there Dannyx, programming the MCU is the hardest part.

    I needed a 2 minute time delay for a heating zone valve. I was going to use a 555 and then switched over to Arduino. Long delays not so good with 555.
    I read a trimpot for the time delay value, and turn on a TRIAC when done.
    Very simple, but I used a simple state-machine in software so the MCU does not "busy wait" generating time delay, so the MCU could do other things like scan buttons, blink LED's etc.

    I tested and debugged using the Uno, then went to ATtiny85 (DIP-8) for the final board.

    I also made the same timer thing for my car, a 3-hour timer (ign key off) for the stereo and cigarette-lighter power, dash-cam etc. Mainly so I can charge stuff or listen to tunes in my car with no key in the ignition and no dead battery if I forget things.
    Valid points all, though I believe I didn't use a single delay in my code for the very reason you clearly pointed out, since I was aware of this issue ever since I've used my first Arduino, a Mega (<<<irrelevant detail but what the hey)

    Leave a comment:


  • redwire
    replied
    Re: 555 countdown timer design question

    Hang in there Dannyx, programming the MCU is the hardest part.

    I needed a 2 minute time delay for a heating zone valve. I was going to use a 555 and then switched over to Arduino. Long delays not so good with 555.
    I read a trimpot for the time delay value, and turn on a TRIAC when done.
    Very simple, but I used a simple state-machine in software so the MCU does not "busy wait" generating time delay, so the MCU could do other things like scan buttons, blink LED's etc.

    I tested and debugged using the Uno, then went to ATtiny85 (DIP-8) for the final board.

    I also made the same timer thing for my car, a 3-hour timer (ign key off) for the stereo and cigarette-lighter power, dash-cam etc. Mainly so I can charge stuff or listen to tunes in my car with no key in the ignition and no dead battery if I forget things.

    Leave a comment:


  • Dannyx
    replied
    Re: 555 countdown timer design question

    Originally posted by eccerr0r
    Hey, it's not my project...
    And a theoretical implementation is useless, need a real world implementation, or you can do it without a microcontroller - use a real 555!
    That was actually where this whole craze actually started: a 555

    Leave a comment:


  • eccerr0r
    replied
    Re: 555 countdown timer design question

    Hey, it's not my project...
    And a theoretical implementation is useless, need a real world implementation, or you can do it without a microcontroller - use a real 555!

    Leave a comment:


  • stj
    replied
    Re: 555 countdown timer design question

    whatever works

    Leave a comment:

Related Topics

Collapse

  • DeanWy
    WD Sentinel DS5100 (NAS) boot issues
    by DeanWy
    Hi all,

    I have a Western Digital Sentinel DS5100 NAS system which has stopped working. It has dual BIOS. I bought the system second hand with an already broken primary BIOS (it rebooted multiple times until second BIOS was used).

    It worked until recently. The system was idle in Windows Server 2012 and a BSOD occurred, I think it was 'critical process died'. Thereafter it didn't boot, it just sat there with no video output and fan speed at 100% (there's a proprietary Windows driver by WD which controls the fan, outside of that it always runs at 100%).

    There...
    07-30-2024, 04:13 AM
  • beogeek
    820-2915-A Wont power on with battery connected
    by beogeek
    Ok so this doing my head in and hopefully someone more knowledgeable will be able to assist.

    I've got a MacBook Pro 820-2915-A it will power on without the battery connected, but when the battery is connected it will do a 2,3-second fan spin when pressing the power button and then nothing.

    After measuring and probing around I found that R7051 was bad, reading high instead of 2.2Ω so I replaced it. Still the same issue, I have the green light on the charger but it won't power on or charge the battery.

    So to cut the long story short I've replaced U7000,...
    02-26-2022, 01:29 AM
  • survivalbloke
    Acer Predator Helios 300 - will not power up if battery is CONNECTED
    by survivalbloke
    This was a no power initially. Thanks to your help, I discovered it was the first mosfet, so I replaced. Now, the device will power up only if the battery is NOT connected. As soon as I connect the battery, it shuts off. If I connected the battery while the device is off, it simply will not respond to the power button. I replaced the battery, and while I suppose the new battery could be faulty, I'm assuming it is not. I'm having the same behavior with the new battery. I measure .2v at the charging coil. Manually applying power to the + and - at the battery header, there is no charging happening....
    06-25-2025, 12:20 PM
  • muhuruu
    PS5 too many USB devices connected
    by muhuruu
    Hello. I have a problem with a PS5 console that I bought to learn electronics repair. The auction description indicated that the console had been dropped. The HDMI port and USB ports were damaged. The HDMI port was replaced by the previous owner, and after his repair, the console worked for 2 days and then became dead. After receiving the console, I replaced all the USB ports. After replacing them, the console started to turn on. On the logo screen, it displays "too many USB devices connected". My further attempts to fix the error involved replacing the Southbridge, 4 TPS2001D chips,...
    05-19-2025, 07:14 AM
  • versionlab
    Weird problem, laptop stays on when connected to another pc
    by versionlab
    Hi, I want to ask for advice about an interesting issue I've been having with a sony vaio laptop.

    Client came and said that "a desklamp touched the back of the lid while laptop was operating normally and it caused the office's circuit breaker to trip. Laptop had never turned on since".

    After taking the laptop apart (checked dc adapter everythin ok), I found a faulty MOSFET on the motherboard which I replaced. Laptop managed to turn on. However, while booting it shut down. Nothing else seemed faulty and thermals were ok. Shutting down was coming at random...
    10-26-2022, 03:43 AM
  • Loading...
  • No more items.
Working...