1

(5 ответов, оставленных в Технические вопросы)

Воспользовался ссылками из 3-го поста.
Немногим ранее я уже достигал потолка в использовании SRAM для моей прошивки, что заставило провести ряд оптимизаций а также перейти с Atmega168 на Atmega328. Замеры свободного места SRAM (с помощью MemoryFree.h) показали 170-64 байт в начале-конце процедуры setup()  а также минимум 19 байт при вхождении в самую ресурсоемкую функцию проекта. Тем не менее при таких показателях программа  работала без сбоев (проверочное тестирование в течение 4 суток).
Использование возможностей библиотеки pgmspace позволило перенести во flash-память все константные массивы программы. Замеры показали 900кб свободной памяти в setup()  и порядка 500кб для самой тяжелой функции.

2

(5 ответов, оставленных в Технические вопросы)

Спасибо за ответ. Приведенные ссылки очень полезны. Изучаю.

Сергей Деменков пишет:

...я вобще HyperTerminal стандартный виндовый пользую - интерактива больше

мне как раз встроенный нравится по причине его автоматического закрытия при заливке прошивки и минимума интерактива :-)
Также использую внешний редактор (FAR-editor+colorer)в основном из-за того что ArduinoIDE  игнорирует сочетания клавиш "Ctrl+Ins" "Shift+Ins", а переучиваться некогда.

Мне кажется маловероятным, что UTF-8 на что-то может повлиять. Это же все-равно потом обычным
gcc компилируется, а ему должно быть абсолютно фиолетово, какие там символы идут после //

Мне также это казалось маловероятным, но реальности оказалась интереснее. Была ситуация когда удалось заставить работать один из файлов проекта лишь после тотальной зачистки всех русских комментариев. Возможно это издержки перекодировок Win-Dos-UTF8. Не зря же IDE 0017-0018 выводит предупреждение при компиляции о наличии символов в иной кодировке.

Си там самый что ни на есть "общий", если так можно выразиться.
Я не понял что имеется в виду под "изрезанным". Давай пример кода, и чего хотим получить - будем думать.

Насколько я понял он скорее "базовый", т.е. определенная специфика присутствует - многие навороты из актуальной документации по С и С++ для нашего Си невозможны: структуры struct Point  {double x;  double y;}; конструкторы int[] d= new int[5]; и т.д.

"Изрезанный массив"=Jagged Arrays="массив массивов" - это массив, элементы которого сами являются массивами.
Однако создать такой пока не получилось. Компилятор категорически не согласен как с предлагаемыми вариантами запихивания ссылки при конструировании структуры, так и с вариантами чтения.
Например, хочу сделать как-то так:

int a1[] = {1,2,3};
long a2[] = {4,5,6};

int* lnk_a1 = a1;
long* lnk_a2 = a2;

int* b;               
b=(int*) malloc(3);
b = lnk_a1;   
*b + 1 = lnk_a2; // b[1] ... также не катит

Serial.println(b[0][0],DEC);

3

(5 ответов, оставленных в Технические вопросы)

Также возникли некоторые вопросы, до сих пор остающиеся без ответа:

Не удалось реализовать изрезанный массив или массив массивов. Это вообще возможно на "нашем Си"?

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

Существуют ли эффективные способы измерить свободное место в ОЗУ?
Как интерпретировать показания глобальной переменной SP?

4

(5 ответов, оставленных в Технические вопросы)

В основном здесь возникают вопросы как начать работать с freeduino. Также вопросы по простеньким примерам из встроенной библиотеки. Кто-нибудь пытался слабать на платформе используя сабж что-нибудь потолще сэмплов?

Пытаясь создать относительно толстый проект на Wiring сломал немало копий. Тем не менее проект движется. Хочу поделиться некоторыми возникшими соображениями и вопросами.

По версиям замечено следующее:
0016 - оптимальная для версия для меня, редактор в Win-1251 кодировке, есть возможность отцепить Serial Monitor от COM-порта с сохранением вывода на экране

0017 - кодировка в редакторе UTF-8, имхо причина многих бед, в рантайме у прошивки возможны утечки ОЗУ, подозреваются комментарии в UTF-8 как производный мусор при компиляции, COM-монитор в виде отдельного окна с бесконечным буфером, но без преимуществ указанных для 0016

0018 - все также как и в 0017, разве что нерабочая прошивка полученная от 0017 здесь вполне может успешно заработать.

Пока в работе использую  0016 перетаскивая библиотеки из версий выше.

Очень заинтересовало.
Тестирую работу модулей прошивки в протеусе урезанной ардуины с обвязкой в виде регистров и прочего.
При выводе с виртуальной Atmega168 на встроенный виртуальный терминал вместо ожидаемых символов лезет мусор.
При переборе настроек характер мусора меняется но не более того.
Тоже самое только хуже при построении цепочки Atmega168 > COMPIM(COM2) > virtual-null-modem(COM2-COM4) > HyperTerminal(COM4)
В то время как цепочка  "виртуальный терминал"(COM2) > virtual-null-modem(COM2-COM4) > HyperTerminal(COM4) работает безупречно.
Хардварная Цепочка:    FreeduinoMS > COM1 > HyperTerminal(COM1)  - также безупречно.

Насколько я понял реальная эмулируемая скорость работы Atmega168 под большим вопросом, и естественно падает при усложнении алгоритма и усложнении обвязки. Предполагаю конфликт по baudrate.
Возможно ли урегулировать данную ситуацию?

Доброго времени суток!
Заказал отсюда упомянутую в сабже платформу с целью использовать как один из элементов "Умного дома".

Столкнулся со следующей ситуацией:
Предположим что контроллер на основе Freeduino функционирует в режиме 24/7 контролируя работу ряда устройств и c ним иногда может инициализироваться соединение по COM-порту с компьютера, скажем,  для оперативного изменения текущих настроек.... Каждая такая инициализация приводит к сбросу МК (т.е. свет в квартире неожиданно гаснет :-). Для чего реализован  такой auto-reset  в принципе понятно - инициализация загрузчика с ожиданием заливки через по COM-порт новой подпрограммы.
Каким образом я могу отключить данный auto-reset?

Спасибо заранее.

7

(3 ответов, оставленных в Технические вопросы)

Тоже очень интересуют схемы. А где я могу увидеть эти "выложенные"? Спасибо.