49 votes
Accepted

Is MCP23017's I2C address matching broken?

It's a known problem with that early revision of the chip. Newer revisions are fixed. My ones are date-coded 0522 (I guess week 22 of 2005, which is about when we got them, back in the days when you ...
  • 958
37 votes

Why do Microcontrollers need a Clock

An illustrative example or two may help here. Take a look at the following hypothetical circuit: simulate this circuit – Schematic created using CircuitLab Suppose to start both A and B are ...
  • 7,639
24 votes
Accepted

Can GPIO pins interfere with each other?

I think I've found your problem, and (I know you won't like this) an accurate schematic would have highlighted the problem to (at least some) readers straight away. :-) Looking at the starting ...
  • 16.9k
21 votes

Why do Microcontrollers need a Clock

I feel a lot of these answers are not exactly hitting on the core question. The micro-controller has a clock simply because it executes (and is driven by) sequential logic. In digital circuit ...
  • 311
19 votes
Accepted

Microchip documentation does not label CAN buss pins on micro controller pinout diagram

The CAN pins do not have fixed pin assignments. Instead you are able to select which of the "Remappable Pins" you wish to use (RP0 through RP15). If you refer to page 180 of the datasheet, ...
17 votes

Why do Microcontrollers need a Clock

Short answer: managers want a simple, testable, PROOF of function before committing to millions (or more) dollars to a design. Current tools, just do not give asynchronous designs those answers. ...
  • 171
16 votes
Accepted

EEPROM endurance in energy meter?

I would not write every event to EEPROM. Most of the time you will have power, so keep the live count in RAM. The amount of energy it takes to save the live value from RAM to EEPROM is pretty ...
16 votes

Why is the 8061 microcontroller described as having 256 bytes of internal memory?

Their terminology is sloppy IMO. In any case: 0x00 - 0x0F are specialized registers 0x10 - 0xFF are memory registers (SRAM) There are only 240 bytes of SRAM. If you need more SRAM than this, you can ...
  • 11.3k
14 votes

What is the PIC micro controller naming scheme?

It's really very simple and logical. The PIC 10 has 6 pins, and the PIC 12 has 8 pins. The PIC 16 uses the 14 bit instruction set, except when it uses the 12 bit instruction set, or when the model ...
14 votes

How are microscopic transistors on microchips made?

Microchips are made using a very wide variety of process steps. There are basically two main components to each step - masking off areas to operate on, and then performing some operation on those ...
11 votes

Why would uart connection only work after disconnecting power?

This smacks of a grounds-not-tied-together issue. It looks like the USB-to-UART device has only 2 lines going to the Pictail board. I would presume those are just the UART Tx and Rx lines, and not ...
  • 8,364
11 votes

Why do Microcontrollers need a Clock

Microcontrollers need to use a clock because they need to be able to respond to events that may occur at any time, including nearly simultaneously with either other external events or events generated ...
  • 44.8k
11 votes
Accepted

Checking when a car horn is pressed?

I'm assuming that you're measuring the voltage with respect to ground, not across the horn terminals. If so, what you are describing sounds like this: Except that the switch is likely a relay, ...
  • 16.4k
11 votes

securely storing and using keys in an embedded system

I'm sorry this answer won't actually solve your problem. But it is too long to fit in a comment, and it will allow you to rethink your problem in the right way (because as it is, I think it is flawed)....
  • 15.6k
10 votes

Why do I get a compiler warning with "int __attribute__((address(0x3000))) x;"

x is a local variable. It doesn't necessarily even get a storage address. So, you can't necessarily assign an address to it. Make ...
10 votes

Why is the 8061 microcontroller described as having 256 bytes of internal memory?

The 120 * 16 is probably just 240 bytes - the 16 indicating a 16-bit wide register.
  • 30.4k
9 votes
Accepted

How are crossing lines implemented on microchips?

It turns out that there are layers, but people sometimes skip those when talking about how a microchip works. The process that introduces layers is called Back end of line, or BEOL. It basically ...
  • 271
9 votes
Accepted

What are the advantages of single-supply (low voltage) programming over high voltage programming?

It should be obvious that the main advantage to low-voltage programming is that it can be done with ordinary logic levels, perhaps through gates already connected to the appropriate PIC pins. The ...
9 votes

Checking when a car horn is pressed?

Here is a circuit which will provide a digital input to your microcontroller, and also provides a filtered power supply for your microcontroller. Transients can be nasty on a vehicle's 12V system, ...
  • 47.2k
9 votes

Strange VIH and VIL specification of MIC4451

This is, in my opinion, a confusing usage of the terms max and min. What they're saying is that the minimum voltage you should apply to an input that you want to drive high is 2.4V, but a typical ...
  • 21.5k
9 votes

Why do lightning data cables have chips?

These chips are used as part of Apple's MFI Certification program. Basically, you have to be a certified developer to sell lightning cables. If you buy a lightning cable from a reseller, you may ...
8 votes

What is the PIC micro controller naming scheme?

8-bit PICs: Baseline Architecture PIC10 PIC12 PIC16 Mid-Range Architecture PIC12 PIC16 Enhanced Mid-Range Architecture PIC12F1xx PIC16F1xx PIC18F PIC18 "J" Series PIC18 "K" Series 16-bit PICs:...
  • 10.5k
8 votes

EEPROM endurance in energy meter?

The solution to the problem is relatively simple. You accumulate the pulse count to a regular RAM location. Then once each 10 minutes you the copy the current value of the RAM based counter to EEPROM. ...
8 votes
Accepted

Send integer values through serial communication in PIC to PIC?

You already are sending integer values over the UART with the code you show. Your problem is apparently sending integers that are more than 8 bits wide. The UART inherently only sends 8 bit bytes (...
8 votes
Accepted

64k x 8 RAM - what exactly does it mean?

It means that the RAM is organised in a structure which is 64K Words wide. The x8 then means that each word is 8 bits. So 32Kx16 would be a RAM which is 32K Words wide, at 16bits per word.
8 votes

Choose a microcontroller

Unless you are targeting a specific feature, nearly all microcontrollers are the same. How you choose can be up to you, but these are some of the things I look for when I am selecting a device or ...
  • 11.6k
8 votes

As a computer science engineering graduate, do I need to learn Assembly language in today's day and age?

Not knowing assembly is just fine UNTIL you have to debug something non trivial. Interrupt trampolines, interrupt entry and exit stubs, missing memory barriers before cooking off a DMA transfer, ...
  • 16.2k
8 votes

Why is the 8061 microcontroller described as having 256 bytes of internal memory?

The 8061 was a Ford-specific engine control product from the 1980s so the information available is pretty sketchy. Assuming it's similar to the 8096, the first 256 bytes of the memory map are devoted ...
8 votes
Accepted

How to use a variable delay in Microchip PIC microcontroller (MPLAB X), without using floating point arithmetic?

__delay_ms and __delay_us are macro's. They are expanded at compile time by the preprocessor and thus only accept constants as ...
  • 4,124

Only top scored, non community-wiki answers of a minimum length are eligible