• Объявления

    • admin

      Просьба всем принять участие!   24.11.2017

      На форуме разыгрывается спектроанализатор Arinst SSA-TG LC (цена 18500 руб). Просьба всем перейти по ссылке ниже и принять участие!

6 192 сообщения в этой теме

slavik.ksu    0

памагите начать выполнение задания , начинается так : " Запишите в регистры R1 и R2 адрес ячейки памяти 001D " С помощью какой "mnemonic" можно это записать??

заранее спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
Alexeyslav    590

Недостаточно входных данных. Может конечно для тебя и существует только ОДИН контроллер, но для остальных людей разновидностей контроллеров - море, и для всех них мнемоники ассемблерных комманд могут отличаться.

Судя по наименованию регистров, это контроллер ATMEL, команда загрузки константы в регистр - LDI Rx,K , но если ты внимательно почитаешь документацию на контроллер, ты удивишься что эта команда для многих контроллеров работает только с регистрами R16-R31... поэтому загрузить константу в R1 и R2 можно только через промежуточный регистр, затем используя команду MOV, чтобы загрузить ноль в регистр - не обязательно загружать константу, можно его просто обнулить: CLR Rx.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
slavik.ksu    0

спасибо большое! да, да контроллер ATMEL ! а можно сразу вопрос по этому поводу: а какие еще есть контроллеры? просто навскидку назовите еще парочку...

команда LDI загружает именно костанту в регистр, а в задании "адрес ячейки памяти", или это и есть константа??

и почему тогда написано " 001D " а не " 00 и 1D " ?

про то как обнулить младший регистр спасибо отдельное, возьму на заметку!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alexeyslav    590

Там же говорится Адрес ячейки, а не содержимое.

Адрес - 16 битное число, а регистры 8 бит значит одна половинка адреса идет в один регистр, другая в другой. Надо только уточнить в какой ложить младшую часть адреса, а в какой старшую.

Поскольку регистр этот не индексный, то разницы нет никакой... лишь бы потом не забыть что куда.

Но есть еще индексные регистры, X, Y, Z. Эти регистры 16-битные, и образуются из пар R27-R28, R29-R30, R31-R32. Лучше конечно использовать другие регистры аналогично. Посмотри, как в этих регистрах распределяется старший-младший разряд.

Контроллеры производят Microchip, Atmel, motorola и т.д. и у каждой фирмы есть ряды контроллеров различного назначения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
slavik.ksu    0

тяжеловато, но из сказанного решил написать код:

clr r1

ldi r16 , 1D

mov r2 , r16

во второй строчке ошибка.. " 1D " это в16ричной форме написано что ли? мне надо перевести в 10чную и получившееся значение записать во второй строчке...?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alexeyslav    590

Почитай хелп к компилятору как указываются 16-ричные числа, во многих записываются как 0x1D

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
slavik.ksu    0

просветления какие то есть в голове, Спасибо!

А вот дальше задание:

" Запишите в регистры R1 и R2 адрес ячейки памяти 001D . ЗАПИШИТЕ В ЭТУ ЯЧЕЙКУ ЧИСЛО 44. "

У меня в голове два варианта: 1) это как то сделать через R1 и R2 , но я не знаю как?

2) в програме написать:

ldi 0x001D , 44 но кажется это какойто бред,и прога выдает ошибку

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alexeyslav    590

Скачай даташит на контроллер, и читай по нему способ адресации.

Для прямой загрузки в ячейку памяти используется команда STS k, Rn где k - адрес ячейки памяти, Rn - регистр значение которого туда загружается. Есть еще ST X,Rn где X - индексный регистр, в котором должен находится адрес ячейки из общего адресного пространства.

Почитай все-таки даташит ... на сайте атмела, есть переведенная документация по всему семейству контроллеров разделенная на части.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
slavik.ksu    0

читал читал даташит на русском, ничего не понял.. начал разбираться в ваших словах, пошаговый вывод :

" Для прямой загрузки в ячейку памяти используется команда STS k, Rn где k - адрес ячейки памяти, Rn - регистр значение которого туда загружается. "

ldi r18 , 44 ; т.е. регистру r18 присвоил число 44

sts 0x001D , r18 ; теперь в ячейку памяти загрузил r18 со значением 44

далее складываю число 55 с содержимым ячейки памяти 001D :

ldi r19 , 55

subi r19 , -0x001D ; получается я сложил 55 с числом 0x001D , а мне надо с содержимым ячейки..? вопрос : как обратиться к содержимому ячейки памяти ??

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alexeyslav    590

Проще всего это делать при помощи регистров X, Y, Z. Нет команд для операций непосредственно над содержимым ячеек памяти, чтобы что-то с ними сделать, надо выгрузить значение в регистр. Хотя, есть исключение - инкремент и декремент можно производить непосредственно с ячейками памяти.

Еще раз посмотри модель памяти контроллера, память адресуемая при помощи регистров X,Y,Z - это общее адресное пространство регистров, портов и RAM... т.е. чтобы регистр X показал на ячейку памяти с адресом, нужно к этому адресу прибавить смещение с которого начинается память.

Кстати, а почему нельзя использовать команду сложения, ADD ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
slavik.ksu    0

ADD нельзя использовать потому что операндами являются два регистра, а в нашем случае регистр и "ячейка памяти" - это я так думал! :)

просто не хватало вот этих слов для полного правильного понимания : " Нет команд для операций непосредственно над содержимым ячеек памяти, чтобы что-то с ними сделать, надо выгрузить значение в регистр "

теперь все получилось! УРААААААА!!!

Alexeyslav, С П А С И Б О ОГРОМНОЕ!!!

еще надо будет попробовать с регистрами Х, Y, Z....

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
TR@M@DOL    1

Добрый вечер. Такой вот вопрос от начинающего.

При подключенном питании к дисплею WH1602B на выводах 4 (RS), 5 (R/W), 11-14 (D4, D5, D6, D7) напряжение 5 В. При этом вся нижняя сторока засвечена. Вопрос: это нормально?

post-48557-076609300 1286725480_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
slavik.ksu    0

из прочитанной мною литературы я понял что r26 это одно и то же что XL ? т.е. я понял что в проге можно писать и то и другое , но почему например на строчку " mov r2 , r26 " компилятор ошибку не выдает, а на " mov r2 , XL " показывает ошибку.?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alexeyslav    590

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
malecdima    0

Подскажите, что означаетнадпись обведеная красным (скрин из даташита на mega16)? Нужно припаивать нижнюю часть к общему проводу? Это обязательно?

post-6787-023982500 1287040188_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mazzi    3

 Нужно припаивать нижнюю часть к общему проводу? Это обязательно?

post-6787-023982500 1287040188_thumb.jpg

Буквальный перевод надписи.

"Примечание:

Нижний контакт должен бытьприпаян к земле."

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
COKPOWEHEU    249

Как вы себе это представляете? Микросхема не выдержит такого издевательства. Скорее всего достаточно пружинящего контакта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alexeyslav    590

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
my504    166

Как вы себе это представляете? Микросхема не выдержит такого издевательства. Скорее всего достаточно пружинящего контакта.

Ничего необычного в пайке термопада нет. Практически все QFN, DFN корпуса паяют в печке или феном. И при этом паяется земляной полигон внизу корпуса. Как пример можно привести трансивер CC1100 Техаса или драйвер МОСФЕТов uCC27324 той же фирмы. Последнюю микросхему вообще нельзя эксплуатировать без припаянного термопада. Она попросту сгорит. Корпус размером 3х3 мм способен рассеять 3 ватта..., ессно, что без термоконтакта он сгорит в первые несколько секунд работы...

Впрочем и трансивер тоже не заработает без паяного основания... Но уже по сигнальным соображениям.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
COKPOWEHEU    249
Практически все QFN, DFN корпуса паяют в печке или феном
Не у всех есть такое оборудование.
(скрин из даташита на mega16)
Вроде АТмеги так сильно не греются, если их, конечно, не заводить на слишком высоких частотах и не снимать слишком большой ток с выводов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
noise1    1 308

Нет фена, кто мешает микропаяльник купить? Свободно паяются 30 микронные золотые выводы  низкотемпературным припоем.  

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
my504    166
Практически все QFN, DFN корпуса паяют в печке или феном
Не у всех есть такое оборудование.
(скрин из даташита на mega16)
Вроде АТмеги так сильно не греются, если их, конечно, не заводить на слишком высоких частотах и не снимать слишком большой ток с выводов.

Причем тут нагрев?

Речь идет о высокочастотной топологии. Хотите уверенной работы МК в условиях помех - делайте как написано в даташите.

Есть допустимая температура и время пайки термопада. Указана в даташите. Фен (технический) никакая не экзотика и его стоит иметь если применяете такие корпуса. А уж демонтаж микросхем с ним вообще плевое дело...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
slavik.ksu    0

помогите пожалуйста разобраться:

Вот начало задачи: " наша программа будет просто включать СИД и удерживать его в этом состоянии. Прежде всего, необходимо определить входы и выходы. В этом проекте нам потребуется только один выход, в качестве которого будем использовать вывод RB0. "

почитав теорию я написал такой код:

ldi r16 , 0b11111110

out DDRB , r16 ; т.е.используется только один вывод туда и пишем 0, в остальные 1чки

в учебнике же написан ответ:

ser r16

out DDRB , r16

как я понимаю это ж не одно и то же! в этом случе устанавливаутся все 1чки и получается что ни один вывод не задействован...

Правильна моя логика?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
rtfcnf    1

