Чт янв 27, 2022 15:46:36
GoldenAndy писал(а):...Поэтому предлагаю вот такую штуку.
На пьезик Х0 даем импульс, запускаем таймер - и ждем прихода отклика на Х1. Имеем длину L по оси Х.
Теперь то же самое делаем по оси Y....
Hand-Maker писал(а):...Кстати, а если датчики прилепить не на плоскость листа резины, а не торцевые поверхности...
Чт янв 27, 2022 17:52:48
;**********************************************************************
; *
; Filename: 1.bas *
; Date: 24.01.2022 *
; File Version: 1.00 *
; *
; Author: Alexey Petrushev *
; Company: http://autobills.ru/ *
; *
;**********************************************************************
; *
; Files required: *
; *
;**********************************************************************
; *
; Notes: Мишень акустическая *
; PIC16F628a v 1.0 *
;**********************************************************************
'установить
' __CONFIG _WDT_ON & _XT_OSC & _PWRTE_ON &_CP_OFF & _MCLRE_OFF& _BODEN_ON & _LVP_OFF
'если какойто из датчиков не срабатывает, то сброс по аварийному таймеру
'нельзя допускать переполнения таймера, переполнение это выход за границы мишени
'системные определения
DEFINE OSC 20 ' Тактовая частота MHZ
Include "modedefs.bas"
'определения портов ввода/вывода
OUT VAR PORTB.3 'выход порта на UART
'определение переменных
X0 VAR BYTE 'точка X0
X1 VAR BYTE 'точка X1
Y0 VAR BYTE 'точка Y0
Y1 VAR BYTE 'точка Y1
MASK VAR BYTE 'маска
TEMP VAR BYTE 'временная
SAVE_INTCON VAR BYTE 'регистр хранения
'Исходные значения установок
Main: PORTA = %11111111 'настройка PORTA
TRISA = %11111111 'настройка PORTA
PORTB = %11110111 'настройка PORTB
TRISB = %11111111 'настройка PORTB
OPTION_REG = %00001000 'отключить подтягивающие резисторы, предделитель отключить от таймера
CMCON = %00000111 'отключим комрараторы
STATUS = %00000000 'обнулим регистр статуса
INTCON = %00000000 'настройка прерываний (нет)
SEROUT OUT,T9600, ["START", 13] 'сообщаем о готовности.
Start:
'готовим переменные
X0 = 0
X1 = 0
Y0 = 0
Y1 = 0
MASK = %11110000 'маска порта на прием сигнала
'ожидание появления импульса от любого датчика
'для ускорения на ASM
ASM
A_Wait_Start: CLRWDT
MOVF PORTB,W ;TEMP = PORTB & MASK
ANDWF _MASK,W
MOVWF _TEMP
BTFSC STATUS, Z ;проверим, если 0, ничего не пришло
GOTO A_Wait_Start
CLRF TMR0 ;сбросим таймер
BCF INTCON, T0IF ;сбросим флаг переполнения таймера
ENDASM
INTCON.2 = 0
;цикл опроса и счета датчиков, выход по сторожевому таймеру
;маскируем сработавший датчик
ASM
A_Read_Next: MOVF _TEMP, W ;MASK = TEMP ^ MASK
XORWF _MASK,F
BTFSC STATUS, Z ;MASK = 0, все считали, выходим
GOTO A_Read_End
A_Read_1: MOVF PORTB,W ;TEMP = PORTB & MASK
ANDWF _MASK,W
MOVWF _TEMP
BTFSC STATUS, Z ;усли 0, ничего не пришло, сразу к ожиданию
GOTO A_Read_1
;сохраним регистр INTCON, чтобы потом убедится, не переполнялся ли таймер
;в принципе можно просто зациклить до сброса
MOVF INTCON, W
MOVWF _SAVE_INTCON
;тут чтото пришло, надо посмотреть что
;находим, куда записать таймер
MOVF TMR0, W
BTFSC _TEMP, 4 ;X0
MOVWF _X0
BTFSC _TEMP, 5 ;X1
MOVWF _X1
BTFSC _TEMP, 6 ;Y0
MOVWF _Y0
BTFSC _TEMP, 7 ;Y1
MOVWF _Y1
GOTO A_Read_Next
A_Read_End:
ENDASM
IF SAVE_INTCON.2 = 1 THEN 'таймер был переполнен, попадание вне поля мишени
X0 = 255
X1 = 255
Y0 = 255
Y1 = 255
ENDIF
'передаем тайминги в порт
SEROUT OUT,T9600, [ #X0, " ", #X1, " ", #Y0, " ", #Y1, 13]
PAUSE 1000
GOTO Start
END
Пт янв 28, 2022 04:02:07
ANDWF _MASK,W
MOVWF _TEMP
Пт янв 28, 2022 07:39:22
bolek писал(а):код написан на PicBasic Pro?
bolek писал(а):В схеме PB0-PB3 посадить на землю, отказаться от маски и в
A_Wait_Start: ...
выкинуть
Код:
ANDWF _MASK,W
MOVWF _TEMP
Пт янв 28, 2022 09:56:36
Alexey1969 писал(а):Пульнул пару раз, что то читает
Alexey1969 писал(а):Судя по цифрам, верхняя строчка говорит что попал в 1 на 2 часа
Пт янв 28, 2022 10:02:15
bolek писал(а):Alexey1969 писал(а):
Судя по цифрам, верхняя строчка говорит что попал в 1 на 2 часа
А в реальности?
Пт янв 28, 2022 11:17:37
Да. Женщины -- они такие.Да фиг его знает Куда то в центр круга точно попал. Потом пришла жена и сказала, что не фиг дурью маяться в час ночи
Пт янв 28, 2022 17:26:50
Alexey1969 писал(а):...Потом пришла жена и сказала, что не фиг дурью маяться в час ночи...
Alexey1969 писал(а):Сейчас надо как то от соплей избавится
Пт янв 28, 2022 17:40:08
Hand-Maker писал(а):Alexey1969 писал(а):
Сейчас надо как то от соплей избавится
Насморк, если его лечить, проходит всего за неделю. А если не лечить - тянется целых семь дней.
Пт янв 28, 2022 19:22:58
Пт янв 28, 2022 19:28:39
Сб янв 29, 2022 18:36:14
GoldenAndy писал(а):попробуйте автокалибровку сделать лучше.
Вс фев 06, 2022 17:24:17
Вс фев 06, 2022 17:32:25
Вс фев 06, 2022 17:39:18
Вс фев 06, 2022 21:51:55
Вс фев 06, 2022 21:59:50
Пн фев 07, 2022 05:29:27
TrumPIC писал(а):как центровать бумажную мишень относительно резиновой
Пн фев 07, 2022 05:30:52
TrumPIC писал(а):Есть одна бяка: надо придумать, как центровать бумажную мишень относительно резиновой.
Пн фев 07, 2022 05:55:08
bolek писал(а):Насколько точно совпадает отметка попадания на бумажной мишени с отметкой на экране?
bolek писал(а):Для оценки погрешности стрелять нужно не в центр, а в 1-2 на 1-2 часа или аналогичные места в других квадрантах.
bolek писал(а):проходящие через центр бумажной мишени, с соответствующими линиями на резиновой