Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Модератор форума: ivan_fd  
Форум Picbasic.ru » Программирование МК » PicBasicPro » Частотомер PIC16F628A (Программа на PicBasic)
Частотомер PIC16F628A
Ethno Дата: Чт, 20.12.2012, 17:20  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 91
Репутация: 2   ±
Замечания:   ±
На сайте с 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
ЯНДЕКС Дата: 20.12.2012
sereg Дата: Чт, 20.12.2012, 23:53  |                                                                                                                Сообщение # 2
Группа: Пользователи
Ранг:  Новенький
Сообщений: 17
Репутация: 0   ±
Замечания:   ±
На сайте с 25.11.2012

Статус: Offline

Это нормально! Комп и Протеус не успевают обрабатывать события. Как вариант посмотрите осцилографом форму сигнала на входе МК. если он работает, значит в МК тоже будет работать. Вы можете полную схему показать? тоже хочу себе собрать. Заранее благодарен!
shaman Дата: Пт, 21.12.2012, 00:17  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 178
Репутация: 5   ±
Замечания:   ±
На сайте с 07.11.2011

Статус: Offline

Доброй ночи,Ваш проект работает, после небольших переделок,я завтра его доделаю,просто давно не работал с РВР .
sereg Дата: Пт, 21.12.2012, 13:51  |                                                                                                                Сообщение # 4
Группа: Пользователи
Ранг:  Новенький
Сообщений: 17
Репутация: 0   ±
Замечания:   ±
На сайте с 25.11.2012

Статус: Offline

Это в программе было или протеус? Я на таких частотах не работал в нем.
shaman Дата: Сб, 22.12.2012, 00:41  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 178
Репутация: 5   ±
Замечания:   ±
На сайте с 07.11.2011

Статус: Offline

Доброй ночи ,Ethno, ошибки есть, и очень много ,просто Вы взяли код и скинули его на форум с целью чтобы Вам помогли ,я нашёл код где Вы его взяли.У Вас ошибки в схеме, в самом коде программы,поищите по нету принцип работы ,и устройство частотомера.

Добавлено (22.12.2012, 00:41)
---------------------------------------------
Если использовать оператор COUNT максимум можна измерить до 125 KHz c кварцем в 20 MHz.

Ethno Дата: Сб, 22.12.2012, 23:36  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 91
Репутация: 2   ±
Замечания:   ±
На сайте с 11.12.2012

Статус: Offline

Доброго вечера Shaman, для PicBasic нет примера частотомера взял что то и хочу понять в чем может быть загвоздка, что не так... а еще была идея сделать на второй линии индикатора бегущую полоску... ( на пример от 0 до 60 кгц) чем выше частота тем больше сегментов заполнено... Если подскажете где взять пример.... для PicBasic огромное спасибо...
shaman Дата: Вс, 23.12.2012, 00:04  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 178
Репутация: 5   ±
Замечания:   ±
На сайте с 07.11.2011

Статус: Offline

Доброй ночи,у Вас уже есть код программы, просто уберите ненужное и сделайте под свои нужды как Вам надо.

Добавлено (23.12.2012, 00:04)
---------------------------------------------
И в посте №5 я Вам писал где ошибки,исправьте их ,и предел измерения какой у Вас от 0 и до ?

Ethno Дата: Вс, 23.12.2012, 00:29  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 91
Репутация: 2   ±
Замечания:   ±
На сайте с 11.12.2012

Статус: Offline

А как сделать бегущую полоску..?
shaman Дата: Вс, 23.12.2012, 00:31  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 178
Репутация: 5   ±
Замечания:   ±
На сайте с 07.11.2011

Статус: Offline

На сдвиговых регистрах 595 или 164
Ethno Дата: Пн, 24.12.2012, 10:26  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 91
Репутация: 2   ±
Замечания:   ±
На сайте с 11.12.2012

Статус: Offline

Разобрался.... кнопочку добавил... единственное не пойму как увеличить количество знаков в моде 1 2 3 хотя бы до 6-7
shaman Дата: Пн, 24.12.2012, 17:41  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 178
Репутация: 5   ±
Замечания:   ±
На сайте с 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)
---------------------------------------------
Вы прочитайте про этот оператор,в книге В.Н.Хилинский

ЯНДЕКС Дата: 24.12.2012
Ethno Дата: Ср, 26.12.2012, 11:08  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 91
Репутация: 2   ±
Замечания:   ±
На сайте с 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
Репутация: 5   ±
Замечания:   ±
На сайте с 07.11.2011

Статус: Offline

День добрый,так у Вас же в CASE2 он измеряет частоту от "650-6,5MHz
Ethno Дата: Чт, 27.12.2012, 14:15  |                                                                                                                Сообщение # 14
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 91
Репутация: 2   ±
Замечания:   ±
На сайте с 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
Репутация: 5   ±
Замечания:   ±
На сайте с 07.11.2011

Статус: Offline

День добрый,проект в протеусе скиньте

Добавлено (27.12.2012, 14:26)
---------------------------------------------
У меня Ваш проект измеряет от 0-120 kHz ,и четка показывает какая частота.

Форум Picbasic.ru » Программирование МК » PicBasicPro » Частотомер PIC16F628A (Программа на PicBasic)
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск: