Помогите ужать програаму, немного не влезает в ATTiny13

Обсуждаем контроллеры компании Atmel.
Ответить
Мудрый кот
Аватара пользователя
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

vdavid писал(а):Ага, только увеличится как использование флеша, так и оперативки :( .
Возможно при каком-то сочетании прочего кода.
В тех вариантах, что я выкладывал выше это работает. Вероятно потому что в моих вариантах нет деления выполняющегося во время работы программы кроме деления на 10. И деление 32-битного или 16 битного целого имеют разный размер кода...
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Реклама
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Сообщение shads »

И что там у вас за лучший результат получился? (я имею ввиду флэша и оперативки скока по минимуму кушает?)
Хочу тоже свой вариант запилить, вдруг меньше получится :)...

Схемка такая?

Изображение
Вложения
pg1.png
(31.34 КБ) 1506 скачиваний
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4732
Зарегистрирован: Ср сен 18, 2013 10:08:26
Откуда: Санкт-Петербург

Сообщение Gisteresis »

Провел измерения.
Мультиметр это эталонный прибор.
Вольтметр и Амперметр это показания данной поделки.
Для Амперметра вход 0..500мВ и дальнейшее усиление в 10 раз.
СпойлерИзображениеИзображение

ИзображениеИзображение
ОУ запитал от 8В через lm7808
Мучитель микросхем
Сообщения: 410
Зарегистрирован: Чт ноя 13, 2008 16:33:42

Сообщение vdavid »

Kavka писал(а):Возможно при каком-то сочетании прочего кода.
По факту в CVAVR с такой конструкцией

Код: Выделить всё

    *ulVoltsSum=(5000UL*(*ulVoltsSum))>>18;
Получаем 918 байт кода, тогда как вот такое

Код: Выделить всё

    *ulVoltsSum=(5000UL*(*ulVoltsSum))/(256UL*1024);
дает 896 байт.
Переход же к делениям на 10 в 16-ти битке тоже увеличивает код, потому, что кроме библиотечных функций 32-битного деления добавляются 16-битные. В GCC все несколько иначе.
Реклама
Эиком - электронные компоненты и радиодетали
Мудрый кот
Аватара пользователя
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

shads писал(а):И что там у вас за лучший результат получился? (я имею ввиду флэша и оперативки скока по минимуму кушает?)
Слегка модифицированный вариант с уклоном на экономию ОЗУ (стек не считается).
816/15 (gcc version 4.7.2 (AVR_8_bit_GNU_Toolchain_3.4.2_939))
Вложения
av_metr_tiny13(v4).c
(3.75 КБ) 406 скачиваний
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Реклама
Мучитель микросхем
Сообщения: 410
Зарегистрирован: Чт ноя 13, 2008 16:33:42

Сообщение vdavid »

Kavka Можно еще маленько ужать :) . Кстати, здесь ошибочка:

Код: Выделить всё

uint8_t PROGMEM const mux[ADC_CHANNELS]			= {(FIRST_ADC_INPUT  | (ADC_VREF_TYPE & 0xff)),
	                                   (FIRST_ADC_INPUT  | (ADC_VREF_TYPE & 0xff))};
Слегка модифицированный Ваш вариант дал 648/15. avr-gcc 4.3.3 (уровень оптимизации "s").
Вложения
av_metr_tiny13.c
(3.6 КБ) 423 скачивания
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4732
Зарегистрирован: Ср сен 18, 2013 10:08:26
Откуда: Санкт-Петербург

Сообщение Gisteresis »

shads писал(а):Схемка такая?
При начальных тестах да.
Когда я уже приводил таблицы с измерениями, уже полная схема. Вход по Амперам вы можете выдернуть отсюда
http://piccy.info/view3/7056674/27fe185 ... de5b/1200/
Только R2=100k, R6=10k Короче коэффициент усиления 10.
Выходной резистор R1 следует взять 10к, С2 что то в духе 47..64..100нФ (я их до сих пор не менял. У меня стоит 100к, С2 100пик и все работает, хотя чувствую лучше сменить)
Питание ОУ 8В

Вход по Вольтам, просто делитель, с подстроечным. Деление в 10 раз. 100к, 7.5к, подстроечный 10к

Последнюю 4ю декаду по желанию можно конечно и удалить. Она все равно в лучшем случае показывает дискретами по 4,88В (5000/1024) в лучшем случае. С ней чуть проще калибровать.
Мудрый кот
Аватара пользователя
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

vdavid писал(а):Слегка модифицированный Ваш вариант дал 648/15. avr-gcc 4.3.3 (уровень оптимизации "s").
Ошибочка - да.
Твой вариант менее гибок в настройках, но автор темы об этом ничего не написал :)
С размером тут, как всегда в последних версиях, gcc мудрит. Твой вариант (с компилятором, что я указывал выше) в режиме -Os даёт около 800 байт, а c -O2 даёт 668 байт.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Друг Кота
Аватара пользователя
Сообщения: 4732
Зарегистрирован: Ср сен 18, 2013 10:08:26
Откуда: Санкт-Петербург

