Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: demanik  
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Частотомер (скважность и прочее и прочее и прочее)
Частотомер
доцент2 Дата: Вс, 10.06.2018, 11:00  |                                                                                                                Сообщение # 121
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 433
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Цитата ivan_fd ()
не нужно наугад что то писать, подбирать.
Я не знаю ассемблер поэтому за основу взял расчет с калькулятора, а потом метод тыка.
Калькулятор расписывает задержку без вставок типа переполнения и т.д.
Что касается описания МК, то несмотря на ограничения считает 78МГц без всяких делителей.
Просто хотелось бы вставить еще задержку на 10сек и учесть переполнения переменной Byte.
Что касается протеуса, в Вашем видео при паузе просматривается файл asm, а у меня с расширением bas. Может поэтому и не получается определить кол-во циклов. Я выставляю метки в начале и в конце задержки. После старта до первой доходит и останавливается, показывая кол-во прошедших циклов, а потом без остановки считает до бесконечности. В итоге сколько циклов приходится на задержку посмотреть не могу.
ЯНДЕКС Дата: 10.06.2018
ivan_fd Дата: Вс, 10.06.2018, 11:17  |                                                                                                                Сообщение # 122
Группа: Модераторы
Ранг:  Специалист
Сообщений: 1040
Репутация: 83   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Оно то может и считает, но скорее всего не верно. В даташите описано, что превышение характеристик может привести к неправильной работе.
Если бы я имел генератор, собрал бы в железе и поэкспериментировал. Были в меня на работе точные приборы, генератор и частотомер. Можно было бы сверить, но сгорели в пожаре.

А протеус у меня больше 10МГц не работает.


Меня все время преследуют умные мысли...но я быстрее!!!
Сообщение отредактировал ivan_fd - Вс, 10.06.2018, 11:19
доцент2 Дата: Вс, 10.06.2018, 20:50  |                                                                                                                Сообщение # 123
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 433
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

У меня генератора тоже нет. Собственно задумка и была собрать генератор на модуле AD9850 используя простенький МК. Потом решил использовать графический дисплейчик, а он требует больше памяти и тактовой частоты. Поэтому поставил 18f252 с PLL. Остались свободные выводы, подцепил клавиатуру, пищалку и хочу добавить частотомер.
Работу частотомера я проверяю на кварцевых генераторах. У меня их 6 шт с частотами от 10МГц  до 78МГц. Частоту 53МГц определяет нормально. Кстати на модуле AD9850 стоит кварц на 120МГц, вот его частотомер уже не видит.
Вот и хотелось бы использовать задержки от 0,1 до 10сек.

Добавлено (10.06.2018, 20:50)
---------------------------------------------
Посмотрите, данный блок жизнеспособен?
TMR1IF = 0      ' сброс Флага переполнения таймера TMR1
TMR1perep = 0   ' сброс количества переполнений
TMR1perep_1 = 0 ' сброс вспомогательной переменной
; пауза 1000мс, при частоте 40МГц 10 000 000 машинных циклов
Asm
Clrf TMR1L          ; обнуляем регистры...
Clrf TMR1H          ; таймера 1
Bsf T1CON, 0        ; включаем таймер, начало счета
Movlw       .216
Movwf       Reg_1
Movlw       .87
Movwf       Reg_2
Movlw       .51
Movwf       Reg_3

Pause2_1    Btfss    PIR1, 0           ; проверяем бит переполнения таймера
Bra    Paus_1               ; небыло переполнения, идем на Paus

'------ проверка на переполнение ------
Btfss   PIR1,0             ;проверка переполнения
Bra    Paus_1         ;нет, идем на паузу
Movlw   0FFh             ;проверка не равен ли
Bcf Status,2               ;TimerH=0FFh
Subwf   TMR1perep,w
Btfss   Status,2
Incf    TMR1perep_1,F   ;если равен, то увеличиваем TMR1perep_1 на единицу
Clrf    TMR1perep       ;и обнуляем TMR1perep
Bcf PIR1,0              ;сброс флага переполнения
'--------------------------------------
Incf    TMR1perep, F   ; было переполнение, инкремент переменной (переменная размера 1 байт, BYTE!!!!!!!)
Bcf        PIR1, 0        ; сброс флага переполнения
Bra    Nxt3_1             ; далее на паузу

Paus_1        Nop                    ; выравнивание....
Bra    $+2                   ; ... длительности

Nxt3_1      Decfsz      Reg_1
Bra         $-2
Decfsz      Reg_2
Bra         Pause2_1
Decfsz      Reg_3
Bra         $-.10
Bcf T1CON, 0           ; останавливаем таймер
EndAsm

Сообщение отредактировал доцент2 - Вс, 10.06.2018, 20:51
доцент2 Дата: Сб, 16.06.2018, 19:47  |                                                                                                                Сообщение # 124
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 433
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Подскажите, как посмотреть сколько циклов занимает вставка Asm.
Не могу поставить контрольные точки.
Прикрепления: 8479600.jpg(89.7 Kb)
ivan_fd Дата: Вс, 17.06.2018, 09:57  |                                                                                                                Сообщение # 125
Группа: Модераторы
Ранг:  Специалист
Сообщений: 1040
Репутация: 83   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Я отлаживал в MPASM + proteus. Полностью на ассемблере.

