организация грамотной задержки xc8
организация грамотной задержки xc8
как грамотно с точки зрения профессионального программиста недоверяющего стандартным либам реализовать функцию задержки аналогичную стандартной __delay_ms () но более точной чтоли.просто есть сомнения в точности стандартной задержки и плюс вот эта ветка на форуме http://forum.easyelectronics.ru/viewtop ... =5&t=22941.
то есть как реализовать зажержки и написать функцию в ручную?
то есть как реализовать зажержки и написать функцию в ручную?
- Реклама
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: организация грамотной задержки xc8
Профессиональный программист доверяет стандартным либам, бо знает, что велосипед уже изобретен. Это так, к слову. Насчет плюс вот той ветки - нужно паять не в симуляторах, а в реале. Кстати, вы до конца ту ветку дочитали? Такое ощущение, что нет. Теперь про сам _delay_ms(). В любых непонятных случаях нужно читать инструкции. В данном случае описание в хелпе. Многое, знаете ли, встает на свои места. И последнее. Если уж так не терпится написать более точное, то пишем ассемблерную вставку, просчитывая время выполнения каждой команды, не забыв при этом отключить прерывания. Да, и еще, - ну и насколько точной должна быть задержка? Какие такие мюзоны вы там просчитать хотите?
Docendo discimus
- КРАМ
- Друг Кота
- Сообщения: 25364
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: организация грамотной задержки xc8
Грамотно завести в проекте системный таймер и все задержки формировать в его обработчике.rakka писал(а):как грамотно с точки зрения профессионального программиста
Но если нужна не приблизительная задержка, а точный временной интервал с хорошим разрешением по времени в программе, то для этого используют Output Compare без вывода на пин, а лишь с прерыванием.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: организация грамотной задержки xc8
А откуда сомнения такие ? Или просто из головы ?rakka писал(а):как грамотно с точки зрения профессионального программиста недоверяющего стандартным либам реализовать функцию задержки аналогичную стандартной __delay_ms () но более точной чтоли.просто есть сомнения в точности стандартной задержки и плюс вот эта ветка на форуме http://forum.easyelectronics.ru/viewtop ... =5&t=22941.
то есть как реализовать зажержки и написать функцию в ручную?
Да и вышеупомянутую ветку до конца дочитать не мешало бы.
Re: организация грамотной задержки xc8
просто я видел что делают так,зачем?
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);
- Реклама
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18647
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: организация грамотной задержки xc8
никакой потёмки нет!
товарищ не изучил документацию и удивляется.
а в документации написано, что _delay_ms - это не функция, а макрос. и для его нормальной работы необходимо в параметре указывать КОНСТАНТУ, а не переменную. с переменной получается, мягко говоря, кака вместо задержки.
так вот когда кому-то приспичит сделать задержку ПЕРЕМЕННОЙ величины, вот тогда и делают цикл: итерациями цикла нагоняют количественно задержку из КОНСТАНТНЫХ маленьких задержек.
P.S. не надо делать два подчеркивания в начале имени макроса _delay_ms - их там не два, а один.
товарищ не изучил документацию и удивляется.
а в документации написано, что _delay_ms - это не функция, а макрос. и для его нормальной работы необходимо в параметре указывать КОНСТАНТУ, а не переменную. с переменной получается, мягко говоря, кака вместо задержки.
так вот когда кому-то приспичит сделать задержку ПЕРЕМЕННОЙ величины, вот тогда и делают цикл: итерациями цикла нагоняют количественно задержку из КОНСТАНТНЫХ маленьких задержек.
P.S. не надо делать два подчеркивания в начале имени макроса _delay_ms - их там не два, а один.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: организация грамотной задержки xc8
во-первых там именно два нижних подчеркивания,куда не посмотри все пишу два.работает.
но вот насчет константы - я 10 ставлю от головы,а сколько там на самом деле то константа?где посмотреть?
но вот насчет константы - я 10 ставлю от головы,а сколько там на самом деле то константа?где посмотреть?
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: организация грамотной задержки xc8
10, т.б. число, есть константа.
аny_name - т.б. слово, объявленное ранее, есть переменная.
аny_name - т.б. слово, объявленное ранее, есть переменная.
Я пишу совсем без подчеркивания. Но! Изучайте матчасть, т.б. IDE.куда не посмотри все пишу два
Docendo discimus
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18647
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: организация грамотной задержки xc8
цитирую 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 - дело ваше
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: организация грамотной задержки xc8
ARV, речь идёт о компиляторе XC8. В нём delay_ms и delay_us пишутся именно с двумя подчёркиваниями.
В документации на компилятор. Благо она нормальная у XC.rakka писал(а):где посмотреть?
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18647
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: организация грамотной задержки xc8
тогда прошу пардону. мои сообщения можно удалить - виноват.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: организация грамотной задержки xc8
Не надо удалять.
В самый корень.ARV писал(а):...когда кому-то приспичит сделать задержку ПЕРЕМЕННОЙ величины, вот тогда и делают цикл: итерациями цикла нагоняют количественно задержку из КОНСТАНТНЫХ маленьких задержек...
Docendo discimus


