May 16

Официално: Arduino/Genuino MKR1000 вече е на пазара!

Почти половин година, след официалното му обявяване, Arduino/Genuino MKR1000 вече се продава официално. Очаквам този продукт да се появи скоро и в България.

Continue reading

May 14

Комбиниране на Struct и Volatile в C/C++

Покрай един проект с Ардуино възникнаха няколко въпроса:

  1. Volatile ли са елементите на дадена структура, ако самата тя е декларирана като Volatile?
  2. Може ли в структура да има както обикновени елементи, така и Volatile елементи?
  3. Как се дефинира указател към Volatile структура, която не е маркирана като Volatile в нейната дефиниция?

Continue reading

May 14

Служебната дума Volatile в C/C++

Компилаторите имат редица опции, влияещи върху оптимизацията на кода. Включвайки една или повече от тях, Вие разрешавате на Компилатора да прави “подобрения” на вашата програма, при превеждането й на Асемблер/машинен код. Обикновено оптимизациите не са проблем, но започват да създават главоболия при многонишковите приложения (Multithreading), Interrupt Service Routines (ISR), работа на ниско ниво с регистри на крайни устройства  и т.н.

Главният симптом е: програмата Ви работи добре, докато не включите оптимизациите. След това започват да се случват “странни неща”.

Continue reading

Apr 13

Първи стъпки с Arduino (SoftUni) – Проектът

Петте седмици от курса отлетяха толкова бързо! И дойде време за проект и защита 🙂

В последния момент и много на бързо (така се стекоха обстоятелствата) успях да сътворя нещо семпло:

Continue reading

Jun 03

Мистерия: if (something==NULL) или if (NULL==something)?

   Нека разгледаме следния програмен отрязък:

[code lang=”C”]if (NULL == someApiPointer)
{
  //do something here
};[/code]

Защо сравняваме NULL със стойността на someApiPointer, а не обратното – както са ни учили в училище и както изглежда по-логично?
Когато за първи път срещнах подобна конструкция си помислих, че има нещо специално в нея – прави се от гледна точка на сигурността или пък е нов стил на писане?

Continue reading