помощь в реализации проекта
- zvykov
- Встал на лапы
- Сообщения: 86
- Зарегистрирован: Чт апр 02, 2009 01:18:09
- Откуда: Минск
- Контактная информация:
помощь в реализации проекта
Доброго времени суток, уважаемые коты!!!!!! Обращаюсь за помощью вот в какой конструкции, нужна схемка (на мк, pic, avr не имеет значения), которая реализует следующий принцип работы: на ногу мк (условно пусть будет 1-ая) пришел сигнал (постоянное напряжение или импульс) и другая нога (2-ая) выдала напряжение (для управление релюхой), напряжение это держится на ней пока не будет нажата кнопка, повешенная на еще одну ногу (3-ю) мк, (даже если сигнал с первой ноги уже пропал); как только кнопку нажали напряжение с реле снялось, а мк начал отсчет 10 мин, и после истечения 10 мин проверяет 1-ую ногу мк, если на ней еще есть напруга или импульсы, то снова включает релюху на 2-ой ноге, если нет, то просто мониторит сигнал с 1-ой ноги мк. Видел ли кто чего подобное??Может посоветуете чего??
- Реклама
Re: помощь в реализации проекта
Язык инженера - графика. Если нарисовать временную диаграмму работы, может оказаться, что все настолько просто, что и МК не потребуется, и сам реализуешь на паре ЛА3 и ТМ2
Re: помощь в реализации проекта
точнее, нужна схемка и программкаzvykov писал(а):нужна схемка (на мк, pic, avr не имеет значения)
поточнее, плиз. Уровень сигнала, а также если импульсы, то диапазон их длительностей и периодовzvykov писал(а):пришел сигнал (постоянное напряжение или импульс)
точность выдержки данного интервала, нужно ли будет его программно менятьzvykov писал(а):10 мин
И вообще, определитесь все-таки, нужна помощь, или сделать за вас.
Re: помощь в реализации проекта
Здравствуйте. Изучаю микроконтроллеры AVR, напмсал код на ассемблере, реализовав апаратный ШИМ с регулировкой, вот интересует вопрос, возможно ли сигнал ШИМа с ОС0 передать на PB4 или другой порт ,например (PD1).
/*
* FAST_shim.asm
*
* Created: 19.08.2014 14:18:20
* Author: PLATON
*/
.def Temp=R16
.def Temp1=R17
.def Temp2=R18
.def Temp3=R19
.def Temp4=R21
.def Temp5=R22
.def ResCnt=R20
.cseg
.org 0
;Вектора прерываний
jmp RESET ; Reset Handler
jmp EXT_INT0 ; IRQ0 Handler
jmp EXT_INT1 ; IRQ1 Handler
jmp TIM2_COMP ; Timer2 Compare Handler
jmp TIM2_OVF ; Timer2 Overflow Handler
jmp TIM1_CAPT ; Timer1 Capture Handler
jmp TIM1_COMPA ; Timer1 CompareA Handler
jmp TIM1_COMPB ; Timer1 CompareB Handler
jmp TIM1_OVF ; Timer1 Overflow Handler
jmp TIM0_OVF ; Timer0 Overflow Handler
jmp SPI_STC ; SPI Transfer Complete Handler
jmp USART_RXC ; USART RX Complete Handler
jmp USART_UDRE ; UDR Empty Handler
jmp USART_TXC ; USART TX Complete Handler
jmp ADCM ; ADC Conversion Complete Handler
jmp EE_RDY ; EEPROM Ready Handler
jmp ANA_COMP ; Analog Comparator Handler
jmp TWSI ; Two-wire Serial Interface Handler
jmp EXT_INT2 ; IRQ2 Handler
jmp TIM0_COMP ; Timer0 Compare Handler
jmp SPM_RDY
;RESET:
;EXT_INT0:
;EXT_INT1:
TIM2_COMP:
TIM2_OVF:
TIM1_CAPT:
TIM1_COMPA:
TIM1_COMPB:
TIM1_OVF:
TIM0_OVF:
SPI_STC:
USART_RXC:
USART_UDRE:
USART_TXC:
ADCM:
EE_RDY:
ANA_COMP:
TWSI:
EXT_INT2:
TIM0_COMP:
SPM_RDY:
reti
;****************************************************
; ИНИЦИАЛИЗАЦИЯ
;****************************************************
Reset:
ldi Temp,0b11111111 ;настройка портов
out DDRC,Temp
ldi Temp,0b11111111 ;настройка портов
out DDRB,Temp
ldi Temp,0b00000001 ;инициализация таймера
out TCNT0,Temp
ldi Temp,0b01111001 ;фаст шим настройка, запуск таймера
out TCCR0,Temp
ldi Temp4,0b11110000 ;сравнивается с TCCR0 (Ширина импульса)
out OCR0,Temp4
ldi Temp,0b11000000 ; Разрешение прерывания INT0, INT1
out GICR,Temp
ldi Temp,0b00000000 ; По низкому уровню
out MCUCR,Temp
; инициализация стека
LDI Temp1,Low(RAMEND)
OUT SPL,Temp1
LDI Temp1,High(RAMEND)
OUT SPH,Temp1
sei
; бесконечный цикл
cikl: jmp cikl
; обработчик внешнего прерывания
EXT_INT0:
ldi Temp3,0
ldi Temp2,0
l_res:
dec Temp3 ; Антидребезг
brne l_res
dec Temp2
brne l_res
inc ResCnt
CPI Temp4,0b11100000 ; сравним с крайним значением
BRSH m1 ; если больше или равно перейдём на метку
inc Temp4
inc Temp4
inc Temp4
inc Temp4
inc Temp4
inc Temp4 ; Уменьшаем Ширину импульса
inc Temp4
inc Temp4
out OCR0,Temp4
ldi Temp5,OCR0
out PortC,Temp5
m1:
reti
EXT_INT1:
ldi Temp3,0
ldi Temp2,0
l_res2:
dec Temp3 ; Антидребезг
brne l_res2
dec Temp2
brne l_res2
inc ResCnt
CPI Temp4,0b00011111 ; сравним с крайним значением
BRLO m2 ; если меньше или равно перейдём на метку
dec Temp4 ; Увеличиваем Ширину импульса
dec Temp4
dec Temp4
dec Temp4
dec Temp4
dec Temp4
dec Temp4
dec Temp4
out OCR0,Temp4
m2:
reti
Код: Выделить всё
* FAST_shim.asm
*
* Created: 19.08.2014 14:18:20
* Author: PLATON
*/
.def Temp=R16
.def Temp1=R17
.def Temp2=R18
.def Temp3=R19
.def Temp4=R21
.def Temp5=R22
.def ResCnt=R20
.cseg
.org 0
;Вектора прерываний
jmp RESET ; Reset Handler
jmp EXT_INT0 ; IRQ0 Handler
jmp EXT_INT1 ; IRQ1 Handler
jmp TIM2_COMP ; Timer2 Compare Handler
jmp TIM2_OVF ; Timer2 Overflow Handler
jmp TIM1_CAPT ; Timer1 Capture Handler
jmp TIM1_COMPA ; Timer1 CompareA Handler
jmp TIM1_COMPB ; Timer1 CompareB Handler
jmp TIM1_OVF ; Timer1 Overflow Handler
jmp TIM0_OVF ; Timer0 Overflow Handler
jmp SPI_STC ; SPI Transfer Complete Handler
jmp USART_RXC ; USART RX Complete Handler
jmp USART_UDRE ; UDR Empty Handler
jmp USART_TXC ; USART TX Complete Handler
jmp ADCM ; ADC Conversion Complete Handler
jmp EE_RDY ; EEPROM Ready Handler
jmp ANA_COMP ; Analog Comparator Handler
jmp TWSI ; Two-wire Serial Interface Handler
jmp EXT_INT2 ; IRQ2 Handler
jmp TIM0_COMP ; Timer0 Compare Handler
jmp SPM_RDY
;RESET:
;EXT_INT0:
;EXT_INT1:
TIM2_COMP:
TIM2_OVF:
TIM1_CAPT:
TIM1_COMPA:
TIM1_COMPB:
TIM1_OVF:
TIM0_OVF:
SPI_STC:
USART_RXC:
USART_UDRE:
USART_TXC:
ADCM:
EE_RDY:
ANA_COMP:
TWSI:
EXT_INT2:
TIM0_COMP:
SPM_RDY:
reti
;****************************************************
; ИНИЦИАЛИЗАЦИЯ
;****************************************************
Reset:
ldi Temp,0b11111111 ;настройка портов
out DDRC,Temp
ldi Temp,0b11111111 ;настройка портов
out DDRB,Temp
ldi Temp,0b00000001 ;инициализация таймера
out TCNT0,Temp
ldi Temp,0b01111001 ;фаст шим настройка, запуск таймера
out TCCR0,Temp
ldi Temp4,0b11110000 ;сравнивается с TCCR0 (Ширина импульса)
out OCR0,Temp4
ldi Temp,0b11000000 ; Разрешение прерывания INT0, INT1
out GICR,Temp
ldi Temp,0b00000000 ; По низкому уровню
out MCUCR,Temp
; инициализация стека
LDI Temp1,Low(RAMEND)
OUT SPL,Temp1
LDI Temp1,High(RAMEND)
OUT SPH,Temp1
sei
; бесконечный цикл
cikl: jmp cikl
; обработчик внешнего прерывания
EXT_INT0:
ldi Temp3,0
ldi Temp2,0
l_res:
dec Temp3 ; Антидребезг
brne l_res
dec Temp2
brne l_res
inc ResCnt
CPI Temp4,0b11100000 ; сравним с крайним значением
BRSH m1 ; если больше или равно перейдём на метку
inc Temp4
inc Temp4
inc Temp4
inc Temp4
inc Temp4
inc Temp4 ; Уменьшаем Ширину импульса
inc Temp4
inc Temp4
out OCR0,Temp4
ldi Temp5,OCR0
out PortC,Temp5
m1:
reti
EXT_INT1:
ldi Temp3,0
ldi Temp2,0
l_res2:
dec Temp3 ; Антидребезг
brne l_res2
dec Temp2
brne l_res2
inc ResCnt
CPI Temp4,0b00011111 ; сравним с крайним значением
BRLO m2 ; если меньше или равно перейдём на метку
dec Temp4 ; Увеличиваем Ширину импульса
dec Temp4
dec Temp4
dec Temp4
dec Temp4
dec Temp4
dec Temp4
dec Temp4
out OCR0,Temp4
m2:
reti
- Реклама
Re: помощь в реализации проекта
Аппаратный выход перенаправить невозможно - лишается смысла именно для аппаратного решения.
Программный вариант - куда угодно перенаправить можно, но ограничен по быстродейитвию и разрешающей способности.
Программный вариант - куда угодно перенаправить можно, но ограничен по быстродейитвию и разрешающей способности.


