Если вы пользуетесь типами данных с фиксированной разрядностью, которые определены заголовочном файле stdint.h, то наверняка 
столкнулись с тем, что софт для программирования AVR не подсвечивает их. Unsigned char, unsigned int выделяет, а uint8_t, uint16_t нет. Вроде небольшое неудобство, но мешает. Оказывается в любой из трех программ - IAR, AVR Studio, CodeVision - это можно исправить и сделать это очень легко. 

 

   В этом посте мы поговорим о простом методе расчета электрических цепей, известном как метод наложения или суперпозиции. Его можно применять для анализа электрических схем с несколькими источниками напряжения. Новичку может показаться, что он не использует такие схемы, но это не совсем так. 
   При анализе электрических схем используются эквивалентные схемы. Это некий упрощенный вариант исходной схемы, в которой ее некоторые части заменены. Так вот в этих эквивалентных схемах обычно и появляются дополнительные источники напряжения. 

   Предлагаю вам несложное устройство, позволяющее управлять нагрузками с помощью инфракрасного пульта дистанционного управления. Устройство рассчитано на пульты работающие по протоколу фирмы NEC. Я бы сделал его более универсальным, но у меня не было под рукой других пультов. Схема устройства предельно проста и при наличии деталей собирается за один вечер. 

   В этом разделе мы рассмотрим некоторые советы и трюки, позволяющие увеличить быстродействие Си кода. Современные компиляторы достаточно умны и применяют различные оптимизации автоматически. Однако ни один компилятор не знает код лучше разработчика, поэтому важно создавать хороших код. 
   Как будет показано в примерах, увеличение быстродействия кода может увеличить его размер. Основываясь на своих требованиях, мы должны находить баланс между размером кода и скоростью его выполнения.

   AVR ядро основано на продвинутой RISC архитектуре оптимизированной для Си кода. Это позволяет разрабатывать хорошие и дешевые продукты с широкой функциональностью.
   Когда речь идет об оптимизации, мы обычно имеем в виду две вещи: размер кода и скорость его выполнения. В настоящее время Си компиляторы имеют различные варианты оптимизации, позволяющие разработчикам получать эффективный код по одному из этих критериев. 
   Хороший Си код дает компилятору больше возможности по его оптимизации. Однако, в некоторых случаях оптимизация кода по одному из критериев ухудшает другой, поэтому разработчик должен искать баланс между ними для удовлетворения своих требований. Понимание некоторых нюансов программирования на Си для AVR позволяет разработчикам фокусировать свои усилия в нужном направлении для достижения эффективного кода. 
   В этой статье мы рассмотрим рекомендации по программированию на Си для компилятора avr-gcc. Однако эти советы могут быть использованы и с другими компиляторами.