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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

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

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

Сообщение Serzh2000 »

[uquote="Reflector",url="/forum/viewtopic.php?p=4009083#p4009083"][uquote="MOHCTEP",url="/forum/viewtopic.php?p=4009054#p4009054"]Указатель на адрес следующей записи я храню в ЕЕПРОМе.[/uquote]
У него данные пишутся каждые 10 мин, ресурс EEPROM закончится через 2 года...[/uquote]

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

Изображение

но в разное время (замерять температуру на восходе солнца буду рассчитывать) 8)
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

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

Сообщение VladislavS »

[uquote="Reflector",url="/forum/viewtopic.php?p=4009083#p4009083"]У него данные пишутся каждые 10 мин, ресурс EEPROM закончится через 2 года...[/uquote]Это всего 100 000 записей. Современные EEPROM за миллион уходят. И запись то последовательно по кругу идёт - ещё на два порядка размазывается по всему чипу.
-=Vovka=-
Опытный кот
Сообщения: 844
Зарегистрирован: Пн апр 11, 2011 10:08:52

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

Сообщение -=Vovka=- »

размазывается то размазывается, а адрес, куда пишем, ведь в EEPROM хранится? т. е. эта ячейка убивается
или какая-то хитрая логика записи?
Реклама
Эиком - электронные компоненты и радиодетали
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

[uquote="VladislavS",url="/forum/viewtopic.php?p=4009335#p4009335"]Это всего 100 000 записей. Современные EEPROM за миллион уходят.[/uquote]
В коде от MOHCTEP используется встроенная в AVR EPPROM, а у нее ресурс 100К.
И запись то последовательно по кругу идёт - ещё на два порядка размазывается по всему чипу.
Размазать адрес то можно, но он пишется чтобы можно было просто(и быстро) определить последнюю запись логируемых данных, которые тоже размазываются и уже это у Serzh2000 вызывает затруднения. А так придется еще как-то определять последний записанный адрес...
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

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

Сообщение VladislavS »

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

Добавлено after 4 minutes 32 seconds:
[uquote="Reflector",url="/forum/viewtopic.php?p=4009654#p4009654"]В коде от MOHCTEP используется встроенная в AVR EPPROM, а у нее ресурс 100К.[/uquote]Ещё раз перечитал последнии сообщения, ничего про AVR не нашёл. Речь по прежнему про 24С32, а они таки миллионники.
Реклама
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

[uquote="VladislavS",url="/forum/viewtopic.php?p=4009655#p4009655"]Ещё раз перечитал последнии сообщения, ничего про AVR не нашёл. Речь по прежнему про 24С32, а они таки миллионники.[/uquote]
На код смотри, так есть вызов eeprom_write_word() работающей со встроенной EEPROM.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

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

Сообщение VladislavS »

Мне название этой функции ни о чём не говорит. Допускаю, что это и так, но что мешает ей писать во внешнюю?
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

[uquote="VladislavS",url="/forum/viewtopic.php?p=4009662#p4009662"]но что мешает ей писать во внешнюю?[/uquote]
Ничего не мешает как писать во внешнюю EEPROM, так и использовать менее проблемную FRAM :)
MOHCTEP
Опытный кот
Сообщения: 768
Зарегистрирован: Вс янв 19, 2014 00:55:09

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

Сообщение MOHCTEP »

Здоровья всем!
Возможно ли как-то узнать длину (количество элементов) массива, записанного в флеш память? Если со строками все просто, там рулит признак eol, то как разобраться с числовыми массивами?
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

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

Сообщение VladislavS »

MOHCTEP, длину должен знать тот кто писал массив в память. Спросите у него.
NStorm
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

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

Сообщение NStorm »

MOHCTEP, нет, нельзя. Когда передают указатель на данные (не важно где - в RAM или FLASH), передают другим аргументом и их длину, если она не фиксирована как-то заранее. Пусть тот, кто пишет у вас данные во флэш, пишет еще и их размер сначала.
MOHCTEP
Опытный кот
Сообщения: 768
Зарегистрирован: Вс янв 19, 2014 00:55:09

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

Сообщение MOHCTEP »

Понятно. Спасибо!
Аватара пользователя
Hand-Maker
Поставщик валерьянки для Кота
Сообщения: 2142
Зарегистрирован: Чт дек 12, 2013 11:18:14
Откуда: Украина, Черновцы

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

Сообщение Hand-Maker »

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

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

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

Перед этими строками идет включение тактирования ЮАРТа, после них -- обнуление регистров. Тут вопросов нет.
NStorm
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

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

Сообщение NStorm »

Hand-Maker, прочитает их во временный регистр (не сохраняя дальше никуда). Смысл в том, чтобы обратиться к этому регистру. С некоторыми регистрами аппаратно что-то происходит от того, что их читают, и иногда это надо делать. Чтение DR/SR там вроде сбрасывает что-то... точно не помню, смотреть лениво.
Аватара пользователя
Hand-Maker
Поставщик валерьянки для Кота
Сообщения: 2142
Зарегистрирован: Чт дек 12, 2013 11:18:14
Откуда: Украина, Черновцы

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

Сообщение Hand-Maker »

То есть такой себе пинок системе...
Ясно, спасибо, буду изучать дальше.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

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

Сообщение VladislavS »

[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: Вопросы по С/С++ (СИ)

Сообщение ARV »

Hand-Maker писал(а):(void) USART->SR;
зачем тут приведение типа?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
NStorm
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

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

Сообщение NStorm »

ARV, ворнинг исключить какой-нибудь может? Точно не необходимость, будет и без этого работать.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18561
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

я тут немножко удивился...

Код: Выделить всё

#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;
}
вот никогда не догадался бы, что напечатает этот код, если б не попробовал скомпилировать...
кто сможет ответить до компиляции?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Ответить

Вернуться в «Разные вопросы по МК»