(сам попадался
Пожалуйста помогите найти ошибку в программе для avr.
Re: Пожалуйста помогите найти ошибку в программе для avr.
прежде, чем работать с симулятором, прочитайте его ограничения!!!
(сам попадался
)
(сам попадался
- Реклама
Re: Пожалуйста помогите найти ошибку в программе для avr.
А есть чтонибудь наподоби avr studio, чтобы можно было отслеживать как ведут себя регистры по тактам?
Re: Пожалуйста помогите найти ошибку в программе для avr.
Конечно есть : М О З Г И

Re: Пожалуйста помогите найти ошибку в программе для avr.
если правильно понимаю вопрос, то есть, скачайте студию 5.
(но можно и мозги скачать)
(но можно и мозги скачать)
я его в гугл на дрц прогнал, вы знаете, пи-када нет.
Re: Пожалуйста помогите найти ошибку в программе для avr.
А как в proteus открыть это окно?


- Реклама
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Пожалуйста помогите найти ошибку в программе для avr.
Во время симуляции нажать паузу ткнуть на контроллере правую кнопку мыши и выбрать пункт AVR -> source code
Re: Пожалуйста помогите найти ошибку в программе для avr.
Спасибо.Engineer_Keen писал(а):Во время симуляции нажать паузу ткнуть на контроллере правую кнопку мыши и выбрать пункт AVR -> source code
Re: Пожалуйста помогите найти ошибку в программе для avr.
Никак немогу понять в чем проблемма.
Код: Выделить всё
.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
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Пожалуйста помогите найти ошибку в программе для avr.
А что не так? Код компилируется?
Re: Пожалуйста помогите найти ошибку в программе для avr.
astrgan А какой камень Вы сейчас мучаете? Если mega16, то у него нет Т3 и таблица векторов другая и переходы на обработчики выполняются командами JMP.
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Пожалуйста помогите найти ошибку в программе для avr.
Это судя по всему 128-я мега. А переходы по RJMP никто не запрещает, если они не дальше +-2килослов...
Re: Пожалуйста помогите найти ошибку в программе для avr.
При создание проекта в avr studio 4 выбрал симуляцию меги 128.
При проверки выдаются ошибки где заношу значения командой out в регистры счетчика.
Поменял rjmp на jmp, теже ошибки.
При проверки выдаются ошибки где заношу значения командой out в регистры счетчика.
Поменял rjmp на jmp, теже ошибки.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Пожалуйста помогите найти ошибку в программе для avr.
astrgan писал(а):При проверки выдаются ошибки где заношу значения командой out в регистры счетчика.
Не достреливает дотуда OUT, надо через LDS/STS как ко всей области ОЗУ обращаться.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Пожалуйста помогите найти ошибку в программе для avr.
А говорили не можете понять в чем проблема, я поэтому и спросил компилируется ли код. Как исправлять вам сказали.astrgan писал(а):При проверки выдаются ошибки где заношу значения командой out в регистры счетчика.
Естественно те же, вы же их не исправляли, JMP/RJMP тут не при чем.astrgan писал(а):Поменял rjmp на jmp, теже ошибки.
Re: Пожалуйста помогите найти ошибку в программе для avr.
Всем большое спасибо
Re: Пожалуйста помогите найти ошибку в программе для avr.
Еще раз извините за глупые вопросы.
Re: Пожалуйста помогите найти ошибку в программе для avr.
Теперь проблемы с массивом.
появляются ошибки когда использую команду LPM для помещения значения из массива в регистр. Причем с первым массивом вроде проблем нет, а со вторым и третим выдаются ошибки.
C:\AVR\pwm 3\pwm.asm(46): error: Wrong number of operands
появляются ошибки когда использую команду 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- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Пожалуйста помогите найти ошибку в программе для avr.
1. astrgan, вы читали правила форума???
2. Пометили бы место, на которое ругается компилятор.
2. Пометили бы место, на которое ругается компилятор.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Пожалуйста помогите найти ошибку в программе для avr.
Да тут прозрачно всё, но не думаю , что надо давать прямой ответ на - почему? Ответ легко ищется в "шпаргалках ....." на этом форуме или в литературе или help STUDIO. Зато запомнится на всю жизнь.Gudd-Head писал(а): 2. Пометили бы место, на которое ругается компилятор.
Re: Пожалуйста помогите найти ошибку в программе для avr.
ок буду искать


