|
PC +/- … |
|
|
|
Apr 11 2011, 17:44
|

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

|
..Борюсь с атмегами.. о, как они мне не нравятся.. ну всё, буквально, претит.. ..Вопрос такой. У PIC-ов есть возможность написать: гоу ту доллар +/-, скажем, 7. И программа перейдет по указанному адресу. У атмег, аналогичный вариант выглядит, как, PC +/- 7. Как бы, это работает. Но, недавно, что-то не пошло, пришлось по фрагментам в студии рассматривать. И обнаружил, что не прыгает оно на семь указанных строчек, а прыгает на шесть. А в других случаях прыгало.. Если указать восемь, будет прыгать на семь. ..Это глюк такой или есть нюансы, которых не знаю? ..С PIC-ами таких проблем не было. P.S. Настоятельная просьба ко всем, решившим сюда ответить: ни слова о Си. О его достоинствах, преимуществах и т. д. Ни слова! Или сразу закрою тему.
--------------------
It's me
|
|
|
|
|
Apr 11 2011, 18:02
|

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

|
Цитата(Wise @ Apr 11 2011, 20:44)  Или сразу закрою тему. А про LabelXX: сказать можно? По теме, длину команды учитываете? rjmp - одно слово, jmp - два. Соответственно rjmp PC + 7 jmp PC + 7 дадут разный результат, jmp прыгнет как раз на 6.
|
|
|
|
|
Apr 11 2011, 18:10
|

Пользователь забанен
    
Группа: Свой
Сообщений: 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-ами у меня ни разу такой хни не возникало. И там я никогда не подсчитывал никакие слова..  ..Можно ли сформулировать общее правило для подсчета, куда скакнет программа, поскольку, такая непредсказуемость обескураживает, а повсеместно ставить метки.. конечно, придется, но это только углубит "симпатии" к AVR. ..И еще, вопрос про АЦП. Есть программа, у которой два кольца. То есть, она может ходить по одному кругу, либо, по другому, в зависимости от ситуации. В обоих кругах, в числе прочего, оцифровывается одно и то же напряжение аккумуляторной батареи. ..Так вот! Результаты оцифровки разные, в каждом кругу, отличаются на 0,5--0,7 вольта! Хренею от атмеги..  Не могу предположить, что здесь не так написано - совершенно одинаковые фрагменты программы в обоих случаях. ..Пока что, прагматично на это плюнул, еще не столь важно, но, в принципе, как же так..
--------------------
It's me
|
|
|
|
|
Apr 11 2011, 23:56
|
Местный
  
Группа: Участник
Сообщений: 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=899169http://electronix.ru/forum/index.php?showt...st&p=913607
Сообщение отредактировал нечитатель - Apr 12 2011, 00:32
|
|
|
|
|
Apr 12 2011, 05:58
|
Местный
  
Группа: Участник
Сообщений: 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 это не метки?
|
|
|
|
|
Apr 12 2011, 09:45
|

неотягощённый злом
     
Группа: Свой
Сообщений: 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 И никаких запар с изменением размера тела цикла...
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Apr 12 2011, 10:04
|

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

|
Цитата(demiurg_spb @ Apr 12 2011, 16:45)  ИМХО писать программу с таким способом перехода - моветон (за очень и очень редким исключением). Метки помогут отцу русской демократии. ..Метки отцу помогают.. Он ставит их в значимых местах программы.. и так, кое-где.. ..А вот "пи си плюс-минус" - очень удобно для тактических коротких переходов на обозримых кусках текста, моветон это или нет.. Потому что не наметишься.. если около сотни или больше всяких передвижений.. ..А вообще, атмега - редкое фуфло.. Я как-нибудь соберу в кучу все свои претензии пользователя, да и выложу.. Пусть им (атмеговцам) будет стыдно..
--------------------
It's me
|
|
|
|
|
Apr 12 2011, 10:35
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(zombi @ Apr 12 2011, 13:22)  Этож нафига такое нужно!? Всю жизнь метки использую, и никаких проблем, прыгает всегда куда нужно  Ага, в макросах  - особенно! Много же там локальных меток можно наставить! Атмеловские макросредства - это чудо структурно-прикладной лингвистики  Цитата(Wise @ Apr 12 2011, 13:04)  ..А вообще, атмега - редкое фуфло.. и именно поэтому они дерут пики 18-е по скорости выполнения умножения 16*16 бит в 2 раза, и даже в 4 - на 20МГц
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|