roboforum.ru

Технический форум по робототехнике.

серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Блоги посетителей.
Правила форума
В данном разделе каждый может иметь не более одной темы. Тема должна начинаться с логина (ника) робофорума.

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение legion » 19 авг 2012, 01:47

Если в протеусе есть пошаговая отладка с просмотром всех регистров/портов/памяти мк - пользуйся ей. Я просто не знаю, что конкретно может протеус, не работал с ним. Дмитрий вот еще пугает, говорит - каша.
legion
 
Сообщения: 736
Зарегистрирован: 24 апр 2010, 14:47
Откуда: Уфа
прог. языки: avr asm

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение серж » 19 авг 2012, 01:52

пртотеус вещь кульная, советую! построчно ошибки показывает, сам хекс файлы делает. и много еще чего. ваще в электр прога незаменимая. сначало все виртуально, а потом и на железо.

Добавлено спустя 2 минуты 1 секунду:
в проте собираешь схему, пршиваешь мк, она те показывает как будет работать.... если будет работат.... и ошибки подскажет.
Аватара пользователя
серж
 
Сообщения: 589
Зарегистрирован: 27 янв 2011, 17:38
Откуда: россия, череповец

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение Dmitry__ » 19 авг 2012, 02:15

Серж, нафиг людям советуешь протеус, когда они умеют работают в родной среде авра?
К глюкам в голове добавляются глюки протеуса :)
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение серж » 20 авг 2012, 00:22

задача legion решена.
выполнил её так:
Код: Выделить всёРазвернуть
.dseg ;
.eseg ;
.cseg ;
.equ but =pd0
.equ led =pb0
.equ led1 =pb1
reset:
   ldi tempH,$04 ;neobhodimaia
   out SPH,tempH ;ustanovka
   ldi tempL,$5F ;dlia
   out SPL,tempL ;vseh MEG
   
 
   ldi temp, 0b00000011   ;pin0,pin1 vihodi
   out ddrb,temp           ;zapis v reg
   ldi temp,0b00000001    ; podt na pin0, led vkl
   out portb,temp         ;vivod na portb
  ldi temp,0b00000001   ;pin0 vhod
  out ddrd,temp          ;
  ldi temp,0b00000001    ; podt.na pin0
  out portd,temp         ;vivod na portd
   
start:
      cbi portb,led1 ;vikl led2
      sbic pind, but  ;propustit sled kom, esli kn nazata
      rjmp start    ; vozvrat
     m_1:
      sbis pind, but ; prop sled kom, esli kn otp
      rjmp m_1       ; ozidanie
    m_2:
      cbi portb,led  ;vikl led1
      sbi portb,led1 ;vkl led2
      sbic pind, but  ;propustit sled kom, esli kn nazata
      rjmp m_2        ;vozvrat k metke
   m_3:
      sbis pind, but  ; prop sled kom, esli kn otp
      rjmp m_3   ;
   m_4:
     
      rjmp reset     ;vozvrat k nachalu prog
     


Добавлено спустя 6 минут 53 секунды:
я с тини12 решил поиграть, но в инициализации ошибки пишет.
даю весь код (не дописан):
Код: Выделить всёРазвернуть
.def temp =r16
.def temp =r17
.def temp =r18
.dseg
.eseg
.cseg
.equ bortL = pb5        ;
.equ bortR = pb4        ;
.equ left_up = pb2      ;
.equ rith_up =pb1       ;
.equ left_doun =pb0     ;
.equ rith_doun =pb3     ;
reset:
   ldi tempH,$04 ;neobhodimaia
   out SPH,tempH ;ustanovka
   ldi tempL,$5F ;dlia
   out SPL,tempL ;vseh MEG
;nastr pinov porta
ldi temp, 0b00001111    ;pini 0-3 vihod
out ddrb, temp          ;zapis v reg
ldi temp, 0b00110110    ;podn na pin 1,2,dvig vpered i datchiki
out portb, temp         ; vivod portab
start:
    sbic pinb, bortL    ; esli net signala propustit sled komandu
    rjmp start          ; ozidanie
   m_1:
    sbic pinb, bortR    ;esli net signala propustit sled komandu
    rjmp m_1            ;ozidanie
   

и собсна то место, где ошибки выдает
Код: Выделить всёРазвернуть
  ldi tempH,$04 ;neobhodimaia
   out SPH,tempH ;ustanovka
   ldi tempL,$5F ;dlia
   out SPL,tempL ;vseh MEG

тут у меня знаний еще никаких нет. что к чему?
Аватара пользователя
серж
 
Сообщения: 589
Зарегистрирован: 27 янв 2011, 17:38
Откуда: россия, череповец

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение Radist » 20 авг 2012, 01:18

Не знаю никаких темпХ и темпЛ.
Аватара пользователя
Radist
 
Сообщения: 2241
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение серж » 20 авг 2012, 01:43

Radist, legion, а как бы вы выполнили иниц., тиньки?

Добавлено спустя 7 минут 24 секунды:
а! все! я эти строки закоментил и все заработало! :Yahoo!:
Аватара пользователя
серж
 
Сообщения: 589
Зарегистрирован: 27 янв 2011, 17:38
Откуда: россия, череповец

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение legion » 20 авг 2012, 01:44

Код: Выделить всёРазвернуть
  ldi tempH,$04 ;neobhodimaia
   out SPH,tempH ;ustanovka
   ldi tempL,$5F ;dlia
   out SPL,tempL ;vseh MEG

Этот код - установка указателя стека. Он двухбайтный, поэтому записвыаем старший байт и младший. Как правило его устанавливают на конец ОЗУ. У меги8 конец озу 0х045F. У других он может отличаться.
Тут использованы определенияы регистров tempH и tempL. Это не обязательно. Можно использовать первый попавшийся из старшей половины, тогда не придется каждый раз их определять. А еще в файле определений на каждый МК АВР (тот самый *def.inc) есть определение конца ОЗУ - RAMEND. Чтобы поделить его на старший и младший байт в ассемблере в студии есть функции High() и Low(). Хз, есть ли оно в протеусе, но попробуй. Код инициализации указателя стека в общем случае выглядит так:

Код: Выделить всёРазвернуть
LDI R16, High(RAMEND)
OUT SPH, R16
LDI R16, Low(RAMEND)
OUT SPL, R16


Что такое стек, зачем ему указатель и вообще про память прочитай здесь.

P.S: Код решения задачи позже посмотрю, но если работает, то молодец!

P.P.S: Стек вроде можно не инициализировать, если не используешь инструкции подпрограмм (CALL и прочие), прерывания и PUSH/POP.
legion
 
Сообщения: 736
Зарегистрирован: 24 апр 2010, 14:47
Откуда: Уфа
прог. языки: avr asm

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение серж » 20 авг 2012, 02:23

к прерываниям как раз и подхожу...
но эт попозже, пока так, с логикой асма покопаюсь.
и вобще - очюблагодарен за помощь и подсказки! :beer:
Аватара пользователя
серж
 
Сообщения: 589
Зарегистрирован: 27 янв 2011, 17:38
Откуда: россия, череповец

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение серж » 20 авг 2012, 17:14

всеп прив!
я пытаюсь реализовать простейшего бота на тии12.
в чем я облажался?
вот код:
Код: Выделить всёРазвернуть
;простейший бот на тини12
;задача-видим препятствие слева, то поворот вправо.
;препятствие справа - поворот влево.

.include "ATtiny12.inc" ;
.list   ;
.def temp =r16
.dseg
.eseg
.cseg
.equ bortL = pb5        ;датчик левого борта
.equ bortR = pb4        ;датчик правого борта
.equ left_up = pb2      ;левый борт вперед
.equ rith_up =pb1       ;правый борт вперед
.equ left_down =pb0     ;левый борт назад
.equ rith_down =pb3     ;правый борт назад
reset:
;nastr pinov porta
ldi temp, 0b00001111    ;pini 0-3 vihod
out ddrb, temp          ;zapis v reg
ldi temp, 0b00110110    ;podn na pin 1,2,dvig vpered i datchiki
out portb, temp         ; vivod portab
start:
   sbic pinb, bortL       ;если датчик не сработал,
   rjmp a                 ;пропустить эту команду.
   sbic pinb, bortR       ;если датчик не сработал,
   rjmp b                 ;пропустить эту команду.
   rjmp start             ;возврат на старт
  a:
   cbi portb, rith_up     ;выкл правый вперед
   sbi portb, rith_down   ;вкл правый назад
   sbis pinb, bortL       ;если датчик еще срабатывает,
   rjmp a                 ;то пропустить эту команду.
   rjmp start             ;возврат на старт.
b:
   cbi portb, left_up     ;выкл левый вперед
   sbi portb, left_down   ;вкл левый назад
   sbis pinb, bortR       ;если датчик еще срабатывает,
   rjmp b                 ;то пропустить эту команду.
   rjmp start             ;возврат на старт.
;  :Yahoo!:


подправил... :wink:
Последний раз редактировалось серж 20 авг 2012, 23:14, всего редактировалось 1 раз.
Аватара пользователя
серж
 
Сообщения: 589
Зарегистрирован: 27 янв 2011, 17:38
Откуда: россия, череповец

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение legion » 20 авг 2012, 17:41

Код: Выделить всёРазвернуть
.devise tinny 12;
.no list    ;
.list   ;

Это все точно нужно? Откуда взял? И зачем исковеркал? Если нужно, то пишется это так:
.device ATtiny12
.nolist

Код: Выделить всёРазвернуть
reset:

;nastr pinov porta
init:

Две метки указывают на один адрес. Не ошибка, но не хорошо.

Код: Выделить всёРазвернуть
 start:
   sbic pinb, bortL       ;
   rjmp a                 ;
   sbic pinb, bortR       ;
   rjmp b                 ;
   rjmp init             ;


Это у тебя основной цикл программы, зачем в каждом цикле выполнять инициализацию порта б? Прыгай на start. Тоже не ошибка, но бессмысленное действие.
Остальное вроде нормально. Только описывай что именно ты хочешь запрограммировать, чтобы другим не надо было догадываться.

P.S:
Код: Выделить всёРазвернуть
.include "c : \ programm files \ atmel \ avr studio \ appnotes \ tinny12.inc" ;
Ты уверен, что по этому адресу есть такой файл? Вообще, если ты студию устанавливал, а не скопировал установленную папку откуда-нибудь, то полный путь прописывать не надо, достаточно имени файла.
Файлы определений надо искать в папке avr studio\AvrAssembler2\Appnotes\
legion
 
Сообщения: 736
Зарегистрирован: 24 апр 2010, 14:47
Откуда: Уфа
прог. языки: avr asm

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение серж » 20 авг 2012, 18:23

ок. дома осмыслю. писл код на работе - временм мало-торопился. поэтому нет ояснений.
Аватара пользователя
серж
 
Сообщения: 589
Зарегистрирован: 27 янв 2011, 17:38
Откуда: россия, череповец

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение серж » 20 авг 2012, 22:58

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

подправил...
Аватара пользователя
серж
 
Сообщения: 589
Зарегистрирован: 27 янв 2011, 17:38
Откуда: россия, череповец

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение серж » 22 авг 2012, 00:17

думаю, кодовый замок, вот где мона голову поломать...

Добавлено спустя 1 час 52 минуты 12 секунд:
похоже остался я один на один с асмом... :x

Добавлено спустя 50 минут 4 секунды:
В СТУДИИ МНЕ ПОСТОЯННО ПИШУТ: FATAL ERROR: Cannot open output file C:\Users\=\Documents\5.hex: No such file or directory
ЧТО К ЧЕМУ, ПОДСКАЖИТЕ??
Аватара пользователя
серж
 
Сообщения: 589
Зарегистрирован: 27 янв 2011, 17:38
Откуда: россия, череповец

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение legion » 22 авг 2012, 01:03

Выбери другую директорию для своих проектов. Что-нибудь простое и короткое, C:\Projects, например.
А задачи пора самому себе ставить, это верно. =)
legion
 
Сообщения: 736
Зарегистрирован: 24 апр 2010, 14:47
Откуда: Уфа
прог. языки: avr asm

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение серж » 22 авг 2012, 01:50

я понимаю, что студия не любит длинные пути чтения, но у меня при любом раскладе пишет эту же ошибку.... :cry:
Аватара пользователя
серж
 
Сообщения: 589
Зарегистрирован: 27 янв 2011, 17:38
Откуда: россия, череповец

Пред.След.

Вернуться в Блоги

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9