Чо вы так за неё боитесь то, за еепром то ентот...
У меня бала первая ардуина ещё хрен знат когда и такая прям цветная, возможно даже и оригинальная. И долго долго я её мучал ардуиновскими мигалками, ШИМами и прерываниями
Потом перешил в баском и тоже долго-долго мучал её тем-же самым но на бейсике
Потом какой-то кекс у меня её выпросил и она сейчас у него похож работает.
Вот и прикиньте, скока раз я её программировал туды-сюды и ничо с ней не случилось 
Помогите с алгоритмом!
Сообщений 151 страница 180 из 212
Поделиться1512018-02-27 11:21:00
Поделиться1522018-02-27 11:30:36
Нордик, у тебя как с математикой??? А?
На уровне арифметики... 
Максимум - синусы/косинусы...
Мне в моей практической деятельности большего не требуется.
А всякие логарифмы и прочее остались еще в школе сразу после экзамена. 
А в плане EEPROM меня больше волнует ужасное положение ТС с электроснабжением, чем практическое количество циклов чтения/записи в эту память... 
Поделиться1532018-02-27 11:55:07
Вот и прикиньте, скока раз я её программировал туды-сюды и ничо с ней не случилось
Ты eeprom с флэшем не путай. 
Поделиться1542018-02-27 11:58:39
ужасное положение ТС с электроснабжением
Тогда ещё придется потратить кучу времени на придание уверенности, что сбой произойдет не в момент записи как раз этой eeprom (а то корявость запишется). Иными словами, надо тогда делать ещё систему анализа внешнего питания и запуск "бэкапа" данных, при том, что заряда на МК должно хватить на завершения этого цикла (записи).
Кстати говоря, с таким подходом, тогда морочиться циклами записи не придется.
Поделиться1552018-02-27 12:08:15
Тогда ещё придется потратить кучу времени на придание уверенности, что сбой произойдет не в момент записи как раз этой eeprom (а то корявость запишется). Иными словами, надо тогда делать ещё систему анализа внешнего питания и запуск "бэкапа" данных, при том, что заряда на МК должно хватить на завершения этого цикла (записи).Кстати говоря, с таким подходом, тогда морочиться циклами записи не придется.
Я уже предложил вариант решения: добавить батарейку и при пропадании основного питания преспокойно записывать состояние или тупо все остановить и ждать появления основного питания.
В этом случае можно даже от отслеживания по прерыванию отказаться.
Поделиться1562018-02-27 12:24:20
добавить батарейку
Лучше просто повесить электролит на МК, а питать его отдельно через диод (чтобы разряд работал только на него). Правда при работе с АЦП надо будет учитывать падение напряжение на диоде.
Поделиться1572018-02-27 12:37:32
Лучше просто повесить электролит на МК, а питать его отдельно через диод (чтобы разряд работал только на него). Правда при работе с АЦП надо будет учитывать падение напряжение на диоде.
Думаю, это еще не последний вариант... 
Поделиться1582018-02-27 16:18:48
Делал показометр счётчиков воды. Для того,чтобы не потерялись дневные значения расходов воды при отрубании питания ставил ионистор на 1 фарад и электролит небольшой. Питалось всё от 5 вольт. Как только напряжение пропадало,мк записывал текущие показания в еер и отрубался. На ионисторе,после отключения питания, устройство с экраном от Нокии полноценно дышало ещё несколько секунд,так что записать в еер сто раз успеет. Кстати,ионистор держит заряд для поддержания хода часов на DS3231 около 17 дней,дольше не проверял.
Поделиться1592018-02-27 16:47:18
Ионистор спецом не предлагал, ибо там надо морочиться с его зарядом, ибо если ток не ограничивать, то он может стаб вгонять в защиту при полном разряде (нужно ток ограничивать).
Ну а DS вообще нафиг нужен ионистор, таблетка должна стоять.
Поделиться1602018-02-27 18:04:48
Харощ флудить!
Давайте наваяем С++ подобную конструкцию на бейсике. Нуно.
Итак 20 переменных длиной по 8 байт.
Имеем указатель (читай адрес) в еепроме на начало области в еепром
Функция будет такой: функция(номер переменной) отсчёт от 0 и до 19
адрес в еепром = указатель + (номер переменной *8)
читаем еепром
возврат
на вейсике это как будет, а лучше на ассемблере.
Поделиться1612018-02-27 18:35:50
Какая нафиг функция, чо там делать, тупо организуешь массив в еепром, размерностью 20х8 - всё. Адрес считается по очень сложной формуле: 8 * N. 
Поделиться1622018-02-27 18:51:05
на вейсике это как будет
Можно еще объявить 20 штук:
Dim <имя> As ERAM Byte
Более длинно, чем массивом, зато можно сразу имена уникальные сделать, чтоб потом алиасы не прописывать... 
Поделиться1632018-02-27 23:34:43
И как потом номер сопоставить переменной? 
Поделиться1642018-02-27 23:52:55
И как потом номер сопоставить переменной?
Если нужен номер, как идентификатор, то массив, как предлагает RDW.
В теле программы прекрасно идентифицируются.
Поделиться1652018-02-27 23:56:25
Напиши в качестве примера код.
Поделиться1662018-02-28 20:48:01
Итак 20 переменных длиной по 8 байт.
Dim Array(40) As Eram Dword
Поделиться1672018-02-28 21:40:35
Итак 20 переменных длиной по 8 байт.
Код: Dim Array(40) As Eram Dword
Как вариант:
Код:Dim Array(20) As Eram Double
Поделиться1682018-02-28 21:44:05
20*8=160 вообще то...
Нет, нужна С++подобная конструкция с указателем на начало этих 160 байт. Начинаем считать с нуля по формуле указатель=указатель + (8* на номер 8-ми байтового массива)
Чёто типа: (не бейсик, ассемблер)
x=номер 8-ми байтового массива
y=8
z= x*y
x=loadadr начало указателя
y=x+z
По (y) будет начало нужного массива для передачи другой функции.
Так можно сделать на бейсике или сразу писать на асме и не заморачиваться?
Поделиться1692018-02-28 22:26:30
20*8=160 вообще то...
Нет, нужна С++подобная конструкция с указателем на начало этих 160 байт.
Надо тогда изначально указывать правильно в ТЗ... 
Читаем в #160
Итак 20 переменных длиной по 8 байт.
К этому варианту и пришли.
160 байт - общая длина блока переменных
Поделиться1702018-02-28 22:33:00
Или так вот, шлб проще для понимания:
Dim Array(160) As Eram Byte
Sub (number as byte)
local temp
temp= number*8
получается типа:
array(temp)
array - указатель на начало массива 2Х8байт
temp - указатель на нужные мне 8 байт
Можно так в бейсике сделать?
И ещё вопрос - в указателе можно использовать разные типа переменных, ну типа как в С структуры или классы???
Поделиться1712018-02-28 22:40:04
И ещё вопрос - в указателе можно использовать разные типа переменных, ну типа как в С структуры или классы???
Думаю лучше, если сформированый указатель будет однозначно по количеству байт в адресе, лучше Word или Dword, чтоб не "попасть" со знаком.
А вот в ходе формирования можно уже поизгаляться с типами. 
Поделиться1722018-02-28 22:45:02
Где ты увидел типы в бейсике?
Давайте я наваяю то, что хочу на ассемблере, тока стыковать с бейсиком я не представляю как. Да и там не будет знаков. 20 id + crc c ds18b20
Поделиться1732018-02-28 23:03:11
Где ты увидел типы в бейсике?
Типы переменных Bascom-AVR:
Bit 0/1 1 бит
Byte 0/255 1 байт целое положительное
Integer -32768 / +32767 2 байта целое число в указанных пределах
Word 0 / 65535 2 байта целое положительное
Dword 0 / 4294967295 4 байта целое положительное
Long -2147483648 / +2147483647 4 байта целое число в указанных пределах
Single 1.5х10^-45 / 3.4х10^38 4 байта число с плавающей запятой в указанных пределах
Double 5.0 x 10^-324 / 1.7 x 10^308 8 байт число с плавающей запятой в указанных пределах
String строка до 254х символов
Другого названия для этого я не знаю... 
20 id + crc c ds18b20
Я это делаю немного по-другому.
Вам, боюсь, не понравится... 
Поделиться1742018-02-28 23:32:37
Типы переменных а не просто типы.
Вариант с множеством Case я делал, классно, но не нужно так. Не подходит. Не лезет!
Просто нужен стек id с количеством от 1 до ... да хоть 50 штук, не важно. Вот в чём загвоздка. Прикинь конструкцию из 50 операндов Case... массивно
То-же самое нужно для ШИМ процедуры, ну не буду же я их ШЕСТЬ одинаковых писать, верно?
Вот ещё пример хорошего подхода... В функции ШИМ около 30 разных переменных (byte, integer и single). Вот как их упаковать в структурированный указатель? Например Pwm(1) раз так и подхватила свои переменные (1) и сохранила бы их там до следующего вызова, а? Классно и компактно? А Pwm(3) свои бы подхватил а функция то одна и она одинаковая! С байтами то всё попроще, они одинаковые по типу переменной.
Ладно, с 1820 всё на ассемблере вроде склеивается. Буду думать...
Поделиться1752018-02-28 23:39:07
Типы переменных а не просто типы.
Вероятно, "разборка" ведется относительно фразы "...поизгаляться с типами."... 
Разумеется, что речь шла о типах переменных, а не о чем-то другом. 
Поделиться1762018-02-28 23:40:52
Думаю лучше, если сформированый указатель будет однозначно по количеству байт в адресе, лучше Word или Dword, чтоб не "попасть"
Воооот, в С для этого есть оттакая * и оттакая :: конструёвины, они определяют принадлежность к чему-либо. Наваять вектор на асме можно, но как его васкому передать, вот в чём вопрос то.
Нужно у буржуев "подглядеть" 
Поделиться1772018-02-28 23:43:55
Просто нужен стек id с количеством от 1 до ... да хоть 50 штук, не важно. Вот в чём загвоздка.
Если набор id будет динамичный, тогда надо что-то действительно изобретать.
В моем случае этот набор статичный на долгое время, сам процесс ко времени не требовательный.
Могу предложить вариант, только надо переписывать для использования EEPROM.
Поделиться1782018-02-28 23:45:52
в С для этого есть оттакая * и оттакая :: конструёвины
А можно комментарии к ним приложить ?
Даже не представляю, на какую резьбу они прикручиваются... 
Поделиться1792018-02-28 23:47:26
поизгаляться с типами
Ну как id от 18b20 будут типами, вордами или доублами??? А? Ну как не понять то таких простых вещей - если в системе 20 датчиков (например) и один из них взяли и поменяли на другой... это что, все 20 id перенастраивать? А с конструкцией Case "выпавший" датчик просто не откликнется... и будет "опа" 
Поделиться1802018-02-28 23:54:42
Ну как id от 18b20 будут типами, вордами или доублами??? А? Ну как не понять то таких простых вещей
А как можно "понять эти простые вещи", если что/к чему/для чего выясняется только по ходу переписки ? 
Нострадамусов тут нет, чтоб в будущее заглянуть... 
Разумеется, в этом случае уже так корячится с типами переменных не получится, тут массив - лучший вариант, т.к. даже при использовании Double нет вероятности, цепочка id не превысит 1.7 x 10^308.