Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Тема закрыта

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

Вт май 29, 2012 12:19:41

прежде, чем работать с симулятором, прочитайте его ограничения!!! :cry:
(сам попадался :facepalm: )

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

Вт май 29, 2012 17:37:37

А есть чтонибудь наподоби avr studio, чтобы можно было отслеживать как ведут себя регистры по тактам?

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

Вт май 29, 2012 19:14:04

Конечно есть : М О З Г И
8)

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

Ср май 30, 2012 14:43:01

если правильно понимаю вопрос, то есть, скачайте студию 5.
(но можно и мозги скачать)

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

Чт май 31, 2012 12:23:10

А как в proteus открыть это окно?

Изображение

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

Чт май 31, 2012 13:13:11

Во время симуляции нажать паузу ткнуть на контроллере правую кнопку мыши и выбрать пункт AVR -> source code

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

Чт май 31, 2012 13:54:38

Engineer_Keen писал(а):Во время симуляции нажать паузу ткнуть на контроллере правую кнопку мыши и выбрать пункт AVR -> source code

Спасибо.

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

Чт май 31, 2012 14:25:36

Никак немогу понять в чем проблемма.

Код:
.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

А что не так? Код компилируется?

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

Чт май 31, 2012 15:28:22

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

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

Чт май 31, 2012 15:33:30

Это судя по всему 128-я мега. А переходы по RJMP никто не запрещает, если они не дальше +-2килослов...

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

Чт май 31, 2012 15:38:46

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

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

Чт май 31, 2012 15:41:05

astrgan писал(а):При проверки выдаются ошибки где заношу значения командой out в регистры счетчика.

:facepalm:
Не достреливает дотуда OUT, надо через LDS/STS как ко всей области ОЗУ обращаться.

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

Чт май 31, 2012 16:00:55

astrgan писал(а):При проверки выдаются ошибки где заношу значения командой out в регистры счетчика.

А говорили не можете понять в чем проблема, я поэтому и спросил компилируется ли код. Как исправлять вам сказали.
astrgan писал(а):Поменял rjmp на jmp, теже ошибки.
Естественно те же, вы же их не исправляли, JMP/RJMP тут не при чем.

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

Чт май 31, 2012 16:13:34

Всем большое спасибо

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

Чт май 31, 2012 16:14:39

Еще раз извините за глупые вопросы.

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

Сб июн 02, 2012 17:03:04

Теперь проблемы с массивом.
появляются ошибки когда использую команду 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

1. astrgan, вы читали правила форума???
2. Пометили бы место, на которое ругается компилятор.

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

Сб июн 02, 2012 21:53:51

Gudd-Head писал(а):2. Пометили бы место, на которое ругается компилятор.

Да тут прозрачно всё, но не думаю , что надо давать прямой ответ на - почему? Ответ легко ищется в "шпаргалках ....." на этом форуме или в литературе или help STUDIO. Зато запомнится на всю жизнь.

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

Вс июн 03, 2012 05:10:52

ок буду искать
Тема закрыта