Отговори на тема  [ 22 мнения ]  Отиди на страница 1, 2  Следваща
Честотен детектор с pic 12F1840 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Май 12, 2014 11:49 pm
Мнения: 4394
Местоположение: София
Мнение Честотен детектор с pic 12F1840
Здравейте, специалисти!

Налага се да меря честота на импулси в обхвата 3 - 4 kHz.
На базата на дадена стойност на въпросната честота ще управлявам даден изход.

Ще Ви бъда благодарен, ако ударите едно рамо със сорса на "C" (ползвам Xc8 компилатор).

Накратко - трябва ми целочислената променлива, чиято стойност да съответства на честотата в гореспоменатия обхват.


Сря Яну 18, 2017 1:38 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 8:04 pm
Мнения: 2663
Местоположение: София / Велико Търново
Мнение Re: Честотен детектор с pic 12F1840
Е съвсем наготово едва ли. Но основното е да мериш честотата като бориш импулсите чрез входа. ECCP модул в режим Capture. Пускаш го за 1 сек точно и броиш импулсите 3000 - са 3kHz . Резултата се намира в CCPR1H:CCPR1L . Това са два байта, но на XC8 мисля че можеше да работиш направо като с 16 битово число CCPR1. В сайта на Microchip има много Application Notes , и примери за различни неща.

_________________
https://github.com/slav4ocom/


Сря Яну 18, 2017 1:50 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30685
Местоположение: София
Мнение Re: Честотен детектор с pic 12F1840
За тая честота по-добре мери период, а най-добре и двете, така ще можеш да сведеш едно измерване до 10 на мс като запазваш високата точност на измерването.
Готов сорс едва ли, ооне не от мен, но ако искаш насоки няма проблем.


Сря Яну 18, 2017 3:37 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Май 12, 2014 11:49 pm
Мнения: 4394
Местоположение: София
Мнение Re: Честотен детектор с pic 12F1840
Благодаря ви за насоките.

Тъй като няма изисквания към скоростта на измерването, по-добрият вариант ми се струва този в който се броят импулси за секунда.

Понеже мисля да ползвам вътрешния осцилатор, меренето на периода вероятно ще доведе до по-голяма грешка.


Сря Яну 18, 2017 3:48 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 17, 2005 5:07 pm
Мнения: 813
Местоположение: Сливен
Мнение Re: Честотен детектор с pic 12F1840
Е ако ще броиш импулси направо си се закачи на гейта на таймера и след някакво време си вземи стойността му .
Но и аз както Тони предпочитам да меря периода .. :)

_________________
Код:
while(true);


Сря Яну 18, 2017 5:09 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Май 12, 2014 11:49 pm
Мнения: 4394
Местоположение: София
Мнение Re: Честотен детектор с pic 12F1840
valioman написа:
Е ако ще броиш импулси направо си се закачи на гейта на таймера и след някакво време си вземи стойността му .
Но и аз както Тони предпочитам да меря периода .. :)


Това ми се вижда най-просто и би трябвало да ми свърши работа.

Ако правилно съм разбрал, трябва да подавам импулсите на T1CKI пина, след определено време, примерно 1 секунда да изчета съдържанието на T1, да нулирам таймера и да се върна в началото.


Сря Яну 18, 2017 5:33 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30685
Местоположение: София
Мнение Re: Честотен детектор с pic 12F1840
Да, общо взето е така. Дали ще броиш импулси или период грешката е еднаква, защото винаги базата идва от вътрелния ти таймер.
Период се мери при ниски честоти защото дава точност, при високи се мери брой импулси. Мерейки и двете получаваш виока точност в целия диапазон.


Сря Яну 18, 2017 7:25 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Май 12, 2014 11:49 pm
Мнения: 4394
Местоположение: София
Мнение Re: Честотен детектор с pic 12F1840
Всичко е "ток и жица" :)

Може и да е малко баято, но ето, какво сътворих:

