HOW TO LEARN INDEPTH DETAILS ABOUT MCU's

guyz,
i really wanna learn in depth of MCU's.
i mean like everything. where would you recommend (i mean like all in one)?
in youtube most of the videos are not going too deep.
gimme a guidance, where should i start?
thank youuu :innocent: :black_heart:

1 Like

"MCUs" in general, or some specific MCU(s)?

How deep do you want to go?

Transistor level design?

Details of CPU Core architecture?

This kind of level:

(that's from the ATmega328P datasheet)

Depends where you want to go!

1 Like

Data sheets.

3 Likes

Can you please tell us your electronics, programming, arduino, hardware experience?

Do you have any electronic or computer qualifications?

Thanks.... Tom... :grinning: :+1: :coffee: :australia:

4 Likes

heyyy thank you the reply,
yes i have somewhat knowledge about computers and MCU's,
I am an undergraduate in bICT.
but when I see some advanced topics going on the forum, I feel like a newbie(becuz i am maybe). :innocent:

You could start with a good old UNO. Pick one of the hardware modules such as the UART and read up on how it works from the 328P datasheet.

Try programming the UART registers directly so you learn about baud rate generation.

Most micros have 1 or more UARTs and they all operate in a similar way.

Once you understand UARTs, then maybe move on to the SPI interface, and learn about that. Program the registers directly. Get yourself something simple to interact with - maybe an SPI EEPROM.

You can have a play with timers and then introduce timer interrupts to get a feel of the interrupt system.

Timers can be counters, so maybe play with that feature.

I2C is a bit more involved, but the official I2C spec will guide you.

I started out many years ago with an 8085 and an 8051 at college. I learnt to program with assembly language and to understand how to manage memory and registers at low level - we couldn't afford compilers but I think they were pretty basic way back the.

2 Likes

Sorry - what is "bICT" ?

2 Likes

I would like to learn specifically Arduino platformish MCU's, including the esp series (raspberry too but I don't have hands-on those)

I wanna learn the details of CPU architectures, registers, and memory busses and other stuff in that level.
:black_heart: :innocent:

its Bachelor of Information and Communication Technology :smiley:

So the first thing is to be sure that you're fully engaged with the classes in that course; not just the basic required reading - but also the extra suggested study.

That should teach you the general principles of CPU architectures, buses, registers, memory, interfaces, etc.

Probably the best thing is to discuss with your tutors: they can direct you in appropriate extra reading & study materials that will complement your course - rather than be a side-track or distraction.

2 Likes

Building a 8-bit computer from logic gates can help that.

If you interested look up "8-bit logic computer".

3 Likes

That includes AVR, ARM Cortex-M, ESP - to name but 3 ...

2 Likes

If you are looking for the theory of CPUs and how they really work internally, Hennessy and Patterson is the canonical text. Grab an older used edition: it'll be good enough.

There used to be a very good (and free!) book put out by Motorola (now Freescale/NXP) called Understanding Small Microcontrollers. It's out of print but online here: http://www.bitsavers.org/components/motorola/6805/Understanding_Small_Microcontrollers_1992.pdf It uses as a reference, a much simpler processor than the one on Arduino but the concepts are the same.

If you want details about a specific MCU, then you'll have to search for its datasheets (plural) and Application Notes.

3 Likes

I would still start small with an UNO board otherwise you run the risk of becoming overwhelmed by the complexity of the newer devices like the SAMD21 ARM based Arduino MKR series and the Adafruit Feather range.

For me personally, a Pi is too much for my older neurons to contemplate!

3 Likes

Comprehending the core features of an Uno is a good place to start; there is a large amount to learn right there. The rest will be much easier, once you get that under your belt. Crawl, then walk, then run, then fly. Otherwise, crash and burn.

2 Likes

You should distinguish micro processors from micro controllers.

Peripherals, buses and protocols are topics found in every MCU and around each micro processor. It's worth studying these general topics first, before diving into specific MCUs with one or more processors (ESP32 cores) and any number of peripherals with architecture specific connections and dependencies.

1 Like

Are you talking about the Rapsberry Pi linux computer, or the Pico microcontroller?

2 Likes

This may be "too shallow" but have you ever studied basic logic circuits?

Beyond that, you should pick a processor and study assembly language programming.

If you don't know this, assembly is where every "human readable" assembly instruction represents one (binary) machine code instruction. You can't do assembly programming without understanding what's going on inside the processor.

C++ is "abstract" and usually one C++ instruction is complied to several machine language instructions and you don't (usually) need to know what's going-on inside the chip.

And you can run the same C++ program on different chips even their internal machine code is different, as long as you have a compiler supports that the particular hardware.

The advantage to an Arduino over a "random" microcontroller chip" is the same as always... You get a complete board assembly with the bootloader installed so you don't need to buy a development board or a chip-programmer. (Some PIC chips may be equally-easy to use.)

I've never done assembly programming on the Arduino, but I'm pretty sure you can use the bootloader...

Here is the instruction set for the ATmega chip. It shows the assembly language "mnemonic" instructions along with the actual binary codes (produced by the assembler and loaded into the processor's memory).

1 Like

Nowadays, it's rare that a development board does not come with a chip programmer and a debugger built in - so that's become less of a distinction.

In fact, for someone looking to get into the inner workings of the MCU, a dev board with built-in debugger might be a better choice ...

There are plenty of low-cost options.

Having said all that, the big advantage of Arduino remains the huge community support

1 Like

Hierarchical order of study:
1. Programmable Circuit
2. Processor
It is a programmable circuit that --
(1) Takes command from a user via Keyboard (input device),
(2) Takes data from user,
(3) Chnages data in way the user wants, and
(4) Delivers result (the modified data) to the user via Display Unit (output device).

The Processor needs memory devices (ROM/EPROM, RAM) for the storage and execution of application program. It also needs "interface/peripheral controllers/ports" to connect input/output devices.

The Processor, memory, and interface controllers are connected using address bus, data bus, and control bus.

There is memory decoder to help the Processor to select one memory location out-of-may. Likewise, there is port decoder to help the Processor to select one port location out-of-many.

A Processor is relatively large electronic board containing hundreds of discrete ICs. For example: PDP 11/34.
pdp11-34

3. Microprocessing Unit (MPU) /Microprocessor
It is a single chip form of a Processor without containing memory and interface controllers. For example: 8085A Microprocessor. (it is not equivalent to PDP 11/34.)
image

Block Diagram for the Internal Resources of 8085A Microprocessor:

4. Microcontrolling Unit (MCU)/Microcontroller
It is a single chip that holds MPU, Memory, Interface Controllers, Memory Decoder, and Port Decoder. For example: 89S52 Microcontroller.
image

Block Diagram for the Internal Resources of 89S52 Microcontroller:

5. Advanced Microprocessors
80x86, LX6, etc.

6. Advanced Microcontrollers
ATmega328P, ESP32, etc.

Block Diagram for the Internal Resources of ATmega328P Microcontroller:

1 Like