Обсуждаем контроллеры компании Atmel.
Ответить

Re: Куда пропадает точность _delay_ms() ?

Ср апр 27, 2022 21:31:31

А ты сам на листинг "машинного кода" посмотрел?

Re: Куда пропадает точность _delay_ms() ?

Ср апр 27, 2022 21:43:25

Займитесь собой.

не указывайте мне, что мне делать, и я не скажу, куда вам пойти.

Re: Куда пропадает точность _delay_ms() ?

Ср апр 27, 2022 21:45:19

Это не моя проблема.
Последний раз редактировалось Карбофос Ср апр 27, 2022 21:48:19, всего редактировалось 1 раз.

Re: Куда пропадает точность _delay_ms() ?

Ср апр 27, 2022 21:47:58

А ты сам на листинг "машинного кода" посмотрел?


Код:
#include <util/delay.h>


int main() {

   _delay_us(2.34 * 1.67);
}


Код:
38:   80 e2           ldi     r24, 0x20       ; 32
3a:   8a 95           dec     r24
3c:   f1 f7           brne    .-4             ; 0x3a <main+0x2>


Ну и где здесь double?
Если спросите вежливо, могу даже рассказать как это получилось :)

Re: Куда пропадает точность _delay_ms() ?

Ср апр 27, 2022 21:50:21

~Dimon~, скажите пожалуйста, как это получилось?
Я очень заранее благодарен Вам.

Я пошутил. Извините.

Re: Куда пропадает точность _delay_ms() ?

Ср апр 27, 2022 22:01:30

Компиляторы, это такие хитрые звери, которые очень любят константные выражения, то есть такие выражения, результат которых можно вычислить на этапе компиляции.
В данном случае, так как на входе _delay_us() оказалась константа, все внутренности функции так же превратились в константные выражения и были вычислены на этапе компиляции, что свело все к банальному for(ct = 32; ct; ct--);

Но это в общем не гарантия!
Смотрите листинг, что там нагенерил именно ваш компилятор, именно в вашем проекте, именно в сегодняшней фазе луны.

Re: Куда пропадает точность _delay_ms() ?

Ср апр 27, 2022 22:07:02

А Вы тему точно с 1-го поста читали?
чел решил скрестить ArduinoIDE с avr-gcc, у него не получилось.
Более того, он вручную управляет таймером 0, которым arduino считает свои микросекунды.
Эта тема чисто поржать.

Re: Куда пропадает точность _delay_ms() ?

Ср апр 27, 2022 22:21:10

wiring.c не пробовали посмотреть?

пробовали. еще в первом посте об этом написано. но мне не нужны микросы и прерывание у меня ровно 1мс а не с погрешностью как там.

плюс зачем мне цикл в цикле и куча операций сложения вычетания ? чем мой более лаконичный вариант плох ?

PS: а вы точно читали ? кто где что пытался скрестить ? чё то вас занесло не в ту степь. извини дядя иди своей дорогой коль не разобрался. "нам такой хокей не нужен"

Добавлено after 4 minutes 52 seconds:
~Dimon~, спасибо за листинг.

PS: тут возник вопрос по самому прерыванию но уже задам в соответсвующей теме чтобы чтобы не делать кашы из темы

Добавлено after 2 minutes 55 seconds:
админы плиз закройте тему.

кто конструктивно участвовал - спасибо.

Re: Куда пропадает точность _delay_ms() ?

Ср апр 27, 2022 22:34:51

Я в общем то насчет тех постов, в которых людей пугали double на входе _delay.
Оно там далеко не всегда страшное.

Re: Куда пропадает точность _delay_ms() ?

Ср апр 27, 2022 22:39:46

Я более всех конструктивно участвовал.

Добавлено after 3 minutes 45 seconds:
Я в общем то насчет тех постов, в которых людей пугали double на входе _delay.
Оно там далеко не всегда страшное.

Совершенно верно.
Просто, большинство людей - долбоёбы.

Re: Куда пропадает точность _delay_ms() ?

Ср апр 27, 2022 23:04:00

Я в общем то насчет тех постов, в которых людей пугали double на входе _delay.

Если аврщик пишет float или double, то это - долбоеб откровеннейший!

Re: Куда пропадает точность _delay_ms() ?

Чт апр 28, 2022 09:27:08

Дааа, лет 8 назад на радиокоте обсуждали более сложные и более интересные вопросы, чем проблема счётчика миллисекунд... :)))
Хотя Эдя на всех форумах во все времена одинаков.

Re: Куда пропадает точность _delay_ms() ?

Пт апр 29, 2022 14:28:14

да прерывание срабатывает только на следующий процессорный тик. т.е. получится 256-1 = 255 реальных

Разве следующий это не плюс один?
Тогда нормально получается 255 + 1 = 256
Ответить