Author Topic: помош за мерење на време помеѓу 2 притискања на тастер  (Read 1917 times)

Offline Bojan

  • Топ Експерт
  • *****
  • Posts: 3235
  • Gender: Male
  • Turn it ON and keep it ON
како што е насловот ми треба помош како да се измери времто помеѓу 2 притискања на еден тастер...иначе помош за во mikroC ми треба. најверојатно не е битно кој пик ке се користи, али како и да е јас користам PIC16F628A со интерен осцилатор, ако има потреба може и надворешен осцилатор да поврзам на него..
Теоријата е ,кога се знае се,а ништо не функционира.Праксата е кога се функционира ,а не се знае зошто.Ние во Македонија успешно ја спојуваме теоријата и праксата ,при што ништо не функционира и никој не знае зошто!!!
(позајмено од batka)

Trolko

  • Guest
Дали грубо знаеш колку ќе биде паузата помеѓу притискањата ?

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

Е сега, во однос на периодот на пауза, може да се користи 8 или 16 битен тајмер и систем за хендлање на overflow доколку долго време има пауза.

Offline Bojan

  • Топ Експерт
  • *****
  • Posts: 3235
  • Gender: Male
  • Turn it ON and keep it ON
сакам да правам склоп што ке мери број на вртежи на некој мотор (зашто имам цел куп мотори дома, а ни брзина им знам ни ништо, а ми треба тоа) и идеата ми е да се измери времето потребно за еден круг моторот да направи па да се пресмета број на вртежи за 1мин. за пауза помеѓу притискања најмногу би било 0,5 секунди, може и помалце да биде зашто повеќето мотори брзо вртат...
Теоријата е ,кога се знае се,а ништо не функционира.Праксата е кога се функционира ,а не се знае зошто.Ние во Македонија успешно ја спојуваме теоријата и праксата ,при што ништо не функционира и никој не знае зошто!!!
(позајмено од batka)

Trolko

  • Guest
сакам да правам склоп што ке мери број на вртежи на некој мотор (зашто имам цел куп мотори дома, а ни брзина им знам ни ништо, а ми треба тоа) и идеата ми е да се измери времето потребно за еден круг моторот да направи па да се пресмета број на вртежи за 1мин. за пауза помеѓу притискања најмногу би било 0,5 секунди, може и помалце да биде зашто повеќето мотори брзо вртат...

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

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

Easy as one-two-three.

Offline Bojan

  • Топ Експерт
  • *****
  • Posts: 3235
  • Gender: Male
  • Turn it ON and keep it ON
знам тоа математиката, ама незнам како да измерам периодата...тоа ми е муката...
Теоријата е ,кога се знае се,а ништо не функционира.Праксата е кога се функционира ,а не се знае зошто.Ние во Македонија успешно ја спојуваме теоријата и праксата ,при што ништо не функционира и никој не знае зошто!!!
(позајмено од batka)

Trolko

  • Guest
знам тоа математиката, ама незнам како да измерам периодата...тоа ми е муката...

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

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

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

Поздрав

Offline Alek89

  • Нов член
  • *
  • Posts: 4
Искористи го интераптот на "RB0" пинот и еден од тајмерите, дали сакаш 8-битен или 16- битен тајмер.
На почеток на програмата сетирај ги потребните регистри за интераптот и тајмерот и стави вредност 0 во тајмерот. Во подрутината за интерапт, прво прочитај ја вредноста на тајмерот, зачувај ја во некоја променлива и исчисти го тајмерот, а потоа и знаменцето за интераптот на "RB0". Само внимавај да не ти прелее тајмерот, па мој совет да користиш 16 битен тајмер. Како што кажаа претходно, помножи ја вредноста на тајмерот со 0.5 и го добиваш времето во микросекунди(доколку користиш 8MHz кристал) помеѓу секој интерапт на "RB0". Цел овој код нека ти биде во подрутината за интерапт. Се надевам бев од помош.
Поздрав.

Offline Bojan

  • Топ Експерт
  • *****
  • Posts: 3235
  • Gender: Male
  • Turn it ON and keep it ON
и јас се мислев така некако да го направам, RB0 да се користи и тајмерот 1 (pic16F628a најверојатно ке користам), арно ама уште незнам како се чита вредноста од тајмерот :(
Теоријата е ,кога се знае се,а ништо не функционира.Праксата е кога се функционира ,а не се знае зошто.Ние во Македонија успешно ја спојуваме теоријата и праксата ,при што ништо не функционира и никој не знае зошто!!!
(позајмено од batka)

Offline Alek89

  • Нов член
  • *
  • Posts: 4
Одг: помош за мерење на време помеѓу 2 притискања на тастер
« Reply #8 on 05.03.2013, Tuesday, 23:22:55 (Edited 06.03.2013, Wednesday, 00:03:16) »
Code: [Select]
http://ww1.microchip.com/downloads/en/devicedoc/40044f.pdf
Страна 51, таму се регистрите за тајмерот 1 ("TMR1L" и "TMR1H"), горните и долните 8 бита од тајмерот, тие ги читаш, или па пробај дали ќе ја прочита целата вредност на тајмерот со "TMR1", зачувај во некоја променлива и пробај така, ако не сака, спој ги 2-та регистри, па кажи што си направил.
Поздрав

Offline Bojan

  • Топ Експерт
  • *****
  • Posts: 3235
  • Gender: Male
  • Turn it ON and keep it ON
а да не се секирам дали ке прелее тајмерот или не, да го направам да се прелева тајмерот на секои 0,5uS и некоја вредност да се зголемува цело време па со таа вредност после да правам математики... значи наместо да ја читам вредноста на тајмерот и да пазам да не се прелее, да го направам да може да се прелева и тоа прелевање да го користам за зголемување на некоја вредност... така мислам дека добро би било...
Теоријата е ,кога се знае се,а ништо не функционира.Праксата е кога се функционира ,а не се знае зошто.Ние во Македонија успешно ја спојуваме теоријата и праксата ,при што ништо не функционира и никој не знае зошто!!!
(позајмено од batka)

Offline Alek89

  • Нов член
  • *
  • Posts: 4
Па тоа би ти било дупла работа, јас не ти препорачал така, и плус кога ќе прелее тајмерот ќе се јави интерапт, бар мислам, провети во "datasheet"-от. Ти само на интерапт од "RB0" читај го тајмерот, ако времето меѓу интерапти ти е помало од 0.1s не се секирај, тајмерот пошто е 16 битен може да брои до 65535 инструкции по 0.5 us= 32 ms , а ако на тоа додадеш прескалер, кој што може да го зголеми тајмерот за 8 пати може максимум да брои до 262 ms, тој се наоѓа во регистерот "T1CON".

Поздрав.