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

my504    343
10 часов назад, dim3740 сказал:

а в том, что типовая библиотека не может "пробиться" к МИДИ.

Не совсем понятно что Вы называете "типовой" библиотекой.

Есть USB-стек, который реализован в девайсе. Этот стек может работать и как один класс устройства и как несколько. Если Вы взяли в качестве "библиотеки" только HID-класс, то ясень пень, что работать как CDC или Mass Storage оно не будет. Каждый реализуемый в комбинированном устройстве класс требует отдельного endpoint-а. Каждый endpoint - суть есть порт в девайсе. Все зависит от доступного количества endpoint-ов в данном МК.

А вообще, типовой стек USB под разные классы производители МК обычно дают. Но применять его как библиотечные функции совершенно невозможно. Его нужно допиливать под собственную задачу. Это собственно не библиотека, а референсный код. В таком случае нижние уровни стека общие для всех классов, а верхние разные. Достаточно несложно скомбинировать такого рода код под свою задачу.

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


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

Всем привет, имеется готовая плата с семисегментным дисплеем и Atmega8515. Хотел сделать часы на ds1307, но с удивлением обнаружил что аппаратного i2C, в данном контроллере нет. 

Может у кого есть программный драйвер для ds1307 написан на Си?  Поиск в ГООГЛЕ, ничего толком не дал... Спасибо.

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


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

в компиляторе нет библиотеки i2c - не верю...

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


Ссылка на сообщение
Поделиться на других сайтах
ruhi    35
2 часа назад, si4karuk сказал:

обнаружил что аппаратного i2C, в данном контроллере нет. 

на atmel-AVR-ах I2C называется TWI

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


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

Где в даташите указано, что данный контроллер, имеет аппаратный TWI интерфейс? Тыкните носом пожалуйста. 

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


Ссылка на сообщение
Поделиться на других сайтах
Alex    546
12 часа назад, si4karuk сказал:

но с удивлением обнаружил что аппаратного i2C, в данном контроллере нет. 

Может у кого есть программный драйвер для ds1307 написан на Си?

Как то странно. Не обнаружили I2C в МК, а ищите код для ds1307. Где связь ?
Ищите тогда уж код программного I2C, если аппаратного нет. А подобных примеров в гугле - тьма тьмущая. Не верю, что не смогли найти ничего.

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


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

По сути, мне именно ds1307, надо подключить к контроллеру...

Поймите меня,:blink: я живу в селе, интернет слабый, зарплаты маленькие, не доедаю:wacko:... Следственно мало витамин в мозг поступает. Отсюда и проблема с реализацией проекта:unsure:

Да, о какой мозговой активности можно говорить, после праздников...

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

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


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

Спасибо за помощь. Полез в даташит ds1307, трошки прочитал. Потом нашел программный I2C, и все получилось с первого раза:D. А я уж запаниковал. Еще раз спасибо за помощь и с праздниками всех.

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


Ссылка на сообщение
Поделиться на других сайтах
Starichok    1 220
В 06.01.2018 в 13:15, si4karuk сказал:

интернет слабый, зарплаты маленькие, не доедаю

ага, живу бедно - сыр с плесенью, вино старое, машина без крыши и телефон без кнопок...

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


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

Всем доброго времени суток!
Есть необходимость научиться обходить защиту (залоченность) современных МК. Из того, что нашёл в нете у меня сложилась такая картина:
Когда-то раньше производители использовали защиту от считывания прошивки из flash-памяти путём отжигания вывода записи.
Теперь защиту (залоченность) делают в виде так называемых FUSES.
Нашёл в нете:
FUSES (с англ.: плавление, пробка, предохранитель) - специальные 4 байта(4*8=32 бит) данных, которые настраивают некоторые глобальные параметры микроконтроллера в процессе прошивки. После прошивки данные биты нельзя изменить через внутреннюю программу что записана в МК.
Данной конфигурацией бит мы указываем микроконтроллеру вот что:
• какой использовать задающий генератор (внешний или внутренний);
• делить частоту генератора на коэффициент или нет;
• использовать ножку сброса (RESET) для сброса или же как дополнительный пин ввода-вывода;
• количество памяти для загрузчика;
• другие настройки зависимо от используемого микроконтроллера.
Вопрос первый:
Правильно ли я понимаю, что FUSES – это и есть залоченность современных МК?
Вопрос второй:
Эти самые FUSES хранятся всё в той же flash-памяти?

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


Ссылка на сообщение
Поделиться на других сайтах
Lexter    233
55 минут назад, Igor-air сказал:

Вопрос первый:
Правильно ли я понимаю ...

Пока нет.

55 минут назад, Igor-air сказал:

Вопрос второй:
Эти самые FUSES хранятся в ...

Это подробно написано в даташитах на конкретные контроллеры.

55 минут назад, Igor-air сказал:

Есть необходимость научиться обходить защиту

Есть необходимость получать ежедневно по 10 000 000 $. Поможете?

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

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


Ссылка на сообщение
Поделиться на других сайтах
солар    167
3 часа назад, Igor-air сказал:

научиться обходить защиту

Реинжиниринг дешевле.

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


Ссылка на сообщение
Поделиться на других сайтах
my504    343
6 часов назад, Igor-air сказал:

Есть необходимость научиться обходить защиту (залоченность) современных МК. 

..................
Правильно ли я понимаю, что FUSES – это и есть залоченность современных МК?
Вопрос второй:
Эти самые FUSES хранятся всё в той же flash-памяти?

Залоченность определяется лишь определенными фьюзами. Стирание именно этих фьюзов объединено со стиранием остальной флеш-памяти.

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

В новых контроллерах фьюзы защиты распределены так, что это сделать технически невозможно.

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

Обычно за такую работу определенные компании берут от 5000 тыс долларов и выше. Современные контроллеры вскрываются зондами и такая работа уже стоит многие десятки тысяч долларов.

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


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

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

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


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

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

За защиту флеша отвечает регистр OFS (0x00FFFF). Он может быть перезаписан только после стирания всего флеша (стирание происходит блоком, одновременно - это делается в автоматическом аппаратном цикле).

Референс мануал семейства: https://www.renesas.com/en-eu/doc/products/mpumcu/001/rej09b0244_r8c2425hm.pdf?key=1fd6b653b22cc67a6acd05fcd18f56ff 

Смотрим страницу 401 на предмет значений бит фьюзов.

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

Исходя из этого выбирают такую платформу МК, которая удовлетворяет этому требованию. В дорогих контроллерах уровней защиты кода несколько. Это позволяет не только защитить код от прямого чтения, но и запретить вычитывание кода внутренним же кодом. Для чего есть иерархия внутреннего доступа.

10 часов назад, Alexeyslav сказал:

Что касается атмеловских контроллеров, то фузы это отдельная область памяти

Не отдельная область памяти, а отдельная область АДРЕСОВ памяти. Физическое место расположения фьюзов и их поле адресов внутри адресного пространства флеша НИКАК НЕ СВЯЗАНЫ.

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

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


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

Всем вечер добрый. Есть массив uint16_t Fone_ustavki[]={0x3184,0x39e5,0x3183,0x31a4,0x3aaa,0x8c4d,0xa510,0x946d,0xa531,0xa4f0,0xa511,0xc615,0x946e,0x946e,0x41a2,0x5203,0x3142,0x528a,0x2125};

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

Например: функция fun1(a1,a2,a3, Fone_ustavki[0]); fun2(a2,a3,Fone_ustavki[1]); и т.д. т.е. эти значения будут константами прописаны в программе, но так чтобы не было самого массива в памяти.

Надеюсь понятно объяснил. 

 

 

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


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

ну наверное прописать его как

const uint16_t Fone_ustavki[]={0x3184,0x39e5,0x3183,0x31a4,0x3aaa,0x8c4d,0xa510,0x946d,0xa531,0xa4f0,0xa511,0xc615,0x946e,0x946e,0x41a2,0x5203,0x3142,0x528a,0x2125};

правила записи уточнить в мануале на компилятор

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


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, Demonrostov сказал:

но так чтобы не было самого массива в памяти

Компилятор со включенной оптимизацией должен сам сделать то, что вы хотите. Только проверьте потом, что получилось.
Если всё же есть желание использовать #define, то можно сделать так

#define Fone_ustavki(i) (((i) == 0x00) ? 0x3184 :                      \
                         ((i) == 0x01) ? 0x39e5 :                      \
                         ((i) == 0x02) ? 0x3183 : 0)
// и так далее

Вызов:
aaa = Fone_ustavki(1);

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


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

Возможно конечно что я скажу чтото не то, но программист(если он конечно не колхозник) должен писать как то так

PhoneSettings, PhoneData, cPhoneArray ну или BackgroundSettings. Потому как что имелось в виду под словом Fone не совсем ясно. Человеку, читающему такой код будет не совсем очевидным назначение этих циферок. Хороший тон никто не отменял же вроде как, да?

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


Ссылка на сообщение
Поделиться на других сайтах
Demonrostov    1
4 часа назад, mail_robot сказал:

Возможно конечно что я скажу чтото не то, но программист(если он конечно не колхозник) должен писать как то так

PhoneSettings, PhoneData, cPhoneArray ну или BackgroundSettings. Потому как что имелось в виду под словом Fone не совсем ясно. Человеку, читающему такой код будет не совсем очевидным назначение этих циферок. Хороший тон никто не отменял же вроде как, да?

А почему "Ы"? А чтоб никто не догадался.....))

Спасибо всем за ответ буду пробовать.

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


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

Demonstrov, есть мнение что транслит указывает на то, что уровень кодописателя ниже плинтуса.

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

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


Ссылка на сообщение
Поделиться на других сайтах
Demonrostov    1
19 часов назад, dosikus сказал:

Demonstrov, есть мнение что транслит указывает на то, что уровень кодописателя ниже плинтуса.

Ничего не понял, но код работает как надо......

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


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

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

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

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

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

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

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

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

