[ВХОД]

Главная | Содержание | Форум | Файлы | Поиск | Контакт
NAVIG
О форуме
Резонансные генераторы
Магнитные генераторы
Механические центробежные (вихревые) генераторы
Торсионные генераторы
Электростатические генераторы
Водородные генераторы
Ветро- и гидро- и солнечные генераторы
Струйные технологии
Торнадо и смерчи
Экономия топлива
Транспорт
Гравитация и антигравитация
Оружие
Нейтронная физика
Научные идеи, теории, предположения...
Прочие идеи (разные)
Новые технологии
Коммерческие вопросы
Барахолка
Патентный отдел
Сделай сам. Советы.
Конструкторское бюро
немобильная версия
Печатать страницу
Форум - Сделай сам. Советы. - Домашнему мастеру - Импульсная зарядка - Стр.172
<][ 1 ... | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 ][>
Post:#404100 Date:13.12.2012 (16:30) ...
Скоро зима, морозы, машина плохо заводится, аккумуляторы мрут как мухи.
Надо их заряжать и лечить.
SunSB | Post: 458701 - Date: 14.01.15(10:14)
В любом виде деятельности есть знания и есть культура. Знания дают книжки, институты итд. Культуру дают только опыт и Учитель.
Если нет культуры нихрена хорошего не сделаешь и удовольствия от работы не получишь.
Объектное программирование - это лучшее, что есть в программировании. Если готовить его не умеешь ( а это и есть культура ), то понятно - оно гавно. Индусы не умеют, суют классы/объекты куда конь не совал.

Я первую Дедову схему паял - всё верно, все блоки работают, а всё вместе-хрен. А всё просто - провода короче нужно сделать. Но в схеме этого нету. Для Деда это само собой разумеющаяся часть культуры деятельности, для меня - это открытие. Теперь прежде чем повторять твои, Дед схемы, я 42 раза перечитываю букварики ищу культурные намёки))
Так что спор про ардуину - он совершенно не конструктивный, никуда не ведущий.
Хочешь писать на асс - дык не проблема.

Опять же всё от задачи зависит.
Я последний раз на уровне железа много программировал еще на ДВК, если кто в курсе. Это дописишное время. Потом на PC под MSDOS, но чуток совсем и для себя, для общего развития. Так что сейчас я не вспоминаю как это делается а учусь с нуля. Но имея некоторый культурный запас)).

Вот простой пример из Дедовой зарядки. Считываю АЦП много раз. Дальше можно по Найквисту (тру ассемблер, со сдвигами и без деления), можно просто усреднить. И вот оно но.
По Найквисту - нужо насобирать определённое количество семплов, и только потом их обработать. Т.е. вывод на экранчик я должен синхронизировать с готовностью данных. Получается частота обновления экранчика будет зависить от частоты зарядных импульсов? Можно конечно нагородить промежуточное сохранение, перерасчёт и прочее, т.е. усложнить программу и увеличить объём данных. Оно мне надо?
В случае простого усреднения всё во много проще - синхронизация по обновлению экрана. Пора выводить - нет проблем: поделил сумму АЦП на количество собранных семплов и усе. Точность на разных частотах будет разная, но это устройство в любом случае даёт лишь качественную оценку.

Чуток о реальном времени. Где оно здесь? В принципе? Я не вижу.
Реальное время, в моём понимании, это когда есть некий внешний процесс которому подчинены все действия программы.
Простой пример: в компьютерных играх, в видеопроигрывателях(программах) вывод на экран можно делать только во время обратного хода луча по монитору. Иначе рвать картинку будет. Это да, это оно, реальное время.
Успел картинку сформировать, положил в видеопамять пока луч взад шел - ура. Неуспел, вывел во время развёртки - порвал картинку, пропустил кадр - лаг.
Где в зарядке внешний процесс? Бульбашки пошли? Напряжение зарядки вниз пошло? Ну замечу я это на 100млс позже. И чего?

