помогите решить задачу ЭМУЛЯТОРА

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
CyberMerlin
Встал на лапы
Сообщения: 138
Зарегистрирован: Пн сен 18, 2006 13:39:03
Откуда: Попуа Новой Гвинеи (Зимбабва)
Контактная информация:

помогите решить задачу ЭМУЛЯТОРА

Сообщение CyberMerlin »

AVR Simulator: Stack Underflow at 0x004f
AVR Simulator: Invalid opcode 0xffff at address 0x0050ff
AVR Simulator: Invalid opcode 0xffff at address 0x001100

вот такие ошибки возникают во время работы авр студио 4
и посоянно из-за этого запускается РЕСЕТ

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

.cseg			;íà÷àëî ïðîãðàììíîãî ñåãìåíòà
.org 0			;íà÷àëüíûé àäðåñ 0
rjmp Reset				;ññûëêè íà ïðåðûâàíèÿ
rjmp	INT0addr		;	External Interrupt Request 0
rjmp	INT1addr		;	External Interrupt Request 1
rjmp	INT2addr		;	External Interrupt Request 2
rjmp	PCINT0addr			;	Pin Change Interrupt Request 0
rjmp	PCINT1addr
rjmp	TIMER3CAPTaddr
rjmp	TIMER3COMPAaddr
rjmp	TIMER3COMPBaddr
rjmp	TIMER3OVFaddr
rjmp	TIMER2COMPaddr
rjmp	TIMER2OVFaddr
rjmp	TIMER1CAPTaddr
rjmp	TIMER1_COMPA

;****************************************************
; ÈÍÈÖÈÀËÈÇÀÖÈß
;****************************************************
.org 0x38
Reset:			;START
 cli
	ldi Temp0,0b01000000
	out TIMSK,Temp0		;ðàçðåøèòü ïðåðûâàíèå êîìïàðàòîðà
	ldi Temp0,0b00000010
	out TCCR1A,Temp0	;òàêòîâûé ñèãíàë = CK/8

	ldi Temp0,0x75		;èíèöèàëèçàöèÿ êîìïàðàòîðà
	out OCR1AH,Temp0
	ldi Temp0,0x30
	out OCR1AL,Temp0

	ldi ZH,High(RamEnd)	;èíèöèàëèçàöèÿ ñòåêà for work in the RCALL
	ldi ZL,Low(RamEnd)
	out SPL,ZL
	out SPH,ZH
;	lpm
;	mov Temp0,R0
;	out SPL,Temp0		;-- âîò òàê èíèöèàëèçàöèÿ ÑÒÅÊÀ!!

	ldi Temp0,0b00001111;íàñòðîéêà êàíàëîâ ïîðòà Â íà âûäà÷ó äàííûõ
	out DDRB,Temp0
	ldi Temp0,0b0000000	;íàñòðîéêà êàíàëîâ ïîðòà A íà ïîëó÷åíèå äàííûõ
	out DDRA,Temp0

	eor Temp0,Temp0		;îáíóëåíèå òàéìåðà
	out TCNT1H,Temp0
	out TCNT1L,Temp0
 sei
reti
Реклама
Аватара пользователя
avr123.nm.ru
Вечно гонимый
Сообщения: 331
Зарегистрирован: Пн сен 04, 2006 20:25:28
Откуда: самоучитель по микроконтроллерам
Контактная информация:

Сообщение avr123.nm.ru »

Если найдешь время напиши по-русски (значит "псевдокодом") что должен делать МК - алгоритм.

1
2
3
4
и так далее.
Реклама
CyberMerlin
Встал на лапы
Сообщения: 138
Зарегистрирован: Пн сен 18, 2006 13:39:03
Откуда: Попуа Новой Гвинеи (Зимбабва)
Контактная информация:

Сообщение CyberMerlin »

а все разобрался спасибо
обратил я значит внимание вот на что

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

	ldi Temp0,0x75		;èíèöèàëèçàöèÿ êîìïàðàòîðà
	out OCR1AH,Temp0
	ldi Temp0,0x30
	out OCR1AL,Temp0
после этих строчек, при исполнении лююбой команды
OCR1AH - обнулялся. Почему сразу не понял, но попробовал TCCR1A поменять на TCCR1В и..... все заработало :)
ну еще подпрограмму Компаратора таймера поместил до

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

.cseg			;начало программного сегмента
.org 0			;начальный адрес 0
и вписал

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

.org 0x1a
и все заработало
КСТАТИ, поместить компаратор до инициализации стека программы идет в разрез ОБУЧАЛКЕ местной!!!!!!!! (никто не подскажет почему???)
Ответить

Вернуться в «Разные вопросы по МК»