Страница 5 из 8

Добавлено: Пт ноя 27, 2009 02:21:44
ibiza11
насчет источника питания, посмотрите последний вариант вот здесь (на емкостном делителе), мне он всегда нравился своей стабильностью и высоким КПД. охлаждения не требуется.
я не критикую, просто советую свой вариант :)

Добавлено: Пт ноя 27, 2009 09:04:59
GP1
в AVR182 написано что при подключении через 1МОм диапазон принимаемых значений будет +-1000В, просто делай как там написано прерывание по спаду напряжения на входе, должно работать.

Добавлено: Пт ноя 27, 2009 11:18:48
aleks_bmw528
GP1 если не трудно глянь, продолжаю свои эксперементы со спадом написал тестовую программу , грубо говоря если импульс на INT0 есть то лампа должна загоратся и тухнуть , стали творится чудеса , например если использовать резюк 10ком на +5В и минус при прикосновении к минусу лампа загорится сразу ну и через 10-15сек
потухнет и не загорится ,если я повторно прикоснусь то загорится не сразу 10-15сек потом потухнет

1. Не пойму почему при первом прикосновении сразу срабатывает таймер а при повторном как и должен через 10-15сек ???
2. При подключении через резистор 1Мом опять таймер сработал сразу ,чудеса в том что если отключить резистор 1мом таймер будет
будет сам продолжать работать ,т е INT0 каким то образом само
запускает таймер без наличия сигнала, и еше если включить в сеть без подключения 1мом то лампа загорается наглуха и не тухнет???

Не могу найти обьяснения ???

Код: Выделить всё

.include "tn2313def.inc" 

.def	tmp	=	r16
.def	tmp1	=	r17

.equ	power0	=	65535	
.equ	OutPort	=	PORTB
.equ	OutCntr	=	DDRB
.equ	OutPin	=	PB0
.equ	T1_off	=	0b00000000
.equ	T1_on	=	0b00000100

            .CSEG                
   .org 0 

reset:	rjmp   start	; 00 Reset Handler 
; ***** INTERRUPT VECTORS ************************************************
	.org	INT0addr	;= 0x0001 External Interrupt Request 0
	rjmp	int_0
;.equ	INT1addr	= 0x0002	; External Interrupt Request 1
;.equ	ICP1addr	= 0x0003	; Timer/Counter1 Capture Event
;	.org	OC1Aaddr	;= 0x0004 Timer/Counter1 Compare Match A
;	rjmp	comp1a
;.equ	OC1addr		= 0x0004	; For compatibility
	.org	OVF1addr	;= 0x0005	; Timer/Counter1 Overflow
	rjmp	T1_OVF
;.equ	OVF0addr	= 0x0006	; Timer/Counter0 Overflow
;.equ	URXCaddr	= 0x0007	; USART, Rx Complete
;.equ	URXC0addr	= 0x0007	; For compatibility
;.equ	UDREaddr	= 0x0008	; USART Data Register Empty
;.equ	UDRE0addr	= 0x0008	; For compatibility
;.equ	UTXCaddr	= 0x0009	; USART, Tx Complete
;.equ	UTXC0addr	= 0x0009	; For compatibility
;.equ	ACIaddr		= 0x000a	; Analog Comparator
;.equ	PCIaddr		= 0x000b	; 
;	.org	OC1Baddr	;= 0x000c
;	rjmp	comp1b
;	.org	OC0Aaddr	;= 0x000d
;	rjmp	comp0a
;.equ	OC0Baddr	= 0x000e	; 
;.equ	USI_STARTaddr	= 0x000f	; USI Start Condition
;.equ	USI_OVFaddr	= 0x0010	; USI Overflow
;.equ	ERDYaddr	= 0x0011	; 
;.equ	WDTaddr		= 0x0012	; Watchdog Timer Overflow
;=================
start:	
    ldi	tmp,low(ramend)      ;stack init SP=0xdf 
	out	spl,tmp

	sbi	ACSR,ACD      ;Analog comparator off 
	ser	tmp
	out	OutCntr,tmp
	clr	tmp
	out	OutPort,tmp
	clr	tmp
	out	ddrd,tmp       
	ldi	tmp,0b01111011       
	out	portd,tmp       
            ldi	tmp,(0<<ISC01)|(1<<ISC00)	; это так для порядка - сначала ст.бит, затем мл.бит
	out	MCUCR,tmp	      ;INT0 
	ldi	tmp,(1<<INT0)
	out	GIMSK,tmp
; установки для Т1
; тактовая Fo, режим работы - сброс по совпадению
           clr	tmp			; таймер отключен от выводов  порта
	out	TCCR1A,tmp
	ldi	tmp,0b00000000		; режим работы NORMAL, таймер остановлен!!!
	out	TCCR1B,tmp
; вот здесь загружаем начальное значение для power, таймер остановлен
	ldi	tmp,low(power0)
	ldi	tmp1,high(power0)
	out	TCNT1H,tmp1		; загрузка стартового значения мощности
	out	TCNT1L,tmp

; установка разрешений прерываний от таймеров
	clr	tmp
	ldi	tmp,(1<<TOV1)
	out	TIMSK,tmp
; здесь размещают тело основной программы.
	sei
next:
rjmp	next

;=================
; Обработчики прерываний
;=================
int_0:
	in	tmp,sreg
	push	tmp
	; запускаем Т1
	ldi	tmp,T1_on
	out	TCCR1B,tmp
	pop	tmp
	out	sreg,tmp
	reti

