Страница 1 из 1

Atmega 128 неполучается заставить работать выход OC2

Добавлено: Пт авг 03, 2012 18:09:35
gibiri
Здравствуйте.
Хотел сделать чтобы один таймер тактировал другой, но что-то не получается.
В чем может быть проблема?

Изображение
842x542(179.73 kB)

Загрузить фото

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

.include "m128def.inc"

;
.def  temp  =r16
.def index_1 = R8
.def index_2 = R9
.def index_3 = R10
.def index	= r7
	
	RJMP VECT_END
.org OVF3addr
	rjmp	over_a	


over_a:
	ldi ZL,low(MAS1<<1)
	ldi ZH,high(MAS1<<1)
	ADD ZL,index_1
	adc ZH,Index
	lpm
	sts OCR3AL,R0
	inc index_1
	cp  index_1,r14
	brne over_b
	clr index_1
over_b:
	ldi ZL,low(MAS1<<1)
	ldi ZH,high(MAS1<<1)
	ADD ZL,index_2
	adc ZH,index
	lpm
	sts OCR3BL,R0
	inc index_2
	cp  index_2,r14
	brne over_c
	clr index_2
over_c:
	ldi ZL,low(MAS1<<1)
	ldi ZH,high(MAS1<<1)
	ADD ZL,index_3
	adc ZH,Index
	lpm
	sts OCR3CL,R0
	inc index_3
	cp index_3,r14
	brne quit_over
	clr index_3
quit_over:
	reti


VECT_END:
	LDI r19,HIGH(RamEnd)
	OUT   SPH,r19
	LDI r19,LOW(RamEnd)
	OUT   SPL,r19
	
	LDI R16,0b11111111
	OUT DDRE,R16


  	clr index
	CLR index_1
	ldi r16,33
	mov index_2,r16
 	ldi r16,66
 	mov index_3,r16
	LDI R16,100
	MOV R14,R16
	CLR  R11

	LDI R18, 0b00000000
	STS TIMSK,R18
	ldi r25, (1<<TOIE3)
	STS ETIMSK,R25
	LDI R16,(1<<COM3A1) | (1<<COM3B1) | (1<<COM3C1) | (1<<WGM30)
	STS TCCR3A,R16

	LDI R17,(1<<CS31) | (1<<CS32) | (1<<WGM32)
	STS TCCR3B,R17

	LDI R16,0b11111111
	OUT DDRB,R16

	LDI R16,3
	out OCR2,R16

	LDI R17,(1<<COM20) | (1<<WGM21) | (1<<CS20)
	out TCCR2,R17

	SEI




LOOP:
	RJMP LOOP

MAS1:
.db 135,143,151,159,167,174,182,189,196,... (масив из 100 эл.)

Re: Atmega 128 неполучается заставить работать выход OC2

Добавлено: Сб авг 04, 2012 04:42:36
gibiri
Я правильно настроил таймер для тактирования от внешнего источника?

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

   LDI R16,(1<<COM3A1) | (1<<COM3B1) | (1<<COM3C1) | (1<<WGM30)
   STS TCCR3A,R16

   LDI R17,(1<<CS31) | (1<<CS32) | (1<<WGM32)
   STS TCCR3B,R17
Тактирование T3 осуществляется через PD6/T1 ?

Re: Atmega 128 неполучается заставить работать выход OC2

Добавлено: Сб авг 04, 2012 05:39:14
radio-kot
надо ножку выходом назначить. А лучше код мастером сделать - тогда будет работать точно.

Re: Atmega 128 неполучается заставить работать выход OC2

Добавлено: Сб авг 04, 2012 09:03:21
gibiri
radio-kot писал(а):надо ножку выходом назначить. А лучше код мастером сделать - тогда будет работать точно.
PB7/OC2 ?
Я назначил:

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

   LDI R16,0b11111111
   OUT DDRB,R16

Re: Atmega 128 неполучается заставить работать выход OC2

Добавлено: Сб авг 04, 2012 17:01:18
radio-kot
код мастером сделать - тогда будет работать точно.

Re: Atmega 128 неполучается заставить работать выход OC2

Добавлено: Сб авг 04, 2012 23:41:58
gibiri
radio-kot писал(а):код мастером сделать - тогда будет работать точно.
Это на CodeVisionAVR?
Я пока только ассемблер знаю.

Re: Atmega 128 неполучается заставить работать выход OC2

Добавлено: Вс авг 05, 2012 01:23:01
gibiri
А от какой ноги осуществляется тактирование Т3?

Re: Atmega 128 неполучается заставить работать выход OC2

Добавлено: Вс авг 05, 2012 06:46:21
zero648
gibiri писал(а):А от какой ноги осуществляется тактирование Т3?
Что-то мне подсказывает, что это нога PE6/T3/INT6

Re: Atmega 128 неполучается заставить работать выход OC2

Добавлено: Вс авг 05, 2012 07:07:40
astrgan
Хмм

Re: Atmega 128 неполучается заставить работать выход OC2

Добавлено: Вс авг 05, 2012 07:14:15
zero648
Во-первых выход ОС2 работает, во-вторых куда такие конденсаторы здоровые, аж на 10мкф? И провод перекинуть надо на РЕ6, смотри картинку:

Изображение

Re: Atmega 128 неполучается заставить работать выход OC2

Добавлено: Вс авг 05, 2012 10:11:13
astrgan
отлично

Re: Atmega 128 неполучается заставить работать выход OC2

Добавлено: Вс авг 05, 2012 10:34:11
zero648
Просто кондеры такой емкости гасят импульсы, на 22pF вполне достаточно, можно чуть побольше.

Re: Atmega 128 неполучается заставить работать выход OC2

Добавлено: Вс авг 05, 2012 10:37:02
radio-kot
gibiri писал(а):Это на CodeVisionAVR?
Я пока только ассемблер знаю.
Самое время на Си начать. Это легко и быстро +работает.

Re: Atmega 128 неполучается заставить работать выход OC2

Добавлено: Вс авг 05, 2012 13:50:36
astrgan
Proteus-у можно доверять?
Если я буду смотреть как меняется частота в Proteus, то в реальном устройстве будет также или не очень?

P.S.
Настоящий осциллограф щас не достану.

Re: Atmega 128 неполучается заставить работать выход OC2

Добавлено: Вс авг 05, 2012 13:53:03
radio-kot
Скорей да чем нет. Можете перепровериь еще в авр студии и в vmlab

Re: Atmega 128 неполучается заставить работать выход OC2

Добавлено: Вс авг 05, 2012 16:54:54
zero648
В протеусе на осциллографе кликаешь кнопку cursor, то можно измерить время одного периода, если отметить начало и конец периода, так и посчитаь частоту.

Re: Atmega 128 неполучается заставить работать выход OC2

Добавлено: Вс авг 05, 2012 17:25:21
astrgan
zero648 писал(а):В протеусе на осциллографе кликаешь кнопку cursor, то можно измерить время одного периода, если отметить начало и конец периода, так и посчитаь частоту.
Спасибо.

Re: Atmega 128 неполучается заставить работать выход OC2

Добавлено: Вс авг 05, 2012 22:09:56
zero648
Кстати сказать, при моделировании в протеусе, на трех ШИМах наблюдаются провалы при максимальной ширине импульса, в константах МАS1 поменял значение 255 на 254 и стало гуд.

Re: Atmega 128 неполучается заставить работать выход OC2

Добавлено: Пн авг 06, 2012 03:25:21
astrgan
zero648 писал(а):Кстати сказать, при моделировании в протеусе, на трех ШИМах наблюдаются провалы при максимальной ширине импульса, в константах МАS1 поменял значение 255 на 254 и стало гуд.
Иии еще раз большое СПАСИБО!