Вопросы по С/С++ (СИ)
Re: Вопросы по С/С++ (СИ)
[uquote="MOHCTEP",url="/forum/viewtopic.php?p=4009054#p4009054"]Указатель на адрес следующей записи я храню в ЕЕПРОМе.[/uquote]
У него данные пишутся каждые 10 мин, ресурс EEPROM закончится через 2 года... Я бы вместо AT24C32 поставил дешевую FRAM, типа FM24CL64B, тогда можно индекс последней записи хранить в ней же по фиксированному адресу и ничего каждый раз не искать.
У него данные пишутся каждые 10 мин, ресурс EEPROM закончится через 2 года... Я бы вместо AT24C32 поставил дешевую FRAM, типа FM24CL64B, тогда можно индекс последней записи хранить в ней же по фиксированному адресу и ничего каждый раз не искать.
- Реклама
- Serzh2000
- Опытный кот
- Сообщения: 867
- Зарегистрирован: Пт фев 27, 2015 12:00:53
- Откуда: Рязанская область
Re: Вопросы по С/С++ (СИ)
[uquote="Reflector",url="/forum/viewtopic.php?p=4009083#p4009083"][uquote="MOHCTEP",url="/forum/viewtopic.php?p=4009054#p4009054"]Указатель на адрес следующей записи я храню в ЕЕПРОМе.[/uquote]
У него данные пишутся каждые 10 мин, ресурс EEPROM закончится через 2 года...[/uquote]
один раз в день

но в разное время (замерять температуру на восходе солнца буду рассчитывать)
У него данные пишутся каждые 10 мин, ресурс EEPROM закончится через 2 года...[/uquote]
один раз в день
но в разное время (замерять температуру на восходе солнца буду рассчитывать)
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Вопросы по С/С++ (СИ)
[uquote="Reflector",url="/forum/viewtopic.php?p=4009083#p4009083"]У него данные пишутся каждые 10 мин, ресурс EEPROM закончится через 2 года...[/uquote]Это всего 100 000 записей. Современные EEPROM за миллион уходят. И запись то последовательно по кругу идёт - ещё на два порядка размазывается по всему чипу.
Re: Вопросы по С/С++ (СИ)
размазывается то размазывается, а адрес, куда пишем, ведь в EEPROM хранится? т. е. эта ячейка убивается
или какая-то хитрая логика записи?
или какая-то хитрая логика записи?
Re: Вопросы по С/С++ (СИ)
[uquote="VladislavS",url="/forum/viewtopic.php?p=4009335#p4009335"]Это всего 100 000 записей. Современные EEPROM за миллион уходят.[/uquote]
В коде от MOHCTEP используется встроенная в AVR EPPROM, а у нее ресурс 100К.
В коде от MOHCTEP используется встроенная в AVR EPPROM, а у нее ресурс 100К.
Размазать адрес то можно, но он пишется чтобы можно было просто(и быстро) определить последнюю запись логируемых данных, которые тоже размазываются и уже это у Serzh2000 вызывает затруднения. А так придется еще как-то определять последний записанный адрес...И запись то последовательно по кругу идёт - ещё на два порядка размазывается по всему чипу.
- Реклама
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Вопросы по С/С++ (СИ)
Да уж. Похоже, я плохо разбираюсь в искусственно придуманных трудностях 
Добавлено after 4 minutes 32 seconds:
[uquote="Reflector",url="/forum/viewtopic.php?p=4009654#p4009654"]В коде от MOHCTEP используется встроенная в AVR EPPROM, а у нее ресурс 100К.[/uquote]Ещё раз перечитал последнии сообщения, ничего про AVR не нашёл. Речь по прежнему про 24С32, а они таки миллионники.
Добавлено after 4 minutes 32 seconds:
[uquote="Reflector",url="/forum/viewtopic.php?p=4009654#p4009654"]В коде от MOHCTEP используется встроенная в AVR EPPROM, а у нее ресурс 100К.[/uquote]Ещё раз перечитал последнии сообщения, ничего про AVR не нашёл. Речь по прежнему про 24С32, а они таки миллионники.
Re: Вопросы по С/С++ (СИ)
[uquote="VladislavS",url="/forum/viewtopic.php?p=4009655#p4009655"]Ещё раз перечитал последнии сообщения, ничего про AVR не нашёл. Речь по прежнему про 24С32, а они таки миллионники.[/uquote]
На код смотри, так есть вызов eeprom_write_word() работающей со встроенной EEPROM.
На код смотри, так есть вызов eeprom_write_word() работающей со встроенной EEPROM.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Вопросы по С/С++ (СИ)
Мне название этой функции ни о чём не говорит. Допускаю, что это и так, но что мешает ей писать во внешнюю?
Re: Вопросы по С/С++ (СИ)
[uquote="VladislavS",url="/forum/viewtopic.php?p=4009662#p4009662"]но что мешает ей писать во внешнюю?[/uquote]
Ничего не мешает как писать во внешнюю EEPROM, так и использовать менее проблемную FRAM
Ничего не мешает как писать во внешнюю EEPROM, так и использовать менее проблемную FRAM
Re: Вопросы по С/С++ (СИ)
Здоровья всем!
Возможно ли как-то узнать длину (количество элементов) массива, записанного в флеш память? Если со строками все просто, там рулит признак eol, то как разобраться с числовыми массивами?
Возможно ли как-то узнать длину (количество элементов) массива, записанного в флеш память? Если со строками все просто, там рулит признак eol, то как разобраться с числовыми массивами?
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Вопросы по С/С++ (СИ)
MOHCTEP, длину должен знать тот кто писал массив в память. Спросите у него.
Re: Вопросы по С/С++ (СИ)
MOHCTEP, нет, нельзя. Когда передают указатель на данные (не важно где - в RAM или FLASH), передают другим аргументом и их длину, если она не фиксирована как-то заранее. Пусть тот, кто пишет у вас данные во флэш, пишет еще и их размер сначала.
Re: Вопросы по С/С++ (СИ)
Понятно. Спасибо!
- Hand-Maker
- Поставщик валерьянки для Кота
- Сообщения: 2142
- Зарегистрирован: Чт дек 12, 2013 11:18:14
- Откуда: Украина, Черновцы
Re: Вопросы по С/С++ (СИ)
Всем привет!
Подскажите, пжлст, что обозначают вот эти строки:
(void) USART->SR;
(void) USART->DR;
собственно SR и DR я понимаю, что это регистры модуля ЮАРТ. объединённые в структуру.
Меня интересует именно смысл этой конструкции с void-ом вначале, и что она делает.
Перед этими строками идет включение тактирования ЮАРТа, после них -- обнуление регистров. Тут вопросов нет.
Подскажите, пжлст, что обозначают вот эти строки:
(void) USART->SR;
(void) USART->DR;
собственно SR и DR я понимаю, что это регистры модуля ЮАРТ. объединённые в структуру.
Меня интересует именно смысл этой конструкции с void-ом вначале, и что она делает.
Перед этими строками идет включение тактирования ЮАРТа, после них -- обнуление регистров. Тут вопросов нет.
Re: Вопросы по С/С++ (СИ)
Hand-Maker, прочитает их во временный регистр (не сохраняя дальше никуда). Смысл в том, чтобы обратиться к этому регистру. С некоторыми регистрами аппаратно что-то происходит от того, что их читают, и иногда это надо делать. Чтение DR/SR там вроде сбрасывает что-то... точно не помню, смотреть лениво.
- Hand-Maker
- Поставщик валерьянки для Кота
- Сообщения: 2142
- Зарегистрирован: Чт дек 12, 2013 11:18:14
- Откуда: Украина, Черновцы
Re: Вопросы по С/С++ (СИ)
То есть такой себе пинок системе...
Ясно, спасибо, буду изучать дальше.
Ясно, спасибо, буду изучать дальше.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Вопросы по С/С++ (СИ)
[uquote="Hand-Maker",url="/forum/viewtopic.php?p=4020368#p4020368"]Подскажите, пжлст, что обозначают вот эти строки:[/uquote]Если почитать RM, то там будет написано, что последовательное чтение регистров SR и DR очищает статусы порта. Когда есть сомнения, что делает код, то хорошо подсматривать в листинг.
Код: Выделить всё
//USART1->SR;
LDR.W R0,??DataTable2
LDR R1,[R0, #+0]
//USART1->DR;
LDR R0,[R0, #+4]
??DataTable2:
DATA32
DC32 0x40013800- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
зачем тут приведение типа?Hand-Maker писал(а):(void) USART->SR;
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Вопросы по С/С++ (СИ)
ARV, ворнинг исключить какой-нибудь может? Точно не необходимость, будет и без этого работать.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
я тут немножко удивился...
вот никогда не догадался бы, что напечатает этот код, если б не попробовал скомпилировать...
кто сможет ответить до компиляции?
Код: Выделить всё
#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;
}кто сможет ответить до компиляции?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!


