Post:#249920 Date:07.06.2010 (20:24) ... Хочу завести себе свою ветку, чтобы не распыляться. Идей много, а на проверку времени мало. Вот захотелось проверять все вечняки в математике, а потом смотреть где ошибка закралась. Если есть интересующие - присоеденяйтесь.
Обсуждаться будет только один ЧЁРТЁЖ или ЭКСКИЗ единовременно. Пока один агрегат не будет расколупан до конца, дальше ни-ни. Если нет возможности рисовать - сам потом нарисую или картинку вставлю. Весь словесный понос подтверждать оффициальными ссылками. Ссылка на дурдомопедию (википедию) в крайнем случае давать. На сайтах производителей и институтов инфы хватает. Всяких дибилов самоназваных с Ахрененными межгалактическими дипломами не приводить в пример.
Надеюсь энергия потом с кондёра не порёт, и ахренесово колесо вечно не поедет - наука штука точная. КПД устройства для взлома искать больше 20% (КПД1,2).
Нельзя взламывать секреты приборов производимых на постсоветском пространстве. Ибо тут всё просто - турма (Поддержим отечественного производителя!). А заграничные стандарта ISO для нас практически недосягаемы, мы со своим ГОСТОМ на рынке условия не диктуем. Поэтому взлом иностранной технологии в нашей "Раше" приравнивается к шлепку буржую по заду - только щёчки порозовеют . Наши технологии "ломать" только с разрешения собственника либо если инфа открыта для пользования.
Ламачче невозможное проверить при помощи формул теоретически либо элементарно практически также не выкладывать.
Расшифровка предупреждений:
ПИП - первое израильское предупреждение;
ВИП - второе израильское предупреждение;
ТрИП - третье израильское предупреждение;
ЧИП - вставляем имплантант биоботу;
ППЦ - биоботу пипец.
Меня мучает вопрос.... Вот у меня под носом карта памяти контроллера, так непонятно чё там такое. Как я понял описаными регистрами можно напрямую пользоваться, а как быть с регистрами что идут под хитрым названием "регистры общего назначения"?? Чёт не догоняю - туплю . Пикушку наверное выброшу и на АВР перйду . Оказывается в Протеусе СИ по умолчнию, а асемблер хитро вшит что шиш достанешь. И ещё, что-то с асемблером туплю, может просто книжку по программированию почитать для начала?
_________________ Не хватит никакого здоровья, чтобы приспособиться к этому глубоко больному обществу(Кришна Мурти)/Горшки не Боги обжигают (многовековая классика)
Немножко расскажу про команды, как я понимаю. Система команд напрямую связана с архтиектурой проца. Это то самое, о чем Базаров сейчас задумался не по детски - собственно, а как пишут программы-то. Я плохо знаком с АВР и ПИКами, если что, старшие товарищи поправят. В АВР и ПИКе все команды двухбайтные. В 51 проце однобайтные. Это значит, что в первом случае можно представить 65 тысяч команд, во втором всего 256. Но в 51-м бывают команды с аргументами - то есть, получается два или три байта. Весь вопрос в том, как распределить эти команды так, чтобы и несложно дешифровались, и битов хватило на все мыслимые действия (это забота разработчика чипа). И разные по длине и сложности команды выполняются за разное время (в АВР, кажется, одинаково или почти все одинаково).
В большинстве процессоров поле команды плавающей длины. Потому что есть команды, которым должна быть доступна адресация всего что есть (mov), а есть совершенно специфические и не требующие адресации (nop, clr a). Поэтому универсальные команды состоят из меньшего количества битов, чтобы в оставшихся битах разместить адреса операндов. В 51-м проце регистры неравноценные, каждому отводится своя роль. Через аккумулятор выполняются все арифметические действия, поэтому существенная чать таблицы команд работает именно с ним. Получается, что адрес аккумулятора как операнда зашит в самом коде команды неявно. Другие регистры приходится адресовать явно. Регистр B используется в командах умножения и деления, регистровая пара DPTR используется как указатель на элемент таблицы, и эти факты отражены в наличии соответствующих команд, поэтому я не могу, например, использовать регистровую пару AB для работы с таблицей данных, даже если сильно хочется - таких команд нет в системе. Или не могу умножить любой байт в памяти на любой другой - сначала мне придется их "заложить в станок, заточенный для умножения" - в регистры A и B. В АВР и ПИКах команды двухбайтные, но общее количество команд гораздо меньше (35 вместо 111 для 51-го). Это расширяет возможности программиста, позволяет меньше думать о том, куда можно пересылать, а куда нет - просто запускается компилятор, и из его сообщений об ошибках это можно узнать . Получается быстрее, чем заглянуть в книжку.
Писать программу можно только хорошо представляя себе ресурсы проца. Сколько есть регистров, и есть или нет соответствующие команды для работы с ними. В основном программа занимается всякой мутотой - пересылает что-то куда-то, анализирует биты ячеек памяти или портов, ветвится по условиям. Для такой деятельности обычно требуется один-два регистра и то буквально на несколько команд. А бывают случаи, когда нужно задействовать очень много регистров - например, при любой арифметике. Или во вложенных циклах. Да еще если нужны параллельные счетчики, чтобы не с нуля считали, или вообще в обратную сторону.
Короче, я сам не понял, что пытаюсь рассказать . А Базарову не терпится узнать, как делается фазо-импульсное управление тиристором... Но до этого еще далеко.
PS. Да, и забыл сказать самое главное: "Чтобы научиться писать программы, надо писать программы".
_________________ И мню аз яко то имать быть, что сам себе всяк может учить.
Спасибо Эдуард, но до фазового управления как до Луны - светодиодик хоть один для начала в симуляторе зажечь . Просто я не врубаюсь с программированием. В высокоуровневых язывах никаких адресов нет, а тут некие вшитые регистры и память без опознавательных знаков. Как туда данные пихать ? В принципе переубедил по командам, для начала пикушку свою проштудирую, благо она с флешпамятью - не напортачу, хотя в моих умелых руках всё горит - даже мелкосхемы . Пока книжки умные поизучаю, вдруг там что умное пишут ....
_________________ Не хватит никакого здоровья, чтобы приспособиться к этому глубоко больному обществу(Кришна Мурти)/Горшки не Боги обжигают (многовековая классика)
Прошу прощения, снова случайно заглянул в вашу тему.
Ну вы садисты, сколько можно издеваться над Базаровым ?
«…до фазового управления как до Луны - светодиодик хоть один для начала в симуляторе зажечь…»
ИМХО, если бы Базаров начал с ардуино, он давно бы это сделал (я имею ввиду фазовое управление).
Притча про буриданова осла – [ссылка]
«Жил-был Буридан. К философии, скорее всего, никакого отношения он не имел. А был у того Буридана осел. Решил как-то раз Буридан своего осла покормить, и нет, чтобы положить корма в одно место, а наполнил он кормом две кормушки, да так получилось, что поровну корма-то вышло. И не было между кормушками никакой разницы, и нельзя было дать ни одной кормушке предпочтения. Посмотрит Буриданов осел на одну кормушку, посмотрит на другую – к какой подойти не знает. Долго выбирал осел, пока с голоду и не подох. Такая вот история про Буриданова осла.»
magneat Пост: 289008 От 12.Feb.2011 (07:13)
если бы Базаров начал с ардуино, ....
Даже блондинко начинают с этого...
И получается. Только что она при этом узнаЁт про мкашку ?- ничего.
А про что у нее появляются знания?
Про усеченный язык типа Си, но только для детишек и умственно слабаков.
Для стран третьего мира хорошая игрушка. А больше им знать и не надо.
bazarov Пост: 289004 От 12.Feb.2011 (03:30)
В высокоуровневых язывах никаких адресов нет, а тут некие вшитые регистры и память без опознавательных знаков. Как туда данные пихать ?
Дык, полная свобода!
Если помнишь, в С или Паскале (в отличие от Васика) чтобы начать использовать переменную, сначала надо ее определить. С и Паскаль поэтому - строгие языки. А для чего? Для того, чтобы компилятор точно знал, с каким объектом имеет дело, сколько надо выделить под него памяти, где его расположить и какими командами с ним работать. Вот сколько гемороя берет на себя компилятор! Программисту остается сделать всего одно дело: назначить переменной тип. Например:
int counter;
counter = 0;
...
counter++;
if(counter>10) break;
...
Слово int означает, что переменная у нас двухбайтная и находится в памяти (а не в регистре общего назначения). В языке ассемблера тоже есть директива для этого, в разных - разные, в моем случае это DS.
COUNTER DS 1 ; здесь комментарий - это счетчик входных импульсов
Означает, что надо в памяти зарезервировать один байт под счетчик. Для выделения двухбайтного слова используется DW.
Если надо, чтобы этот счетчик работал быстрее и код получался короче, можно отвести под него регистр. В С это будет уточняющее описание:
register int counter;
В асме в этом случае ничего не надо писать, потому что регистры под рукой в любой момент, просто инициализируем и юзаем:
MOV R1, #0
INC R1
Но не забываем, что если мы потрогаем этот регистр в другом месте программы, то его значение испортится. И тогда потребуются часы мучительной отладки, чтобы найти наш косяк, начнутся подозрения, что нам продали битый чип, подозрения на сырой компилятор, на программатор, на провода интерфейса.... Вот ради этого и придумали языки высокого уровня. Они не дадут своевольничать когда угодно, а сразу скажут, что в этом месте переменная не определена и т.п.
Что касается светодиодика. Собственно, это будет всего одна или две команды. Другое дело, что придется разбираться, какие возможности имеют порты вывода и как они сконфигурированы после сброса. Возможно, что уже как надо, а возможно, что надо найти, как они управляются и включить выходные усилители в нужный режим, а для этого найти в описании порта регистр специальной функции (SFR), в котором задается режим порта и вписать туда нужную настройку. Тогда понадобится три команды .
_________________ И мню аз яко то имать быть, что сам себе всяк может учить.
Eduard Пост: 289017 От 12.Feb.2011 (11:57)
Программисту остается сделать всего одно дело: назначить переменной тип. Например:
...........
Но не забываем, что если мы потрогаем этот регистр в другом месте программы, то его значение испортится. И тогда потребуются часы мучительной отладки, чтобы найти наш косяк, ....
И главное- что в этом случае студия нам преобразует хекс файл
в ассемблерный вид- и будешь читать ассеблерную программу.
И зачем тогда всякие Сики и Васики?
Они нужны, но для другого уровня.
МК часто выполняет чисто аппаратные задачи, типа фазоимпульсного
управления, заменяя десяток микросхем одной букашкой.
Это реализуется на чистом асме.
А вот если ты захочешь чтобы та букашка слушалась твоего голоса,-
прибавить, убавить, стоять, лежать, фас... вот тут уже куча прог
написанных на языках высокого уровня.
МК часто выполняет чисто аппаратные задачи, типа фазоимпульсного
управления, заменяя десяток микросхем одной букашкой.
Ну вообще лутше использовать XILING. Нарисовал схемку, из логики прошил в микруху, и пользуйся. Да и частоты можно гнать 250-300 мгц. Да и стоят не дорого. И халява есть по проге. Мне нравились такие штуки.
_________________ “Я есмь и путь, и истина, и жизнь. Никто не приходит к Отцу иначе, кроме как через Я”
tera Пост: 289028 От 12.Feb.2011 (13:16)
или условие.
Это достаточно стандартная задача.
Допустим надо увеличивать мощность в нагрузке с постоянной скоростью.
Напряжение питания может изменятся , сопротивление нагрузки тоже
меняется от прогрева. Нужно в этих условиях спрогнозировать угол
открытия тирристора в следующий полупериод сетевого напряжения.
Примерно так же выглядит задача определения угла зажигания в ДВС.
То есть задача типичная.
Состоит из измерения временных отрезков, аналоговых величин, и задачки
прогнозирования по предыдущим значениям.
Прогноз делается по законам геометрии - гладкая кривая через три точки всегда однозначно определяет четвертую.
Прогноз делается по законам геометрии - гладкая кривая через три точки всегда однозначно определяет четвертую.
А можно так. Каждую точку по двум параметрам легко определить. На входе ПЗУ формируем адрес из трех точек и получаем нужную цифру на выходе. Сколько нужно градаций ? Или погрешность. Или закон, алгоритм. Но легче ПЗУ загнать просчитанный параметр.
_________________ “Я есмь и путь, и истина, и жизнь. Никто не приходит к Отцу иначе, кроме как через Я”