Меня все время преследуют умные мысли...но я быстрее!!!
доцент2 Дата: Вс, 17.06.2018, 14:08  |                                                                                                                Сообщение # 126
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 433
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Цитата ivan_fd ()
Я отлаживал в MPASM + proteus. Полностью на ассемблере.
Очередное препятствие к  нобелевской премии.   surprised 

Скачал mpasm, но там нет 18-й серии. sweated
ivan_fd Дата: Вс, 17.06.2018, 14:40  |                                                                                                                Сообщение # 127
Группа: Модераторы
Ранг:  Специалист
Сообщений: 1040
Репутация: 83   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

smile  smile  smile 

IDE = MPLAB X IDE v4.15 - MPASM v5.77

Заготовку программы на асме (проект) прилагаю, что бы не мучались.
Прикрепления: asm.zip(43.5 Kb)


Меня все время преследуют умные мысли...но я быстрее!!!
доцент2 Дата: Вс, 17.06.2018, 16:37  |                                                                                                                Сообщение # 128
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 433
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Пока темный лес.
MPLAB IDE v8.53 пишет не верный путь к файлу.
могу открыть только Atmel Studio 7.0. Но как его потом в протеус вставить не понимаю.
ivan_fd Дата: Вс, 17.06.2018, 20:56  |                                                                                                                Сообщение # 129
Группа: Модераторы
Ранг:  Специалист
Сообщений: 1040
Репутация: 83   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

А при чем здесь атмел??? Я ж вам написал чем открыть и компилировать.

Меня все время преследуют умные мысли...но я быстрее!!!
доцент2 Дата: Пн, 18.06.2018, 11:15  |                                                                                                                Сообщение # 130
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 433
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Цитата ivan_fd ()
IDE = MPLAB X IDE v4.15 - MPASM v5.77
Нашел этот MPASM с 18f252.
С помощью MPASM я могу получить .hex файл.
И еще кучку файлов в папке. В протеусе могу прикрепить только этот .hex.
Не могу понять как Вы прикрепили этот файл.
Я с ASM дело не имел, может что-то делаю не так?
Прикрепления: 1441413.jpg(142.7 Kb)

Сообщение отредактировал доцент2 - Пн, 18.06.2018, 11:19
ivan_fd Дата: Пн, 18.06.2018, 15:21  |                                                                                                                Сообщение # 131
Группа: Модераторы
Ранг:  Специалист
Сообщений: 1040
Репутация: 83   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Пишу пошагово:
1. Заходим на сайт микрочипа и скачиваем IDE по ссылке MPLAB X.
Тут даже уже v4.20. В них уже есть MPASM!!!
2. Далее смотрим видео о том как крышу на даче меняли. wink



Меня все время преследуют умные мысли...но я быстрее!!!
Сообщение отредактировал ivan_fd - Пн, 18.06.2018, 16:25
доцент2 Дата: Пн, 18.06.2018, 16:53  |                                                                                                                Сообщение # 132
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 433
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Для примера взял кусок кода из частотомера.
При запуске симуляции первая остановка на первой точке.
Далее продолжаю симуляцию. На второй точке она не останавливается, а продолжается пока не остановишь.
Как получить остановки на всех контрольных точках.
Походу с этим асмом накосячил.

Сообщение отредактировал доцент2 - Пн, 18.06.2018, 20:16
доцент2 Дата: Ср, 20.06.2018, 21:31  |                                                                                                                Сообщение # 133
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 433
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Ерунда какая то с этим асмом.
Как получить остановки на всех контрольных точках?
На первой останавливается, а дальше пока сам не остановишь.
При включении пошаговой анимации для 100мс (1000000 циклов) к утру он может и досчитает.
И то не остановится (проверено на 10мкс), а продолжает считать дальше.
Прикрепления: 7526044.jpg(254.4 Kb) · 2881438.jpg(52.8 Kb) · asm.rar(38.9 Kb)
ivan_fd Дата: Чт, 21.06.2018, 11:46  |                                                                                                                Сообщение # 134
Группа: Модераторы
Ранг:  Специалист
Сообщений: 1040
Репутация: 83   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

На следующую точку он не перейдет никогда. Потому, что Вы сделали вечный цикл.!
Для этого, как раз, хорошо подходит протеус или отладка в самой IDE. Там все хорошо видно.
Вот посмотрите изменил задержку для 10мс, сравните со своей.
И ещё, в настройках проекта протеуса ставьте частоту 10МГц, а не 40. У вас, что кварц на 40МГц и умножение на 4????
Прикрепления: main.asm(6.3 Kb)


Меня все время преследуют умные мысли...но я быстрее!!!
доцент2 Дата: Чт, 21.06.2018, 17:58  |                                                                                                                Сообщение # 135
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 433
Репутация: 10   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Цитата ivan_fd ()
На следующую точку он не перейдет никогда. Потому, что Вы сделали вечный цикл.!
Если бы Бендер знал, что он разыгрывает такие комбинации..... smile
Сам уже запутался, откуда взял этот блок. Похоже из очередного инетовского калькулятора (похоже выделенная строчка косячная).
Сейчас работает. Спасибо.
Эх. если бы за меня кто поле одуванчиков перепахал и варенье сварил.... wink
Хочу попробовать добавить дополнительную переменную на переполнение. И добавить задержку в 10сек (может пригодиться).
Прикрепления: 7181876.jpg(123.4 Kb)

Сообщение отредактировал доцент2 - Чт, 21.06.2018, 18:07
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Частотомер (скважность и прочее и прочее и прочее)
Поиск: