Перейти к содержанию

Вопросы от начинающих по МК


Рекомендуемые сообщения

Это макроассемблер. Подобные конструкции исполняются на этапе компиляции, а не на этапе выполнения программы. По этому, там может быть что угодно, а не только ассемблерные команды.

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

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

  • Ответов
  • Создана
  • Последний ответ

Топ авторов темы

Понял, Alexeyslav прописал макрос а if else похоже заменил некоторые ассемблерные команды для наглядности. слегка меня запутал) и с этой @

В общем я просто с макросами не имел дело)

Изменено пользователем MillyVolt2
Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Я с АВРами не работал, но если немного приглядеться в код, то "@" наводит на мысль, что это - взятие аргумента макроса с порядковым номером.

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

Hongfa для различных применений в Компэл. Большой выбор в наличии!

Компания HONGFA - это не только крупнейший в мире производитель электромеханических реле, но также производитель конденсаторов, вакуумных прерывателей, трансформаторов и низковольтного коммутационного оборудования. На складе КОМПЭЛ регулярно поддерживаются около 100 самых популярных позиций электромеханических реле. Реле Hongfa могут заместить многие изделия производства недоступных брендов. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Секреты депассивации литиевых батареек FANSO EVE Energy

Самыми лучшими параметрами по энергоемкости, сроку хранения, температурному диапазону и номинальному напряжению обладают батарейки литий-тионилхлоридной электрохимической системы. Но при длительном хранении происходит процесс пассивации. Разберем в чем плюсы и минусы, как можно ее избежать или уменьшить последствия и как проводить депассивацию батареек на примере продукции и рекомендаций компании FANSO EVE Energy. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Можно и так сказать, если не обращать внимания на то, что команда OUT выполняется за 1 машинный цикл и занимает 1 слово (2 байта), в то время, как STS - 2 цикла и занимает 2 слова (4 байта).

В остальном Вы правы.

... Да. Чуть не забыл. Команда STS не поддерживается семейством Tiny.

Изменено пользователем Геннадий
Ссылка на комментарий
Поделиться на другие сайты

Можно конечно, только константы нижних адресов определены для команды OUT, чтобы их использовать с STS нужно добавлять смещение, поскольку адреса портов в общем адресном пространстве начинаются не с нуля.

Второе отличие - команда OUT выполняется за один такт, а STS требует 2 такта.

С точек начинаются директивы. Их у компилятора много, например .error "ошибка ошибка" приведёт к прекращению компиляции с выдачей ошибки "ошибка ошибка". Директива .warning "предупреждение" выдаст в консоль компилятора текст "предупреждение" с значком предупреждения, но продолжит компиляцию. Директива .message "текст" выдаст в консоль произвольный текст, просто в виде строки и ничего больше - этим удобно контролировать срабатывание условной директивы .IF и ,например, контролировать предвычислимые константы объявленные через .EQU .

Например, когда считаешь коэффициент основываясь на тактовой частоте контроллера может произойти переполнение разрядной сетки условной директивой .IF проверяешь что константа больше 255 и выдаёшь предупреждение .WARNING или ошибку .ERROR .

Директивы, это очень мощная вещь в ассемблере. они же в большинстве своём прекрасно работают и в C.

Есть такой документик на русском в котором начиная с 7-й страницы расписываются все директивы с примерами использования. Этот самый макрос, кажется, именно оттуда был взят как пример...

Учение - изучение правил. Опыт - изучение исключений.

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

константы верхних адресов используюься без смещения? с командой sts

Использовал команду sts, но всё, что с ней связано в моей программе не работает - таймеры и прерывания.

Щас выложу картинку с кодом

Посмотрите, пожалуйста незамыленным взглядом, может заметите, где чего не хватает.

Здесь хотел сделать генерацию сигнала 1 Гц на пинах PC0 и OC1A (PB1) для проверки частоты и работы МК.

Не работает ни тот ни другой способ, видимо не учёл какую-то особенность МК.

post-187141-0-22043600-1445548434_thumb.png

DDS_Gen1.pdf

Изменено пользователем MillyVolt2
Ссылка на комментарий
Поделиться на другие сайты

С таймерами напутали. То 0, то 1. Нулевой не считает, а прерывания по нему. Нужно просто повнимательней писать.

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

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

Оба таймера запущены записью в регистры TCCR0B и TCCR1B.

Допустим, если напутал с прерываниями по таймеру0, то почему не работает режим сравнения на таймере1?)

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

всем привет, обзавелся парой камней f103vet6, скачал банан кокос, подключил GCC к нему. беру pdf на камень https://www.google.r...m32f103vet6 pdf а в нем только общее описание. Где регистры то поглядеть?????

Во первых, даташиты нужно искать у ПРОИЗВОДИТЕЛЯ, а не у аггрегаторов.

Во вторых, на СТМ32 при работе с конкретным МК потребуется ТРИ документа:

- даташит на конкретный МК (там только распиновка, типы корпусов и электрические параметры) http://www.st.com/stonline/stappl/resourceSelector/app?page=fullResourceSelector&doctype=datasheet&LineID=1565

- референсный мануал на семейство (основной документ с описанием всех регистров, кроме регистров ядра, описание периферии, осциллятора, управление потреблением и прочая) http://www.st.com/stonline/stappl/resourceSelector/app?page=fullResourceSelector&doctype=reference_manual&LineID=1565

- мануал по программированию на семейство (программная модель, регистры ядра, система команд) http://www.st.com/stonline/stappl/resourceSelector/app?page=fullResourceSelector&doctype=programming_manual&LineID=1565

戦う前に相手のベルトの色に注目

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

Одну ошибку нашёл, пин PB1 надо установить на выход (DDB1=1), иначе не будет работать выход режима сравнения таймера1 OCR1A.

Как сделаю, отпишусь, помогло или нет.

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

Ещё ошибка - неправильно записан указатель стека на вершину SRAM.

Похоже, что у меня он записан в один из зарезервированных регистров среди регистров ввода-вывода.

Может поэтому и прерывания не работали.

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

Так и есть, low(RAMEND) = 208, то есть указатель стека записывал в зазезервированный байт, который можно найти в таблице регистров для ATMEGA328P

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

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

Исправил ошибки, на выходе OCR1A есть 1 Гц, а вот с прерываниями все так же не работает

У мен пока только один маловероятный вариант, что установился бит IVSEL, изза чего не работают прерывания, т к смещена таблица прерываний.

Изменено пользователем MillyVolt2
Ссылка на комментарий
Поделиться на другие сайты

У вас в прерывании используется команда DEC - она меняет регистр флагов, а это значит их надо сохранять перед выполнением обработчика прерывания и восстанавливать перед выходом. Иначе это чревато неуловимыми странными глюками. Ведь внезапно в любом месте программы могут поменяться флаги...

Учение - изучение правил. Опыт - изучение исключений.

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

Честно говоря ни разу не сталкивался с самопроизвольным изменением переменной, поменяться она может если используется где-то ещё, в данном случае r17 используется только в прерывании.

Конечно, возможно изменение регистров в результате каких-либо помех.

Сделаю, как вы сказали, с хранением переменной в SRAM, может и поможет)

r18 также больше нигде не используется, кроме вывода на порт С

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

Alexeyslav говорил про регистр статуса (SREG), т.к. при выходе из прерывания он может иметь значения отличные от значений во время входа. Ведь он используется везде. И в основном теле, и в прерывнии.

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

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

Геннадий,

младший байт первым читается, а не пишется

из даташита ATmega328P

post-187141-1445598254,4283_thumb.jpg

Понял насчёт SREG, спасибо

Изменено пользователем MillyVolt2
Ссылка на комментарий
Поделиться на другие сайты

Подредактировал обработчик прерывания так, чтобы он не влиял на регистр флагов, должно было получиться 3 Гц, безрезультатно.

Попробую предыдущий вариант с сохранением SREG в SRAM.

post-187141-0-14136900-1445600205_thumb.png

Документ Microsoft Word (2).pdf

Сделал сохранение SREG, не помогло

post-187141-0-07172200-1445600930_thumb.png

Документ Microsoft Word (2).pdf

Изменено пользователем MillyVolt2
Ссылка на комментарий
Поделиться на другие сайты

Используй тег CODE для того чтобы код постить на форум, картинки тут не к месту вообще.

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

Учение - изучение правил. Опыт - изучение исключений.

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

