13.12.2022, 00:22
|
|
Временная регистрация
Регистрация: 03.03.2005
Сообщений: 52
Сказал спасибо: 9
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Тахометр, нужна помощь.
akegor, Оставить как было? Как правильно?
|
|
|
|
13.12.2022, 00:47
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,248
Сказал спасибо: 11,167
Сказали Спасибо 3,855 раз(а) в 2,926 сообщении(ях)
|
Re: Тахометр, нужна помощь.
ew3ds, будете этот код таскать по разным компиляторам и разным чипам или просто остановитесь на достигнутом?
Если первое - правильней избежать неявных преобразований, если второе - без разницы…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
13.12.2022, 01:03
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,951
Сказал спасибо: 2,547
Сказали Спасибо 11,840 раз(а) в 5,933 сообщении(ях)
|
Re: Тахометр, нужна помощь.
Сообщение от ew3ds
|
Как правильно?
|
Правильно - не полагаться на "кефаль, которая думает за вас". Если загрузка должна производиться побайтно, значит так и делать.
Сообщение от mike-y-k
|
будете этот код таскать по разным компиляторам и разным чипам или просто остановитесь...
|
Лучше сразу привыкать к непритягиванию ошибок, которые, бывает, не так-то и просто найти.
Говорят, правильный прогрАммер, ложась спать, ставит рядом стакан с водой, на случай, если ночью захочет пить. И пустой - если не захочет.
Другими словами - под контролем должно быть всё!
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
Последний раз редактировалось akegor; 13.12.2022 в 01:07.
|
|
|
|
13.12.2022, 01:24
|
|
Временная регистрация
Регистрация: 03.03.2005
Сообщений: 52
Сказал спасибо: 9
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Тахометр, нужна помощь.
Сообщение от mike-y-k
|
или просто остановитесь на достигнутом?
|
Именно так. Это будет один, максимум два экземпляра для себя.
|
|
|
|
13.12.2022, 01:59
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,248
Сказал спасибо: 11,167
Сказали Спасибо 3,855 раз(а) в 2,926 сообщении(ях)
|
Re: Тахометр, нужна помощь.
akegor, таки тогда нужно писать такие операции с учетом разрядности используемого железа… это уже к вопросу о правильных программистах…
ew3ds, тогда оставьте в коде комментарий о неявном присвоении, если будут проблемы - проверите. Или просто напишите операцию без #define прямым присвоением (те 2 операции присвоения из #define). Для 8-битного МК это будет максимально правильно…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
Последний раз редактировалось mike-y-k; 13.12.2022 в 02:06.
|
|
|
|
13.12.2022, 04:12
|
|
Гражданин KAZUS.RU
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 707
Сказал спасибо: 363
Сказали Спасибо 795 раз(а) в 370 сообщении(ях)
|
Re: Тахометр, нужна помощь.
Пару слов насчет правильности: переменную, которая используется и в прерывании и вне его (в данном проекте это переменная start в файле main.c), правильно объявлять с квалификатором volatile во избежание сюрпризов.
В частности, в данном проекте компилятор gcc при включенной оптимизации по размеру сгенерировал инструкцию бесконечного цикла, если у переменной start отсутствовал квалификатор volatile.
Во-о-он на картинке разница с 'volatile' и без оного:
Одним словом, это зависит. Компилятору доверяем, но проверяем.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо j-Roger за это сообщение:
|
|
|
13.12.2022, 13:39
|
|
Временная регистрация
Регистрация: 03.03.2005
Сообщений: 52
Сказал спасибо: 9
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Тахометр, нужна помощь.
Сообщение от j-Roger
|
правильно объявлять с квалификатором volatile во избежание сюрпризов.
|
Цитата:
|
...
#define NO_PULSES_INTERVAL 50000
bit
start;
volatile bit;
long
data;
...
|
Цитата:
|
...
interrupt [EXT_INT0] void ext_int0_isr(void)
{
static bit
process;
volatile ;
static unsigned char
...
|
Подскажите, так будет правильно?
Последний раз редактировалось ew3ds; 13.12.2022 в 13:49.
|
|
|
|
13.12.2022, 14:21
|
|
Вид на жительство
Регистрация: 11.08.2015
Сообщений: 408
Сказал спасибо: 17
Сказали Спасибо 37 раз(а) в 28 сообщении(ях)
|
Re: Тахометр, нужна помощь.
|
|
|
Сказали "Спасибо" Signalshik2
|
|
|
13.12.2022, 15:40
|
|
Временная регистрация
Регистрация: 03.03.2005
Сообщений: 52
Сказал спасибо: 9
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Тахометр, нужна помощь.
Signalshik2, вот так не ругается
Код:
|
...
#define NO_PULSES_INTERVAL 50000
//bit
//start;
//volatile bit;
volatile bit start;
long
data;
... |
Код:
|
...
interrupt [EXT_INT0] void ext_int0_isr(void)
{
static bit
process;
volatile;
//volatile bit start;
static unsigned char
cnt;
... |
|
|
|
|
13.12.2022, 16:15
|
|
Вид на жительство
Регистрация: 11.08.2015
Сообщений: 408
Сказал спасибо: 17
Сказали Спасибо 37 раз(а) в 28 сообщении(ях)
|
Re: Тахометр, нужна помощь.
Тип и название переменной нужно в одну строку писать. Просто volatile; и точка с запятой - это нужно удалить, это бред.
|
|
|
Сказали "Спасибо" Signalshik2
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:23.
|
|