|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 10:46 am
|
Страница 1 от 1
|
[ 6 мнения ] |
|
| Автор |
Съобщение |
|
aquilax
Ранг: Минаващ
Регистриран на: Нед Фев 20, 2005 4:17 am Мнения: 33
|
 PIC 16F628
Малко съм бос с тия микроконтролери и затова ако можете да ми дадете съвет...Искам да напиша програма която да следи дали дадена честота от външен източник е достигната т.е по-голяма или равна на предварително зададената.Дали е уместно да ползвам ccp модула или просто да следя нивото на даден вход.И как точно да съчетая нещата с някои от таймерите.Ако можете да ми обясните с две думи ....
|
| Нед Фев 20, 2005 4:35 am |
|
 |
|
alek
Ранг: Минаващ
Регистриран на: Пет Фев 04, 2005 9:54 am Мнения: 50 Местоположение: Null
|
Ползвай таймер1 с гейт. Входния импулс ти го запуска и му задаваш да ти изгенерира прекъсване когато желания период изтече. Ако получиш прекъсване - честотата е по-малка. Ако ли не - по-голяма е.
Успех!
|
| Нед Фев 20, 2005 9:41 am |
|
 |
|
aquilax
Ранг: Минаващ
Регистриран на: Нед Фев 20, 2005 4:17 am Мнения: 33
|
Мерси.ще пробвам
|
| Нед Фев 20, 2005 2:16 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30684 Местоположение: София
|
Само че много зависи от честотата която мериш. Ако е ниска това не е добър вариант, при ниски честоти по добре да сравняваш периода. С един таймер не може да реализираш добра точност при ниски и високи, това с еправи с два таймера, единия измерва получените входни импулси, а другия еталонно време, като еталонното време се измерва за цял брой входни импулси, така и при ниска честота имаш висока точност.
|
| Нед Фев 20, 2005 3:43 pm |
|
 |
|
aquilax
Ранг: Минаващ
Регистриран на: Нед Фев 20, 2005 4:17 am Мнения: 33
|
честотата е много ниска -около да речем 20-30 hz.а не може ли примерно да използвам сср модула и да броя колко пъти прекъсва за определено време и след това да проверя дали този брой е по-голям от предварително зададен който съответства на някаква честота
|
| Нед Фев 20, 2005 8:52 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30684 Местоположение: София
|
Ами може но зависи каква точност ти трябва. Кепчър модула не ти трябва в случая. Пускаш брояча на външен такт, и през определено време, да речем всяка секунда сравняваш отброените ипулси с еталнонни. Сега не помня тоя един таймер ли имаше или два, ако му е един по добре да си броиш софтуерно, по прекъсване, а таймера да го ползваш да ти генерира времевите диапазони.
Този начин обаче не е много точен, при време за отчитане 1 с грешката ти е 1 Hz, т.е. 5%. Ако ти трябва по голяма точност е по удачно да измерваш период м-у два предни фронта, в такъв случай сигнала ти е на прекъсване а ти по предния фронт запускаш вътрешния таймер, който го тактуваш да речем през 100 us. Пре следващия преден фронт го четеш и нулираш. Проетената стойност ти е продължителност на импулса. Така точноста ти е 100 us при време за отчитане 1/f или 50 мс при 20 Hz, това е 0.02% точност ... би било добре да правиш сравнението на 2-3 отчета, като ги усредняваш, 2 или 4, че се дели бързо. Сега 100 us е примерно казано, за тази честота не е оправдано, и 1 ms ти върши работа, това са си около 0.2% грешка, напълно приемливо за много приложения.
|
| Нед Фев 20, 2005 10:55 pm |
|
|
|
Страница 1 от 1
|
[ 6 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 3 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|