#include <xc.h>
#include <pic12F1840.h>
#define _XTAL_FREQ 8000000 //tell compiler that the clock is 8 MHz

#pragma config MCLRE=ON // Reset pin enabled
#pragma config CP=OFF // Code protection off
#pragma config WDTE=OFF // Watch Dog Timer disabled
#pragma config FOSC=INTOSC // Set to internal clock
unsigned int i;
unsigned int l;
unsigned int h;
void pause_1();


void main() {
OSCCON = 0b01110010; // Set internal clock, 8MHz
INTCON = 0b00000000; // Disable all interrupts
ANSELA = 0b00000000; // Disable all analog input
WPUA = 0b00000000; // Disable all internal weak pull ups
TRISA = 0b00100000; // RA5 - input
TMR1CS1 = 1;
TMR1CS0 = 0;
T1OSCEN = 0;
TMR1ON = 1;
TMR1GE = 1;

pause_1();

l = TMR1L;
h = TMR1H;

if (l>200)

LATA2 = 1;

if (l<198)

LATA2 = 0;

TMR1L = 0;
TMR1H = 0;

} // end of main()


void pause_1()
{

for(i=0; i<9000; i++);
}


Благодаря на всички за съветите и насоките :)


Чет Яну 19, 2017 6:49 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30685
Местоположение: София
Мнение Re: Честотен детектор с pic 12F1840
ммм и всичко това ще се изпълни веднъж. А това pause_1 ......


Пет Яну 20, 2017 2:35 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Май 12, 2014 11:49 pm
Мнения: 4394
Местоположение: София
Мнение Re: Честотен детектор с pic 12F1840
Върви си циклично. Паузата е за да задам време за пълнене на брояча. Сигурно има и по-елегантни начини да се направи това, но това е първото за което се сетих и в крайна сметка работи добре.


Пет Яну 20, 2017 5:10 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30685
Местоположение: София
Мнение Re: Честотен детектор с pic 12F1840
Е как върви циклично като никъде нямаш затворен луп, освен ако този компилатор не затваря по дифолт мейна... Което ще е доста странно.


Пет Яну 20, 2017 7:56 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 8:04 pm
Мнения: 2663
Местоположение: София / Велико Търново
Мнение Re: Честотен детектор с pic 12F1840
Ами да изпълнява main() изпълнява после nop-овете FFFF до края на флаша и си почва отначало. По принцип на microchip-ските стекове стила на писане е слагат вътре while(1) { } и вътре в къдравите скоби е цикъла.

_________________
https://github.com/slav4ocom/


Пет Яну 20, 2017 9:09 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30685
Местоположение: София
Мнение Re: Честотен детектор с pic 12F1840
Това как го измисли, , какви нопове какви 5 лева, там може да има всичко, кода не е задължително да е линеен, няма майкрочипски и не майкрочипски, дали и как ще върви зависи от цикъла на луната, така код не се пише.
Да си сложил един цикъл while(true) и там да си върти програмата.


Пет Яну 20, 2017 9:42 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 8:04 pm
Мнения: 2663
Местоположение: София / Велико Търново
Мнение Re: Честотен детектор с pic 12F1840
Ами по принцип би могло да има. Обаче практиката показва, че компилатора слага нещата в края. При тази елементарна програма "всичкото" няма откъде да дойде, има само един main()... съгласен съм напълно, че не се пише така програма :)
FFFF или 3FFF се интерпретира се като nop(); На XC8 компилатора си слага автоматично това while(1){} но и там може да се махне. Кода може да е изпляскан и на края на флаша. Но все така ако няма това while няма кой да върне програмния брояч и той накрая се превърта и почва отначало....

_________________
https://github.com/slav4ocom/


Пет Яну 20, 2017 10:07 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение Re: Честотен детектор с pic 12F1840
а с
while (2) { }
дали ще го прави 2 пъти?


Пет Яну 20, 2017 10:09 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 22 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: Google [Bot] и 4 госта


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

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