Запись в регистр направления DDR лог. 1 превращает его в выход, а лог. 0 превращает в вход

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Похожие публикации

    • Автор: east1095
      Здравствуйте, давно читаю форум, зарегистрировался только сегодня, хочу попросить советов у вас для очередной работы.
       
      1. Мощность 30 кВт, напряжение 2 кВт, 15 А ток.
      2. Планирую полумост;
      вопросы:
      1. Шим контроллер должен поддерживать регулировку к.заполнения, с заданным dU/dT, это планирую делать с МК, потому что в случае пробоя быстроействуюий ключ даст сигнал об остановке преобразователя, потом будет строб, потом пуск источника, при этом он должен выйти на напряжение на котором произошла остановка работы с более коротким (быстрее) dU/dT, это можно реализовать с МК, завести сигнал с датчика КЗ.
      При этом нужна регулировка напряжение и регулировка уставки максимального тока(в приципе в схеме защиты от КЗ она уже реализована)
       
      2. Полумоста хватит на такую мощность?
      3. Можно ли с помощью софта рассчитать трансформатор на такие характеристики? Lite_calcIT не осилил такую задачу.
      4. 1 трансформатор или набор модулей соединенных последовательно для обеспечения нужного напряжения?
      5. Ткните носом в краткую но понятную ветку/статью о резонансных и квазирезонансных и других типах схем, т.к. я недостаточно в этом подкован, немного другие интересы, однако.
       
      Заранее спасибо!
    • Автор: sergeistydent
      Всем привет , ребята подскажите такую ситуацию надо откомпилить прошивку в среде BASCOM-AVR а она весит 6 килобайт демо версия не пропускает, ну как бы там только одно значение надо изменить а в готовом хексе не могу найти, точнее я его вижу их там два значения я не знаю кого изменить ну это я так думаю что знаю, значение находитса в еепроме это цифра 70 она же в 16ричной 46 но в моем хексе две цифры 46 чтобы было проще понять я строю регулятор вентилятора пропорциональный он на меандре (сайте) там значение для старта нужно подобрать опытным путем от 55 до 95 вот его то нужно изменить в готовом хексе оно 70 как подскажете решить вопрос без баскома или без него некак
    • Автор: timoxa87
      Здравствуйте! Я занимаюсь организацией страйкбольных игр! 
      Идея: Сделать устройство работающее на радио частотах передающее информацию по рациям(цифровым, аналоговым)

      Задача: Нужно изготовить устройство №1 оборудованное двумя кнопками А и Б работающее на радио частотах от аккумуляторной батареи . При нажатии на кнопку А или Б всем по рации передается информация, что нажата кнопка А или Б! Нужно изготовить устройство №2 оборудованное двумя лампочками(индикаторами)  которое дублирует судьям соревнованию, что на устройстве №1 нажата кнопка А или Б

      Требования
      1. Устройство №1 должно передавать в радиусе 200 метров на устройство №2 цифровой сигнал , чтобы исключить наводки или помехи!
      2. Устройство №1 должно дублировать сигнал для аналоговых раций в виде звукового сообщения "Кнопка А включена" или "Кнопка Б включена" 



      Цена договорная!
    • Автор: timoxa87
      Здравствуйте! Помогите для игры в страйкбол/пейнбол доработать устройство. Мы изготовили устройство(в коробочке) оборудованное двумя кнопками 1 и 2 с цифровым таблом, при нажатии на кнопку 1 для нее включается свой секундомер,при нажатии на кнопку 2  секундомер для кнопки 1 останавливается и включается секундомер для кнопки 2. Секундомеры для обоих кнопок накопительные. Когда секундомер доходит до 25 мин срабатывает громкий сигнал!
      Как сделать так чтобы информация о переключении кнопок и секундомере дублировалась по радио сигналу на устройство оборудованное двумя лампочками и  цифровым таблом, дистанция 200 метров ,сигнал должен быть мощный так как встречаются постройки из кирпича и бетона. Если есть мастер который может сделать такое устройство, отзовитесь!!!
    • Автор: timoxa87
      Здравствуйте! Помогите для игры в страйкбол/пейнбол доработать устройство. Мы изготовили устройство(в коробочке) оборудованное двумя кнопками 1 и 2 с цифровым таблом, при нажатии на кнопку 1 для нее включается свой секундомер,при нажатии на кнопку 2  секундомер для кнопки 1 останавливается и включается секундомер для кнопки 2. Секундомеры для обоих кнопок накопительные. Когда секундомер доходит до 25 мин срабатывает громкий сигнал!
      Как сделать так чтобы информация о переключении кнопок и секундомере дублировалась по радио сигналу на устройство оборудованное двумя лампочками и  цифровым таблом, дистанция 200 метров ,сигнал должен быть мощный так как встречаются постройки из кирпича и бетона. Если есть мастер который может сделать такое устройство, отзовитесь!!!