На главную страницу сайта
· Наш магазин · Объявления · Рейтинг · Статьи · Частоты · Копилка · Аэродромы · Live!
· Файлы · Диапазоны · Сигналы · Музей · Mods · LPD-форум · Клуб · Радиостанции
На сайте: гостей - 48,
участников - 2 [ UB3AFB, Несущий свет]
 · Начало · Опросы · События · Статистика · Поиск · Регистрация · Правила · FAQ · Галерея ·
 Форум —› Радиостанции —› Автоинформатор на МК АВР 
Автор Сообщение
rk50
Участник
Offline1.1
с мар 2015
Москва
Сообщений: 8

Дата: 25 Сен 2017 22:30:48 · Поправил: rk50 (25 Сен 2017 22:39:05) #  

Данное устройство поднимает трубку при поступлении звонка и проигрывает сообщение длиной до 2 минут. По окончании звукового приветствия в линию посылается звуковой сигнал для начала звукозаписи.


ОПИСАНИЕ РАБОТЫ

При поступлении мелодии звонка на вход устройства звукозаписи, детектор его детектирует и подает его на вход PIN7 микроконтроллера для управления модулем звукозаписи.
На выходе PINB2 микроконтроллера появляется напряжение низкого уровня, которое активирует функцию воспроизведения записи, после ее завершения на выходе детектора появляется высокий уровень сигнала.
По истечении 2 секунд окончания звукозаписи, модуль отключается и в линию подается звуковой сигнал для начала звукозаписи.

Видео

Увеличить


/*
* informator.asm
*
* Created: 20.09.2017 18:24:30
* * Author: Roman, 8(903)142-37-21, proftpd@mail.ru
Исправление 21 сентября 2017 года
Доработка 23 сентября: определение конца воспроизведения фонограммы
Доработка тоновых посылок, в начале передачи один сигнал, а в конце другой +1
PIN3 - REC, управление записью
PIN2- PLAY, управление воспроизведением PB3
PIN5 - LED, индикатор работы и сигнал в линию PB0
PIN6 - DRIVER, управление трубкой PB1
PIN7 - DETECTOR, детектор PB2
ОТЛАЖЕНА ДЛЯ ТЕЛЕФОНА

*/
.include "tn13def.inc"
.def tmp = R16
.def tmpa = R17; временные задержки
.def tmpb = R18; временные задержки
.def time_1 = R19 ; длительность тоновой посылки
.def time_2 = R20 ; ; длительность тоновой посылки
.def tmpc = R21 ; для чтения содержимого порта
.def time_out = R22 ; для тайм -аута
.def time_metka = R23; для ременных отметок каждые 15 минут

.equ clock = 0x00; 0x00 = 10 kHz, 0xFF = 40kHz
.equ PLAY = 3; PB3
.equ REC = 4; PB4
.equ LED = 0 ;PB0
.equ DET = 2 ;PB2
.equ TX = 1; PB1

.cseg
.org 0
ldi tmp, low(RAMEND)
out SPL, tmp

ldi tmp, clock
out OSCCAL, tmp


ldi tmp, 0b00011011
out DDRB, tmp
ser tmp
out PORTB, tmp ; подтянули все резисторы к 1
rcall led_test
rcall tx_on
rcall d2400
rcall tone_test
rcall d2400
rcall info
rcall d2400
rcall tx_off
ldi time_metka, 0x05; каждые 15 минут

;########################################################################################
; ОСОВНАЯ ПРОГРАММА
;########################################################################################
start:
;rcall detector; Проверяем, если сигнал в эфире.
rcall tx_on
rcall tone_time
rcall play_on
rcall time_out_play;
;rcall detector_off; отслеживание конца записи фонограммы
tt2:
rcall play_off
rcall tone_time
dec time_metka; осчитали первые 15 минут
rcall info ; передача азбукой морзе rk50.ru
rcall tx_off
rcall pause_long; pause 15 min
rjmp start
;#########################################################################################
;#########################################################################################
;detector_off: ; детектор окончания записи, если не используем, то ставим тайм аут
;in tmpc, PINB
;sbrc tmpc, DET; пропустить следующую команду, если на входе 0
;ret
;rjmp detector_off


;detector: ; проверяем нет ли сигнала в эфире. Еслм есть, то ждем пока не пропадет.
;in tmpc, PINB
;sbrc tmpc, DET; пропустить следующую команду, если на входе 0
;ret
;sbi PORTB, LED ; Если канал занят, то мигает быстро светодиодом
;rcall d300
;cbi PORTB, LED
;rcall d300
;rjmp detector

tx_on:
cbi PORTB, TX
rcall d2400
ret

tx_off:
sbi PORTB, TX
ret

play_on:
cbi PORTB, PLAY
sbi PORTB, LED
rcall d2400
ret


play_off:
sbi PORTB, PLAY
cbi PORTB, LED
rcall d2400
ret

pause_long: ; PAUSE 30 MIN
ldi time_1, 0x0A
re:; 900s
dec time_1
cpi time_1,0
breq end_pause_long
ldi time_2, 0xF9; 100s

re_1:; 0.403s
dec time_2
cpi time_2,0
breq re
rcall d800
rjmp re_1

end_pause_long:
ret

;################################################################################
; ФОРМИРОВАНИЕ ТОНОВЫХ ПОСЫЛОК
;###############################################################################
tone_0:
ldi time_metka, 0x04

tone_time: ; Тоновая посылка длительностью 1 секунда с частотой 1 Гц
cpi time_metka,4
breq tone_0min
cpi time_metka, 3
breq tone_15min
cpi time_metka, 2
breq tone_30min
cpi time_metka, 1
breq tone_45min
cpi time_metka, 0
breq tone_0; повторяем цикл восстановив регистр time_metka

tone_0min: ; так как при начале воспроизведения и конце у нас уже передается тон, то ничего не передаем
ret

tone_15min:
rcall tone
rcall d2400
ret

tone_30min:
rcall tone
rcall d800
rcall tone
rcall d2400
ret

tone_45min:
rcall tone
rcall d800
rcall tone
rcall d800
rcall tone
rcall d2400
ret

;###################################################################################
; ФОРМИРОВАНИЕ ТОНОВОЙ ПОСЫЛКИ
;####################################################################################
tone:
ldi time_1, 0x0F ; Длительность тоновой посылки 6s
tm:
ldi time_2, 0x32

dec time_1
cpi time_1, 0
breq end_time

tm0:
dec time_2
cpi time_2, 0
breq tm

; ТОНОВАЯ ПОСЫЛКА
sbi PORTB, LED
rcall d1
cbi PORTB, LED
rcall d1
rjmp tm0
end_time:
rcall d800
ret



;#########################################################################################
; ПЕРЕДАЧА АЗБУКОЙ МОРЗЕ RK50.RU
;##########################################################################################
info:
rcall symbol_R
rcall symbol_K
rcall symbol_5
rcall symbol_0
rcall symbol_point
rcall symbol_R
rcall symbol_U
rcall d2400
ret


;#######################################################################################
; ОПРЕДЕЛЕНИЕ КОНЦА ВОСПРОИЗВЕДЕНИЯ ФОНОГРАММЫ
;#######################################################################################
time_out_play:
in tmpc, PINB
sbrc tmpc, DET; пропустить следующую команду, если на входе 0
rjmp tt1
rcall d300
rjmp time_out_play
tt1:
in tmpc, PINB
sbrc tmpc, DET; пропустить следующую команду, если на входе 0
rjmp tt2
rcall d300
rjmp tt1

;#####################################################################################################
; ИНИЦИАЛИЗАЦИЯ АВТООТВЕТЧИКА
;#####################################################################################################
led_test:
ldi tmp, 0x06; 5 вспышек светодиода

start_led:
dec tmp
cpi tmp, 0
breq end_power_led
cbi PORTB, LED ;
rcall d800
sbi PORTB, LED
rcall d800
rjmp start_led
end_power_led:
cbi PORTB, LED
ret

tone_test: ; Тестовая тоновая послыка 1,72 кГц T = 5,76 ms
ldi time_1, 0x0F; ; Длительность тоновой посылки 6s

tm02:
ldi time_2, 0x32; 50
dec time_1
cpi time_1, 0
breq end_time_test

tm01:
dec time_2
cpi time_2, 0
breq tm02


sbi PORTB, LED ; ТОН
nop
rcall d1
cbi PORTB, LED
nop
rcall d1
rjmp tm01

end_time_test:
rcall d2400
ret
tire:
ldi time_1, 0x07

sd1:
ldi time_2, 0x2D; должна быть длительность 156 мс, то есть три длительности точки
dec time_1
cpi time_1,0
breq end_tire

start_tire:
dec time_2
cpi time_2, 0
breq sd1

sbi PORTB, LED
rcall d1
cbi PORTB, LED
rcall d1
rjmp start_tire
end_tire:
ret

point:
ldi time_1,0x02; 48 ms


sd: ; 0.96 ms
ldi time_2, 0x54; 83 должно быть 52 мс длителность точки
dec time_1
cpi time_1, 0
breq end_point

start_point:
dec time_2
cpi time_2,0
breq sd
sbi PORTB, LED
rcall d1
cbi PORTB, LED
rcall d1
rjmp start_point
end_point:
ret

;#############################################################################################
; ФОРМИРОВАНИЕ ПАУЗ
;#############################################################################################
d1: ; 1ms
ldi tmpa, 0x02;
t5:
ldi tmpb, 0x1F
dec tmpa
cpi tmpa,0
breq end_pause_1
t6: ; 4 ms
dec tmpb
cpi tmpb, 0
breq t6
rjmp t4
end_pause_1:
ret
d100:
ldi tmpa, 0x19; 0x19 = 100 ms ;0x18 = 96ms;
t3:
ldi tmpb, 0xFF
dec tmpa
cpi tmpa,0
breq end_pause_100
t4: ; 4 ms
dec tmpb
cpi tmpb, 0
breq t3
rjmp t4
end_pause_100:
ret


d300:
ldi tmpa, 0x4B; должно быть 300 мс
s3:
ldi tmpb, 0xFF
dec tmpa
cpi tmpa,0
breq end_pause_300
s4: ; 4 ms
dec tmpb
cpi tmpb, 0
breq s3
rjmp s4
end_pause_300:
ret

d800:
ldi tmpa, 0xC0; 0xC0 = 800ms 0x60 = 400 ms 0x30= 200 ms 0x0F= 59 ms

t1:
ldi tmpb, 0xFF
dec tmpa
cpi tmpa,0
breq end_pause
t2:
dec tmpb
cpi tmpb, 0
breq t1
rjmp t2
end_pause:
ret


d2400:
rcall d800
rcall d800
rcall d800
ret
;#############################################################################
; Символы
;#############################################################################
symbol_R:
rcall d300
rcall point
rcall d100
rcall tire
rcall d100
rcall point
rcall d300
ret


symbol_K:
rcall tire
rcall d100
rcall point
rcall d100
rcall tire
rcall d300
ret


symbol_5:
rcall point
rcall d100
rcall point
rcall d100
rcall point
rcall d100
rcall point
rcall d100
rcall point
rcall d300
ret

symbol_0:
rcall tire
rcall d100
rcall tire
rcall d100
rcall tire
rcall d100
rcall tire
rcall d100
rcall tire
rcall d100
ret

symbol_U:
rcall tire
rcall d100
rcall tire
rcall d100
rcall point
rcall d300
ret

symbol_point:
rcall point
rcall d100
rcall point
rcall d100
rcall point
rcall d100
rcall point
rcall d100
rcall point
rcall d100
rcall point
rcall d300

ret
rk50
Участник
Offline1.1
с мар 2015
Москва
Сообщений: 8

Дата: 10 Окт 2017 13:36:49 #  

Авто информатор поставил на УКВ радиостанцию и работает сейчас он на частоте 434.625 МГц в г. Пушкино.
Высота установки антенны 16 метров, тип антенны 1/4, выходная мощность 2.7 Вт.
 

Создавать сообщения могут только зарегистрированные участники форума.
Войти в форум :: » Логин » Пароль
Начало
Средства связи, рации. Купить радиостанции Motorola, Yaesu, Vertex, приемники, антенны.
Время загрузки страницы (сек.): 0.039; miniBB ®