T1_OVF:
    in    tmp,sreg 
    push    tmp
    brts	t1_001	
    sbi	OutPort,(1<<OutPin)				
    pop    tmp 
    out     sreg,tmp	
    set							          	                     rjmp	t1_exit  
t1_001:
	ldi	tmp,T1_off
	out	TCCR1B,tmp
	cbi	OutPort,(1<<OutPin)	; получается 2,5 мкс
            pop    tmp 
            out     sreg,tmp	
  	clt

t1_exit:
	reti

Добавлено: Пт ноя 27, 2009 13:06:10
aleks_bmw528
перепутал :oops:
ldi tmp,(0<<ISC01)|(1<<ISC00)
по спаду так

Код: Выделить всё

 ldi   tmp,(1<<ISC01)|(0<<ISC00)
но один черт при включении без подачи чего либа на вход INT0 pd2
само по себе срабатывает INT0 и запускает таймер!!!!

Кто нибуть может обяснить в чем дело :shock: ?????

Добавлено: Пт ноя 27, 2009 16:32:42
GP1
что-то я сегодня на работе затр...ся, завтра посмотрю.

Добавлено: Сб ноя 28, 2009 13:56:23
aleks_bmw528
GP1 с чудесами разобрался ,в программе напортачил теперь таймер срабатывает не сразу ,как раньше !!!!

по спаду резистор 10 ком +5в на минус все работает !!! :))
просто через резистор 1мом не очень хочется без гальванической развязки , к тому же придется подключать фаза ноль !!!
нет случайно какой нибуть мысли по ловле 0 через оптопару ,или еще чего нибуть????

Добавлено: Вт дек 01, 2009 02:19:36
aleks_bmw528
Сделал гальванику через оптопару 4N33 по спаду, прошил увеличил время управляющего импульса заработало, возникли следующие проблемы при мощности 99% лампа горит на 50% и при этом мерцает ,
буду разбираться в коде !!!!!

Добавлено: Вт дек 01, 2009 08:35:50
GP1
HI, aleks_bmw528!
дело скорее всего не в коде, а в работе входного оптрона.
нарисуй схемку.

зы: конец года, что-то куча дел навалилась, но по мере возможности буду принимать участие.

Добавлено: Вт дек 01, 2009 11:13:44
aleks_bmw528
GP1 Приветствую !!!!

Схема достаточно известная у буржуев ,100% рабочая
поминалы

R1A,R1B 27ком 1ватт
D1 1N4007
R3 10ком
4N33

Добавлено: Вт дек 01, 2009 11:28:06
aleks_bmw528
Слушай GP1 может чего с фузами не так ,такое ощущение не так тактируется, вроде выставлял под внешний кварц ,но я особо не
силен в фузах

Добавлено: Вт дек 01, 2009 11:54:05
GP1
в твоей программе галка - это единица?

Добавлено: Ср дек 02, 2009 00:46:46
aleks_bmw528
Галка это 1
включенный FUSE - это FUSE без галочки!


во втором варианте лампа горит ярче при 99% и мерцает поменьше

Добавлено: Ср дек 02, 2009 09:03:31
GP1
у тебя fuse выставлены на 8МГц внутр.генератор и вкл делитель на 8, т.е. реально у тебя мк работает на частоте 1МГц

замени на такое:

СKSEL3:0 = 0b1110 - внешний кварц >3МГц
и CKDIV8=1

АХТУНГ если поставишь RSTDISBL = 0 - кердык последовательно программировать не сможешь

Добавлено: Ср дек 02, 2009 10:20:22
aleks_bmw528
HI GP1 обьясни дураку СKSEL3:0 = 0b1110

1 - это значит без галочки т.е установлен???
0 - с галочкой сброшен
или на оборот???

это я так понял по fuse2
у тебя fuse выставлены на 8МГц внутр.генератор и вкл делитель на 8, т.е. реально у тебя мк работает на частоте 1МГц

Добавлено: Ср дек 02, 2009 10:31:58
aleks_bmw528
Help поставил вообще не работает !!! :shock:

Добавлено: Ср дек 02, 2009 11:39:04
GP1
готов! :shock: :shock: :shock:

я ж предупреждал! RSTDISBL=0
все, теперь только параллельным программатором можно оживить!

ты же сам писал
Галка это 1
включенный FUSE - это FUSE без галочки!
т.е. 1=галка, 0=нет галки.

Добавлено: Ср дек 02, 2009 11:54:57
aleks_bmw528
GP1 ты меня напугал RSTDISBL=0 это я просто не прочитал поэтому там 0

слушай сейчас эксперементировал походу работает только на внутреннем генераторе ставил cksel1 галку остальные 0 моргает медленнее я так понимаю вн частота 4мгц потом пробывал галку
ckdiv вообще не запускается ???

вопрос :может быть что с установкой portd ??? у меня такое ощущение что не работает внешний RC только что перепаял кварц и С 22 пф
все равно ZERRO

Добавлено: Ср дек 02, 2009 11:56:31
GP1
ёу!
посмотрел еще раз на твою картинку, твоя прога что позволяет отдельные байты программировать?

тогда проверь генерацию на кварце.

Добавлено: Ср дек 02, 2009 11:57:48
GP1
какие конденсаторы блокировочные на кварце стоят?

Добавлено: Ср дек 02, 2009 12:00:43
aleks_bmw528
22 пф