Вопросы по С/С++ (СИ)
Re: Вопросы по С/С++ (СИ)
Что за самоцель такая? Хочешь защитить её? Ну так уже защитил, сделав статической и предоставив метод для доступа. Зачем обязательно делать её inline?
- Реклама
- GARMIN
- Держит паяльник хвостом
- Сообщения: 954
- Зарегистрирован: Вс дек 02, 2012 16:58:33
- Откуда: от туда
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Накладные расходы на вызов функции и возврат значения. Хочу избежать CALLF.
Наверное, много хочу
Наверное, много хочу
Re: Вопросы по С/С++ (СИ)
Я уже тут на форуме сто раз говорил. Ненужно заниматься предварительной оптимизацией! Тем более, если экономятся какие-то крохи! Сам раньше много раз попадался в эту ловушку, теперь, слава богу, отучился.
Понимаешь, если ты провел исследования, и выяснил, что узкое место - это действительно вызов функции, то может быть два варианта:
1. Выбранная тобой архитектура всего приложения - дерьмо.
2. Твоя задача действительно требует большой вычислительной мощности. При этом тебе или нужно оставить красивости вроде инкапсуляции в покое и писать всё на ассемблере оптимизируя каждый такт, или нужно взять более мощное железо.
Если никакие исследования не проводились, и это - оптимизация ради оптимизации - прошу тебя, ЗАБУДЬ!. Не херь архитектуру ради нескольких сэкономленных тактов, которые тебе никогда не пригодятся!
Понимаешь, если ты провел исследования, и выяснил, что узкое место - это действительно вызов функции, то может быть два варианта:
1. Выбранная тобой архитектура всего приложения - дерьмо.
2. Твоя задача действительно требует большой вычислительной мощности. При этом тебе или нужно оставить красивости вроде инкапсуляции в покое и писать всё на ассемблере оптимизируя каждый такт, или нужно взять более мощное железо.
Если никакие исследования не проводились, и это - оптимизация ради оптимизации - прошу тебя, ЗАБУДЬ!. Не херь архитектуру ради нескольких сэкономленных тактов, которые тебе никогда не пригодятся!
- GARMIN
- Держит паяльник хвостом
- Сообщения: 954
- Зарегистрирован: Вс дек 02, 2012 16:58:33
- Откуда: от туда
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
После гугления и экспериментов всё получилось.
В файле "timer.h" объявил переменную sys_time как внешнюю. Также именно в нём объявил и определил инлайн функцию с модификатором static.
Вот так:
Тогда в мэйне #include "timers.h"
и вызовы функции преобразовываются в простое чтение переменной:
Сохранена безопасность переменной, быстрота обращения и удобство написания программы.
В файле "timer.h" объявил переменную sys_time как внешнюю. Также именно в нём объявил и определил инлайн функцию с модификатором static.
Вот так:
Код: Выделить всё
extern volatile uint16_t sys_time;
inline uint16_t time (void);
static inline uint16_t time (void)
{
return sys_time;
}
и вызовы функции преобразовываются в простое чтение переменной:
Код: Выделить всё
213 LED_start_time = time ();
\ 00003D CE .... LDW X, L:sys_time
\ 000040 CF .... LDW L:LED_start_time, XRe: Вопросы по С/С++ (СИ)
Чувааак... Я даже не знаю что тебе сказать...
- Реклама
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18673
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
да что тут можно сказать... человек хотел выстрелить себе в ногу и успешно этого добился...
безопасность-то соблюдена, а атомарность доступа - нет. геморрой еще впереди...
безопасность-то соблюдена, а атомарность доступа - нет. геморрой еще впереди...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Вопросы по С/С++ (СИ)
Вот! Именно это я и хотел сказать, только слова забыл.человек хотел выстрелить себе в ногу и успешно этого добился...
- GARMIN
- Держит паяльник хвостом
- Сообщения: 954
- Зарегистрирован: Вс дек 02, 2012 16:58:33
- Откуда: от туда
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
По даташиту на STM8 команда "LDW X longmem" занимает три байта и выполняется за два такта процессора. Атомарность соблюдена. Это не атмел.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18673
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
то есть вы хотите сказать, что 8-битный МК работает с памятью 16-битными словами, и в процессе обмена байтами прерывания не могут произойти? я верно понимаю архитектуру STM8?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- GARMIN
- Держит паяльник хвостом
- Сообщения: 954
- Зарегистрирован: Вс дек 02, 2012 16:58:33
- Откуда: от туда
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Пересылка 16-ти битного слова в STM8 выполняется одной командой за два такта. Если прерывания могут произойти при выполнении половины процессорной команды, то я ничего не понимаю 
Re: Вопросы по С/С++ (СИ)
In case of simultaneous accesses to the same memory area both in execution stage (write)ARV писал(а):то есть вы хотите сказать, что 8-битный МК работает с памятью 16-битными словами, и в процессе обмена байтами прерывания не могут произойти? я верно понимаю архитектуру STM8?
and decoding stage (read), the decode stage is stalled till the execution stage releases the
resource.
PM0044
Programming manual
"Я не даю готовых решений, я заставляю думать!"(С)
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18673
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Нифига не понял: где здесь о "неразрывности" тактов многотактовой инструкции говорится?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Вопросы по С/С++ (СИ)
Only DIV and DIVW instructions are interruptable.
"Я не даю готовых решений, я заставляю думать!"(С)
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18673
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Ну это другой разговор
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Вопросы по С/С++ (СИ)
Добрый день, есть 24 битное АЦП которое выдаёт один бит по каждому возростающему фронту.
Подскажите как сохранить эти данные.
Подскажите как сохранить эти данные.
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
А покажите, как Вы это делаете, чтобы все поняли, что конкретно у Вас не получается.
Вопрос сформулирован абсолютно неконкретно. Если имеется в виду, что выход у АЦП последовательный, и весь результат за 24 такта (фронта) выдаёт - то в чём проблема записывать очередной бит в некую переменную на 0-ю позицию и сдвигать эту переменную влево?
Вопрос сформулирован абсолютно неконкретно. Если имеется в виду, что выход у АЦП последовательный, и весь результат за 24 такта (фронта) выдаёт - то в чём проблема записывать очередной бит в некую переменную на 0-ю позицию и сдвигать эту переменную влево?
Re: Вопросы по С/С++ (СИ)
Не писал что не получается, спрашивал как сделать.
Да у АЦП последовательный выход и по фронту выдаются данные.
Да у АЦП последовательный выход и по фронту выдаются данные.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Вопросы по С/С++ (СИ)
Ну так и делать — по фронту забирать данные.baghear писал(а):как сделать.
по фронту выдаются данные.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Дак напишите. Почему всё вытягивать нужно из людейbaghear писал(а):Не писал что не получается
Вопрос какой-то странный. Что значит "как сохранить данные" ? Можно на диск записать, или на флешку - долго будут храниться...
Ваш вопрос звучит примерно так :
Вот теперь попробуйте ответить мне на мой вопрос.У меня есть в огороде яблоня. По каждому стуку по ней, яблоки падают по одному.
Подскажите, как сохранить эти яблоки ?
А вот Ваш пост :
Не находите ничего общего с моим ?Добрый день, есть 24 битное АЦП которое выдаёт один бит по каждому возростающему фронту.
Подскажите как сохранить эти данные.
Re: Вопросы по С/С++ (СИ)
Хотел бы просто сохранить в переменую.
Приведите пожалуйста пример кода на си.
Приведите пожалуйста пример кода на си.


