организация грамотной задержки xc8

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
rakka
Открыл глаза
Сообщения: 71
Зарегистрирован: Чт июл 30, 2015 07:40:05

организация грамотной задержки xc8

Сообщение rakka »

как грамотно с точки зрения профессионального программиста недоверяющего стандартным либам реализовать функцию задержки аналогичную стандартной __delay_ms () но более точной чтоли.просто есть сомнения в точности стандартной задержки и плюс вот эта ветка на форуме http://forum.easyelectronics.ru/viewtop ... =5&t=22941.
то есть как реализовать зажержки и написать функцию в ручную?
Реклама
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: организация грамотной задержки xc8

Сообщение pyzhman »

Профессиональный программист доверяет стандартным либам, бо знает, что велосипед уже изобретен. Это так, к слову. Насчет плюс вот той ветки - нужно паять не в симуляторах, а в реале. Кстати, вы до конца ту ветку дочитали? Такое ощущение, что нет. Теперь про сам _delay_ms(). В любых непонятных случаях нужно читать инструкции. В данном случае описание в хелпе. Многое, знаете ли, встает на свои места. И последнее. Если уж так не терпится написать более точное, то пишем ассемблерную вставку, просчитывая время выполнения каждой команды, не забыв при этом отключить прерывания. Да, и еще, - ну и насколько точной должна быть задержка? Какие такие мюзоны вы там просчитать хотите?
Docendo discimus
Реклама
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25367
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: организация грамотной задержки xc8

Сообщение КРАМ »

rakka писал(а):как грамотно с точки зрения профессионального программиста
Грамотно завести в проекте системный таймер и все задержки формировать в его обработчике.
Но если нужна не приблизительная задержка, а точный временной интервал с хорошим разрешением по времени в программе, то для этого используют Output Compare без вывода на пин, а лишь с прерыванием.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: организация грамотной задержки xc8

Сообщение Аlex »

rakka писал(а):как грамотно с точки зрения профессионального программиста недоверяющего стандартным либам реализовать функцию задержки аналогичную стандартной __delay_ms () но более точной чтоли.просто есть сомнения в точности стандартной задержки и плюс вот эта ветка на форуме http://forum.easyelectronics.ru/viewtop ... =5&t=22941.
то есть как реализовать зажержки и написать функцию в ручную?
А откуда сомнения такие ? Или просто из головы ?
Да и вышеупомянутую ветку до конца дочитать не мешало бы.
Реклама
Эиком - электронные компоненты и радиодетали
rakka
Открыл глаза
Сообщения: 71
Зарегистрирован: Чт июл 30, 2015 07:40:05

Re: организация грамотной задержки xc8

Сообщение rakka »

просто я видел что делают так,зачем?
for (i=0;i<10;i++)
__delay_ms (10);
вот так примерно реализуют задержку на 100 милисек.зачем же эти извращения если можно просто написать __delay_ms (100);
Реклама
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: организация грамотной задержки xc8

Сообщение pyzhman »

О-о-о, брат, чужая душа потёмки.
Docendo discimus
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18648
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: организация грамотной задержки xc8

Сообщение ARV »

никакой потёмки нет!
товарищ не изучил документацию и удивляется.
а в документации написано, что _delay_ms - это не функция, а макрос. и для его нормальной работы необходимо в параметре указывать КОНСТАНТУ, а не переменную. с переменной получается, мягко говоря, кака вместо задержки.

так вот когда кому-то приспичит сделать задержку ПЕРЕМЕННОЙ величины, вот тогда и делают цикл: итерациями цикла нагоняют количественно задержку из КОНСТАНТНЫХ маленьких задержек.

P.S. не надо делать два подчеркивания в начале имени макроса _delay_ms - их там не два, а один.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
rakka
Открыл глаза
Сообщения: 71
Зарегистрирован: Чт июл 30, 2015 07:40:05

Re: организация грамотной задержки xc8

Сообщение rakka »

во-первых там именно два нижних подчеркивания,куда не посмотри все пишу два.работает.
но вот насчет константы - я 10 ставлю от головы,а сколько там на самом деле то константа?где посмотреть?
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: организация грамотной задержки xc8

Сообщение pyzhman »

10, т.б. число, есть константа.
аny_name - т.б. слово, объявленное ранее, есть переменная.
куда не посмотри все пишу два
Я пишу совсем без подчеркивания. Но! Изучайте матчасть, т.б. IDE.
Docendo discimus
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18648
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: организация грамотной задержки xc8

Сообщение ARV »

rakka писал(а):во-первых там именно два нижних подчеркивания,куда не посмотри все пишу два.работает.
но вот насчет константы - я 10 ставлю от головы,а сколько там на самом деле то константа?где посмотреть?
цитирую delay.h, по-моему, это эталон написания, не так ли?

Код: Выделить всё

#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 - дело ваше
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: организация грамотной задержки xc8

Сообщение Аlex »

ARV, речь идёт о компиляторе XC8. В нём delay_ms и delay_us пишутся именно с двумя подчёркиваниями.
rakka писал(а):где посмотреть?
В документации на компилятор. Благо она нормальная у XC.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18648
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: организация грамотной задержки xc8

Сообщение ARV »

тогда прошу пардону. мои сообщения можно удалить - виноват.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: организация грамотной задержки xc8

Сообщение pyzhman »

Не надо удалять.
ARV писал(а):...когда кому-то приспичит сделать задержку ПЕРЕМЕННОЙ величины, вот тогда и делают цикл: итерациями цикла нагоняют количественно задержку из КОНСТАНТНЫХ маленьких задержек...
В самый корень.
Docendo discimus
Ответить

Вернуться в «PIC»