тоже не работает я писал, несколько постов с верху
а чего бы она работала? у вас функция пишет БАЙТ, а вы переменную типа INT ей суёте! функция честно пишет только младший байт этой переменной, который вы потом и читаете. значение 300 = 0x12C, вот она у вас 0x2C и пишет, а потом и читает. что и будет 44.
если ваша функция чтения/записи 1 байта работает правильно, то мои функции тоже будут правильно работать, т.к. они пишут/читают многобайтные значения при помощи вызова этих однобайтных функций.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Или покороче, вам обернули выше эти же функции в более простую форму:
Код:
nt M1_side_A=52; if (mem==1){ eeplc24_write_block(&M1_side_A, 0, sizeof(M1_side_A)); } eeplc24_read_block(&M1_side_A, 0, sizeof(M1_side_A));
sizeof(M1_side_A) = 2 в данном случае, но на некоторых архитектурах это не так и там вообще нужно по другому организовывать работу с такой памятью. Пы сы: не забывайте что нужно еще контролировать адреса раз у вас размерность переменных разная планируются (чтоб адреса не налазили друг на друга). Лучше в структуру переменные объединяйте которые будут записываться в память.
Последний раз редактировалось ELECTROS Сб май 09, 2020 17:01:53, всего редактировалось 1 раз.
ARV, хм я допустим работаю с С2000 ядром, там минимальный размер 16 бит, и даже если объявить char он всё равно будет занимать 16 бит, хоть и средствами среды разработки и будет обрезаться до символа (ну поняли: char, int, short это всё 16 бит, так вот там sizeof() у всех этих типов равен 1), и вот там чтобы работать с внешней памятью которая 8-ми битовая, такие функции не прокатят, нужно специально выделять старшую и младшую части по каждому адресу (будет работать в частности в таком случае - использование псевдо char , но смысл его использовать в такой архитектуре только в случае организации ввода/вывода символов по какому нить интерфейсу, никак не для хранения данных).
Последний раз редактировалось ELECTROS Сб май 09, 2020 17:08:00, всего редактировалось 1 раз.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
я не считаю себ суперзнатоком Си, но вроде как во всех букварях написано, что sizeof всегда возвращает количество БАЙТОВ и служит именно для обеспечения "количественной" мультиплатформенности...
Добавлено after 7 minutes 47 seconds: Re: Библиотека CVAVR EEPROM 24LC256 для записи: 2, 4 байт чисел? ладно, погуглил я... выяснил, что ошибался. тупость, конечно, но и на самом деле если char 2 байта, то sizeof(char) == 1 но есть CHAR_BIT, с помощью которого можно проблему решить
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
я не считаю себ суперзнатоком Си, но вроде как во всех букварях написано, что sizeof всегда возвращает количество БАЙТОВ и служит именно для обеспечения "количественной" мультиплатформенности...
sizeof это оператор который определяет сколько минимальных единиц памяти занимает переменная что в скобках. А насчёт БАЙТА я вам написал, в моём случае БАЙТ равен не 8, а 16 бит. Си тут не причём, дело тут именно в единице измерения памяти в конкретной архитектуре. В AVR, да и наверное в большинстве МК минимальная единица памяти 8 бит, но есть и исключения.
очередь за нобелевкой уже заняли? байт всегда 8 бит, а на вашей платформе 16 бит это char. минимальная единица не обязательно байт, хотя байт может быть минимальной единицей
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
очередь за нобелевкой уже заняли? байт всегда 8 бит, а на вашей платформе 16 бит это char.
Извеняюсь увлёкся чё то:), конечно char. В общем поняли о чём я. Если интересно в частности про DSC (с такой архитектурой), о чём я писал: http://www.ti.com/product/TMS320F28335
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения