• 0 Posts
  • 8 Comments
Joined 1 year ago
cake
Cake day: June 10th, 2023

help-circle

  • Read other people’s code… particularly code by experienced developers. One good way to do that is to single-step debugging through the test code in a well-known package, stepping into the code being tested.

    I suppose if you don’t know how test frameworks like pytest work, tackling how they work and how to do single-stepping with some toy example code will be a prerequisite for the above, as will spending some time studying how packages are made. (The latter may seem unattractively tedious, but the knowledge will pay off even if you never become an expert at making your own packages.)

    These exercises are very likely to expose weaknesses in your understanding of all sorts of things. Be patient and keep studying!



  • Resistance is like shocks on a car… push hard to compress and it compresses faster. push less hard (voltage) and it doesn’t move as fast (current). Pull it (negative voltage) and it expands (current flowing the other way). Resistors resist (voltage against) flow (current).

    Capacitors you sorta seem to get: current flowing in one direction through a capacitor builds up voltage the remains after the current stops… like the force in a spring builds up as it compresses and when the motion stops the force is still there.

    What you seem to confuse with resistance is inductance, where the force (voltage) on an air hockey puck makes it speed up (current flow), and when the force stops pushing it it just keeps moving (current keeps flowing).

    The general term for these voltage-current relationships is impedance, because in the general case where voltage or current is oscillating or rapidly switching on and off you get some effects that resemble resistance (voltage pushing back on current or vice versa).

    Final concept is that any time you have something trying to force specific levels of current or voltage on a pin, the “setter” (whatever is doing the forcing, typically referred to as the “source”) has impedance and so does the “getter” (whatever is being forced, referred to as the “load”). If you have a fishing rod and you want the tip to move slowly, you can easily move it where you want it to go, but if you want to shake it fast it won’t move as far (the weight of the tip is like inductance resisting the motion with force/voltage).

    So, a microchip pin might have high resistance to ground but also high capacitance to ground… and a quick pulse of voltage will immediately cause current to flow into the empty capacitor, and if the capacitance is big enough the voltage won’t change much, or will require more time to change. High capacitance has low impedance… it sucks up any available current as the desired change in voltage happens. interestingly, there are two options for making the pin voltage change faster… increase the current level being used by the source (by reducing impedance within the source so it can get out to the pin easier), or reducing the amount of current required to change the pin voltage by raising the impedance to ground inside the chip package (that is, reducing the capacitance inside the chip package).

    When the source impedance is very very large, that is like having the signal generator probe laying on the bench instead of connected to the pin. When the source impedance is large and the internal pin impedance is large, then any stray electric or magnetic fields can push the pin voltage around easily. This is what they call floating… and if the microchip is reacting to those erratic voltage signals then the circuit as a whole will behave erratically as it tries to react to noisy input.

    An output pin usually (but not always) has a lower source impedance than a tri-state input in its high impedance state. If you connect it to a floating input then the input stops floating and follows whatever the source is forcing it to.

    An input pin usually has an input impedance similar to the source impedance of sources connected to it… this generally allows the input to be controlled most quickly. Inputs whose voltage doesn’t change quickly tend to be less useful than ones the do change quickly bandwidth and clock speeds can be faster.

    If you try to connect microchips built with different technologies together (e.g. CMOS vs TTL) then they may not communicate quickly or with minimal wasted power because they have different typical impedances (and voltage levels).