USB
У ардуины с точки зрения программиста нету USB. Дырка есть, а USB нет. Есть последовательный порт. А с ним работать просто: готовишь строку размером меньше буфера, пишешь в неё всякое, как размер к 100 байтам подбирается отправил в порт, вызвал flush() - чтоб ардуина умной себя не считала - и забыл. Чтение из порта тоже просто: есть в буфере данные - вызвал readln() и обработал.
Без прерывания, тупо в главном цикле. Потому как у атмеги запрет прерываний глобальный.

Урезанный С
Вот ардуиновский main
#include <Arduino.h>

//Declared weak in Arduino.h to allow user redefinitions.
int atexit(void (*func)()) { return 0; }

// Weak empty variant initialization function.
// May be redefined by variant files.
void initVariant() __attribute__((weak));
void initVariant() { }
int main(void)
{
init();

initVariant();

#if defined(USBCON)
USBDevice.attach();
#endif

setup();<- это то что в скетче

for (;; ) {
loop(); <- это то что в скетче
if (serialEventRun) serialEventRun();
}

return 0;
}
Можно его переписать, подкорректировать. Никаких проблем. Читал статейку, там мужик рассказывал как ардуину сделать многозадачной если припечёт.
Другое дело, что оптимизатор работает несколько, ммм, странно. Так это помоему не исключительно для ардуины, а гораздо глубже. Проделки менагеров по недопущению хорошего свободного компилятора. Или всё проще, компилятор индусы писали )).

Фух. Устал, пойду спаяю кнопки для новой зарядки:).

- Правка 14.01.15(10:17) - SunSB
neama | Post: 458703 - Date: 14.01.15(10:36)
Если у 90 семейства проблемы с переходами и возвратами, значит их или слишком много или кто то не посмотрел в сторону. Фьюзов. Не знаю как сейчас на 8515 фьюзом выставлялась глубина стека для вызова подпрограмм. На атиньке 16 эта вещь была фиксирована и получалось или три вложения или сложить два дробных. По большей степени не понимание логики работы желёзки.

З.ы. если выкинуть прошивку ардуины не плохие кит получается.

_________________
Раздражайтесь, это улыбает...
SunSB | Post: 458704 - Date: 14.01.15(10:41)
airman Пост: 458693

Запрети прерывания.
Ассемблер для программиста необходим. Он приучает думать в терминах железки. После ассемблера, многие распространееные ляпы просто исчезнут из твоих программ. Но писать на нем в разы сложнее, потому как переходишь с уровня "логика моей программы" на уровень "логика вашей железки". А железку придумывали тоже люди со своими культурой и тараканами, и приходится играть на чужом поле.
Любой транслятор отличная вещь. Не зря все action игры на скриптах написаны. Так отделяют логику игры ( устройства ) от движка. По этому игровых движков в мире всего штук пять, а игр как ... Ну вы поняли.

neama | Post: 458711 - Date: 14.01.15(11:11)
SunSB Пост: 458704 От 14.Jan.2015 (10:41)
airman Пост: 458693

Запрети прерывания.
Ассемблер для программиста необходим. Он приучает думать в терминах железки. После ассемблера, многие распространееные ляпы просто исчезнут из твоих программ. Но писать на нем в разы сложнее, потому как переходишь с уровня "логика моей программы" на уровень "логика вашей железки". А железку придумывали тоже люди со своими культурой и тараканами, и приходится играть на чужом поле.
Любой транслятор отличная вещь. Не зря все action игры на скриптах написаны. Так отделяют логику игры ( устройства ) от движка. По этому игровых движков в мире всего штук пять, а игр как ... Ну вы поняли.

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

_________________
Раздражайтесь, это улыбает...
AlexSoroka | Post: 458725 - Date: 14.01.15(12:59)
airman Пост: 458693 От 14.Jan.2015 (05:55)
Мне довелось столкнуться с некорректной работой компилятора - хитрый глюк со стеком при формировании массива и одновременном уходе в прерывание получается (проц.: Mega48)...

а вот нехуй массивы через стек передавать!
Верх маразма...
Это где вас таких научили так писать проги?
"С" тут не виноват - тут писателю надо по шапке надавать, чтобы головой думал.

А вот как деду Ивану удаётся Си-подобные функции в макросы преобразовать - мне не понятно

Забей. Это "высший пилотаж", и тебе он не нужен - пиши на С на самом простом, без заебов и "красивых описаний", и будет тебе счастье.

Вот простой пример маразма писателей кода:
что делает эта строка?
// Timer/Counter 1 Interrupt(s) initialization
TIMSK1=(0<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (1<<TOIE1);

открываем h файл:
#define TIMSK2 (*(unsigned char *) 0x70)

для тех кто не умеет читать - строка
TIMSK1=(0<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (1<<TOIE1);
по сути делает кучу СДВИГОВ бита "1" !!!!!!!!!!!!!
а вот такая строка
ADCSRA|=(1<<ADSC);
влеплена внутри(!) тела цикла работы с АЦП! эта пистец...
я весь этот маразм заменил на ОДНУ команду:
ADCSRA|=0b01000000;

Так что удачи тупорылым применятелям "библиотек ардуины" в своих разработках. У вас все получится ...про реалтайм забывайте сразу.



- Правка 14.01.15(13:00) - AlexSoroka
AlexSoroka | Post: 458726 - Date: 14.01.15(13:06)
SunSB Пост: 458704 От 14.Jan.2015 (10:41)
airman Пост: 458693

Запрети прерывания.

ахуенный совет !
это спасет от переполнения стека ? ну-ну...

Так отделяют логику игры ( устройства ) от движка. По этому игровых движков в мире всего штук пять, а игр как ... Ну вы поняли.

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

SunSB | Post: 458727 - Date: 14.01.15(13:09)
Это всё от того, что ты не знаешь, что операции с константами выполняются на этапе компиляции.
Строки в ассемблере после компиляции для
ADCSRA|=(1<<ADSC);
и
ADCSRA|=0b01000000;
будут одинаковые, но ты через год полезешь в справочник, смотреть что такое "ADCSRA|=0b01000000;", а человек написавший "ADCSRA|=(1<<ADSC);" или
"TIMSK1=(0<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (1<<TOIE1);" максимум задумается, вспоминая как расшифровываются названия битов.

Вообще говоря, практически у каждого компилятора есть флаг, который позволяет сохранить производимый им ассемблер. Для gcc это -save-temps.
Папробуй. Много интересного узнаешь сначала ты о компиляторе, а потом писатели этого компилятора о своих родителях:).
Зы
А где написано о переполнении? Написано о глюке. Или ты только о переполнении слышал?

- Правка 14.01.15(13:21) - SunSB
SunSB | Post: 458729 - Date: 14.01.15(13:39)
Дед, извини, нафлудил тут у тебя не про зарядку.
Но переход на контроллеры он неизбежен. А ниже планки вхождения в контроллеры чем ардуина нет, и вряд ли будет. Незнаю чего Alex так взьелся на эту зверушку, но нельзя ему дать отпугнуть новичков. Да оно кривенькое, да неоптимальное. Но так и Бедини не ангел. А вот моторчик его меня зацепил, и втянул в эту область знаний и я рад теперь, что у меня есть занятие которое приносит удовольствие и не напрягает. В разы лучше чем сериалы дурные смотреть или собирать какиенить пережитки прошлого:).


AlexSoroka | Post: 458730 - Date: 14.01.15(13:40)
SunSB Пост: 458727 От 14.Jan.2015 (13:09)
Это всё от того, что ты не знаешь, что операции с константами выполняются на этапе компиляции.
Строки в ассемблере после компиляции для
ADCSRA|=(1<<ADSC);
и
ADCSRA|=0b01000000;
будут одинаковые, но ты через год полезешь в справочник, смотреть что такое "ADCSRA|=0b01000000;", а человек написавший "ADCSRA|=(1<<ADSC);" или
"TIMSK1=(0<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (1<<TOIE1);" максимум задумается, вспоминая как расшифровываются названия битов.

