Македонски форум за електроника

Дигитална електроника => Микроконтролери => Topic started by: Bojan on 07.01.2013, Monday, 23:43:52

Title: помош за мерење на време помеѓу 2 притискања на тастер
Post by: Bojan on 07.01.2013, Monday, 23:43:52
како што е насловот ми треба помош како да се измери времто помеѓу 2 притискања на еден тастер...иначе помош за во mikroC ми треба. најверојатно не е битно кој пик ке се користи, али како и да е јас користам PIC16F628A со интерен осцилатор, ако има потреба може и надворешен осцилатор да поврзам на него..
Title: Одг: помош за мерење на време помеѓу 2 притискања на тастер
Post by: Trolko on 07.01.2013, Monday, 23:55:01
Дали грубо знаеш колку ќе биде паузата помеѓу притискањата ?

Воглавно основната идеа е : при првото притискање се стартува тајмер, при второто притискање се застанува тајмерот и се гледа до каде изброил.

Е сега, во однос на периодот на пауза, може да се користи 8 или 16 битен тајмер и систем за хендлање на overflow доколку долго време има пауза.
Title: Одг: помош за мерење на време помеѓу 2 притискања на тастер
Post by: Bojan on 08.01.2013, Tuesday, 01:42:46
сакам да правам склоп што ке мери број на вртежи на некој мотор (зашто имам цел куп мотори дома, а ни брзина им знам ни ништо, а ми треба тоа) и идеата ми е да се измери времето потребно за еден круг моторот да направи па да се пресмета број на вртежи за 1мин. за пауза помеѓу притискања најмногу би било 0,5 секунди, може и помалце да биде зашто повеќето мотори брзо вртат...
Title: Одг: помош за мерење на време помеѓу 2 притискања на тастер
Post by: Trolko on 08.01.2013, Tuesday, 02:14:07
сакам да правам склоп што ке мери број на вртежи на некој мотор (зашто имам цел куп мотори дома, а ни брзина им знам ни ништо, а ми треба тоа) и идеата ми е да се измери времето потребно за еден круг моторот да направи па да се пресмета број на вртежи за 1мин. за пауза помеѓу притискања најмногу би било 0,5 секунди, може и помалце да биде зашто повеќето мотори брзо вртат...

Епа едноставно.

Прво ќе треба да му дадеш време на моторот да се *загрее* т.е. да ја достигне номиналната брзина на вртежи. После тоа ќе најдеш колку време е потребно за еден вртеж (периодата).  Потоа, 60 (60 секунди) поделено со периодата ти ја дава вредноста на RPM - вртежи во минута :)

Easy as one-two-three.
Title: Одг: помош за мерење на време помеѓу 2 притискања на тастер
Post by: Bojan on 08.01.2013, Tuesday, 06:41:12
знам тоа математиката, ама незнам како да измерам периодата...тоа ми е муката...
Title: Одг: помош за мерење на време помеѓу 2 притискања на тастер
Post by: Trolko on 08.01.2013, Tuesday, 13:42:59
знам тоа математиката, ама незнам како да измерам периодата...тоа ми е муката...

Искористи тајмер, за кој ќе знаеш за едно одбројување колку време му е потребно.

Пример, доколку имаш надворешен/внатрешен осцилатор од 8 МХз, PIC-от (оти е тиња микроконтролер) го дели на 4 и тој clock од 2 МХз го носи на CPU-то и на другата периферија. 1 / 2МХз = 0.5 микросекунди. Да речеме дека ќе користиш 16 битен тајмер, едно негово отчукување е рамно на 0.5 микросекунди време.

Доколку при мерењето добиеш 100 отчукувања на тајмерот, тоа значи дека поминале 100*0.5 = 50 микросекунди, ете ја периодата.

Поздрав
Title: Одг: помош за мерење на време помеѓу 2 притискања на тастер
Post by: Alek89 on 05.03.2013, Tuesday, 21:59:28
Искористи го интераптот на "RB0" пинот и еден од тајмерите, дали сакаш 8-битен или 16- битен тајмер.
На почеток на програмата сетирај ги потребните регистри за интераптот и тајмерот и стави вредност 0 во тајмерот. Во подрутината за интерапт, прво прочитај ја вредноста на тајмерот, зачувај ја во некоја променлива и исчисти го тајмерот, а потоа и знаменцето за интераптот на "RB0". Само внимавај да не ти прелее тајмерот, па мој совет да користиш 16 битен тајмер. Како што кажаа претходно, помножи ја вредноста на тајмерот со 0.5 и го добиваш времето во микросекунди(доколку користиш 8MHz кристал) помеѓу секој интерапт на "RB0". Цел овој код нека ти биде во подрутината за интерапт. Се надевам бев од помош.
Поздрав.
Title: Одг: помош за мерење на време помеѓу 2 притискања на тастер
Post by: Bojan on 05.03.2013, Tuesday, 22:50:13
и јас се мислев така некако да го направам, RB0 да се користи и тајмерот 1 (pic16F628a најверојатно ке користам), арно ама уште незнам како се чита вредноста од тајмерот :(
Title: Одг: помош за мерење на време помеѓу 2 притискања на тастер
Post by: Alek89 on 05.03.2013, Tuesday, 23:22:55
Code: [Select]
http://ww1.microchip.com/downloads/en/devicedoc/40044f.pdf
Страна 51, таму се регистрите за тајмерот 1 ("TMR1L" и "TMR1H"), горните и долните 8 бита од тајмерот, тие ги читаш, или па пробај дали ќе ја прочита целата вредност на тајмерот со "TMR1", зачувај во некоја променлива и пробај така, ако не сака, спој ги 2-та регистри, па кажи што си направил.
Поздрав
Title: Одг: помош за мерење на време помеѓу 2 притискања на тастер
Post by: Bojan on 06.03.2013, Wednesday, 01:00:20
а да не се секирам дали ке прелее тајмерот или не, да го направам да се прелева тајмерот на секои 0,5uS и некоја вредност да се зголемува цело време па со таа вредност после да правам математики... значи наместо да ја читам вредноста на тајмерот и да пазам да не се прелее, да го направам да може да се прелева и тоа прелевање да го користам за зголемување на некоја вредност... така мислам дека добро би било...
Title: Одг: помош за мерење на време помеѓу 2 притискања на тастер
Post by: Alek89 on 06.03.2013, Wednesday, 01:24:45
Па тоа би ти било дупла работа, јас не ти препорачал така, и плус кога ќе прелее тајмерот ќе се јави интерапт, бар мислам, провети во "datasheet"-от. Ти само на интерапт од "RB0" читај го тајмерот, ако времето меѓу интерапти ти е помало од 0.1s не се секирај, тајмерот пошто е 16 битен може да брои до 65535 инструкции по 0.5 us= 32 ms , а ако на тоа додадеш прескалер, кој што може да го зголеми тајмерот за 8 пати може максимум да брои до 262 ms, тој се наоѓа во регистерот "T1CON".

Поздрав.