Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

Re: Вопросы по С/С++ (СИ)

Сб апр 03, 2021 07:53:59

Указатель на адрес следующей записи я храню в ЕЕПРОМе.

У него данные пишутся каждые 10 мин, ресурс EEPROM закончится через 2 года... Я бы вместо AT24C32 поставил дешевую FRAM, типа FM24CL64B, тогда можно индекс последней записи хранить в ней же по фиксированному адресу и ничего каждый раз не искать.

Re: Вопросы по С/С++ (СИ)

Сб апр 03, 2021 08:20:41

Указатель на адрес следующей записи я храню в ЕЕПРОМе.

У него данные пишутся каждые 10 мин, ресурс EEPROM закончится через 2 года...


один раз в день :roll:

Изображение

но в разное время (замерять температуру на восходе солнца буду рассчитывать) 8)

Re: Вопросы по С/С++ (СИ)

Сб апр 03, 2021 16:01:32

У него данные пишутся каждые 10 мин, ресурс EEPROM закончится через 2 года...
Это всего 100 000 записей. Современные EEPROM за миллион уходят. И запись то последовательно по кругу идёт - ещё на два порядка размазывается по всему чипу.

Re: Вопросы по С/С++ (СИ)

Вс апр 04, 2021 06:29:55

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

Re: Вопросы по С/С++ (СИ)

Вс апр 04, 2021 07:42:56

Это всего 100 000 записей. Современные EEPROM за миллион уходят.

В коде от MOHCTEP используется встроенная в AVR EPPROM, а у нее ресурс 100К.

И запись то последовательно по кругу идёт - ещё на два порядка размазывается по всему чипу.

Размазать адрес то можно, но он пишется чтобы можно было просто(и быстро) определить последнюю запись логируемых данных, которые тоже размазываются и уже это у Serzh2000 вызывает затруднения. А так придется еще как-то определять последний записанный адрес...

Re: Вопросы по С/С++ (СИ)

Вс апр 04, 2021 07:50:12

Да уж. Похоже, я плохо разбираюсь в искусственно придуманных трудностях :)

Добавлено after 4 minutes 32 seconds:
В коде от MOHCTEP используется встроенная в AVR EPPROM, а у нее ресурс 100К.
Ещё раз перечитал последнии сообщения, ничего про AVR не нашёл. Речь по прежнему про 24С32, а они таки миллионники.

Re: Вопросы по С/С++ (СИ)

Вс апр 04, 2021 08:02:31

Ещё раз перечитал последнии сообщения, ничего про AVR не нашёл. Речь по прежнему про 24С32, а они таки миллионники.

На код смотри, так есть вызов eeprom_write_word() работающей со встроенной EEPROM.

Re: Вопросы по С/С++ (СИ)

Вс апр 04, 2021 08:11:14

Мне название этой функции ни о чём не говорит. Допускаю, что это и так, но что мешает ей писать во внешнюю?

Re: Вопросы по С/С++ (СИ)

Вс апр 04, 2021 08:40:24

но что мешает ей писать во внешнюю?

Ничего не мешает как писать во внешнюю EEPROM, так и использовать менее проблемную FRAM :)

Re: Вопросы по С/С++ (СИ)

Ср апр 07, 2021 02:30:36

Здоровья всем!
Возможно ли как-то узнать длину (количество элементов) массива, записанного в флеш память? Если со строками все просто, там рулит признак eol, то как разобраться с числовыми массивами?

Re: Вопросы по С/С++ (СИ)

Ср апр 07, 2021 06:49:54

MOHCTEP, длину должен знать тот кто писал массив в память. Спросите у него.

Re: Вопросы по С/С++ (СИ)

Ср апр 07, 2021 07:17:14

MOHCTEP, нет, нельзя. Когда передают указатель на данные (не важно где - в RAM или FLASH), передают другим аргументом и их длину, если она не фиксирована как-то заранее. Пусть тот, кто пишет у вас данные во флэш, пишет еще и их размер сначала.

Re: Вопросы по С/С++ (СИ)

Ср апр 07, 2021 11:48:05

Понятно. Спасибо!

Re: Вопросы по С/С++ (СИ)

Чт апр 22, 2021 15:21:20

Всем привет!
Подскажите, пжлст, что обозначают вот эти строки:

(void) USART->SR;
(void) USART->DR;

собственно SR и DR я понимаю, что это регистры модуля ЮАРТ. объединённые в структуру.
Меня интересует именно смысл этой конструкции с void-ом вначале, и что она делает.

Перед этими строками идет включение тактирования ЮАРТа, после них -- обнуление регистров. Тут вопросов нет.

Re: Вопросы по С/С++ (СИ)

Чт апр 22, 2021 15:26:52

Hand-Maker, прочитает их во временный регистр (не сохраняя дальше никуда). Смысл в том, чтобы обратиться к этому регистру. С некоторыми регистрами аппаратно что-то происходит от того, что их читают, и иногда это надо делать. Чтение DR/SR там вроде сбрасывает что-то... точно не помню, смотреть лениво.

Re: Вопросы по С/С++ (СИ)

Чт апр 22, 2021 15:38:02

То есть такой себе пинок системе...
Ясно, спасибо, буду изучать дальше.

Re: Вопросы по С/С++ (СИ)

Пт апр 23, 2021 15:13:24

Подскажите, пжлст, что обозначают вот эти строки:
Если почитать RM, то там будет написано, что последовательное чтение регистров SR и DR очищает статусы порта. Когда есть сомнения, что делает код, то хорошо подсматривать в листинг.
Код:
//USART1->SR;
        LDR.W    R0,??DataTable2
        LDR      R1,[R0, #+0]   
//USART1->DR;
        LDR      R0,[R0, #+4] 
       

??DataTable2:
        DATA32
        DC32     0x40013800

Re: Вопросы по С/С++ (СИ)

Пн апр 26, 2021 08:14:18

Hand-Maker писал(а):(void) USART->SR;
зачем тут приведение типа?

Re: Вопросы по С/С++ (СИ)

Пн апр 26, 2021 08:31:07

ARV, ворнинг исключить какой-нибудь может? Точно не необходимость, будет и без этого работать.

Re: Вопросы по С/С++ (СИ)

Чт апр 29, 2021 20:02:15

я тут немножко удивился...
Код:
#include <stdio.h>
#include <limits.h>


int main(void) {
   int var = INT_MIN;

   printf("abs(%d) > 0 ?\n%s\n", var, abs(var) > 0 ? "YES" : "NO");

   return 0;
}
вот никогда не догадался бы, что напечатает этот код, если б не попробовал скомпилировать...
кто сможет ответить до компиляции?
Ответить