Отговори на тема  [ 6 мнения ] 
PIC 16F628 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Фев 20, 2005 4:17 am
Мнения: 33
Мнение PIC 16F628
Малко съм бос с тия микроконтролери и затова ако можете да ми дадете съвет...Искам да напиша програма която да следи дали дадена честота от външен източник е достигната т.е по-голяма или равна на предварително зададената.Дали е уместно да ползвам ccp модула или просто да следя нивото на даден вход.И как точно да съчетая нещата с някои от таймерите.Ако можете да ми обясните с две думи ....


Нед Фев 20, 2005 4:35 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пет Фев 04, 2005 9:54 am
Мнения: 50
Местоположение: Null
Мнение 
Ползвай таймер1 с гейт. Входния импулс ти го запуска и му задаваш да ти изгенерира прекъсване когато желания период изтече. Ако получиш прекъсване - честотата е по-малка. Ако ли не - по-голяма е.
Успех!


Нед Фев 20, 2005 9:41 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Фев 20, 2005 4:17 am
Мнения: 33
Мнение 
Мерси.ще пробвам


Нед Фев 20, 2005 2:16 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30684
Местоположение: София
Мнение 
Само че много зависи от честотата която мериш. Ако е ниска това не е добър вариант, при ниски честоти по добре да сравняваш периода. С един таймер не може да реализираш добра точност при ниски и високи, това с еправи с два таймера, единия измерва получените входни импулси, а другия еталонно време, като еталонното време се измерва за цял брой входни импулси, така и при ниска честота имаш висока точност.


Нед Фев 20, 2005 3:43 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Фев 20, 2005 4:17 am
Мнения: 33
Мнение 
честотата е много ниска -около да речем 20-30 hz.а не може ли примерно да използвам сср модула и да броя колко пъти прекъсва за определено време и след това да проверя дали този брой е по-голям от предварително зададен който съответства на някаква честота


Нед Фев 20, 2005 8:52 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 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
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 6 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни