Первый пост темы: bazarov Post: #249920 От:07.06.2010 (19:24) Хочу завести себе свою ветку, чтобы не распыляться. Идей много, а на проверку времени мало. Вот захотелось проверять все вечняки в математике, а потом смотреть где ошибка закралась. Если есть интересующие - присоеденяйтесь.
Обсуждаться будет только один ЧЁРТЁЖ или ЭКСКИЗ единовременно. Пока один агрегат не будет расколупан до конца, дальше ни-ни. Если нет возможности рисовать - сам потом нарисую или картинку вставлю. Весь словесный понос подтверждать оффициальными ссылками. Ссылка на дурдомопедию (википедию) в крайнем случае давать. На сайтах производителей и институтов инфы хватает. Всяких дибилов самоназваных с Ахрененными межгалактическими дипломами не приводить в пример.
Надеюсь энергия потом с кондёра не порёт, и ахренесово колесо вечно не поедет - наука штука точная. КПД устройства для взлома искать больше 20% (КПД1,2).
Нельзя взламывать секреты приборов производимых на постсоветском пространстве. Ибо тут всё просто - турма (Поддержим отечественного производителя!). А заграничные стандарта ISO для нас практически недосягаемы, мы со своим ГОСТОМ на рынке условия не диктуем. Поэтому взлом иностранной технологии в нашей "Раше" приравнивается к шлепку буржую по заду - только щёчки порозовеют 😀 . Наши технологии "ломать" только с разрешения собственника либо если инфа открыта для пользования.
Ламачче невозможное проверить при помощи формул теоретически либо элементарно практически также не выкладывать.
Расшифровка предупреждений:
ПИП - первое израильское предупреждение;
ВИП - второе израильское предупреждение;
ТрИП - третье израильское предупреждение;
ЧИП - вставляем имплантант биоботу;
ППЦ - биоботу пипец.
shura-i Пост: #288229 От 06.Feb.2011 (20:53)
Что-то я не понял про слетание флешки. Ты про 10k на плюс?
Нет, я про физическое искажение содержимого флэш-памяти под действием волны, образующейся вблизи точки КЗ. В производственных условиях, где мощное оборудование и подвод фаз в 25 квадратов, импульс тока при КЗ вполне может достигать 10 КА. А флэшки слетают и при гораздо более скромных взрывчиках, например, в электронных весах, если продавцы топчутся по проводам китайских удлинителей. Или вблизи качера на 20 Вт. По идее, управляющий проц с флэшкой надо уносить подальше от силового оборудования и ставить в отдельный ящик. Но это не всегда возможно.
_________________ И мню аз яко то имать быть, что сам себе всяк может учить.
magneat,
Arduino интересная штука, но как раз новичкам такое может не показаться простой программой:
Кроме того, пусть новички, желающие спаять такую штуку для себя, не обольщаются на тему "не нужен ни какой программатор – шнурок USB и вперёд", потому что перед этим в него бутлодырь чем-то прошить надо. Если купить - то да, вперед к USB. Флешка слетела (кз, качеры, см. выше) - назад к программатору..
А не новичкам (и новичкам в свое время) еще будет интересно, как препроцессор этой среды реализует те или иные алгоритмы. Начаться это может, типа "у меня кварц 16МГц, и цикл из двух команд, а на ноге выходит всего 100кГц, где остальное?" (ну, это грубый пример).
Значит под рукой по любому надо иметь книжку про асемблер в 450 команд? Меня терзают смутные сомнения 😕.... один знакомый программист говорит что даже протеус некорректно эмулирует некоторые программы, а значит множество продуктов также могут иметь недостатки. А тот же MPasm (или как там его) написан на непонятном языке, потому как я немецкий шпрехил (спасибо СССР, за то что к 3й мировой октябрят за ранее с ГДР готовили 🙄). Получается что писанина на туземных прогах для меня будет на уровне угадайки. Ну асемблер чуток подвыучить не беда, на крайний случай на двух листах можно расшифровки написать, но как быть с программами и обучением на англицком???
Другие варианты. Допустим я одолел ужасный асемблер и написал прогу для мигания пяти лампочек, что мне с ними потом делать, с кодами-то? Ни в одной учебной литературе толком не даётся пошаговое выполнение всех этапов, только тупое повторение примеров без понятий. К примеру я не знаю что такое перенос флага и как его носить, хотя книжки про это читал... Другой вариант. Не во всех прогах (оболочках отладочных) есть возможность фантазирования. К примеру я захочу сделать аварийный сброс по питанию при неправильной работе контроллера, а выносной сброс по питанию проэмулировать в оболочке просто невозможно. Как пример одновибратор поддерживаемый частотой поступающей с лапки контроллера.
Ещё вариант. Прочитал что для АВР разные изменения в асемблер вводят. Сколько мне понадобится времени чтобы узнать где я напортачил и неправильно указал флаг, порт или команду? Получается что самые лучшие программы на сайте производителя даются? Но прочитав информацию узнаешь что и их проги имеют ошибки и баги. Как быть?
_________________ Не хватит никакого здоровья, чтобы приспособиться к этому глубоко больному обществу(Кришна Мурти)/Горшки не Боги обжигают (многовековая классика)
Эх, Базаров... Я бы рассказал тебе все про 51 проц, но не имею морального права. Потому что, повторюсь, на каком чипе начнешь делать, на том и останешься навсегда. Если только ты не гений-полиглот языков программирования. Народ сейчас делает кто на ПИКах, кто на АВР, а я опоздал, в мое время этих чипов не было, а жаль. В принципе, под мои задачи мощи 51 проца хватает, но есть и ограничения. Например, мне бы не помешала выдача мощной "1" на выход, а в 51 такого нет, можно только "0". И еще я не могу сделать импульс короче 500 нс, а на АВР легко 100 нс. А вдруг тебе понадобится. Ассемблеры у них разные, переучиваться тяжко. Поэтому не спеши, а выбирай "свой" чип. Читай форумы. Через пару недель поймешь, что тебе надо.
Я начинал с 8080, потом Z80, потом МК 20, 48, и наконец, 51. А дальше не пошел 😀 И главная причина - что для этих процессоров существует более-менее человеческий язык ассемблера, нетрудный для запоминания. Чего не скажешь про АВР.
Что же до красивостей - то баловство всё это, ведущее к распущенности и оставляющее место непониманию - мол, как-нибудь само устаканится... А чтобы писать для проца, надо знать все его тонкости, выворачивать их наизнанку, не оставлять непонятыми. У меня есть хорошая книжка про 48 и 51 процы издательства Бином, но и там я нашел пару белых пятен при написании программ, которые мне пришлось выяснять опытным путем. Вот пример: когда проц принимает байт по последовательному порту, тот оседает в регистре SBUF и взводится флажок RI, по которому проц должен пойти в прерывание, снять флажок и прочитать байт. А я стал дожидаться конкретного байта на линии, ну, думаю, если он туда заносится, то дождусь.... и не дождался! А оказалось - что, пока я не прочитаю флажок RI, байт в SBUF не появляется! Учтены ли такие тонкости в программах для "программирования мышкой"? сомневаюсь.
_________________ И мню аз яко то имать быть, что сам себе всяк может учить.
bazarov Пост: #288256 От 07.Feb.2011 (00:49)
Как быть?
Базарыч, ты не с той стороны заходишь к задачке.
Ты ж железячник. Вот и заходи со стороны железа. Это называется архитектура эвм.
Тебе много проще, чем программистам понять что такое таймер и с чем его едят.
Посмотри аппноты по мкашкам. Они есть и на русском и на татарском.
Ты прекрасно представляешь двоичный счетчик. Есть вход, есть сброс и есть выход.
на входе есть переключатель- либо внешний сигнал, либо от внутреннего генератора,
он управляется сигналом от триггера - этот триггер ты можешь установить либо в 0 либо 1.
Это и будет определять - либо внешний сигнал, либо внутренний.
Есть еще ключик на входе - просто разрешает входные сигналы, или запрещает,
тоже имеет управление от своего триггера.
Выход счетчика можно пустить наружу или вовнутрь мкашки, тоже триггер.
Выход можно пустить прямо или через инвертор- тоже триггер.
Вот эти триггера управления объединяют в один паралельный регистр, его называют регистр
управления таймером , у него есть адрес , по этому адресу его можно записать одним махом,
паралельно все биты и включить или сбросить таймер сразу в нужном тебе режиме .
И сам двоичный счетчик имеет паралельные входы и выходы, у них тоже есть свой адрес,
по этому адресу в счетчик можно записать предустановку, или прочитать - в каком состоянии он сейчас находится.
А вся программа это и будет команды процессору записать по такому то адресу такие то нолики и единички.
Или прочитать и сравнить с чем то.
Например пришел внешний сигнал- запускаешь таймер от внутреннего генератора по микросекундам,
пришел второй сигнал- останавливаешь таймер, читаешь число до скольки он записал, это время
между импульсами в микросекундах.
Освоишь его- дальше уже просто будет.
Потом разберешь таймер с шимом, поймешь как использовать сторожевой таймер, и т.д.
То есть пока для тебя никаких синусов, косинусов и корней, просто привычный для тебя запуск железа.
И вообще запомни- не считает никто на контроллерах синусы укосинусы,
контроллеры для управления.
bazarov, посмотри [ссылка] там кое-что переведено на русский. В том числе системы команд и переведенные описания архитектуры некоторых процов. По выбору архитектуры сильно не заморачивайся (иначе придется сначала изучить все), во всём жить можно, во всём есть свои ограничения.
USB в проце тебе сейчас тоже не надо, потому что это еще одна "система команд", которую надо изучить, прежде чем пользовать.
Что касается USB, то тебе видимо нужен программатор с USB интерфейсом для прошивки через SPI. Типа такого: [ссылка] Можно подобный и самому сделать (http://prottoss.com/projects/AVR910.usb.prog/avr910_usb_programmer.htm), но чтоб он заработал, потребуется на время еще один программатор (какой-нть несложный, возможно, но всё же), или кого-то попросить прошить чип. Вот еще программатор-отладчик [ссылка] можно сделать (непросто для новичка) или приобрести готовый. Извини, я всё про AVR, другие может для других систем посоветуют.
Начинать (да и продолжать) нужно с даташита (детального описания) на проц, с которым собрался работать. Без этого что-то своё делать не очень реально. Можно выбрать проц по критерию наличия книжки, переведенной на русский. Начнешь понимать архитектуру - поглядывай Application Notes, это конкретные примеры применения.
А дальше в точности как dedivan говорит. Вопросы любые - народу тут полно, СЕ не выходит, делать особо нечего, тебе всегда помогут. 😀
«…Arduino интересная штука, но как раз новичкам такое может не показаться простой программой…»
Спорить о том , на чём удобней программировать МК , не имеет смысла.
Вопрос в другом – как человеку сделать первый шаг в этом направлении.
Здесь, ИМХО, у Arduino нет альтернативы.
Что-бы любому «пионеру» начать практически программировать МК, нужно:
1. Купить Arduino (~ 600 -700руб) + шнурок (если нет)
2. Переписать с CD (с интернета) программу Arduino в любую папку (версия portable)
3. Подключить к Arduino питание +5v и шнурком подключить к USB.
4. Запустить программу Arduino, написать несколько строчек текста и загрузить программу в платку.
Всё – начнёт моргать встроенный в платку светодиод.
Человек увидел результат своей работы, он может легко, изменяя несколько цифр, менять частоту и скважность импульсов.
Программы для Arduino можно писать и отлаживать в любой среде программирования и загружать через обычный программатор – на плате есть для этого разъём.
Arduino особенно подходит для «железячника» - всю обвеску сделает легко, не надо покупать платы расширения ( зовутся «шилды» ).
Arduino – открытый проект, интенсивно развивается, ПО постоянно обновляется.
По возможностям не уступает младшим моделям ПЛК (пром.контроллер).
По поводу сильного влияния помех – слухи сильно преувеличены, МК семейства AVR стоят и в ПЛК, например «SMH2010» , «PIXEL» - срок гарантии 3 года, на объектах без сбоев работают годами, условия далеко не комнатные.
P.S. ИМХО, в настоящее время не стоит делать упор на ассемблер, язык С стал практически стандартом – для всех семейств МК есть свои программы разработки на С , поэтому и проблемма выбора МК не стоит так остро, как раньше, хотя особенности конечно есть.
«…но для работы все равно понадобится отладка- и придется еще покупать дракона…»
ИМХО, всё зависит от задачи – для 90% людей достаточно тех средств отладки, что уже есть в Arduino. В сети тысячи проектов, авторы которых и не слышали о «драконе», тем не менее всё у них прекрасно работает.
Базарыч- это не тысячи- он профи. И делает профессиональные системы.
Ему нужно знать как поведет себя система во всех случаях.
А дракон всего лишь дешевый вариант атмеловских отладок - типа AVR JTAG.
И профи пользуют их всегда.
magneat, без фанатизма 😶 Еще раз соглашаюсь, проект интересный. Но не безальтернативный, даже для новичка.
Про помехи - говорилось не по по поводу сильного влияния помех, а по поводу влияния сильных помех. У меня не случалось, но я далек от суровой промышленности.
Язык C действительно удобен и для меня лучший выбор, но текст на ассемблере, на мой взгляд, лучше отражает все детали происходящих процессов и архитектуры. Разве нет? Не это ли важно как раз для новичка? Кроме того, при разборе любого бинарника без исходников (рано или поздно приходится) мы можем увидеть текст, полученный в результате дизассемблирования, и для знакомого с ассемблером это будет уже что-то осмысленное, а C-программисту придется труднее. Лучше понимать оба языка. Но, моё мнение, лучше понимать ASM без C, чем C без ASM, применительно к контроллерам. Кстати, очень часто в "тонких местах" программа на C дополняется ASM-вставками.
Да, АСМ для контроллера - обязательно.
Си может и не понадобится, но знать его надо, хотя бы основы,
чтобы понимать как вызываются в нем функции - это поможет составить
чисто свои функции на АСМе, которые будут всегда готовы к использованию
в любом проекте но по сравнению с универсальным Си- учитывают все важные
именно для тебя фичи твоих мкашек.
А универсальный Си слишком избыточен- это плата за универсальность.
Но в мелкую мкащку прога на Си может даже не убраться.
У каждого разработчика есть своя АСМ-библиотека нужных ему функций,
и знание Си просто позволяет составить ее грамотно.
shura-i Пост: #288321 От 07.Feb.2011 (13:38)
Язык C действительно удобен и для меня лучший выбор, но текст на ассемблере, на мой взгляд, лучше отражает все детали происходящих процессов и архитектуры.
Текст на С уже сам по себе выглядит более-менее структурированным. А о программе на АСМе этого не скажешь, вся структура держится в голове в момент написания, а готовая выглядит линейно. Чтобы подправить чужую программу, сначала придется ее "свернуть в клубочки" и полностью понять замысел автора. Я для себя делаю промежуточный вариант: алгоритмы рисую на бумажках с свободном виде, блоки помечаю буковками, а потом пишу на АСМе и эти буковки уходят в метки. Так сохраняется образное мышление "в общем плане", где и что должно делаться, и быстро доступна детализация, как именно это делается, с возможностью правки любого кусочка кода без потери концепции 😕
_________________ И мню аз яко то имать быть, что сам себе всяк может учить.
Очень даже практично.
Из Сей надо брать процедуру вызова- единообразно используемые регистры, через которые передаем параметры, тогда все заготовленные модули легко связываются.
Язык C действительно удобен и для меня лучший выбор, но текст на ассемблере, на мой взгляд, лучше отражает все детали происходящих процессов и архитектуры.
Выражу своё сугубое мнение относительно языков высокого уровня. Некогода мучал Делфи6 с паскалем... После Бейсика что в детсве баловался показалось полной чушью. Наворотов в высокоуровневых языках тьма, а большинство из них пустые. Там всё чисто под математику заточено и графику, а для железа такой "перламутр" нафик не нужен. Чего только стоит прописывание переменных и их значение для памяти? Могли бы уже сделать числовые и символьные выражения, а колличество символов тупо в скобочках указывать, чтобы отладчик сам установил параметры и размер памяти.
По поводу примочек. Кончно хорошо иметь плату управляемую некой прогой, но для прикладных задач толку с неё? Если я захочу сделать портативный кардиорегистратор с проверкой через лептоп или смартфон, то прогу самому один фиг придётся учиться писать.
По поводу асемблера. Громоздкие проги конечно долго придётся писать, зато жёсткий контроль будет. Выходит что в Протеусе лучше всего моделировать процесс, в виду возможности обвязки схемы нестардартными элементами.
_________________ Не хватит никакого здоровья, чтобы приспособиться к этому глубоко больному обществу(Кришна Мурти)/Горшки не Боги обжигают (многовековая классика)
shura-i Пост: #288183 От 06.Feb.2011 (17:37)
А вот еще AT89C51ED2, AT89C51RD2 забавные штучки в этом отношении, как оказалось. У них есть ПЗУ с (всегда готовым) кодом бутлодера, в который проц отправляется программно или аппаратно, и есть Атмеловская программа FLIP под Windows/Linux для общения с этим бутлодырем. То есть, берем новый пустой чип, впаиваем его в свое устройство с RS232, соединяем с компом, на компе запускаем FLIP, на устройстве замыкаем перемычку, делаем ресет, и - вуаля - читаем-пишем чип без программатора.
Ну это в теории. На практике пока не пробовал, сейчас как раз собираюсь (достался модуль из модема ZyXEL 841C, там для этого всё уже готово).
Попробовал, всё так и оказалось. Очень приятные процы, из 51-х приятнее не припомню. Дороговаты только, сабаки.
Кстати, оказалось, есть процы с подобной методикой ISP через интерфейсы CAN (напр. AT89C51CC03) и USB (напр. AT89C5131). Все они поддерживаются программой FLIP. В случае CAN комп должен иметь CAN-интерфейс (адаптер) с драйвером. В случае USB - нужно установить драйвер микроконтроллера (в винде появляется устройство например AT89C5131). Насколько я понял, все такие контроллеры на сайте Atmel в параметрических таблицах обозначены "Self Program Memory: API". Это касается только 51х Атмелов; среди других архитектур Атмела я такой фичи не обнаружил.
shura-i Пост: #288422 От 07.Feb.2011 (22:09)
"Self Program Memory: API". Это касается только 51х Атмелов; среди других архитектур Атмела я такой фичи не обнаружил.
Это и есть начальный загрузчик (бутлодырь) - поскольку сам протокол УСБ или КАН програмный,
порядка 2 кБ занимает , добавили сразу и прошивалку -программатор.
В других атмелах есть процики с бутлодырем, можешь зашить туда свой,
заказать на заводе с прошивкой, или как вариант тот же Аурдино.
Но это выполняет только самую примитивную задачку, с которой справляются 5 проводков и Авреал. Но Авреал может еще и фузы шить и локи ставить... еще и крестиком вышивать может (с)
dedivan, не путай. В других чипах с возможностью бутлодыря я своими действиями могу этот бутлодырь добавить, МОГУ и истребить - и всё, к программатору. В этих же - нет! Здесь бутлодырь в ПЗУ и всегда готов, хоть с завода, хоть после самого любого сбоя. Здесь принципиально НЕ нужен программатор в привычном смысле. Фузы и локи здесь тоже доступны.
5 проводков, к сожалению, уже не всегда достаточно. LPT порты ставить в компы перестают. (впрочем, RS232 тоже уже не везде есть). Напряжение питания МК уже может сильно отличаться от 5В. Ну и вообще, вопрос пяти проводков лучше ставить по-другому: а нафига вообще этот бутлодырь придумали, когда и пяти проводков достаточно? 😀
shura-i Пост: #288476 От 08.Feb.2011 (10:20)
могу этот бутлодырь добавить, МОГУ и истребить - и всё, к программатору. В этих же - нет!
Так я и говорю- можешь заказать на заводе неистребимый бутлодырь,
они пережгут перемычку. А есть просто АВРы с заводским зашитым УСБ или КАН. Тоже неистребляются.
Здесь принципиально НЕ нужен программатор в привычном смысле
Я про то, что для разработки этого мало, нужен отладчик.
А для запланированной работы и программатор на фиг не нужен.
То ресурсы и задержки в работе.
В АвРках в принципе есть зашитый начальный автомат- именно он
определяет при включении режим работы или программирования.
Кстати очень непонятно и темно работает- после включения по тактам
от 6 до 14 тактов непонятно что делает, и только потом переходит на выполнение программы. И сколько тактов будет "думать" непрогнозируемо.
Очень сложно запаралелить работу нескольких процев от одного тактового источника. Переходят к выполнению программы в разное время.
Реалтайм- это сурово.
.
То есть даже простенький автомат уже доставляет проблеммы,
а что уж говорить про сложную программу.
shura-i Пост: #288476 От 08.Feb.2011 (10:20)
а нафига вообще этот бутлодырь придумали, когда и пяти проводков достаточно? 😀
Тут уже один шаг до тотального контроля. Подсаживают народ на автоматику - мол, думать не надо, всё само делается. Потом сделают автозагрузку кода с интернета, и всё ваше оборудование будет жить столько, сколько захочет производитель чипа. Видел в фильмах наверно, как в любом космическом корабле в компьютер может проникнуть вирус! 😎 Базаров, в твой сварочник может залезть вирус?
_________________ И мню аз яко то имать быть, что сам себе всяк может учить.
dedivan Пост: #288478 От 08.Feb.2011 (10:30)
Так я и говорю- можешь заказать на заводе неистребимый бутлодырь,
они пережгут перемычку. А есть просто АВРы с заводским зашитым УСБ или КАН. Тоже неистребляются.
Хм. Что-то я для себя такой возможности не вижу, честно. Покажи пример или дорогу. Как получить, скажем, ATmega88A с нерушимым загрузчиком? И назови AVR с USB, который из магазина готов к прошивке прямо по USB. Я, возможно, что-то недоглядел.