Частотомер PIC16F628A
|
|
Ethno |
Дата: Чт, 20.12.2012, 17:20 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
91
Замечания:
±
На сайте с 11.12.2012
Статус:
Offline
|
Добрый день всем... Проблема такая... есть код на PicBasic все компилируется но при моделировании в Протеусе возникает проблема до 65000Hz работает нормально, если частота выше не переходит в моде 1 или 2 ну и соответственно врет безбожно..
вот код DEFINE OSC 10 DEFINE LCD_DREG PORTB DEFINE LCD_DBIT 0 DEFINE LCD_RSREG PORTA DEFINE LCD_RSBIT 2 define LCD_RWREG PORTA DEFINE LCD_RWBIT 1 DEFINE LCD_EREG PORTA DEFINE LCD_EBIT 0 DEFINE LCD_BITS 4 DEFINE LCD_LINES 2 DEFINE LCD_COMMANDUS 4000 DEFINE LCD_DATAUS 250 TRISB=0 TRISA=%11111100
fout var word foutL var fout.byte0 foutH var fout.byte1 mode var byte Delay VAR WORD Delay_Us var WORD x var word tenth var byte Z VAR BIT '------------------------------------------------------------------- Z=0 CMCON=7 mode=0 '************************* Main*************************** START : GOSUB TUS 'this is for mode select SELECT CASE MODE CASE 0 Delay=1000:Delay_Us=400 GOSUB OLC Lcdout $FE,$1,"0-65 KHz : MOD=",DEC MODE Lcdout $FE,$C0,#fout," Hz":PAUSE 100 goto START
CASE 1 Delay_US=100:Delay=100 GOSUB OLC :Fout=Fout/100 Lcdout $FE,1,"65-650KHz: MOD=",DEC MODE Lcdout $FE,$C0,#fout," KHz":PAUSE 100 GOTO START
CASE 2 Delay_US=996:Delay=9 GOSUB OLC:Fout=Fout/10:tenth=(fout//1000)/10 Lcdout $FE,1,"650-6,5MHz:MOD=", DEC MODE Lcdout $FE,$C0,#fout/1000,",",#tenth," MHz":PAUSE 100 GOTO START
CASE 3 Delay_US=992:Delay=0 GOSUB OLC:tenth=(fout//1000)/10:Fout=Fout/1000 Lcdout $FE,1,"6,5-30 MHz:MOD=" ,DEC MODE Lcdout $FE,$C0,#fout,",",#tenth," MHz":PAUSE 100 GOTO START END SELECT Z=0 GOTO START
TUS: PAUSE 70:if PortA.3=1 then IF Z=1 THEN CIK Mode=Mode+1:pause 10 IF MODE=4 THEN MODE=0 Z=1 RETURN ENDIF Z=0 CIK: RETURN
' ---------------frequency counting ------------------------------------ OLC: if porta.6=0 then x=x+1 if x>(Delay+Delay_Us) then return endif TMR1L=0 TMR1H=0 T1CON=7 pause Delay pauseus Delay_US T1CON=6 FoutL=TMR1L foutH=TMR1H
RETURN
END
и модель Протеуса 1 показывает 65000 это нормально на втором частота 70000 но на экране 4464 как с этим боротьсся?
Прикрепления:
02.bmp
(88.8 Kb)
Сообщение отредактировал
Ethno - Чт, 20.12.2012, 17:21
|
|
|
|
sereg |
Дата: Чт, 20.12.2012, 23:53 | Сообщение # 2 |
Группа:
Пользователи
Ранг:
Новенький
Сообщений:
17
Замечания:
±
На сайте с 25.11.2012
Статус:
Offline
|
Это нормально! Комп и Протеус не успевают обрабатывать события. Как вариант посмотрите осцилографом форму сигнала на входе МК. если он работает, значит в МК тоже будет работать. Вы можете полную схему показать? тоже хочу себе собрать. Заранее благодарен!
|
|
|
|
shaman |
Дата: Пт, 21.12.2012, 00:17 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
Доброй ночи,Ваш проект работает, после небольших переделок,я завтра его доделаю,просто давно не работал с РВР .
|
|
|
|
sereg |
Дата: Пт, 21.12.2012, 13:51 | Сообщение # 4 |
Группа:
Пользователи
Ранг:
Новенький
Сообщений:
17
Замечания:
±
На сайте с 25.11.2012
Статус:
Offline
|
Это в программе было или протеус? Я на таких частотах не работал в нем.
|
|
|
|
shaman |
Дата: Сб, 22.12.2012, 00:41 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
Доброй ночи ,Ethno, ошибки есть, и очень много ,просто Вы взяли код и скинули его на форум с целью чтобы Вам помогли ,я нашёл код где Вы его взяли.У Вас ошибки в схеме, в самом коде программы,поищите по нету принцип работы ,и устройство частотомера. Добавлено (22.12.2012, 00:41) --------------------------------------------- Если использовать оператор COUNT максимум можна измерить до 125 KHz c кварцем в 20 MHz.
|
|
|
|
Ethno |
Дата: Сб, 22.12.2012, 23:36 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
91
Замечания:
±
На сайте с 11.12.2012
Статус:
Offline
|
Доброго вечера Shaman, для PicBasic нет примера частотомера взял что то и хочу понять в чем может быть загвоздка, что не так... а еще была идея сделать на второй линии индикатора бегущую полоску... ( на пример от 0 до 60 кгц) чем выше частота тем больше сегментов заполнено... Если подскажете где взять пример.... для PicBasic огромное спасибо...
|
|
|
|
shaman |
Дата: Вс, 23.12.2012, 00:04 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
Доброй ночи,у Вас уже есть код программы, просто уберите ненужное и сделайте под свои нужды как Вам надо. Добавлено (23.12.2012, 00:04) --------------------------------------------- И в посте №5 я Вам писал где ошибки,исправьте их ,и предел измерения какой у Вас от 0 и до ?
|
|
|
|
Ethno |
Дата: Вс, 23.12.2012, 00:29 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
91
Замечания:
±
На сайте с 11.12.2012
Статус:
Offline
|
А как сделать бегущую полоску..?
|
|
|
|
shaman |
Дата: Вс, 23.12.2012, 00:31 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
На сдвиговых регистрах 595 или 164
|
|
|
|
Ethno |
Дата: Пн, 24.12.2012, 10:26 | Сообщение # 10 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
91
Замечания:
±
На сайте с 11.12.2012
Статус:
Offline
|
Разобрался.... кнопочку добавил... единственное не пойму как увеличить количество знаков в моде 1 2 3 хотя бы до 6-7
|
|
|
|
shaman |
Дата: Пн, 24.12.2012, 17:41 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
Добрый вечер. Select...Case...EndSelect
Синтаксис:
Select Expression (Выбор выражения)
Case Condition(s) Instructions { Case Condition(s) Instructions
Case Else Statement(s) (Утверждение) } EndSelect
Логика её работы заключается в следующем. После слова Select располагается основное выражение. Это основное выражение затем сравнивается тестовым условием, которые располагаются после каждого слова Case. И если основное выражение равно тестовому условию, то тогда выполняется команда или список команд находящихся после этого тестового условия.Добавлено (24.12.2012, 17:41) --------------------------------------------- Вы прочитайте про этот оператор,в книге В.Н.Хилинский
|
|
|
|
Ethno |
Дата: Ср, 26.12.2012, 11:08 | Сообщение # 12 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
91
Замечания:
±
На сайте с 11.12.2012
Статус:
Offline
|
Спасибо но Не догоняю.... я хотел на самом деле сделать частотомер 1 мГц два входа и среднее значение (пример 150 Гц+1000Гц=575 Гц точность +\-1гц) с этих входов выводить на LCD вот такая задача.. Если есть пример на PicBasic
Сообщение отредактировал
Ethno - Ср, 26.12.2012, 11:13
|
|
|
|
shaman |
Дата: Ср, 26.12.2012, 16:12 | Сообщение # 13 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
День добрый,так у Вас же в CASE2 он измеряет частоту от "650-6,5MHz
|
|
|
|
Ethno |
Дата: Чт, 27.12.2012, 14:15 | Сообщение # 14 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
91
Замечания:
±
На сайте с 11.12.2012
Статус:
Offline
|
Все измеряет нормально, но только 3 знака щт 0-65000 все хорошо но дальше 0,7 если 70025Гц хотелось бы все же выводить и 0025 что бы было 0,70025Мгц
Добавлено (26.12.2012, 21:06) --------------------------------------------- а на самом деле лучше что бы от 0 - 650 000 гц в одном диапазоне... не пойму как сделать...... если есть возможность помочь.....
Добавлено (27.12.2012, 14:12) --------------------------------------------- Вот разобрался это самый простой вариант при 10 Мгц контролера считает до 62000
DEFINE OSC 10 DEFINE LCD_DREG PORTB DEFINE LCD_DBIT 0 DEFINE LCD_RSREG PORTA DEFINE LCD_RSBIT 2 define LCD_RWREG PORTA DEFINE LCD_RWBIT 1 DEFINE LCD_EREG PORTA DEFINE LCD_EBIT 0 DEFINE LCD_BITS 4 DEFINE LCD_LINES 2 DEFINE LCD_COMMANDUS 4000 DEFINE LCD_DATAUS 250 TRISB=0 TRISA=%11111100
fout var word
START : count PORTB.6, 1000, fout
lcdout $FE, 1 Lcdout $FE,$16,#fout," гц:PAUSE 100 goto START
ENDДобавлено (27.12.2012, 14:15) ---------------------------------------------
Цитата (shaman) Группа: Проверенные Ранг: Понимаю Сообщений: 69 Репутация: 1 ± Замечания: 0% ± На сайте с 07.11.2011
Статус: Offline
День добрый,так у Вас же в CASE2 он измеряет частоту от "650-6,5MHz Цитата (shaman) День добрый,так у Вас же в CASE2 он измеряет частоту от "650-6,5MHz но показывает всего 3 знака если частота 67002гц то на экране 0,67 а хотелось 0, 67002
Сообщение отредактировал
Ethno - Чт, 27.12.2012, 14:13
|
|
|
|
shaman |
Дата: Чт, 27.12.2012, 14:26 | Сообщение # 15 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
День добрый,проект в протеусе скиньте Добавлено (27.12.2012, 14:26) --------------------------------------------- У меня Ваш проект измеряет от 0-120 kHz ,и четка показывает какая частота.
|
|
|
|