Препроцессор C

Си препроцессор представляет собой макро язык, который используется для преобразования программы до того как она будет скомпилирована. Причем сама программа может быть не обязательно на Си, она может быть на С++, Objective-C или даже на ассемблере. В общем препроцессор представляет собой примитивный как-бы функциональный язык, с помощью которого можно делать вполне интересные вещи.


Читать дальше

Переходим от AT90S2313 к Attiny2313

AVR
Микроконтроллер AT90S2313 фирмы Atmel снят с производства, поэтому найти его сейчас крайне трудно.На смену ему пришел Attiny2313, который продается на каждом углу.Тем не менее, проекты под AT90S2313 присутствуют в интернетах и старой литературе по AVR.Чтобы переделать прошивку МК под attiny нужно внести некоторые изменения в программу.В этой статье мы рассмотрим эти самые изменения, так сказать «как перетащить на более новый контроллер сферический проект в вакууме»©Lifelover.



Читать дальше
  • +2
  • 21 июня 2011, 13:13
  • rad

Радио модуль RFM70

RFM70
Радиомодули RFM70 фирмы HopeRF представляют из себя маломощные приёмопередатчики нелицензируемого диапазона 2.4 ГГц с неплохими параметрами и очень привлекательной ценой. Конструктивно, модули представляют из себя печатную плату 13х17 мм с микросхемой-«каплей» и печатной антенной.

Модуль работает в диапазоне 2400-2483 МГц, который разбит на 83 канала, при максимальной выходной мощности около 3.2 милливатт (5 dBm). Максимальная скорость передачи данных составляет 2 Мбит/с., что очень даже не плохо — можно передавать несжатый звук в обе стороны, причем с запасом. Практическая дальность связи при прямой видимости составляет около 40-50 метров, в условиях многоквартирного жилого дома — около 15-20 метров — через 4 кирпичных стены.


Читать дальше

Малогабаритный адаптер AC 220V/DC 12V 5A.

После того, как прикупил себе небольшой автомобильный пылесосик (комп чистить и все такое) — пришлось озадачиться питальником к нему. Аппетит у пылесосика приличный — 12В 38Вт (около 3А). Транс с такими параметрами будет весить больше пылесоса… Ну нафиг. Нынче рулят импульсники.


Читать дальше
  • +5
  • 10 июня 2011, 05:46
  • Vga
  • 2

Простой полосовой фильтр

Вот мигалочка из 4 полосовых «фильтров» на тиньке.



Как работает эта штука?


Читать дальше

Типобезопасные флаги на базе enum

При работе с микроконтроллерами на низком уровне очень часто приходится работать с отдельными битами в конфигурационных регистрах, с различными флагами состояний и т.д. Традиционно в языке «С» для этого используются целочисленные переменные и битовые операции с ними. Всё вроде-бы просто и понятно, что еще нужно? Типобезопасность. Целочисленной переменной, используемой для флагов, можно присвоить любое неосмысленное число, и компилятор совершенно не будет против.



Читать дальше

Еще немного о 1-wire + UART

Доделал софтину для ручной работы с 1-wire устройствами через UART.
1w_on_com.PNG



Читать дальше

Запись звука

AVR
На AVR'ках можно неплохо работать со звуком. Сделать, например, какой-нибудь диктофончик или плеер.

В этом посте — только про захват звука. Впрочем, если кому-нибудь окажется интересно, можно написать ещё)


Читать дальше

Subversion



Введение


Subversion (сокращенно SVN) — система управления версиями (Version Control System, VCS). Обычно тулзы этого рода считаются теми, кто с ними не знаком, чем-то нужным только большим командам программистов. Но на самом деле, они крайне полезны даже одиночке, и даже не программисту — всем, кому приходится редактировать какие-либо файлы. Так, я встречал весьма восторженное описание системы CVS (идейный предшественник SVN и первая свободная VCS — благодаря чему она до сих пор достаточно распространена) от какого-то то ли журналиста, то ли писателя, ее использовавшего.

Итак, зачем же оно одиночке?
  • VCS хранит всю историю изменений файлов, за которыми следит — всегда можно просмотреть историю файла, различия между двумя его версиями или откатиться после неудачных изменений.
  • VCS хранит файлы эффективно — хранятся только изменения файлов, благодаря чему репозиторий с сотней версий некоторого проекта может весить меньше, чем сам проект.
  • VCS облегчает создание резервных копий. Репозиторий легко сбэкапить, не заботясь о том, а не затрется ли какая-нибудь старая версия, которая в будущем может пригодиться — он всегда хранит всю историю. Кроме того, репозиторий — сам по себе бэкап, если он хранится отдельно от рабочей копии проекта.
  • Онлайн-репозиторий облегчает публикацию исходных кодов (и не только их), кроме того, всегда можно скачать из него самую свежую версию, либо любую из предшествующих. К тому же, при обновлении уже скачанной копии по сети передаются только изменения, резко сокращая расход трафика (и времени на передачу данных).
  • Онлайн-репозиторий — удобное средство синхронизации нескольких рабочих копий. Можно, например, подредактировать что-то на работе, зафиксировать изменения и придя домой — синхронизироваться с репозиторием и продолжить работу. VCS гарантирует, что ни одно изменение при переносе не будет забыто, а если обновляемый файл содержит какие-то незафиксированные изменения — предупредит об этом, предотвратив их потерю.

Именно последний пункт делает VCS столь ценным средством для команд, делая невозможной ситуацию «твою мать, какая сволочь затерла всю мою вчерашнюю работу своей правкой?!». Кроме того, всегда можно выяснить «кто эту херню глючную понаписал?!» или «а что мы такого наменяли под новый год, что все сломалось?».


Читать дальше
  • +6
  • 29 мая 2011, 06:48
  • Vga

Интеграция IDE Code::Blocks с программным комплексом Altera Quartus II. Часть III.

5. Приближение четвёртое. Сливаемся с местностью.
Главное правило любого диверсанта — необходимо замаскировать результаты своего творчества так, как будто так всё и было. Наша цель — сделать видимость среды, изначально проектировавшейся для разработки на HDL. Что бы убрать всё, что нас выдаёт надо прикрутить честные действия по Build и Run (написать модуль типа Compiller), автодополнение кода для интересующих нас языков (перегрузить модуль CodeCopletion), прикрутить деббагер, симулятор, RTL-вьювер… Да много чего нужно, но мы это делать сейчас не будем — очень много работы придётся сделать, а для некоторых вещей даже потребуется править исходники самого C::B. Вместо этого мы сделаем пару небольших, но полезных хаков.


Читать дальше