Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
14.02.2009, 14:20
|
|
Вид на жительство
Регистрация: 03.06.2007
Сообщений: 368
Сказал спасибо: 3
Сказали Спасибо 59 раз(а) в 52 сообщении(ях)
|
Пардон,забылся,ошибся.
|
|
|
|
14.02.2009, 22:04
|
|
Супер-модератор
Регистрация: 12.04.2007
Адрес: Урал
Сообщений: 2,459
Сказал спасибо: 1,463
Сказали Спасибо 6,183 раз(а) в 1,468 сообщении(ях)
|
Цитата:
|
Команды одинаковые!!!! для всего семейства AVR
прото некоторые каманды не доступны в некоторых контролерах.
пример. в AT90S1200 нет ОЗУ, нет стека, нельзя читать и писать память FLASH и нет перемножителя, и в нём нет команд поддерживающих эти функции.
sts
lds
st
ls
push
pop
lpm
muv
аналогично и другие контроллеры. Если неельзя чего то делать то и комманда не реализована в микропрограмном автомате этого контроллера.
блин... по моему это ясно как бозий день... просто ПИПЕЦ что приходится РАЗЖОВЫВАТЬ icon_biggrin.gif
|
Считаю, что в таком нервном состоянии нельзя ничего объяснять. Тем более начинающим, иначе это отобъет у них все желание учиться!. Если бесят глупые (хотя они не такие уж глупые, а вполне нормальные) вопросы, лучше вообще не отвечать ИМХО.
Потом, при объяснении начинающим надо быть точным:
1. Стек у 1200 есть, правда он не программный, а аппаратный.
2. Команда st у этого микроконтроллера есть!
Для picavr:
Прикрепленный файл: 6036841.pdf
|
|
|
|
14.02.2009, 22:06
|
|
Супер-модератор
Регистрация: 12.04.2007
Адрес: Урал
Сообщений: 2,459
Сказал спасибо: 1,463
Сказали Спасибо 6,183 раз(а) в 1,468 сообщении(ях)
|
Для FedorChek. Посмотри, я давным-давно для себя переводил хелп от Студио. Может пригодится
Прикрепленный файл: 1329156.zip
|
|
|
|
14.02.2009, 22:09
|
|
Супер-модератор
Регистрация: 12.04.2007
Адрес: Урал
Сообщений: 2,459
Сказал спасибо: 1,463
Сказали Спасибо 6,183 раз(а) в 1,468 сообщении(ях)
|
Да и с Vov123 я согласен. По-моему
Цитата:
|
вот к примеру команда
sts 0,R16
аналогична
mov R0,R16
|
НЕ ВЕРНО!!!
|
|
|
|
16.02.2009, 12:05
|
|
Прописка
Регистрация: 24.07.2008
Сообщений: 151
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Спасибо за книги. Если есть возможнось посмотрите часть кода
Прикрепленный файл: 4734359.rar
|
|
|
|
16.02.2009, 13:08
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,956
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Сообщение от SwanSwan
|
Да и с Vov123 я согласен. По-моему
Цитата:
|
вот к примеру команда
sts 0,R16
аналогична
mov R0,R16
|
НЕ ВЕРНО!!!
|
Почему же неверно? Код сгенерится разный. Во втором случае на 1 слово (2 байта) больше. Но результат будет один.
У АВРок все адресное пространство линейное. Сначала идут 32 регистра - с адреса 0. Потом - регистры спец. функций(РСФ) - ну, порты, таймеры и т.д. Они начинаются с адреса 0x20, но при обращении к ним с помощью команд IN/OUT адрес пишется -0x20, то есть STS 0x20,R16 будет аналогичен OUT 0x00,R16
Длина адресного пространства РСФ у classic семейства была от 0x20 до 0x60, в новых часто адресов не хватает и используются адреса до 0x100 - но в этом случае IN/OUT уже не работают! И используются те же LD/ST или LDS/STS
Именно эту особенность я использовал в своем отладчике - есть возможность просматривать и менять не только ОЗУ, но и РСФ
|
|
|
|
16.02.2009, 18:12
|
|
Заблокирован
Регистрация: 05.05.2008
Сообщений: 121
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: ассемблер и ARV (посмотрите код)
Сообщение от FedorChek
|
Добрый день. С ассемблером и основными приемами программирования на нем под микроконтроллеры я сталкивался редко. Сейчас пытаюсь заполнить этот пробел крупицами знания. А заполняю я их с помощью готовых рабочих кодов выполняя какие-то задания, переход с Меги8 на Мегу88 у меня затянулся с Си кодом разобрался осталось разобраться с «асм» вставками ну ладно хватит флудить. Перейду к вопросам, вот малая часть кода написанная под мегу8.
Пожалуйста добавти комментарии к строкам и как его переделать под Мегу88 (если есть разница) куда «смотреть» и на что обращать внимание, с портами все просто а вот что такое регистры понять не могу. Да и если есть книга по асму для АВР киньте ссылочку.
Код:
|
.equ PORTB =$18 Адрес регистра B
.equ PIND =$10 Адрес регистра D
.def out_prep =r16 out_prep то-же,что и r16
.def out_noprep =r17 и остальное так-же.
.def prep =r4
.def inc_buf_lo =r6
.def inc_buf_hi =r7
.def sum_lo =r18
.def sum_hi =r19
.def timeout1 =r5
.def i =r20 |
|
|
|
|
|
16.02.2009, 18:24
|
|
Прописка
Регистрация: 24.07.2008
Сообщений: 151
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
.equ PORTB =$18 Адрес регистра B
.equ PIND =$10 Адрес регистра D
.def out_prep =r16 out_prep то-же,что и r16
.def out_noprep =r17 и остальное так-же.
Хм... а я думал .equ PORTB =$05 Адрес регистра B
под мегу88
|
|
|
|
16.02.2009, 18:57
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,956
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Сообщение от FedorChek
|
Хм... а я думал .equ PORTB =$05 Адрес регистра B
под мегу88
|
И адреса, и даже позиции бит (например в регистре масок таймеров) могуть быть разными для различных АВРок. Именно для этого и придуманы INC файлы. В начале программы вставляете что-то типа
Код:
|
.include "8535def.inc" |
- далее пусть компилятор сам подставляет нужное.
|
|
|
|
16.02.2009, 21:59
|
|
Супер-модератор
Регистрация: 12.04.2007
Адрес: Урал
Сообщений: 2,459
Сказал спасибо: 1,463
Сказали Спасибо 6,183 раз(а) в 1,468 сообщении(ях)
|
Цитата:
|
Почему же неверно? Код сгенерится разный. Во втором случае на 1 слово (2 байта) больше. Но результат будет один.
У АВРок все адресное пространство линейное. Сначала идут 32 регистра - с адреса 0. Потом - регистры спец. функций(РСФ) - ну, порты, таймеры и т.д. Они начинаются с адреса 0x20, но при обращении к ним с помощью команд IN/OUT адрес пишется -0x20, то есть STS 0x20,R16 будет аналогичен OUT 0x00,R16
Длина адресного пространства РСФ у classic семейства была от 0x20 до 0x60, в новых часто адресов не хватает и используются адреса до 0x100 - но в этом случае IN/OUT уже не работают! И используются те же LD/ST или LDS/STS
Именно эту особенность я использовал в своем отладчике - есть возможность просматривать и менять не только ОЗУ, но и РСФ
|
Согласен. Запамятовал, давненько асмом не баловался. В знак примерения:
Прикрепленный файл: 2297580.zip
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:33.
|
|