Тахометр, нужна помощь.
13.12.2022, 00:22
|
#11
|
|
Временная регистрация
Регистрация: 03.03.2005
Сообщений: 52
Сказал спасибо: 9
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Тахометр, нужна помощь.
akegor, Оставить как было? Как правильно?
|
|
|
|
13.12.2022, 00:47
|
#12
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО/МО
Сообщений: 12,287
Сказал спасибо: 11,861
Сказали Спасибо 4,159 раз(а) в 3,177 сообщении(ях)
|
Re: Тахометр, нужна помощь.
ew3ds, будете этот код таскать по разным компиляторам и разным чипам или просто остановитесь на достигнутом?
Если первое - правильней избежать неявных преобразований, если второе - без разницы…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
13.12.2022, 01:03
|
#13
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
|
Re: Тахометр, нужна помощь.
Сообщение от ew3ds
|
|
Как правильно?
|
Правильно - не полагаться на "кефаль, которая думает за вас". Если загрузка должна производиться побайтно, значит так и делать.
Сообщение от mike-y-k
|
|
будете этот код таскать по разным компиляторам и разным чипам или просто остановитесь...
|
Лучше сразу привыкать к непритягиванию ошибок, которые, бывает, не так-то и просто найти.
Говорят, правильный прогрАммер, ложась спать, ставит рядом стакан с водой, на случай, если ночью захочет пить. И пустой - если не захочет.
Другими словами - под контролем должно быть всё!
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
Последний раз редактировалось akegor; 13.12.2022 в 01:07.
|
|
|
|
13.12.2022, 01:24
|
#14
|
|
Временная регистрация
Регистрация: 03.03.2005
Сообщений: 52
Сказал спасибо: 9
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Тахометр, нужна помощь.
Сообщение от mike-y-k
|
|
или просто остановитесь на достигнутом?
|
Именно так. Это будет один, максимум два экземпляра для себя.
|
|
|
|
13.12.2022, 01:59
|
#15
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО/МО
Сообщений: 12,287
Сказал спасибо: 11,861
Сказали Спасибо 4,159 раз(а) в 3,177 сообщении(ях)
|
Re: Тахометр, нужна помощь.
akegor, таки тогда нужно писать такие операции с учетом разрядности используемого железа… это уже к вопросу о правильных программистах…
ew3ds, тогда оставьте в коде комментарий о неявном присвоении, если будут проблемы - проверите. Или просто напишите операцию без #define прямым присвоением (те 2 операции присвоения из #define). Для 8-битного МК это будет максимально правильно…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
Последний раз редактировалось mike-y-k; 13.12.2022 в 02:06.
|
|
|
|
13.12.2022, 04:12
|
#16
|
|
Гражданин KAZUS.RUN
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 839
Сказал спасибо: 379
Сказали Спасибо 942 раз(а) в 451 сообщении(ях)
|
Re: Тахометр, нужна помощь.
Пару слов насчет правильности: переменную, которая используется и в прерывании и вне его (в данном проекте это переменная start в файле main.c), правильно объявлять с квалификатором volatile во избежание сюрпризов.
В частности, в данном проекте компилятор gcc при включенной оптимизации по размеру сгенерировал инструкцию бесконечного цикла, если у переменной start отсутствовал квалификатор volatile.
Во-о-он на картинке разница с 'volatile' и без оного:
Одним словом, это зависит. Компилятору доверяем, но проверяем.
|
|
|
|
Эти 2 пользователя(ей) сказали Спасибо j-Roger за это сообщение:
|
|
|
13.12.2022, 13:39
|
#17
|
|
Временная регистрация
Регистрация: 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
|
#18
|
|
Вид на жительство
Регистрация: 11.08.2015
Сообщений: 409
Сказал спасибо: 17
Сказали Спасибо 37 раз(а) в 28 сообщении(ях)
|
Re: Тахометр, нужна помощь.
|
|
|
|
Сказали "Спасибо" Signalshik2
|
|
|
13.12.2022, 15:40
|
#19
|
|
Временная регистрация
Регистрация: 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
|
#20
|
|
Вид на жительство
Регистрация: 11.08.2015
Сообщений: 409
Сказал спасибо: 17
Сказали Спасибо 37 раз(а) в 28 сообщении(ях)
|
Re: Тахометр, нужна помощь.
Тип и название переменной нужно в одну строку писать. Просто volatile; и точка с запятой - это нужно удалить, это бред.
|
|
|
|
Сказали "Спасибо" Signalshik2
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:31.
|
|