Я сам себе лучше комент напишу рядом.


Папробуй. Много интересного узнаешь сначала ты о компиляторе, а потом писатели этого компилятора о своих родителях:).

:) я уже туда не лажу - чтобы настроение не портить ...

Зы
А где написано о переполнении? Написано о глюке. Или ты только о переполнении слышал?

:) известные это глюки, "детские" и у тех кто не знает что такое прерывания и как они работают на низком уровне.
Получается так: вызываем функцию, она напискладывает в стек свою "точку возврата", потом проц отрабатывает тело функции и начинает писать массив в стек, в процессе писания происходит прерывание, которое тоже пишет в стек... дальше сами допишите по вкусу...
Лечится просто заменой передачи массива через стек на передачу указателя на массив через статик переменную (если один и тот же массив гоняем) либо вообще массив держим в памяти если постоянно его дергаем - на этом еще экономим "выделение массива - развыделение массива" при каждом вызове функции, а это процессорное время.

Заповедь простая: если ты пишешь прогу и не знаешь как компилятор твое "художественное описание" на С положит в код - пиши тупо и невитиевато, или полезь посмотри в ASM листинг что там наваялось в итоге. ...все равно придешь к простому "Керниган&Ричи" С

dedivan | Post: 458733 - Date: 14.01.15(14:01)
AlexSoroka Пост: 458730 От 14.Jan.2015 (13:40)
или полезь посмотри в ASM листинг что там наваялось в итоге. ...


Для этого лучше пользовать IDA - она нарисует блок схему со стрелочками и метками и кусочками ассемблера внутри блоков-
Все как на блюдечке. Вся логика писателей компиляторов видна.
Даже можно по ней определить национальность писателя.

Самый хороший инструмент для изучения идеологии программирования.
Недаром у Касперски книжка называется- Образ мышления-IDA.


_________________
я плохого не посоветую
dedivan | Post: 458735 - Date: 14.01.15(14:19)
SunSB Пост: 458729 От 14.Jan.2015 (13:39)
и я рад теперь, что у меня есть занятие которое приносит удовольствие и не напрягает.


Ты не одинок. Вон глянь как базарыча цапануло- физику теперь читает.

_________________
я плохого не посоветую
inventives | Post: 458736 - Date: 14.01.15(14:26)
А мне больше нравится BascomAVR. Очень просто, удобно. Оттранслируешь, зальёшь в Proteus, всё видно, бегущая строка бежит, регуляторы ЦАП-АЦП работают, светодиодики моргают, осциллограмки снимаются. По 1wire на DS18B20 такие регуляторы получаются, - загляденье. При желании можно туда для быстродействия и на АSM блок добавить. Хотя и так на BascomAVR формирователь чистой Sin 50Hz получается.

Размер : 12.27 KB
- Правка 14.01.15(14:54) - inventives
Sergh | Post: 458759 - Date: 14.01.15(17:57)
да бросте все это.. реально должен электриг и сантехних программу написать, отложив разводной ключ и рукавицы сняв.
CoDeSys для совсем тупых.


- Правка 14.01.15(17:58) - Sergh
dedivan | Post: 458760 - Date: 14.01.15(18:10)
Ты не путай язык пользователя и и язык разработчика.
Вот мой зарядник, если к нему подключить акк наоборот плюс с минусом,
голосом спрашивает "УХУ-ЕЛ?" - это язык пользователя,
а я для этого прожку писал на асме.
Кодесис курит молча в сторонке.

_________________
я плохого не посоветую
xx0 | Post: 458762 - Date: 14.01.15(18:34)
Нормальные зарядки не ругаются как дедовы матами, а безмолвно переключают полярность и заряжают

_________________
http://xx0ru.livejournal.com/
<][ 1 ... | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 ][>
У Вас нет прав отвечать в этой теме.
Форум - Сделай сам. Советы. - Домашнему мастеру - Импульсная зарядка - Стр 172

Главная | Содержание | Форум | Файлы | Поиск | Контакт