Страница 280 из 386

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

Добавлено: Вт май 08, 2018 17:49:37
arkhnchul
ROMan2947 писал(а):Массив структур имеете ввиду?
или указателей на структуры.
[uquote="ARV",url="/forum/viewtopic.php?p=3372044#p3372044"]см. выше - ROMan2947 пытался, не вышло.[/uquote]
у него с EEPROM не вышло. А вообще вполне работает -
Спойлер

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

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

typedef struct {
    uint8_t Rashod;
    uint8_t Temperatura;

} Dannie_Mecyac;

typedef struct {
    Dannie_Mecyac Yanvar;
    Dannie_Mecyac Fevral;
    Dannie_Mecyac Mart;
    Dannie_Mecyac Dekabr;
} Mecyac;

int main(int argc, char *argv[]) {
    Dannie_Mecyac GWS_Yanvar={10,20};
    Dannie_Mecyac GWS_Fevral={0};
    Dannie_Mecyac GWS_Mart={11,5};

    Mecyac GWS_Dannie={GWS_Yanvar,GWS_Fevral,GWS_Mart}; // на такую строчку компилятор ругается на какую то константу ссылается

    Mecyac *PtrGWS_Dannie=&GWS_Dannie;

    printf("%d %d\n",GWS_Dannie.Yanvar.Rashod, PtrGWS_Dannie->Mart.Temperatura);
}

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

Добавлено: Вт май 08, 2018 17:51:11
ROMan2947
[uquote="ARV",url="/forum/viewtopic.php?p=3372054#p3372054"]#include <avr/eeprom.h>?![/uquote]делал...

[uquote="ARV",url="/forum/viewtopic.php?p=3372054#p3372054"]вам нужен массив структур[/uquote]придется переписать :?

[uquote="ARV",url="/forum/viewtopic.php?p=3372054#p3372054"]при работе с EEPROM точечная нотация не прокатит[/uquote]это связано только с работой с EEPROM? точечная не идет а стрелочная как себя поведет?

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

Добавлено: Вт май 08, 2018 17:59:24
ARV
стрелочная точно так же не пойдет: не умеет AVR-GCC работать так с EEPROM. при помощи функций eeprom_read_byte, eeprom_read_word, eeprom_read_dwod и eeprom_read_block (аналогично и для write) вы должны будете ручками считывать данные из EEPROM в переменную в обычном ОЗУ, и уже с нею работать, как принято.

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

Добавлено: Вт май 08, 2018 18:00:24
arkhnchul
[uquote="ROMan2947",url="/forum/viewtopic.php?p=3372064#p3372064"]это связано только с работой с EEPROM? точечная не идет а стрелочная как себя поведет?[/uquote]
точки для непосредственных значений, стрелки - для указателей. С EEPROM-ом не связано, что положите туда - с тем и работайте.

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

Добавлено: Вт май 08, 2018 18:05:11
ARV
arkhnchul писал(а):С EEPROM-ом не связано
как раз связано: ни точечная, ни стрелочная нотация не будет работать с описанными в EEPROM переменными и указателями на них.

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

Добавлено: Вт май 08, 2018 18:14:33
ROMan2947
[uquote="arkhnchul",url="/forum/viewtopic.php?p=3372073#p3372073"]точки для непосредственных значений, стрелки - для указателей.[/uquote] ну по поводу этого я в курсе,я и имел ввиду может при использовании указателей можно будет работать с EEPROM...оказалось нет...

Добавлено after 1 minute 9 seconds:
Спасибо Вам, суть понял, буду разбираться :beer:

Добавлено after 4 minutes 5 seconds:
Частенько начал сталкиваться с возможность и не возможностью компилятора, что нужно лопатить для изучения компилятора именно AVR-GCC.документация может или книга,где подробно описывалось бы как он работает и хотелось бы на русском....?

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

Добавлено: Вт май 08, 2018 18:20:56
arkhnchul
[uquote="ARV",url="/forum/viewtopic.php?p=3372075#p3372075"]ни точечная, ни стрелочная нотация не будет работать с описанными в EEPROM переменными и указателями на них.[/uquote]
да, извиняюсь, забыл, как оно там в AVR. Привык к stm-ам)

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

Добавлено: Вт май 08, 2018 18:24:20
ARV
ROMan2947 писал(а):что нужно лопатить для изучения компилятора именно AVR-GCC.документация может или книга,где подробно описывалось бы как он работает и хотелось бы на русском....?
вот мои скромные потуги: https://simple-devices.ru/articles/7-so ... avr-studio

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

Добавлено: Вс июн 03, 2018 20:38:35
baghear
Добрый день, подскажите пожалуйста в каких случаях при программировании МК используется куча.

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

Добавлено: Пн июн 04, 2018 06:34:09
ARV
когда ОЗУ немеряно, а думать лень.

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

Добавлено: Пн июн 04, 2018 11:51:58
Мурик
Сейчас в МК ОЗУ относительно не мало. В МК за 1.8$ может быть 64 КБ ОЗУ и больше (зависит от модели). Или можно подключить внешнюю микросхему ОЗУ на несколько десятков мегабайт.

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

Добавлено: Пн июн 04, 2018 12:03:29
dosikus
[uquote="ARV",url="/forum/viewtopic.php?p=3392667#p3392667"]когда ОЗУ немеряно, а думать лень.[/uquote]

Ну как же, оси сделаны для лохов а ARV д'артаньян...

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

Добавлено: Пн июн 04, 2018 21:56:04
baghear
А по сути, то что в осях выделяется память из кучи вкурсе, не в курсе какие преимущества.

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

Добавлено: Пн июн 04, 2018 23:05:22
arkhnchul
ну букварь же. Вот прям по первой ссылке из гугла
Stack
very fast access
don't have to explicitly de-allocate variables
space is managed efficiently by CPU, memory will not become fragmented
local variables only
limit on stack size (OS-dependent)
variables cannot be resized

Heap
variables can be accessed globally
no limit on memory size
(relatively) slower access
no guaranteed efficient use of space, memory may become fragmented over time as blocks of memory are allocated, then freed
you must manage memory (you're in charge of allocating and freeing variables)
variables can be resized using realloc()
что-то перевести?
если говорим про контроллеры, то еще стоит помнить, что malloc штука достаточно дорогая.

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

Добавлено: Вт июн 05, 2018 01:20:27
baghear
[uquote="baghear",url="/forum/viewtopic.php?p=3392483#p3392483"]Добрый день, подскажите пожалуйста в каких случаях при программировании МК используется куча.[/uquote]
Меня интересует в каких случаях???

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

Добавлено: Вт июн 05, 2018 02:46:52
arkhnchul
когда:
а) неизвестно заранее, сколько памяти понадобится
б) но понадобится точно и сравнительно много

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

Добавлено: Вт июн 05, 2018 07:51:02
da-nie
Меня интересует в каких случаях???
1) Если хочется сделать "смотри, как я умею".
2) Если возникло острое желание применить stl (тут на хабре Си++ 11 (хотя именно 11 я чего-то в коде не углядел) на stm32 запускали, так что, желание запустить stl тоже не будет противоестественным).
3) Хочется неопределённости работы программы в условиях ограниченных ресурсов (может, иногда хватит памяти и программа не упадёт?).

8) :)) Пожалуй, всё. :)

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

Добавлено: Вт июн 05, 2018 14:58:03
Siarzhuk
[uquote="arkhnchul",url="/forum/viewtopic.php?p=3393324#p3393324"]
Stack
[...]
variables cannot be resized
[/uquote]
Ох рассказать-бы им про alloca. :-) Ресайз из него, конечно небесспорный, но таки и далеко не всякий realloc вернёт тот-же участок памяти при нарастании аппетита.

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

Добавлено: Вт июн 05, 2018 15:42:27
arkhnchul
[uquote="Siarzhuk",url="/forum/viewtopic.php?p=3393612#p3393612"]далеко не всякий realloc вернёт тот-же участок памяти при нарастании аппетита.[/uquote]
он хотя бы освободит старый - или можно то же сделать руками, malloc-memcpy/memmove-free. С alloca я чеснговоря затруднюсь сказать, чего будет после free. В лучшем случае имхо предыдущий выделенный участок так и будет занимать стек.

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

Добавлено: Вт июн 05, 2018 15:48:58
da-nie
alloca
Только этой функции нет в стандарте. :) Лучше не использовать.
С alloca я чеснговоря затруднюсь сказать, чего будет после free.
Ну что будет... упадёт программа. :)