Сообщение Gisteresis »

Да какие там настройки :)
Думал для простоты дальнейшего использования, пределы измерений вынести в начало файла в макрос. Вот и все настройки.
Мучитель микросхем
Сообщения: 410
Зарегистрирован: Чт ноя 13, 2008 16:33:42

Сообщение vdavid »

Kavka Ага, нет лучшего способа превратить приличный продукт в дерьмо как его покупка большими парнями.
Мудрый кот
Аватара пользователя
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

А gcc никто и не покупал...
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Мучитель микросхем
Сообщения: 410
Зарегистрирован: Чт ноя 13, 2008 16:33:42

Сообщение vdavid »

Kavka, Речь идет именно о проекте winavr, который загадочным образом остановился на отметке 2010-01-20. И больше не поддерживается автором. Как-то это загадочным образом совпало по времени :) .
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18679
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

не смотря ни на что, WinAVR 20100110 успешно применялся мной для проектов на attiny13, причем даже без особых ухищрений для экономии пространства. при этом функциональная насыщенность проектов совсем не слабая:
1. Лампа настроения (для плавности цветовых переходов использовался алгоритм Брезенхама)
2. RGB-светильник с дистанционным управлением (самодельный пульт) и с управлением с "настоящего китайского" пульта для RGB-светильников
3. Диммер с дистанционным управлениеми автообучением командам ЛЮБОГО пульта (проект не публиковался никогда)
4. Контроллер вентилятора вытяжки в санузле с оригинальным алгоритмом

Если же применять всякие хаки и трюки, то этот компилятор и этот контроллер и не такое могут!!!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Сообщение shads »

У меня тоже чето как то получилось :).....

GCC вот такие циферки показывает...

Изображение

усреднение сделано из 64 отсчетов... (используется внутренний ИОН 1,1в)
возможно указать тип дисплея (ОА, ОК, с инверсией стробов или без)
Ток меряет до 8,191 А, напряжение меряет до 81,91 V (ясный перец что верхние цифры не совсем такие, ну примерно так...)

Изображение




ЗЫ
Кстати, надо будет попробовать сварганить ампервольтметр на STM32F100, у него ADC по 12 разрядов... так что если мерить до 4,096 ампер и 40,96 вольт, то младшие разряды будут актуальны...
Вложения
ампервольтметер.7z
(80.62 КБ) 282 скачивания
sh1.png
(37.91 КБ) 2060 скачиваний
report.png
(4.22 КБ) 1408 скачиваний
Друг Кота
Аватара пользователя
Сообщения: 4732
Зарегистрирован: Ср сен 18, 2013 10:08:26
Откуда: Санкт-Петербург

Сообщение Gisteresis »

R1, R2, R5
Такая конструкция будет в реале?
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Сообщение shads »

Gisteresis писал(а):R1, R2, R5
Такая конструкция будет в реале?
Не... это я на скору руку намулевал :)...
В реале сделал бы такую:

Изображение
Вложения
pg1.png
(25.71 КБ) 1250 скачиваний
Мучитель микросхем
Сообщения: 410
Зарегистрирован: Чт ноя 13, 2008 16:33:42

Сообщение vdavid »

shads, Да ну. 5 Вт на шунте? Еще думайте :) .
Друг Кота
Аватара пользователя
Сообщения: 4732
Зарегистрирован: Ср сен 18, 2013 10:08:26
Откуда: Санкт-Петербург

Сообщение Gisteresis »

Тут в том то и проблема, что шунт нужно использовать меньше, например 0.1 хотябы или 0.05, 0.01... лучше конечно 75мВ но это совсем идеально.
Если использовать 0.1 тогда падение на нем будет максимум 500мВ, если хотим измерять до 5А. Приходится усиливать. Это накладывает свою погрешность.
Тут и так не хватает вольт, а вы еще делите.

Предлагаю симулировать что то близкое к реальности а не теоретические схемы.
Опытный кот
Аватара пользователя
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США

Сообщение Pink-Pank »

А если шунт поменьше и операционник в качестве усилителя? Единственное, шумы будут сказываться.. но их можно фильтрануть тем же операционником..
Fucking static initialization order fiasco
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Сообщение shads »

Gisteresis писал(а):Предлагаю симулировать что то близкое к реальности а не теоретические схемы.
Я вообще то о программе речь вел... а схема - чисто в симуляторе показать, что работает...
А там как угодно... цепляйте конечно усилитель... какие проблемы...

Главное в программе - это измерение 2-х каналов с усреднением, наличие развертки 8-ми разрядного дисплея и функции вывода туды инфы...
А что там на входе и как это отобразить на выходе - это уже хозяин барин... исходники прилагаются :)...

А ну и еще... изначально я вообще то хотел мозги помучить, получится ли у меня компактнее сделать :)...
Так что я вам не навязываю какие то схемные решения :roll:
Последний раз редактировалось shads Ср окт 15, 2014 10:53:46, всего редактировалось 1 раз.
Ответить

Вернуться в «AVR»