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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Сообщение 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);
}
Реклама
Грызет канифоль
Аватара пользователя
Сообщения: 287
Зарегистрирован: Сб янв 23, 2016 00:59:59
Откуда: Чебоксары

Сообщение 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? точечная не идет а стрелочная как себя поведет?
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18748
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Сообщение arkhnchul »

[uquote="ROMan2947",url="/forum/viewtopic.php?p=3372064#p3372064"]это связано только с работой с EEPROM? точечная не идет а стрелочная как себя поведет?[/uquote]
точки для непосредственных значений, стрелки - для указателей. С EEPROM-ом не связано, что положите туда - с тем и работайте.
Реклама
Эиком - электронные компоненты и радиодетали
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18748
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

arkhnchul писал(а):С EEPROM-ом не связано
как раз связано: ни точечная, ни стрелочная нотация не будет работать с описанными в EEPROM переменными и указателями на них.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Грызет канифоль
Аватара пользователя
Сообщения: 287
Зарегистрирован: Сб янв 23, 2016 00:59:59
Откуда: Чебоксары

Сообщение 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.документация может или книга,где подробно описывалось бы как он работает и хотелось бы на русском....?
Реклама
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Сообщение arkhnchul »

[uquote="ARV",url="/forum/viewtopic.php?p=3372075#p3372075"]ни точечная, ни стрелочная нотация не будет работать с описанными в EEPROM переменными и указателями на них.[/uquote]
да, извиняюсь, забыл, как оно там в AVR. Привык к stm-ам)
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18748
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Сообщение baghear »

Добрый день, подскажите пожалуйста в каких случаях при программировании МК используется куча.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18748
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

когда ОЗУ немеряно, а думать лень.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Сейчас в МК ОЗУ относительно не мало. В МК за 1.8$ может быть 64 КБ ОЗУ и больше (зависит от модели). Или можно подключить внешнюю микросхему ОЗУ на несколько десятков мегабайт.
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

[uquote="ARV",url="/forum/viewtopic.php?p=3392667#p3392667"]когда ОЗУ немеряно, а думать лень.[/uquote]

Ну как же, оси сделаны для лохов а ARV д'артаньян...
Опытный кот
Аватара пользователя
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Сообщение baghear »

А по сути, то что в осях выделяется память из кучи вкурсе, не в курсе какие преимущества.
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Сообщение 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 штука достаточно дорогая.
Опытный кот
Аватара пользователя
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Сообщение baghear »

[uquote="baghear",url="/forum/viewtopic.php?p=3392483#p3392483"]Добрый день, подскажите пожалуйста в каких случаях при программировании МК используется куча.[/uquote]
Меня интересует в каких случаях???
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Сообщение arkhnchul »

когда:
а) неизвестно заранее, сколько памяти понадобится
б) но понадобится точно и сравнительно много
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1590
Зарегистрирован: Вс июн 24, 2012 16:07:00
Откуда: Лен.Обл.

Сообщение da-nie »

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

8) :)) Пожалуй, всё. :)
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Контактная информация:
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 353
Зарегистрирован: Вс янв 19, 2014 22:41:55

Сообщение Siarzhuk »

[uquote="arkhnchul",url="/forum/viewtopic.php?p=3393324#p3393324"]
Stack
[...]
variables cannot be resized
[/uquote]
Ох рассказать-бы им про alloca. :-) Ресайз из него, конечно небесспорный, но таки и далеко не всякий realloc вернёт тот-же участок памяти при нарастании аппетита.
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR! ;-)
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Сообщение arkhnchul »

[uquote="Siarzhuk",url="/forum/viewtopic.php?p=3393612#p3393612"]далеко не всякий realloc вернёт тот-же участок памяти при нарастании аппетита.[/uquote]
он хотя бы освободит старый - или можно то же сделать руками, malloc-memcpy/memmove-free. С alloca я чеснговоря затруднюсь сказать, чего будет после free. В лучшем случае имхо предыдущий выделенный участок так и будет занимать стек.
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1590
Зарегистрирован: Вс июн 24, 2012 16:07:00
Откуда: Лен.Обл.

Сообщение da-nie »

alloca
Только этой функции нет в стандарте. :) Лучше не использовать.
С alloca я чеснговоря затруднюсь сказать, чего будет после free.
Ну что будет... упадёт программа. :)
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Контактная информация:
Ответить

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