Learn Microcontroller Programming Professionally

Learn Microcontroller Programming Professionally

Learn Microcontroller Programming Professionally
Learn Microcontroller Programming Professionally

Importance of Programming for Electronics Engineers:

Nowadays most of the electronic circuits use micro-controllers and processors that need good programming level. But you as an electronic engineer can’t learn it in the university.

Maybe you say it’s computer engineers’ duties, but they aren’t familiar with hardware limitations; imagine if a computer engineer wants to write a program that can use only 512 bit of RAM.

So the best solution is the electronic engineers that have a good programming skills and know how to code professionally.

Here we want to challenge your programming skills, Are you ready?

Challenge:

Nowadays that using ARM micro-controllers spread out rapidly, cause a big change in hardware design process, i.e. a 32-bits processor that has enough RAM & FLASH memory and presents high speed beside low consumer power. You might did not use Z80 or 8086 with hardness and complexity that Assembly calculation with 32-bits number made it like a nightmare, or even number calculation with whether fixed or floating point; today, technology changes this nightmare into a sweet dream,

But technology still doesn’t solve the programming challenge.

In this article we want you to write a program (for 32-bits ARM micro) that counts how many one a 32-bit variable has E.g.

Writing this program is simple but in different ways, that we want to discuss.

A Routine Program that Everybody Writes:

Certainly this is the simplest program that anyone can write but it will be so slow, because it must run on a cortex-m processor with a frequency about MHz, in compare with a processor with GHz freq. that of course it doesn’t matter.

First of all, lets explain the program function:

There is a loop for every variable’s bit and check if it is one or not and increase sum as one detected.

so why this program has a poor performance? First and the most important reason is loop (it seems to be necessary), second the calculation such as compare, bit-shift, ADD and the logical operation AND that needs to be calculated in every loop.

We recommend you to read article” It’s not micro-controller fault, it’s about programming” to know how to improve the program performance.

After A Little Bit of Thinking You Write:

As you see we deleted shift and compare operation, in fact they are in the loop; now we have better performance but not the best.

Do you have any idea?

A Program that A Hardware Engineer with Micro-controller’s Knowledge Write:

 

Still there is loop but we deleted the shift and logical AND that means a faster program! What happen and How do hardware help us?

Cortex-m micro-controller series has an option named Bit-Banding; it means micro. allowed to access the SRAM memory bit by bit – both read and write. But how is it possible? The following picture can help you.

Learn Microcontroller Programming Professionally

As you see, every bit of SRAM memory mapped with another address, that you can access every bit by reading or writing its address.

The Perfection One:

We have been check some simple solution so far, using programming and hardware knowledge to perform the result, but can we perform it more? Of course, look at the following:

So we deleted the FOR loop and use the table that speed up the result a lot, in fact BitsSetTable256 table consists of a number’s bits from 0 to 255, means a bite:

This is a challenge for you how we made such a table with 4 line #define. Every 32 bits consist of 4 bites, if we calculate summation of every bite’s bits the result will be variable’s bits. This is the rest of code:

Final Challenge:

So we can use this simple program! But how does it work?

This isn’t a method that everyone can use; beside of writing such a program, understanding this program is not anyone’s job.

Can anyone say how does it work?

 

حمایت از Golnoosh AbdollahiNejad

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

0 نفر

پــــســنــدیـده انـد

توجه

Golnoosh AbdollahiNejad
Golnoosh AbdollahiNejad

studying electrical engineering

دیدگاه ها

2 دیدگاه

  • سجاد
    ۱۳ اسفند ۱۳۹۹

    مقاله ی بسیار اموزنده ی بود ولی کمی اصلاح در نگارش نیاز داره که البته اونم نشوندهنده اینه که خط به خط خودتون نوشتین و هم دانش برنامه نویسیتون هم خوبه.
    خسته نباشید

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

امنیت همیشه و در همه‌ی اعصار، مقوله‌ی مهم و قابل‌توجه‌ ای بوده و همیشه نوع بشر به دنبال امنیت بیشتر، دست به ابداعات و اختراعات گوناگونی زده است. ریموت کنترل یکی از این اختراعات است. در این مقاله، به بررسی امنیت انواع ریموت‌های کنترل خواهیم پرداخت....

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 10 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

چند ماهی هست که تب بیت کوین و ارزهای دیجیتال خیلی بالا رفته! چه شد که این پست را نوشتم همانطور که...

Zeus ‌ Zeus ‌
  • 3 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

حدود ۷ ماه پیش، مسابقه سوم سیسوگ رو برگزار کردیم و کلی نکته در مورد خواندن رشته‌های ورودی را بررسی کردیم. فکر...

Zeus ‌ Zeus ‌
  • 1 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک