Страница 2 из 3

Re: Пожалуйста помогите найти ошибку в программе для avr.

Добавлено: Вт май 29, 2012 12:19:41
BOB51
прежде, чем работать с симулятором, прочитайте его ограничения!!! :cry:
(сам попадался :facepalm: )

Re: Пожалуйста помогите найти ошибку в программе для avr.

Добавлено: Вт май 29, 2012 17:37:37
astrgan
А есть чтонибудь наподоби avr studio, чтобы можно было отслеживать как ведут себя регистры по тактам?

Re: Пожалуйста помогите найти ошибку в программе для avr.

Добавлено: Вт май 29, 2012 19:14:04
BOB51
Конечно есть : М О З Г И
8)

Re: Пожалуйста помогите найти ошибку в программе для avr.

Добавлено: Ср май 30, 2012 14:43:01
mazda
если правильно понимаю вопрос, то есть, скачайте студию 5.
(но можно и мозги скачать)

Re: Пожалуйста помогите найти ошибку в программе для avr.

Добавлено: Чт май 31, 2012 12:23:10
astrgan
А как в proteus открыть это окно?

Изображение

Re: Пожалуйста помогите найти ошибку в программе для avr.

Добавлено: Чт май 31, 2012 13:13:11
Engineer_Keen
Во время симуляции нажать паузу ткнуть на контроллере правую кнопку мыши и выбрать пункт AVR -> source code

Re: Пожалуйста помогите найти ошибку в программе для avr.

Добавлено: Чт май 31, 2012 13:54:38
astrgan
Engineer_Keen писал(а):Во время симуляции нажать паузу ткнуть на контроллере правую кнопку мыши и выбрать пункт AVR -> source code
Спасибо.

Re: Пожалуйста помогите найти ошибку в программе для avr.

Добавлено: Чт май 31, 2012 14:25:36
astrgan
Никак немогу понять в чем проблемма.

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

.CSEG
	RJMP VECT_END
.ORG $0034      ;Вектор прерывания таймера T при совпадении
	RJMP SINOUT
.ORG $0036
	RJMP SINOUT
.ORG $0038

	RJMP SINOUT    ;Адрес подпрограммы обработки прерывания

VECT_END:
	
;***** инициализация стека

	ldi r19,0x04	
	out	SPH,r19    
	ldi r19,0x5F
	out	SPL,r19
;***** инициализация таймера


	LDI r20,0		
	OUT OCR3AH, r20		;в регистр совпадений таймера T
	LDI r21,0x3F	
	OUT OCR3AL, r21		;в регистр совпадений таймера T

	LDI r20,0		
	OUT OCR3BH, r20		;в регистр совпадений таймера T
	LDI r21,0x4F	
	OUT OCR3BL, r21		;в регистр совпадений таймера T

	LDI r20,0		
	OUT OCR3CH, r20		;в регистр совпадений таймера T
	LDI r21,0x5F	
	OUT OCR3CL, r21		;в регистр совпадений таймера T




	LDI R16,0b01010101
	OUT TCCR3A,R16

	LDI R17,0b00001001
	OUT TCCR3B,R17

	LDI R18, 0b00000000
	OUT TIMSK,R18
	LDI R25,0b00011010
	OUT ETIMSK,R25
	SEI


LOOP:
	RJMP loop
	
SINOUT:
	LDI R22,10
	RETI

Re: Пожалуйста помогите найти ошибку в программе для avr.

Добавлено: Чт май 31, 2012 15:07:30
Engineer_Keen
А что не так? Код компилируется?

Re: Пожалуйста помогите найти ошибку в программе для avr.

Добавлено: Чт май 31, 2012 15:28:22
akl
astrgan А какой камень Вы сейчас мучаете? Если mega16, то у него нет Т3 и таблица векторов другая и переходы на обработчики выполняются командами JMP.

Re: Пожалуйста помогите найти ошибку в программе для avr.

Добавлено: Чт май 31, 2012 15:33:30
Engineer_Keen
Это судя по всему 128-я мега. А переходы по RJMP никто не запрещает, если они не дальше +-2килослов...

Re: Пожалуйста помогите найти ошибку в программе для avr.

Добавлено: Чт май 31, 2012 15:38:46
astrgan
При создание проекта в avr studio 4 выбрал симуляцию меги 128.
При проверки выдаются ошибки где заношу значения командой out в регистры счетчика.
Поменял rjmp на jmp, теже ошибки.

Re: Пожалуйста помогите найти ошибку в программе для avr.

Добавлено: Чт май 31, 2012 15:41:05
Gudd-Head
astrgan писал(а):При проверки выдаются ошибки где заношу значения командой out в регистры счетчика.
:facepalm:
Не достреливает дотуда OUT, надо через LDS/STS как ко всей области ОЗУ обращаться.

Re: Пожалуйста помогите найти ошибку в программе для avr.

Добавлено: Чт май 31, 2012 16:00:55
Engineer_Keen
astrgan писал(а):При проверки выдаются ошибки где заношу значения командой out в регистры счетчика.
А говорили не можете понять в чем проблема, я поэтому и спросил компилируется ли код. Как исправлять вам сказали.
astrgan писал(а):Поменял rjmp на jmp, теже ошибки.
Естественно те же, вы же их не исправляли, JMP/RJMP тут не при чем.

Re: Пожалуйста помогите найти ошибку в программе для avr.

Добавлено: Чт май 31, 2012 16:13:34
astrgan
Всем большое спасибо

Re: Пожалуйста помогите найти ошибку в программе для avr.

Добавлено: Чт май 31, 2012 16:14:39
astrgan
Еще раз извините за глупые вопросы.

Re: Пожалуйста помогите найти ошибку в программе для avr.

Добавлено: Сб июн 02, 2012 17:03:04
astrgan
Теперь проблемы с массивом.
появляются ошибки когда использую команду LPM для помещения значения из массива в регистр. Причем с первым массивом вроде проблем нет, а со вторым и третим выдаются ошибки.
C:\AVR\pwm 3\pwm.asm(46): error: Wrong number of operands

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

.include "m128def.inc"

	
.CSEG
	JMP VECT_END

MAS1: .DB 0x1A,0x2A,0x3A,0x4A
MAS2: .DB 0x1B,0x2B,0x3B,0x4B
MAS3: .DB 0x1C,0x2C,0x3C,0x4C


.ORG $0034      ;Вектор прерывания таймера T1 при совпадении
	JMP SINOUTA
.ORG $0036
	JMP SINOUTB
.ORG $0038

	JMP SINOUTC    ;Адрес подпрограммы обработки прерывания

VECT_END:
	


	LDI ZL,LOW(MAS1*2)
	LDI ZH,HIGH(MAS1*2)
	LDI YL,LOW(MAS2*2)
	LDI YH,HIGH(MAS2*2)
	LDI XL,LOW(MAS3*2)
	LDI XH,HIGH(MAS3*2)
;***** инициализация стека

	ldi r19,0x04	
	out	SPH,r19    
	ldi r19,0x5F
	out	SPL,r19
;***** инициализация таймера


	LDI r20,0		
	STS OCR3AH, r20		;в регистр совпадений таймера T1
	LPM r21,Z+
	STS OCR3AL, r21		;в регистр совпадений таймера T1

	LDI r20,0		
	STS OCR3BH, r20		;в регистр совпадений таймера T1
	LPM r23,Y+
	STS OCR3BL, r23		;в регистр совпадений таймера T1

	LDI r20,0		
	STS OCR3CH, r20		;в регистр совпадений таймера T1
	LPM r25,X+	
	STS OCR3CL, r25		;в регистр совпадений таймера T1




	LDI R16,0b01010101
	STS TCCR3A,R16

	LDI R17,0b00001001
	STS TCCR3B,R17

	LDI R18, 0b00000000
	STS TIMSK,R18
	LDI R25,0b00011010
	STS ETIMSK,R25
	SEI


LOOP:
	JMP loop
	
SINOUTA:

	CLI
	LDI R16,0b00000000
	STS TCCR3A,R16

	LDI R17,0b00000000
	STS TCCR3B,R17
	


	LDI r20,0		
	STS OCR3BH, r20		;в регистр совпадений таймера T1
	LPM r21,Y+	
	STS OCR3BL, r21		;в регистр совпадений таймера T1


	
	LDI R16,0b01010101
	STS TCCR3A,R16

	LDI R17,0b00001001
	STS TCCR3B,R17

	RETI

SINOUTB:
	CLI
	LDI R16,0b00000000
	STS TCCR3A,R16

	LDI R17,0b00000000
	STS TCCR3B,R17
	


	LDI r20,0		
	STS OCR3AH, r20		;в регистр совпадений таймера T1
	LPM r22,Z+	
	STS OCR3AL, r22		;в регистр совпадений таймера T1


	
	LDI R16,0b01010101
	STS TCCR3A,R16

	LDI R17,0b00001001
	STS TCCR3B,R17

	RETI

SINOUTC:
	CLI
	LDI R16,0b00000000
	STS TCCR3A,R16

	LDI R17,0b00000000
	STS TCCR3B,R17
	


	LDI r20,0		
	STS OCR3CH, r20		;в регистр совпадений таймера T1
	LPM r23,X+	
	STS OCR3CL, r23		;в регистр совпадений таймера T1


	
	LDI R16,0b01010101
	STS TCCR3A,R16

	LDI R17,0b00001001
	STS TCCR3B,R17

	RETI

Re: Пожалуйста помогите найти ошибку в программе для avr.

Добавлено: Сб июн 02, 2012 18:26:52
Gudd-Head
1. astrgan, вы читали правила форума???
2. Пометили бы место, на которое ругается компилятор.

Re: Пожалуйста помогите найти ошибку в программе для avr.

Добавлено: Сб июн 02, 2012 21:53:51
ILYAUL
Gudd-Head писал(а): 2. Пометили бы место, на которое ругается компилятор.
Да тут прозрачно всё, но не думаю , что надо давать прямой ответ на - почему? Ответ легко ищется в "шпаргалках ....." на этом форуме или в литературе или help STUDIO. Зато запомнится на всю жизнь.

Re: Пожалуйста помогите найти ошибку в программе для avr.

Добавлено: Вс июн 03, 2012 05:10:52
astrgan
ок буду искать