реклама на сайте
подробности

 
 
12 страниц V   1 2 3 > »   
Closed TopicStart new topic
> PC +/- …
Wise
сообщение Apr 11 2011, 17:44
Сообщение #1


Пользователь забанен
*****

Группа: Свой
Сообщений: 1 138
Регистрация: 9-08-05
Пользователь №: 7 492



..Борюсь с атмегами.. о, как они мне не нравятся.. ну всё, буквально, претит.. rolleyes.gif

..Вопрос такой.
У PIC-ов есть возможность написать: гоу ту доллар +/-, скажем, 7.
И программа перейдет по указанному адресу.
У атмег, аналогичный вариант выглядит, как, PC +/- 7.
Как бы, это работает. Но, недавно, что-то не пошло, пришлось по фрагментам в студии рассматривать. И обнаружил, что не прыгает оно на семь указанных строчек, а прыгает на шесть. А в других случаях прыгало..
Если указать восемь, будет прыгать на семь.
..Это глюк такой или есть нюансы, которых не знаю?
..С PIC-ами таких проблем не было.

P.S. Настоятельная просьба ко всем, решившим сюда ответить: ни слова о Си. О его достоинствах, преимуществах и т. д. Ни слова! Или сразу закрою тему.


--------------------
It's me
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 11 2011, 18:02
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Wise @ Apr 11 2011, 20:44) *
Или сразу закрою тему.

А про
LabelXX:
сказать можно?

По теме, длину команды учитываете? rjmp - одно слово, jmp - два.
Соответственно
rjmp PC + 7
jmp PC + 7
дадут разный результат, jmp прыгнет как раз на 6.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 11 2011, 18:08
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Wise @ Apr 11 2011, 21:44) *
... обнаружил, что не прыгает оно на семь указанных строчек, а прыгает на шесть. А в других случаях прыгало.. Если указать восемь, будет прыгать на семь.
Цифирка эта - число слов, а команда (ассемблерная строка) может занимать в памяти не одно слово. Вы это учитываете?
Go to the top of the page
 
+Quote Post
Wise
сообщение Apr 11 2011, 18:10
Сообщение #4


Пользователь забанен
*****

Группа: Свой
Сообщений: 1 138
Регистрация: 9-08-05
Пользователь №: 7 492



Цитата(defunct @ Apr 12 2011, 01:02) *
По теме, длину команды учитываете? rjmp - одно слово, jmp - два.
Соответственно
rjmp PC + 7
jmp PC + 7
дадут разный результат, jmp прыгнет как раз на 6.

Нет, не учитываю. В той атмеге, с которой сражаюсь, только команда rjmp.
А еще использовал команды типа brne, breq, brsh, brlo.
Вы не могли бы мне растолковать, что я должен учитывать?
..В описании команд не нашел понятие "число слов", там есть "машинные циклы".
Я-то считал, что, просто, должно отсчитать семь указанных строчек..

..Потому что, если смотреть все строчки, через которые оно должно перепрыгнуть, вариантов много может быть, за сколько тактов они исполняются.
И тогда, проще уже поставить метку. Но, с PIC-ами у меня ни разу такой хни не возникало. И там я никогда не подсчитывал никакие слова.. rolleyes.gif

..Можно ли сформулировать общее правило для подсчета, куда скакнет программа, поскольку, такая непредсказуемость обескураживает, а повсеместно ставить метки.. конечно, придется, но это только углубит "симпатии" к AVR.

..И еще, вопрос про АЦП. Есть программа, у которой два кольца. То есть, она может ходить по одному кругу, либо, по другому, в зависимости от ситуации. В обоих кругах, в числе прочего, оцифровывается одно и то же напряжение аккумуляторной батареи.
..Так вот! Результаты оцифровки разные, в каждом кругу, отличаются на 0,5--0,7 вольта! Хренею от атмеги.. rolleyes.gif
Не могу предположить, что здесь не так написано - совершенно одинаковые фрагменты программы в обоих случаях.
..Пока что, прагматично на это плюнул, еще не столь важно, но, в принципе, как же так.. rolleyes.gif


--------------------
It's me
Go to the top of the page
 
+Quote Post
нечитатель
сообщение Apr 11 2011, 23:56
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 20-11-10
Пользователь №: 61 032



http://electronix.ru/forum/index.php?showt...st&p=896052

Цитата(Wise @ Apr 11 2011, 22:10) *
В описании команд не нашел понятие "число слов", там есть "машинные циклы".
LDS – Load Direct from Data Space... Words: 2 (4 bytes)
Цитата
отсчитать семь указанных строчек..
Адресов в памяти. Микросхема не умеет читать текст с экрана.
Цитата
если смотреть все... проще уже поставить метку.
Проще. И надёжнее. И читаемее.
Зато именованную метку нельзя в макросе. Который более чем один раз используется.
Зато для короткого перехода посчитать строчки адреса быстрее, чем напечатать MoePonyatnoeIUnikalnoeImyaMetki_nomer117.
Цитата
с PIC-ами у меня ни разу
Любая инструкция занимала в памяти ровно одно слово.
Цитата
общее правило для подсчета
Atmel AVR Instruction Set.
При внимательном рассмотрении понимается, что количество слов в каждой инструкции необходимо и достаточно для практического применения. И что это всё зубрить наизусть не обязательно, когда логика (что может поместиться в 16 бит opcode и что не может).

Цитата
И еще, вопрос про АЦП

http://electronix.ru/forum/index.php?showt...st&p=899169
http://electronix.ru/forum/index.php?showt...st&p=913607

Сообщение отредактировал нечитатель - Apr 12 2011, 00:32
Go to the top of the page
 
+Quote Post
alexeyv
сообщение Apr 12 2011, 05:58
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940



Цитата
Зато именованную метку нельзя в макросе. Который более чем один раз используется.


Да ну?!?!
Код
.macro        read_eeprom
ee_r:    sbic    eecr,eewe
        rjmp    ee_r
        out        eearl,@1l
        out        eearh,@1h
        sbi        eecr,eere
ee_r1:    sbic    eecr,eewe
        rjmp    ee_r1
        in        @0,eedr
.endmacro
;Example ->    read_eeprom DAT_reg ,z


или ee_r1 и ee_r это не метки?
Go to the top of the page
 
+Quote Post
zombi
сообщение Apr 12 2011, 09:05
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(Wise @ Apr 11 2011, 21:44) *
У атмег, аналогичный вариант выглядит, как, PC +/- 7.

Не могу понять о какой команде речь. Можно пример?
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Apr 12 2011, 09:45
Сообщение #8


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(zombi @ Apr 12 2011, 13:05) *
Не могу понять о какой команде речь. Можно пример?
Уже был:
Цитата(defunct @ Apr 11 2011, 22:02) *
rjmp PC + 7
jmp PC + 7
ИМХО писать программу с таким способом перехода - моветон (за очень и очень редким исключением).
Метки помогут отцу русской демократии.
Код
    ldi r16,5
loop:
    ....
    dec r16
    brne loop
И никаких запар с изменением размера тела цикла...


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Wise
сообщение Apr 12 2011, 10:04
Сообщение #9


Пользователь забанен
*****

Группа: Свой
Сообщений: 1 138
Регистрация: 9-08-05
Пользователь №: 7 492



Цитата(demiurg_spb @ Apr 12 2011, 16:45) *
ИМХО писать программу с таким способом перехода - моветон (за очень и очень редким исключением).
Метки помогут отцу русской демократии.

..Метки отцу помогают..
Он ставит их в значимых местах программы.. и так, кое-где.. rolleyes.gif

..А вот "пи си плюс-минус" - очень удобно для тактических коротких переходов на обозримых кусках текста, моветон это или нет..
Потому что не наметишься.. если около сотни или больше всяких передвижений..

..А вообще, атмега - редкое фуфло..
Я как-нибудь соберу в кучу все свои претензии пользователя, да и выложу..
Пусть им (атмеговцам) будет стыдно.. rolleyes.gif


--------------------
It's me
Go to the top of the page
 
+Quote Post
zombi
сообщение Apr 12 2011, 10:22
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата
rjmp PC + 7
jmp PC + 7

Этож нафига такое нужно!?
Всю жизнь метки использую, и никаких проблем, прыгает всегда куда нужно biggrin.gif
Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 12 2011, 10:28
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Wise @ Apr 12 2011, 14:04) *
Я как-нибудь соберу в кучу все свои претензии пользователя, да и выложу..
Пусть им (атмеговцам) будет стыдно..
Подозреваю, что стыдно им не будет. У них есть хорошая "отмазка": система команд оптимизированна под трансляторы с ЯВУ...
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Apr 12 2011, 10:35
Сообщение #12


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(zombi @ Apr 12 2011, 13:22) *
Этож нафига такое нужно!?
Всю жизнь метки использую, и никаких проблем, прыгает всегда куда нужно biggrin.gif

Ага, в макросах sm.gif - особенно! Много же там локальных меток можно наставить!
Атмеловские макросредства - это чудо структурно-прикладной лингвистики sm.gif

Цитата(Wise @ Apr 12 2011, 13:04) *
..А вообще, атмега - редкое фуфло..

и именно поэтому они дерут пики 18-е по скорости выполнения умножения 16*16 бит в 2 раза, и даже в 4 - на 20МГц biggrin.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 12 2011, 10:41
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(demiurg_spb @ Apr 12 2011, 13:45) *
ИМХО писать программу с таким способом перехода - моветон (за очень и очень редким исключением).
Метки помогут отцу русской демократии.

Спрошу интереса ради: какой-нибудь аврасм поновее не поддерживает ли временные метки?
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Apr 12 2011, 11:51
Сообщение #14


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(aaarrr @ Apr 12 2011, 13:41) *
Спрошу интереса ради: какой-нибудь аврасм поновее не поддерживает ли временные метки?

Вроде нет до сих пор. Но могу ошибаться: после перехода на гнутый асм 3 года назад, как-то поотстал от шедевров.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Apr 12 2011, 11:55
Сообщение #15


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Вообще, не знаешь архитектуру = кривые руки.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post

12 страниц V   1 2 3 > » 
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 03:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01755 секунд с 7
ELECTRONIX ©2004-2016