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

Декодирование Хекса


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

0х2100 - это виртуальный адрес, он не соответствует физическому адресу в контроллере, а используется компилятором в своих целях - например перенос вместе с прошивкой слова конфигурации контроллера, содержимого EEPROM и т.п.

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

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

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

Это с чего он виртуальный??? :blink:

Самый что ни на есть физический. Только не доступный пользователю как программная память.

Согласно даташиту адреса 2000h-3FFFh используются для конфигурационных целей и ФИЗИЧЕСКИ ДОСТУПНЫ во время процедуры программирования (прошивки) контроллера. Эти адреса выбираются непосредственно ДЕШИФРАТОРОМ АДРЕСА на кристалле. Более невиртуального доступа трудно себе представить...

По поводу прошивки для mil_alexа.

Это был иллюстративный пример. Уважаемый собеседник поступил совершенно верно и стал фактически разрабатывать алгоритм сам. После чего само вскрытие перестает быть нужным. Быстрее сделать заново.

Что касается накопления, то идея совершенно верная. Помехи при статанализе удаляются очень эффективно.

Правда многие не любят нелинейный анализ... :rolleyes:

Могу раскрыть алгоритм. Действительно происходит вертикальное накопление сигнала (по одноименным точкам массивов). И в скользящем окне анализа выясняется среднее, а затем находятся точки, которые выходят за то самое окно анализа, после чего их значения заменяются на среднее. После этого среднее пересчитывается. Правда все эти процессы происходят в едином цикле. Просто из первоначально расчитанного среднего вычитаются отклонения только тех значений, которые выпали из окна. После чего автоматически получаем "причесанный" накопленный сигнал.

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

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

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

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

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

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

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

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

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

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

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

А можно по подробнее ?

Можно. Вот смотрите:

post-35482-0-69732600-1291843803_thumb.jpg

Красными отмечено непонятное. Последний адрес по паспорту - 7FFF, а по Винпику последний 07F8. И адресов eeprom с 0х2100 по 0х2178 в паспорте тоже нет. Что вы думаете по этому поводу?

Что-то тут не чисто...

Слава антисионистам Владимиру Путину и Владимиру Квачкову!

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

Не чисто у Вас со внимательностью.

В таблице приведены адреса только КРАЙНИХ ЛЕВЫХ ячеек памяти в строке. Последняя (крайняя правая) ячейка имеет как раз адрес 0x7FF.

Это раз.

Второе заключается в том, что даташит (а не паспорт) Вы читать ленитесь (как всегда). Адреса 0x2000...0x3FFF из программного поля НЕДОСТУПНЫ и соответственно в поле адресов программной памяти не отображаются. Эта часть программного флеша использована под конфигурационные регистры и доступна только во время прошивки кристалла.

Читайте раздел Special features даташита...

Изменено пользователем my504

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

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

Не чисто у Вас со внимательностью.

Не скажите... Скорее не у меня :rolleyes:

Разве адреса 07FF и 7FFF это одно и тоже?

Слава антисионистам Владимиру Путину и Владимиру Квачкову!

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

Вы меня удивляете местами крайней несообразительностью. Во первых Вы привели не даташит, а его перевод. Во вторых в этом месте опечатка. Об этом не трудно догадаться, я даже не понял в чем состоит вопрос. Там же написано, что у 627-го памяти 1Кслово - адреса 0...3FF, а у 628-го вдвое больше, естественно, что это 0...7FF. Не может адресное поле командной памяти в 16-х контроллерах превышать 13 разрядов, архитектурно не может. Нечем адресовать. А приведенное число 0x7FFF - это 15 разрядов.

Так что невнимательны Вы, батенька, крайне невнимательны...

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

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

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

Но вот насчет МК есть вопрос. Те 35 так называемых RISC-команд, которые понимает МК, никак не возьму в толк, что они реально делают. Зачем переписывать байтовое значение из регистра в регистр, складывать или вычитать значение? Больше там ведь ничего особенного нет. Как с помощью этих команд реализована программа счёта импульсов? Парой несложных предложений не объясните?

Слава антисионистам Владимиру Путину и Владимиру Квачкову!

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

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

В общем случае, частотомер устроен просто - обнуляется аппаратный счетчик (занесением определенного значения в регистр), реализуется точная выдержка путем выполнения пустого цикла определенное количество раз, затем считывается значение счетчика которое путем несложных математических манипуляций раскладывается на десятичные цифры и выводится на индикатор. И это все при помощи так называемых 35 RISC-команд. В реальности их используется даже меньше.

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

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

Зачем переписывать байтовое значение из регистра в регистр

Регистры имеют разную функциональность. Например аккумулятор, для Пика помойму зовется "W", предназначен для арифметических/логических команд, то есть один из операндов должен быть помещен в него. Есть регистры предназначенные помимо хранения байт, также для косвенной адресации, то есть перед командой которая использует косвенную адресацию с начало нужно поместить адрес в соответствующие регистры. итд.

складывать или вычитать значение

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

Больше там ведь ничего особенного нет.

По большому счету процессор в Вашем компьютере, тоже умеет только пересылать, складывать, вычитать и сравнивать(арифметически и логически). Все остальные команды от лукавого, верней их можно получить из базового перечисленного набора команд. А смотрите как всё красиво в браузере смотрится. :D

P.S. да совсем забыл в базовом наборе есть еще команды перехода условные и безусловные. Про команды вызова подпрограмм и записи байт/бит умолчим.

Изменено пользователем rtfcnf

Это сообщение поставляется "как есть", без каких либо гарантий. Автор сообщения не несёт какой либо ответственности

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

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

.......... И это все при помощи так называемых 35 RISC-команд. В реальности их используется даже меньше.

В реальности их даже больше... :) , если учесть типы адресаций... Так как тип адресации входит в опкод команды, то вполне может быть описан как разновидность команды.

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

А если говорить об использовании базового набора команд (тех самых 35-ти), то они все достаточно востребованы, особенно если стараешься писать эффективный код...

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

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

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

Ну парой не получится...

Есть два способа считать импульсы с помощью МК.

Один аппаратно-программный. Он подразумевает использование встроенной периферии (таймеров). Для этого эти самые таймеры КОНФИГУРИРУЮТСЯ с помощью записи в их управляющие (не счетные!!!) регистры соответствующего кода, после чего один таймер оказывается соединент с одним из внешних пинов контроллера и считает именно внешние импульсы. Но период счета этого таймера будет определять ДРУГОЙ таймер, который считает импульсы системной частоты контроллера (он так же конфигурируется через специальный регистр управления). Для точного определения пересчетного интервала, этот самый таймер интервала измерения предустанавливается каждое свое переполнение по прерыванию. Или используется таймер со специальным регистром периода пересчета.

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

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

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

Более-менее понятно.

А логика тогда как работает, по-другому же? Я имею в виду AND, OR, XOR и другие, они же ведут себя иначе, чем электронная логика в микросхемах?

К примеру я могу написать так:

define variable: a; b; c

Input PortA0, a

Input PortB0, b

c = a AND b

Output PortC0, c

МК поведет себя как логический элемент И между выводами RA0, RB0 и RC0 или нет?

Слава антисионистам Владимиру Путину и Владимиру Квачкову!

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

.........А логика тогда как работает, по-другому же? Я имею в виду AND, OR, XOR и другие, они же ведут себя иначе, чем электронная логика в микросхемах?

..............

..............МК поведет себя как логический элемент И между выводами RA0, RB0 и RC0 или нет?

Так то оно так, только логический элемент работает непрерывно, поскольку это нетактируемое устройство. Поэтому для реализации предложенного необходимо ЗАЦИКЛИТЬ фрагмент чтения-функции-вывода в программе. Иначе данная операция будет выполнена один раз по состоянию входов на момент их чтения.

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

Не нужно путать команды контроллера с понятиями ООП (объектно-ориентированного программирования). ООП-языки реализуют объекты через обычный программный цикл. Т.е. непрерывность их существования - это абстракция.

Изменено пользователем my504

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

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

а можно пример неправильной работы логики МК ?

Элементарно!

define variable: a; b; truba

Input PortA0, a

b = 2

truba = a AND b

Output PortC0, truba

Что выдаст МК, даже представить себе сложно. Во всяком случае, это будет за рамками возможностей непрерывной логики.

Изменено пользователем lc433

Слава антисионистам Владимиру Путину и Владимиру Квачкову!

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

Если нужна непрерывная логика, то контроллеры тут не помощники - надо использовать ПЛИС

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

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

а можно пример неправильной работы логики МК ?

Элементарно!

define variable: a; b; truba

Input PortA0, a

b = 2

truba = a AND b

Output PortC0, truba

Что выдаст МК, даже представить себе сложно. Во всяком случае, это будет за рамками возможностей непрерывной логики.

а что здесь криминального, кроме текста программы? :)

каков тип объявленных переменных? байт? тогда не надо пенять на МК, если вы читаете бит, логику применяете к байту, а результат вновь отсылаете на пин/бит

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

Элементарно!

define variable: a; b; truba

Input PortA0, a

b = 2

truba = a AND b

Output PortC0, truba

Что выдаст МК, даже представить себе сложно. Во всяком случае, это будет за рамками возможностей непрерывной логики.

Это для Вас сложно, вероятно плохо знакомы с программированием...

Как раз все очевидно. результат всегда будет нулевой.

Если привести переменные к байту, то и 0&2 и 1&2 всегда дадут 0.

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

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

Давайте тогда не будем приводить к байту, приведем к биту посмотрим тогда что нам даст 0&2

Слава антисионистам Владимиру Путину и Владимиру Квачкову!

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

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

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

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

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

А кулькулятор для подсчета пикофарад тоже нельзя?

Слава антисионистам Владимиру Путину и Владимиру Квачкову!

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

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

Это если мозгами не шевелить...

Конечно, контроллеру далеко до современных разработок вроде процессора исполняющего JAVA-код, но любой современный классический процессор недалеко ушел от контроллера - все те же самые простейшие операции. Раньше, до появления сопоцессора(да даже и сейчас) все вычисления тригонометрических функций выполняются при помощи все тех же простейших логических и арифметических операций.

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

Изменено пользователем Alexeyslav

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

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

Это если мозгами не шевелить...

А если пошевелить? Нужен кулькулятор для подсчета пикофарад в пределах 10 - 1000. Для этого нужно 18 цифр на экране (и в счетном регистре). Или так: 27 пФ = 0.000000000027 Ф, последнее значение может быть использовано в формуле и умножено, к примеру, на 0.000005, после этого sqr произведения и вычисление обратной величины. Ввод может производиться в преобразованном виде (путем последующего деления аргумента ввода на "некий" миллион) для удобства пользования машинкой. Какой контроллер поддерживает такое значение? Если не ошибаюсь это т.н. floating-режим. Слабоваты они, я же говорю, хоть и не знаю программирования, а понимаю суть проблемы.

Может я чего не понимаю? Тогда покажите пример такого вычисления в алгоритме, можно и в асм.

Слава антисионистам Владимиру Путину и Владимиру Квачкову!

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

Такие калькуляторы делают даже на 4-х битном ядре. Изобретать функции умножения и деления вещественных чисел нет смысла - просто найди в интернете соответствующие библиотеки функций или вспоминай 3-й класс школы где учили умножение и деление в столбик.

Ну и само собой контроллер как минимум должен вместить в памяти(RAM) все необходимые числа. Но ты конечно замахнулся, 18 значащих цифр это многовато это примерно соответствует 8-байтным числам с плавающей запятой.

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

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

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

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

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

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

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

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

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

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

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

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

  • Сообщения

    • Вот что мне ответил продавец после предъявления претензий к мини камере: "Да, сэр, мы проверили ваше видео для инженера. Инженер предоставил инструмент, и мы отправим его вам. Пожалуйста, укажите свой адрес электронной почты." Что это означает? И как не попасться в ловушку?
    • Питание к этому усилителю у меня имеется, трансформатор с двойным питанием 27-0-27, на 300вт, выпрямитель стоит на самом усилителе. Корпус не нужен, т.к. он будет находится внутри сабвуфера, все регулировки - частота среза, уровень - находятся на плате, вход и выход так же соответственно.  У саба одна катушка. С двумя катушками я бы так и сделал. 
    • Постепенное зажигание светодиодов в одной цепи, потом переключение реле на другую цепь, постепенное зажигание светодиодов в другой цепи и переключение реле обратно на первую цепь. Вообще схема работает. Реле переключает цепи несколько раз, примерно 3-4 раза, если на разряженных конденсаторах. Но после очередного переключения на первую цепь светодиоды начинают моргать, реле перестает переключаться, а в цепи начинает скакать ток.
    • Указанные Вами частотники, насколько я помню, имеют встроенное аналоговое управление, в т.ч. с помощью потенциометра. Как его подключить показано в инструкции на частотник. Можно ли иметь дополнительно индикацию положения потенциометра? Да, можно. Например обычный мультиметр в режиме вольтметра Вам будет показывать напряжение на движке потенциометра. Вам это нужно?
    • Давайте так, не знаю на сколько это конкретно но я попробую.    1. Мне нужна, схема подключения ШИМ регулятора CCM5D (DC) 6-30 В 6А с дисплеем, к частотным преобразователям LG SV004IC5-1 и Schneider ATV12H037M2 для возможности регулировки скорости двигателя.    Или….  возможно, если я не правильно понимаю, и ШИМ регулятор для такого функционала не годится. (Так как мне сказали что его можно использовать только на двигателях постоянного тока и только напрямую не через преобразователь, в чем я тоже сомневаюсь) Подсказать как сделать так что бы добавить к потенциометру цифровой дисплей.  Так как в целом задача стоит, поставить цифровой дисплей на котором будет отображаться заданная скорость.    сразу отмечу что вариант покупки выносных пультов управления к частотникам рассматривали, очень дорого в целом, так как надо много, да и на наши частотники не нашлись 
    • Если я правильно понял условия задачи, то как-то так попробовал бы подступиться к решению. Но нюансы есть - с какой скоростью надо сбрасывать конденсаторы ==> как быстро нужно открывать/закрывать мосфеты. 
×
×
  • Создать...