Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Но Вы его объявляете двумерным, а размерность не указываете. Как компилятор догадается, сколько под каждого измерение выделять? Те же "casablan.wav" и "razb.wav" требуют разного числа байтов для хранения.
Потому что в одномерном одно измерение. И char x[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} - это однозначно вектор из 12 элементов
А вот char x[][] может быть и 1x12, и 2x6, и 3x4, и 4x3, и 6x2, и 12x1. Как компилятору понять, что Вы от него хотите? Остаться неопределённым может только одно (первое) измерение, оно может быть вычислено компилятором по общему количеству элементов + размерностям других измерений.
Скажем, char x[][3] = {1, 2, ....N} - тут компилятор однозначно понимает, что это массив из нескольких групп по 3 char-а. Вычислить, сколько групп понадобится, несложно. А просто char[][] - непонятно, сколько групп по сколько элементов имеются в виду.
P.S. Если так уж приспичило в данном конкретном случае (со строками), то объявляйте это не как массив массивом char, а как массив строк:
Свежий! Вот эта "превед" воспринимается как 'п' 'р' 'е' 'в' 'е' 'д' '\n' где \n = 0 Так что твои массивы строк это уже как бы двумерные массивы. В голом си нет понятия строка. Я выходил из положения - определял через typedefы строки, и этот свой тип загонял в массив. Изврат конечно, но начальнику понравилось, а компилятору - не очень. 8 килограм прошивки и 512 байт еепрона скушалось моментально.
Оптимизировал потом под конечную длинну строки, и жЫть стало легче. И вывод на ИКран стал более равномерным, без переодических залипаний.
Лучше разбери механизм переменная-указатель. Даст бонус к быстродействию кода. Керниган-Ритчи в помощь)))
Оффтопом: мелкие кристаллы и гиганские задачи на них - руки правят на ура))))
Вот эта "превед" воспринимается как 'п' 'р' 'е' 'в' 'е' 'д' '\n' где \n = 0
Вы немножко путаете. '\n' и 0 - это совсем разные вещи. Ну а "превед" - это массив из 'п' 'р' 'е' 'в' 'е' 'д' '\0', а уже '\0' и просто 0 - одно и то же.
А. Да. Напутал)))) строка завершается не '\n', а '\0' Надеюсь и с этой оплошностью всеравно идея ясна. По сути строка "превед" в массиве хранится как указатель на некоторый адрес в прошивке, и не более того. Да и вообще - использование безразмерных массивов - тупо жрет память, т.к. компилятор начинает нарезать все свободное пространство под такие безобразия. Некоторые компиляторы умеют ограничивать сами себя, а некоторые - жрут все подряд.
на каком ресурсе можно почитать о языке C для AVR но полную версию языка со всеми возможными вариантами . Наподобие ресурса arduino.cc php.org и др. где указанны примеры, полный перечень аргументов, пояснения и тп. Потому что например открываю , официальный ресурс C (наверно разновидность ATMEL) на котором хочу детально прочитать про sleep его режимы, как пользоваться и тд и что я вижу http://www.atmel.com/webdoc/avrlibcrefe ... sleep.html
Код:
set_sleep_mode(<mode>);
какие такие моде ? это что секретная информация ? почему не указанны все варианты модов с примерами и т.д. короче какойто непонятный ресурс.
Вот есть вприроде ресурс про C для AVR c полным описанием ?
Последний раз редактировалось alex68md Вт мар 14, 2017 15:10:03, всего редактировалось 1 раз.
забыл линк на атмел (наверно единственно официальный ресурс?) кинуть. обновил предыдущее сообщение. как видим сайт очень и очень неполный несмотря на то что с притензией на оф. ресурс по языку для их процессоров.
ARV можно и английский. спасибо. сейчас посматрю ваши линки
Добавлено after 2 hours 37 minutes 42 seconds: получается у каждого компилятора свой язык...
ARV, а если я в ардуиновский компилятор подсуну код с _BV(x), он его поймет?
если я в ардуиновский компилятор подсуну код с _BV(x), он его поймет?
должен по идее, ведь ардуино компилирует тем же самым AVR-GCC, о котором я все и писал... а если не поймет, просто добавьте в самом начале своего файла #define _BV(x) (1<<(x)) и после этого уже проблем не будет
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
К вопросу о двумерных массивах. Вспомнилась лекция по С из ютюба, где лектор рассказывает о том, что в итоговом коде не существует массивов размерностью больше 1. Любой многомерный массив переводится в строку и хранится в таком виде в памяти. А если нашаманить с указателями то можно получить интересные эффекты .
К вопросу о среде. Я агитирую за IAR. Изначально привык к среде и переход на стмки был не так ужасен. Кроме того, в один прекрасный момент, Вы захотите попробовать С++, а в avr-gcc его поддержка не полная. Кроме того, в другой прекрасный момент, Вы захотите запустить пошаговое исполнение кода в Proteus. И опа! А ваша 7я студия с ее gcc не может нормально сгенерировать elf файл, надо откатиться на 6ю. Потом Вы решите, а ну его, этот Proteus. Есть же JTAG! Покупать фирменный 3-й айс за 200 у.е. для хобби как-то не ок. Нагуглите 1-й айс, самодельный, ну или купите за 10 у.е. И тут снова засада - 7я студия не поддерживает такое, только 4я.
Но купив за 20 у.е. стмовскую дискавери Вы получаете отладочную плату, программатор, джитаг-отладчик. Вот Вам и Атмел.
P.S. Когда писал одну прожку под stm, мне ядро исключение кидало, когда я по невнимательности, через указатель, выходил за пределы своего массива. Это к вопросу о надежности кода. А чего стоят точки останова исполнения по изменению ячейки памяти . Тебе исключение с жалобой на ячейку памяти, а ты туда брекпоинт и сидишь, ждешь - кто же попытается ее изменить.
Добавлено after 16 minutes 44 seconds:
alex68md писал(а):
получается у каждого компилятора свой язык...
Это Вам по молодости так кажется. Вы просто еще не разбираетесь в хидерах, макросах и директивах компилятора. Язык у всех один С или С++. А вот надстройки над этим языком в виде макросов и директив уже индивидуальны. Макросы можно легко переносить в собственный хидер. А директивы, как правило, имеют полные аналогии - будь то иаровкое __interrupt_vector или студиевское ISR(...). Читайте, смотрите лекции по С. Тогда Вы поймете какие "костыли" применяются для адаптации С к авр, откуда берутся названия регистров в компиляторе и т.п. Можно и по другому выразиться - создавая новый проект в среде, Вы не получаете чистый лист. Вы получаете заготовку. С хидерами. В которых что-то уже определено, при помощи того же С.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 42
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения