то есть как реализовать зажержки и написать функцию в ручную?
организация грамотной задержки xc8
- Сообщения: 71
- Зарегистрирован: Чт июл 30, 2015 07:40:05
как грамотно с точки зрения профессионального программиста недоверяющего стандартным либам реализовать функцию задержки аналогичную стандартной __delay_ms () но более точной чтоли.просто есть сомнения в точности стандартной задержки и плюс вот эта ветка на форуме http://forum.easyelectronics.ru/viewtop ... =5&t=22941.
то есть как реализовать зажержки и написать функцию в ручную?
то есть как реализовать зажержки и написать функцию в ручную?
- Реклама
Профессиональный программист доверяет стандартным либам, бо знает, что велосипед уже изобретен. Это так, к слову. Насчет плюс вот той ветки - нужно паять не в симуляторах, а в реале. Кстати, вы до конца ту ветку дочитали? Такое ощущение, что нет. Теперь про сам _delay_ms(). В любых непонятных случаях нужно читать инструкции. В данном случае описание в хелпе. Многое, знаете ли, встает на свои места. И последнее. Если уж так не терпится написать более точное, то пишем ассемблерную вставку, просчитывая время выполнения каждой команды, не забыв при этом отключить прерывания. Да, и еще, - ну и насколько точной должна быть задержка? Какие такие мюзоны вы там просчитать хотите?
Docendo discimus
Грамотно завести в проекте системный таймер и все задержки формировать в его обработчике.rakka писал(а):как грамотно с точки зрения профессионального программиста
Но если нужна не приблизительная задержка, а точный временной интервал с хорошим разрешением по времени в программе, то для этого используют Output Compare без вывода на пин, а лишь с прерыванием.
А откуда сомнения такие ? Или просто из головы ?rakka писал(а):как грамотно с точки зрения профессионального программиста недоверяющего стандартным либам реализовать функцию задержки аналогичную стандартной __delay_ms () но более точной чтоли.просто есть сомнения в точности стандартной задержки и плюс вот эта ветка на форуме http://forum.easyelectronics.ru/viewtop ... =5&t=22941.
то есть как реализовать зажержки и написать функцию в ручную?
Да и вышеупомянутую ветку до конца дочитать не мешало бы.
- Сообщения: 71
- Зарегистрирован: Чт июл 30, 2015 07:40:05
просто я видел что делают так,зачем?
for (i=0;i<10;i++)
__delay_ms (10);
вот так примерно реализуют задержку на 100 милисек.зачем же эти извращения если можно просто написать __delay_ms (100);
for (i=0;i<10;i++)
__delay_ms (10);
вот так примерно реализуют задержку на 100 милисек.зачем же эти извращения если можно просто написать __delay_ms (100);
- Реклама
О-о-о, брат, чужая душа потёмки.
Docendo discimus
никакой потёмки нет!
товарищ не изучил документацию и удивляется.
а в документации написано, что _delay_ms - это не функция, а макрос. и для его нормальной работы необходимо в параметре указывать КОНСТАНТУ, а не переменную. с переменной получается, мягко говоря, кака вместо задержки.
так вот когда кому-то приспичит сделать задержку ПЕРЕМЕННОЙ величины, вот тогда и делают цикл: итерациями цикла нагоняют количественно задержку из КОНСТАНТНЫХ маленьких задержек.
P.S. не надо делать два подчеркивания в начале имени макроса _delay_ms - их там не два, а один.
товарищ не изучил документацию и удивляется.
а в документации написано, что _delay_ms - это не функция, а макрос. и для его нормальной работы необходимо в параметре указывать КОНСТАНТУ, а не переменную. с переменной получается, мягко говоря, кака вместо задержки.
так вот когда кому-то приспичит сделать задержку ПЕРЕМЕННОЙ величины, вот тогда и делают цикл: итерациями цикла нагоняют количественно задержку из КОНСТАНТНЫХ маленьких задержек.
P.S. не надо делать два подчеркивания в начале имени макроса _delay_ms - их там не два, а один.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 71
- Зарегистрирован: Чт июл 30, 2015 07:40:05
во-первых там именно два нижних подчеркивания,куда не посмотри все пишу два.работает.
но вот насчет константы - я 10 ставлю от головы,а сколько там на самом деле то константа?где посмотреть?
но вот насчет константы - я 10 ставлю от головы,а сколько там на самом деле то константа?где посмотреть?
10, т.б. число, есть константа.
аny_name - т.б. слово, объявленное ранее, есть переменная.
аny_name - т.б. слово, объявленное ранее, есть переменная.
Я пишу совсем без подчеркивания. Но! Изучайте матчасть, т.б. IDE.куда не посмотри все пишу два
Docendo discimus
цитирую delay.h, по-моему, это эталон написания, не так ли?rakka писал(а):во-первых там именно два нижних подчеркивания,куда не посмотри все пишу два.работает.
но вот насчет константы - я 10 ставлю от головы,а сколько там на самом деле то константа?где посмотреть?
надеюсь, вы согласны, что если в хедере одно подчеркивание, то одно надо и в программе писать?Код: Выделить всё
#if !defined(__DOXYGEN__) static inline void _delay_us(double __us) __attribute__((always_inline)); static inline void _delay_ms(double __ms) __attribute__((always_inline)); #endif
константа определяет задержку в миллисекундах. хотите 10, хотите 24 - дело ваше
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
ARV, речь идёт о компиляторе XC8. В нём delay_ms и delay_us пишутся именно с двумя подчёркиваниями.
В документации на компилятор. Благо она нормальная у XC.rakka писал(а):где посмотреть?
тогда прошу пардону. мои сообщения можно удалить - виноват.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Не надо удалять.
В самый корень.ARV писал(а):...когда кому-то приспичит сделать задержку ПЕРЕМЕННОЙ величины, вот тогда и делают цикл: итерациями цикла нагоняют количественно задержку из КОНСТАНТНЫХ маленьких задержек...
Docendo discimus