Загрузка...

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

    • Автор: Сергей Скопинцев
      Нужно разработать циклическую программу сбора информации от 10 измерительных источников. Период повторения цикла - одна секунда
      Источники:
       М - тензопреобразователь давления. Мостовая схема питается постоянным напряжением, выходной сигнал от 0 до 100 милливольт
       Т, ТМ, ТА- три канала измерения изменения напряжения в диапазоне от 400 до 600 милливольт (тоже нужен мост?)
       ЛМ - анализатор максимума напряжения (от 0 до 5 Вольт) по 10 точкам более-менее распределённых в измерительном цикле. Найденный максимум потом должен участвовать в анализе, постепенно уменьшаясь на 20% каждый цикл
       ВЛ - измерить напряжение на Малой емкости (50 пФ) с помощью емкостного делителя по алгоритму:
                         Снять Землю со средней точки емкостного делителя, подать на емкостной делитель положительный Импульс
                         Замерить нужное нам напряжение в средней точке делителя
                         Снять положительный Импульс с делителя, посадить на землю среднюю точку делителя
      - остальные каналы К7...К10  служебные
      Разрядность данных - 16 двоичных.

      Результаты писать на MicroSD текстовым файлом, на первом месте в строке текущее время в секундах, остальные каналы разделены пробелами
      Порядок каналов:
      Т - М -ТМ - Вл - ЛМ -...
      Коэффициенты усиления по каждому информационному каналу должен иметь возможность изменить оператор по формуле y = Ax + B
      Прибор автономный, питается от + 5 Вольт.
       
    • Автор: Ru_s
      Здравствуйте. Подскажите пожалуйста, возможно ли на attiny13 реализовать такую штуку. Мне в процессе работы программы нужно поменять режим работы таймера/счетчика с fast PWM на обычный счёт, отсчитать длительный промежуток времени и опять вернутся в режим ШИМ. Т.е. я подаю на ногу сигнал ШИМ и когда он в максимальном значении, я его отключаю, и тупо подаю на ногу высокий лог. уровень. В это время Т/С по идее свободен, и мне надо посчитать время работы выхода на максимальном лог. уровне, при достижении какого-то значения времени нужно перевести т/с обратно в ШИМ. Возможно ли это? И как приблизительно это реализовать
    • Автор: Kiraspbkiev Kira
      День Добрый. Есть два вопроса от новичка: 1) Правильная ли схема сделанная мною? 2) если схема верна то как правильно подключить к atmega328p-mu usb на чипе cp2102-grm?
      На схеме колодка JP1 это AVR ISP а JP2 это UART
      С проектированием столкнулся в первый раз, цель узнать что то новое и сделать своими руками:)

    • Автор: ITSpec
      Привет всем. Это мой первый пост здесь  прошу отнестись снисходительно.
      Просматривал ролики на Ютуб и понравилась тема одного из блогеров: "Воруем у китайцев". Идея понравилась и полез на Алиэкспресс поискать какой нибудь конструктор чтобы сплагиатить.
      Выбор пал на этот.

      Схему даже с платы не пришлось перечерчивать она была на странице продавца.

      Основная часть этой схемы обычный мультивибратор, который "перемигивает" параллельно подключенные диоды. Вторая часть схемы служит для музыкального сопровождения и состоит из трех компонентов: музыкальной микросхемы, усилителя звука в виде транзистора и громкоговорителя в виде пьезового зумера.
      Такой микросхемы у меня конечно же небыло и я заменил ее на чип H-83a который не нуждался в усилителе.

      Сразу припаял на него SMD резистор и кнопку для переключения мелодий согласно схеме.

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

      Открыл EASYEDA и нарисовал схему.

      Потом спроектировал плату.

      После прибегнул к технологии ЛУТ.

      Припаял все элементы. Отсек для батарейки и чип посадил на термоклей.

      Вот фото окончательного устройства.

      Включается устройство от переключателя, а мелодии от кнопки на музыкальном чипе. Если кому-то хочется чтоб мелодия играла при включении вместо кнопки можно впаять перемычку.
      Ссылка на видео как собиралось:
       
    • Автор: Михаил Савин
      Добрый день. Подскажите есть устройство на плате для регулирования дроссельной заслонки от Калины. Довольно специфическое, индивидуальная разработка, аналогов не купить. Основывается на микроконтроллере ATXMEGA128A3U AU 1651. Возможно ли скопировать залитый в него код что бы изготовить данное устройство ? Или это невозможно в принципе ?
  • Сообщения

    • Видимо, пришло осознание, что на данный момент развития технологий гораздо выгодней нанять универсальных "роботов" биологического происхождения для выполнения каких-то тяжёлых или объёмных работ.
    • Вот это ДА!!!!! Мы дураки в ПРОМЫШЛЕННЫХ приборах обходились проще. Светодиод (3Л341) и последовательно резистор 200 кОм-0.5 Вт.ВСЕ!!!!
    • Нормально зажатое сверло, в исправном, чистом патроне и при правильном выборе режимов для материала и  сверла, никогда не провернётся = учитесь работать правильно.
      А фрезерованные хвостовики под трехгранник видел только бурах по бетону, для ударных дрелей и на инструментах очень большого диаметра - всяческих коронках / балеринках / перьях.
    • Уважаемый, Владимир 65. Похоже что версии Сим 12 и 14 не совсем совместимы, хотя файл Сим 12 у меня открывается в Сим14 и работает, но тут выяснилась другая проблема. Вот собственно в чем дело....я на стр. 362 нашел Ваш файл в симе12, который как раз без всего лишнего и подходит в качестве УТ файла. Я его открыл прямо из ссылки на странице, он прекрасно у меня загрузился и я начал тестировать его. Файл работал и все шло нормально. Я увидел те самые довольно высокие пульсации, с которыми пытался бороться. Да...и обратил внимание на выбросы напряжения на нагрузке и шунте при КЗ, про которые Вы мне писали совершенно справедливо.  А вот дальше начинается самое интересное и, к сожалению, грустное. Я, естественно, погоняв Ваш вариант, начал прямо в Вашем открытом файле менять номиналы двух конденсаторов и добавлять свой новый С11 в ООС  U1B. Запускаю симуляцию и вижу ПОЛНУЮ ХРЕНЬ. Я осознаю что Вы получается абсолютно правы, а я допустил где-то ошибку, и соответственно, начинаю эту ошибку искать. Я сверил полностью наши файлы и не нашел существенных отличий кроме исправленных мною номиналов и стаба в опорном у Вас и TL431 у меня. Кстати, почему Вы убрали TL431 из первоначального варианта? Затем я в Вашем файле изменил все в точности со своим вариантом, в том числе и шунт и делитель. Запускаю.....опять полная хрень с возбудом и не выходом никуда!!! Возвращаю все исправления в исходное состояние, запускаюсь...все работает прекрасно как и при первом включении Вашего файла. Снова вношу свои изменения и опять полнейшая хрень лезет на осц - возбуд страшный.  Я тогда уже ничего не понимая, иду в свой оригинальный файл...запускаю...и вижу прекрасную картинку на осц с моими любимыми 0,5 мВ пульсаций. Тогда я возвращаюсь в Ваш файл, который уходил в возбуд с моими изменениями (его легко отличить как по названию, так и по цветовому общему фону), выделяю весь, копирую в буфер обмена, открываю в своем симе 14 новый чистый файл, вставляю из буфера скопированное из Вашего файла и....запускаюсь. И что бы Вы думали??? Работает зараза!! Я тестирую файл, гоняю по режимам, меняю номиналы и убеждаюсь уже в этом файле, что мой вариант номиналов и RC в ООС ОУ тока действительно улучшают ситуацию с пульсациями на порядок, ну в общем все то, о чем я писал в моих предыдущих сообщениях, и что собственно абсолютно справедливо вызвало Ваше удивление по поводу моего дилетантского вмешательства в Вашу популярную схему. Учитывая то, что Вы конечно же проверяли мои инсинуации в своей версии Сима 12,  я могу лишь только представить что Вы увидели и что потом имели полное право мне написать в комментарии Но Вы, надо отдать должное, весьма корректно еще отправили меня "потренироваться на кошках" в виде Вашего УТ файла Кстати, спасибо Вам за то, что не разгромили меня в пух и прах. В общем вывод не утешителен. Все дело в том что ....помните про немцев?? Что Мультисиму 14 хорошо, то Мультисиму 12 плохо и наоборот. Вот такие дела! Получается что две абсолютно одинаковые схемы ведут себя абсолютно по разному в этих двух версиях симулятора. Не знаю происхождения Вашей копии Сима, но моя скачана, скажем корректно бесплатно. Я уже воплотил в железе не одно свое радиолюбительское детище, обкатанное в этом самом Симе14, и всегда в железе у меня получалось очень близко к симулятору. Осциллограф и хороший мультиметр у меня есть. Ну и справедливости ради, добавлю что сегодня я более тщательно погонял свой вариант во всех режимах по закрытому и открытому входах и подкорректировал С4 в сторону увеличения. У меня как бы получился оптимальный (исключительно для меня) вариант в Сим14. С4=300 пФ С5=50 пФ С11=15 нФ (добавлен в цепь ООС U1B) R14=0.1 Ом R11=370К R12=10К R35=1.1К (добавлен) Вместо D1 у меня стоит TL431+ Q4 Файл прикреплю, но как выяснилось, грузить его для теста в Сим12 не имеет смысла. Файл может послужить лишь для информации об измененных номиналах и добавленного С11.  БП50 УТ.ms14
    • Я всегда делаю 4+4 витка,И частоту 25кГц.На мощных преобразователях,от 600ватт и выше.И не важно что программа показывает 2+2 или 3+3.На меньшею мощность это уже по программе ,но не менее 4+4витка,и частоту уже можно поднять ,хоть до 75кГц.Но ,начинается ощутимый нагрев ключей....Да и на видео про преобразователь на 1000ватт.Где два трансформатора соединены последовательно,это не совсем правильно для работы  преобразователя.Если только ,стоит стерео вариант с инвертором одного канала или работа в мосту.Для одного канала это не выгодно.Дело в том ,что усилитель будет брать по очереди питание,то с одного трансформатора,то с другого.В итоге мы получаем что,оба трансформатора должны выдавать по 1000ватт.А это в два раза больше деталей получается.Надо их соединить таким способом,чтоб мощность бралась с двух трансформаторов,одновременно.Тогда и по 500ватт с каждого,вот тогда это будет оправданное решение,ставить по несколько трансформаторов в преобразователь на большую мощность. Вот так надо соединять обмотки.Тогда при любых условиях....потребление мощности будет идти одинаково с двух трансформаторов.При условии,что они одинаково намотаны.
    • С земелькой что то не то. Что сказать сложно@stepik hugme ,собирал сам? Отзвони землю
    • Оказывается, никто, включая Гуру с этого форума, не знает Закон Ома. Не знаю даже, смеяться или плакать...