Нулевой не считает

sts out TCCR0B, r16

Изменено пользователем Григорий Т.

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

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

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

  Разрешено использовать не более 75 эмодзи.

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

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

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

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Сообщения

    • Примерно так, но можно и нужно кое-что и немного уменьшить. 30 мм для внутренней перегородки много, достаточно толщины 18-20 мм., 350мм по фронту тоже  избыточны. И зачем ты взял посадочный диаметр 290 мм, у тебя же 10ГДШ-1-4 - это 8-дюймовый динамик с посадочным диаметром менее 200 мм, а 290 мм - эта дырка уже под 12-дюймовый  динамик, подобный 4А-32.  Измеряй реальные размеры динамика, в том числе и эффективный диаметр диффузора, и пересчитывай заново точнее, чтобы дров не наломать, зря напиливая их.  У тебя должно получиться что-то типа такого(это расчёт для 4ГД-35)  или чуть выше. Думается, что у тебя всё получится. 
    • [ужс]. Как хорошо, что есть готовые заводские и керамические. Весь этот вагон и маленькая тележка кастомных индуктивностей ужастик ещё тот.  Сердечники - неведомые зверушки, и повторение в наши дни пробивание стены лом вместо перфоратора. Нет чтобы писали там какая индуктивность должна быть на рабочей схеме, а не метод тыка в слепую)
    • Можно подсмотреть метод преобразования svg в stl  
    • Это накосячить конкретно так надо, питание из веток и коричневой субстанции. 
    • На графиках различные режимы преобразования
    • Тора или МОТа (m.o.t.)? В общем-то, без разницы, тороид это или аббревиатура трансформатора свч печи... Первички надо изолировать от вторичек так, чтобы выдерживала каждая полноценное вторичное... Сердечники (их изоляцию) тоже надо принимать во внимание Присоединяюсь к предыдущему вопросу. Какая цель применения высокого напряжения?
    • Ну и так далее. Так что я могу сказать по этому поводу? Первое. На некоторых системах разницу от переворота вилки можно услышать. Вывод. В целом в неплохой системе допущены грубые ошибки. Переворот сетевой вилки в действительно высококачественной системе не должен приводить к сколько-нибудь заметным изменениям звука. Даже для "золотых" ушей. Второе. Изменение звучания при небольших изменениях в системе может быть истолковано и как улучшение, и как ухудшение качества этого самого звука. Более того, для меня в большинсте своём это просто небольшое или малозаметное изменение. Не "улучшение", не "ухудшение", а именно "изменение". Мне совершенно не понятно, когда при этом говорят, что "звук умер" и слушать теперь это "дерьмо" просто невозможно. Я, конечно, утрирую... Ну изменился. Ну что-то добавилось/убавилось. Через 10...20 минут мозг адаптировался и забыл об этих изменениях. Конечно, я говорю именно о качественных системах. И ещё. Встал, пересел с дивана на кресло. Звучание изменилось на порядки больше, чем замена межблочника. И?! Да всем искателям направления проводочков на это пох... Возможно, всё зависит и от восприятия звука. Я вполне могу "тащиться" от хорошей песни, мелодии из дебильника (это я так смартфон/мобильник называю), хотя там ниже 200 Гц звук полностью отсутствует и неравномерность АЧХ фантастическая. Или мне слушать музыку из телефона нельзя? Только, блин, живые концерты! Чтобы дыхание певца прямо тебе в рожу лицо, как и кашель соседа по креслу. В общем, не завидую людям, которые думают, что различают 7,5 или 25 Ом включено последовательно с сеткой лампы. Хотя... Возможно как раз при 25 омах микросхема загенерила/зашумела?    А по мне, так всё понятно. "...В связи с падением напряжения в квартире потребовалось задействовать ЛАТР. Он сильно размыл ритм воспроизведения, стало совсем не интересно слушать музыку." Мне кажется, что такие люди слушают не музыку, а "ритм", "прозрачность", "яркость", "жирность", "глубину", "ширину", "высоту". Нужное добавить или вычеркнуть. А что? Там ещё и музыка присутствует? Не, слона-то я и не заметил... Всем удачи. С уважением, Алексей.
  • Похожий контент

×
×
  • Создать...