Например TDA7294

Форум РадиоКот • Просмотр темы - Программатор с Aliexpress для полного чайника
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 23, 2024 17:02:10

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 61 ]  1, , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Программатор с Aliexpress для полного чайника
СообщениеДобавлено: Вт ноя 13, 2018 20:41:22 
Родился

Зарегистрирован: Вт ноя 13, 2018 19:53:58
Сообщений: 4
Рейтинг сообщения: 0
Добрый день!
Хотел попробовать свои силы, начитавшись темы
Микроконтроллеры AVR - пишем, компилируем, прошиваем...
https://www.radiokot.ru/start/mcu_fpga/avr/
Речь идет об AT90s2313

Но в статье описывается программатор под параллельный порт, которого у меня нет (ноутбук).
Схема USB to LPT скорее всего работать не будет. Нашел на Али такой девайс:
https://ru.aliexpress.com/item/J34-Free ... 2e0ejhQmZu
https://ru.aliexpress.com/item/1LOT-New ... 800595669f

Программатор имеет выводы MOSI, MISO, SCK, RESET
Собственно вопрос, может ли он заменить упоминающийся в статье программатор?

И второй вопрос, с какого микроконтроллера лучше начать изучение?
Вот такие простенькие поделки (моргалки-пищалки) без заявки на практическое применение?

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

Заранее спасибо за ответы! :beer:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программатор с Aliexpress для полного чайника
СообщениеДобавлено: Вт ноя 13, 2018 21:48:49 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 157
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3328
Рейтинг сообщения: -8
_deep_ писал(а):
И второй вопрос, с какого микроконтроллера лучше начать изучение?
Сейчас есть широкий выбор 32-ух битных МК. Они не сложные. Для них даже программатор не нужен. Прошиваются через конвертер COM-USART, проще говоря виртуальный COM порт.

Кое что для начала. http://purebasic.mybb.ru/viewtopic.php?id=575
http://purebasic.mybb.ru/viewtopic.php?id=564


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программатор с Aliexpress для полного чайника
СообщениеДобавлено: Вт ноя 13, 2018 21:50:58 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 41
Рейтинг сообщений: 1209
Зарегистрирован: Ср фев 23, 2011 12:12:31
Сообщений: 2352
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
И второй вопрос, с какого микроконтроллера лучше начать изучение?

Купить у китайцев клон "ардуино надо в3", на 328атмеге. Само собой использовать без ардуино, затереть бутлоадер и пользоваться как платкой с мк.
Стоит копейки, обмигайся!
А может стоит сразу на стм32. Опять же у китйцев платка на стм32ф103, те же 100р стоит. Программатор для стм, свисток стоит опять же 100р.

_________________
Глупый не задает вопросы. Глупый и так все знает.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Программатор с Aliexpress для полного чайника
СообщениеДобавлено: Вт ноя 13, 2018 22:19:13 
Открыл глаза
Аватар пользователя

Карма: 4
Рейтинг сообщений: 6
Зарегистрирован: Вс апр 15, 2012 23:29:00
Сообщений: 54
Откуда: Воронеж
Рейтинг сообщения: 4
Рекомендую начать именно с того программатора, что предложен в данном цикле статей (кстати - это один из самых быстрых программаторов из мне известных. USBasp - нервно курит).
Самому нарисовать плату, вытравить, ошибиться с зеркальным отображением, вытравить снова, найти ошибки в разводке, устранить ошибки перерезанием дорожек и установкой перемычек. Найти древний комп с LPT и COM портами (как сейчас без них живут - загадка???)
Затем успешно прожарить себе мозг разборкой с ключами AVReal.
Затем написать в блокноте прогу на асме и с помощью батника её скомпилировать (по-моему в два этапа).
Затем распаять на макетке тиньку2313 с набором светодиодов, успешно к ней подключиться и прошить, опять же с помощью батника.
За этот период вы наберетесь опыта во всех необходимых областях.
Это будет начало. Если вы сумеете пройти этот этап - вы сможете овладеть любыми другими типами программаторов и сред разработки.

ЭТО - тернистый путь настоящего джедая. Других - нет :kill:

В данном комментарии нет ни капли иронии.


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Программатор с Aliexpress для полного чайника
СообщениеДобавлено: Ср ноя 14, 2018 13:20:42 
Вымогатель припоя

Карма: 9
Рейтинг сообщений: 155
Зарегистрирован: Сб ноя 16, 2013 23:34:34
Сообщений: 671
Рейтинг сообщения: 0
ЭТО - тернистый путь настоящего джедая.
люто,бешеноплюсую :) я бы ещё рекомендовал ограничить доступ к интернету, чтобы не подглядывать в готовые решения. Полученные таким образом знания останутся с Вами надолго. А ещё добавил бы после каждого пункта: "... и получаешь глубокое моральное удовлетворение", потому что продвижение по пути джедая доставляет :)
Лучше всего приобрести не программатор, а отладчик (debugger). Разница в том, что программатор умеет только прошивать микроконтроллер, а отладчик позволяет сделать пошаговое исполнение кода ("ставить стопы"), и наблюдать, что происходит внутри микроконтроллера. Для обучения незаменимая штука. Вместе с осциллографом и логическим анализатором. С приобретением опыта можно всё перечисленное заменить эмулятором. В случае с атмеловскими микроконтроллерами отладчиком является atmel ice, китайские клоны продаются от $4.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Программатор с Aliexpress для полного чайника
СообщениеДобавлено: Ср ноя 14, 2018 19:53:33 
Родился

Зарегистрирован: Вт ноя 13, 2018 19:53:58
Сообщений: 4
Рейтинг сообщения: 0
Спасибо, очень удивлен количеством советов и общей атмосферой доброжелательности! :beer:
Такое редко встречается на форумах. Никто даже не отправил в поиск! :shock:

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

Осциллограф думаю взять Instrustar ISDS205A.
Основное его применение - диагностика авто. (Прокачиваюсь в сторону гаражного СТО у себя на родине).

P.S. С ЛУТ знаком, делал K-L-Line адаптер. Вспоминая муки творчества и видя готовые решения охота программатор всё же купить.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программатор с Aliexpress для полного чайника
СообщениеДобавлено: Ср ноя 14, 2018 21:21:17 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6619
Откуда: Сердце Пармы
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
так и купи... 80 рублей думаю не сильно по карману ударит ;)
начать изучение АВР я бы посоветовал с тини 2313 — бошьшое количество ног позволяет делать отладку прицепив кнопки или светодиоды к ногам микросхемы, а в коде добавить строки включающие/выключающие светодиоды по событию или чтото принудительно изменяющие в ходе выполнения программы при нажатии кнопки... а относительно неболшое количество периферии позволит не запутаться в ней, ну или не очень сильно запутаться :))
ещё советую заглянуть в нутро работы МК - в ассемблер, или хотябы помучать немного алгоритм билдер (там легче чем в ассемблере), просто увидишь некоторые аспекты, которые в С неочевидны и будешь лучше понимать принцип работы мк, а ещё он как справочник по режимам и регистрам периферии удобен.
пс: а ты что и чем программитуешь? (насколько близко к "железу"?)

Добавлено after 10 minutes 42 seconds:
но, мне кажется, что в деле диагностики авто это хобби поможет не сильно... ну, соберёшь канхакер или... а чего ещё можно собрать проще чем купить? даже и не придумывается...
—————
повнимательней прочитал пост, где про программиста — чтож, основы алгоритмизации, уже лучше чем ничего :) хотя "мелочи" тоже бывают разные...

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программатор с Aliexpress для полного чайника
СообщениеДобавлено: Ср ноя 14, 2018 21:26:36 
Родился

Зарегистрирован: Вт ноя 13, 2018 19:53:58
Сообщений: 4
Рейтинг сообщения: 0
так и купи... 80 рублей думаю не сильно по карману ударит ;)
начать изучение АВР я бы посоветовал с тини 2313 — бошьшое количество ног позволяет делать отладку прицепив кнопки или светодиоды к ногам микросхемы, а в коде добавить строки включающие/выключающие светодиоды по событию или чтото принудительно изменяющие в ходе выполнения программы при нажатии кнопки... а относительно неболшое количество периферии позволит не запутаться в ней, ну или не очень сильно запутаться :))
ещё советую заглянуть в нутро работы МК - в ассемблер, или хотябы помучать немного алгоритм билдер (там легче чем в ассемблере), просто увидишь некоторые аспекты, которые в С неочевидны и будешь лучше понимать принцип работы мк, а ещё он как справочник по режимам и регистрам периферии удобен.
пс: а ты что и чем программитуешь? (насколько близко к "железу"?)


По карману не ударит, но месяц ожидания посылки, выяснение что это не то и это не от того энтузиазма не добавят чтобы заказывать новую посылку и ждать еще месяц. :wink:
От железа далек, последние 7 лет вообще в другой области. VBA в Excel с какими-нибудь печатными формами. В ассемблере самое сложное писал модуль - обработчик событий от LPT порта для подключения кнопок. Но это было давно и неправда... :roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программатор с Aliexpress для полного чайника
СообщениеДобавлено: Ср ноя 14, 2018 21:45:06 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6619
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
там есть целая серия программаторов - клонов USBasp'а, раньше они отличались прошивкой (по железу были одинаковы), но сейчас, слышал, китайцы делают с выводами от других ног и широко распространенные под них прошивки не работают — приходится править схему... как проверить не покупая - не знаю. я себе спаял сам, там деталей около десятка...
—————
а с электрникой как? понимание откуда берутся помехи, как правильно подготовить сигнал для мк и как наоборот, заставить чтото работать по команде программы, тоже целая наука

Добавлено after 4 minutes 4 seconds:
если написано усбасп - значит скорее всего оно. на первых порах пойдет, а там сорентируешься...

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программатор с Aliexpress для полного чайника
СообщениеДобавлено: Ср ноя 14, 2018 23:09:13 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 157
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3328
Рейтинг сообщения: 0
AAX писал(а):
В случае с атмеловскими микроконтроллерами отладчиком является atmel ice, китайские клоны продаются от $4.
Сколько AVRов поддерживают JTAG? Всего несколько - ATmega16, ATmega32, ATmega64, ATmega128, ATmega2560 и все. Вряд ли отладчик вообще понадобится. В современных МК, к которым 8-ми битные PIC и AVR не относятся, отладка поддерживается во всех моделях МК и стоят они недорого.

Ivanoff-iv писал(а):
начать изучение АВР я бы посоветовал с тини 2313 — бошьшое количество ног позволяет делать отладку прицепив кнопки или светодиоды к ногам микросхемы
20 выводов это много? :)))
Отладка светодиодами? :))) Видимо ни разу не использовали нормальную аппаратную отладку, раз предлагаете такую ерунду. Детский лепет какой-то!

Ivanoff-iv писал(а):
а относительно неболшое количество периферии позволит не запутаться в ней
Ну да, это тот случай когда недостаток выдают за достоинство, :facepalm: а то что за туже цену можно купить гораздо более лучший МК, это ничего не значит? Зачем тратить много и получать мало? :)))

_deep_ писал(а):
В ассемблере самое сложное писал модуль - обработчик событий от LPT порта для подключения кнопок.
Зачем это было писать на асме? Разве бейсик не позволял это делать? Скажу по секрету, на бейсике можно написать драйвер для LPT порта под Windows. Где-то даже был пример обработки прерывания от LPT порта, естественно в драйвере и работало на Windows XP, 7 и др. системах.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программатор с Aliexpress для полного чайника
СообщениеДобавлено: Ср ноя 14, 2018 23:42:38 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Мурик писал(а):
Ну да, это тот случай когда недостаток выдают за достоинство,
Не забывайте, что речь идёт об изучении начинающего. А для такого случая, простота периферии - достоинство.

Мурик писал(а):
Скажу по секрету, на бейсике можно написать драйвер для LPT порта под Windows.
На сколько я знаю, винда просто не даст обращаться к регистрам порта напрямую, только через API. По этому написать собственный нормальный драйвер вряд ли получится.
Возможно, я ошибаюсь...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программатор с Aliexpress для полного чайника
СообщениеДобавлено: Чт ноя 15, 2018 00:06:11 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 3
На сколько я знаю, винда просто не даст обращаться к регистрам порта напрямую, только через API. По этому написать собственный нормальный драйвер вряд ли получится.

Винда не дает, но это легко обходится, так, например. Правда без прерываний, но я когда-то так программатор писал на C#.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программатор с Aliexpress для полного чайника
СообщениеДобавлено: Чт ноя 15, 2018 00:30:27 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Да, помню эту dll-ку, юзал её когда писал ещё на VB (лет эдак 15 назад :roll: ).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программатор с Aliexpress для полного чайника
СообщениеДобавлено: Чт ноя 15, 2018 08:50:26 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 41
Рейтинг сообщений: 1209
Зарегистрирован: Ср фев 23, 2011 12:12:31
Сообщений: 2352
Рейтинг сообщения: 2
Медали: 1
Получил миской по аватаре (1)
для такого случая, простота периферии - достоинство.

А потом придётся переучиваться... может тогда сразу что то более перспективное?
Старички сидят на аврках с пиками, ибо знают их и зачем им переходить, вроде хватает...
А если с нуля начинать... может и правда стоит что то из арм. На будущее так сказать.

_________________
Глупый не задает вопросы. Глупый и так все знает.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программатор с Aliexpress для полного чайника
СообщениеДобавлено: Чт ноя 15, 2018 09:41:24 
Открыл глаза
Аватар пользователя

Карма: 4
Рейтинг сообщений: 6
Зарегистрирован: Вс апр 15, 2012 23:29:00
Сообщений: 54
Откуда: Воронеж
Рейтинг сообщения: 0
Аlex писал(а):
Да, помню эту dll-ку, юзал её когда писал ещё на VB (лет эдак 15 назад ).

К Win7 x64 прикрутить это у меня её не вышло. Но тут может быть дело в кривых руках.

Аlex писал(а):
А если с нуля начинать... может и правда стоит что то из арм. На будущее так сказать.

Новичку ARM???
Чтобы сразу отбить желание? Для начала работы с ними нужен определенный опыт с более простыми МК.
Я ТАК ДУМАЮ. :tea:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программатор с Aliexpress для полного чайника
СообщениеДобавлено: Чт ноя 15, 2018 10:08:31 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6619
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
изначально ТС'ом было сказано про "АВР" и "не ардуино"...

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программатор с Aliexpress для полного чайника
СообщениеДобавлено: Чт ноя 15, 2018 12:51:58 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 157
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3328
Рейтинг сообщения: 0
Аlex писал(а):
Не забывайте, что речь идёт об изучении начинающего. А для такого случая, простота периферии - достоинство.
Не скажу что чем больше периферии тем сложнее с ней работать. Уровень сложности примерно одинаков так что... :)

Аlex писал(а):
На сколько я знаю, винда просто не даст обращаться к регистрам порта напрямую, только через API. По этому написать собственный нормальный драйвер вряд ли получится.
Так я и писал выше о разработке драйвера LPT порта. :) http://www.cyberforum.ru/blogs/204791/blog3078.html
Приведу пару примеров (код на бейсике).
Драйвер сообщающий приложению о прерываниях LPT порта (PB_5.11_x86_DriverPack_v2.2.zip\Examples\Driver\Advanced\Interruption\LPT\Driver\LPT_Interrupt.pb).
Спойлер
Код:
; Сделано по материалам сайта http://www.kernelchip.ru/pcports/PS024.php
; http://www.kernelchip.ru/pcports/PS025.php

Declare DriverEntry(*DriverObject, *RegistryPath)

*Point=@DriverEntry()
!jmp [p_Point]
 
IncludePath #PB_Compiler_Home+"DDK\"
XIncludeFile "ntddk.pbi"
XIncludeFile "ntstatus.pbi"
XIncludeFile "ntfunct.pbi"

EnableExplicit

#PortAddress = $378
#CONTROL     = #PortAddress+2
#IOCTL_hEvent = $200

Structure LOCAL_DEVICE_INFO Align #PB_Structure_AlignC
  *InterruptObject.KINTERRUPT
  Level.l
  Vector.l
  Affinity.KAFFINITY
  *pEventObject.KEVENT
EndStructure


Procedure Isr(*Interrupt.KINTERRUPT, *Context)
  Protected *DeviceObject.DEVICE_OBJECT = *Context
  IoRequestDpc(*DeviceObject, *DeviceObject\CurrentIrp, #Null)
  ProcedureReturn #True
EndProcedure

Procedure DpcRoutine(*Dpc.KDPC, *DeviceObject.DEVICE_OBJECT, *IrpIRP, *Context)
  Protected *DeviceExtension.LOCAL_DEVICE_INFO, *pIrp.IRP
 
  *pIrp = *DeviceObject\CurrentIrp
  *DeviceExtension = *DeviceObject\DeviceExtension
 
  WRITE_PORT_UCHAR(#PortAddress, 0)
  WRITE_PORT_UCHAR(#PortAddress, 60)
 
  If *DeviceExtension\pEventObject
    KeSetEvent(*DeviceExtension\pEventObject, 0, #False);
  EndIf
 
  ProcedureReturn 0
EndProcedure

Procedure DeviceIoControl(*DeviceObject.DEVICE_OBJECT, *pIrp.IRP)
  Protected ntStatus, *Stack.IO_STACK_LOCATION
  Protected inBuffersize, hEvent,  *DeviceExtension.LOCAL_DEVICE_INFO
 
  *Stack = IoGetCurrentIrpStackLocation(*pIrp)
 
  inBuffersize = *Stack\Parameters\DeviceIoControl\InputBufferLength
   
  ntStatus = #STATUS_SUCCESS
 
  If *pIrp\SystemBuffer And inBuffersize>=4
   
    Select *Stack\Parameters\DeviceIoControl\IoControlCode
      Case #IOCTL_hEvent
        hEvent = PeekL(*pIrp\SystemBuffer)
        If hEvent
          *DeviceExtension = *DeviceObject\DeviceExtension
          If *DeviceExtension\pEventObject
            ObDereferenceObject(*DeviceExtension\pEventObject)
            *DeviceExtension\pEventObject=0
          EndIf
          ObReferenceObjectByHandle(hEvent, #SYNCHRONIZE, #Null, #UserMode, @*DeviceExtension\pEventObject, #Null)
        EndIf
      Default
        ntStatus = #STATUS_UNSUCCESSFUL
    EndSelect
   
  Else
    ntStatus = #STATUS_BUFFER_TOO_SMALL
  EndIf
 
  *pIrp\IoStatus\Information = 0
  *pIrp\IoStatus\Status = ntStatus
  IoCompleteRequest(*pIrp, #IO_NO_INCREMENT)
 
  ProcedureReturn ntStatus
EndProcedure

Procedure CreateDispatch(*DeviceObject.DEVICE_OBJECT, *Irp.IRP)
  *Irp\IoStatus\Information = 0
  *Irp\IoStatus\Status = #STATUS_SUCCESS
  IoCompleteRequest(*Irp, #IO_NO_INCREMENT)
  ProcedureReturn #STATUS_SUCCESS
EndProcedure

Procedure DriverUnload(*DriverObject.DRIVER_OBJECT)
  Protected uniDOSString.UNICODE_STRING
  Protected *Extension.LOCAL_DEVICE_INFO = *DriverObject\DeviceObject\DeviceExtension
 
  ; Disable Parallel Port IRQ's
  WRITE_PORT_UCHAR(#CONTROL, READ_PORT_UCHAR(#CONTROL) & $EF)
 
  ; Disconnect Interrupt
  IoDisconnectInterrupt(*Extension\InterruptObject)
 
  If *Extension\pEventObject
    ObDereferenceObject(*Extension\pEventObject)
    *Extension\pEventObject=0
  EndIf
 
  ; Delete Symbolic Link
  RtlInitUnicodeString(@uniDOSString, ?DosDevices)
  IoDeleteSymbolicLink (@uniDOSString)
 
  ; Delete Device
  IoDeleteDevice(*DriverObject\DeviceObject)
 
  DbgPrint("Unload Driver")
  !CALL _PB_EOP ; Освобождение ресурсов.
 
EndProcedure

Procedure DriverEntry(*DriverObject.DRIVER_OBJECT, *RegistryPath.UNICODE_STRING)
  Protected *DeviceObject.DEVICE_OBJECT, *DeviceExtension.LOCAL_DEVICE_INFO
  Protected MappedVector.l, Irql.KIRQL, EventHandle.l, Status.i
  Protected.UNICODE_STRING uniNameString, uniDOSString, EventName
 
  SetPoolMode(#Pool_Auto)    ; Автоматический выбор типа памяти в зависимости от IRQL.
 
  DbgPrint("Load Driver")
 
  RtlInitUnicodeString(@uniNameString, ?Device)
  RtlInitUnicodeString(@uniDOSString, ?DosDevices)
 
  Status = IoCreateDevice(*DriverObject,SizeOf(LOCAL_DEVICE_INFO),@uniNameString,
                          #FILE_DEVICE_UNKNOWN,0,#True,@*DeviceObject)
 
  If Status = #STATUS_SUCCESS
   
    *DeviceExtension = *DeviceObject\DeviceExtension
    Status = IoCreateSymbolicLink(@uniDOSString, @uniNameString);
   
    If Status = #STATUS_SUCCESS
      *DeviceExtension\Level  = 7
      *DeviceExtension\Vector = *DeviceExtension\Level
     
      MappedVector = HalGetInterruptVector(#Isa,0,*DeviceExtension\Level,
                                           *DeviceExtension\Vector,@Irql,
                                           @*DeviceExtension\Affinity)
     
      IoInitializeDpcRequest(*DeviceObject, @DpcRoutine())
     
      Status = IoConnectInterrupt(@*DeviceExtension\InterruptObject,@Isr(),
                                  *DeviceObject,#Null,MappedVector,Irql,Irql,
                                  #Latched,#False,*DeviceExtension\Affinity,#False)
     
      If Status = #STATUS_SUCCESS
       
        ; Enable Parallel Port IRQ's
        WRITE_PORT_UCHAR(#CONTROL, READ_PORT_UCHAR(#CONTROL) | $10)
       
        *DriverObject\MajorFunction[#IRP_MJ_CREATE] = @CreateDispatch()
        *DriverObject\MajorFunction[#IRP_MJ_CLOSE]  = @CreateDispatch()
        *DriverObject\MajorFunction[#IRP_MJ_DEVICE_CONTROL] = @DeviceIoControl()
        *DriverObject\DriverUnload = @DriverUnload()
       
        RtlInitUnicodeString(@EventName, ?Event)
        *DeviceExtension\pEventObject = 0
       
      EndIf
    EndIf
  EndIf
 
  ProcedureReturn Status
EndProcedure

DataSection
  Device:
  !du '\Device\pbIntLPT', 0, 0
 
  DosDevices:
  !du '\DosDevices\pbIntLPT', 0, 0
 
  Event:
  !du '\BaseNamedObjects\SignalEventLPT', 0, 0
EndDataSection
     

Аналог InpOut32 с поддержкой x86 и x64 систем. Последний нужно подписать, хотя бы тестовой подписью, иначе система его не загрузит. (PB_5.11_x86_DriverPack_v2.2.zip\Examples\Driver\Advanced\DriverIO x86 x64\Source\Driver\).
Спойлер
Код:
Declare DriverEntry(*DriverObject, *RegistryPath)

*A=@DriverEntry()
!jmp [p_A]

IncludePath #PB_Compiler_Home+"DDK\"
XIncludeFile "ntddk.pbi"
XIncludeFile "ntstatus.pbi"
XIncludeFile "ntfunct.pbi"

#IOCTL_READ_PORT_UCHAR    = $200
#IOCTL_WRITE_PORT_UCHAR    = $400



; Прямая запись в порт.
Procedure.b InPort(Port.u)
  Protected Result.b=0
  EnableASM
  MOV DX, Port
  IN  al,DX
  MOV Result, al
  DisableASM
  ProcedureReturn Result
EndProcedure

; Прямое чтение из порта.
Procedure OutPort(Port.u, Byte.a)
  EnableASM
  MOV al, Byte
  MOV DX, Port
  OUT DX, al
  DisableASM
EndProcedure


Procedure DeviceIoControl(*DeviceObject.DEVICE_OBJECT, *pIrp.IRP)
  Protected ntStatus, *Point, *Stack.IO_STACK_LOCATION
 
  *Stack = *pIrp\Tail\Overlay\CurrentStackLocation
 
  inBuffersize = *Stack\Parameters\DeviceIoControl\InputBufferLength
  outBuffersize = *Stack\Parameters\DeviceIoControl\OutputBufferLength
 
  CtrlBuff   = PeekI(*pIrp\SystemBuffer)
  address = CtrlBuff & $FFFF
  Byte.a    = (CtrlBuff>>16)&255
 
  Code = *Stack\Parameters\DeviceIoControl\IoControlCode
 
  ntStatus = #STATUS_SUCCESS
 
  Select Code
    Case #IOCTL_READ_PORT_UCHAR
      InByte.b=InPort(address)
      PokeB(*pIrp\SystemBuffer, InByte)
      *pIrp\IoStatus\Information = 1
     
    Case #IOCTL_WRITE_PORT_UCHAR
      OutPort(address, Byte)
      *pIrp\IoStatus\Information = 0
     
    Default
      ntStatus = #STATUS_UNSUCCESSFUL
      *pIrp\IoStatus\Information = 0
  EndSelect
 
 
  *pIrp\IoStatus\Status = ntStatus
  IoCompleteRequest(*pIrp, #IO_NO_INCREMENT)
 
  ProcedureReturn ntStatus
EndProcedure

Procedure CreateDispatch(*DeviceObject.DEVICE_OBJECT, *pIrp.IRP)
  *pIrp\IoStatus\Information = 0
  *pIrp\IoStatus\Status = #STATUS_SUCCESS
  IoCompleteRequest(*pIrp, #IO_NO_INCREMENT)
  ProcedureReturn #STATUS_SUCCESS
EndProcedure

Procedure UnloadDriver(*DriverObject.DRIVER_OBJECT)
  Protected uniDOSString.UNICODE_STRING
  RtlInitUnicodeString(@uniDOSString, ?DosDevices)
  IoDeleteSymbolicLink (@uniDOSString)
  IoDeleteDevice(*DriverObject\DeviceObject)
  !CALL _PB_EOP ; Освобождение ресурсов.
EndProcedure


Procedure DriverEntry(*DriverObject.DRIVER_OBJECT, *RegistryPath.UNICODE_STRING)
  Protected deviceObject.DEVICE_OBJECT
  Protected uniNameString.UNICODE_STRING
  Protected uniDOSString.UNICODE_STRING
  RtlInitUnicodeString(@uniNameString, ?Device)
  RtlInitUnicodeString(@uniDOSString, ?DosDevices)
  status = IoCreateDevice(*DriverObject, 0, @uniNameString, #FILE_DEVICE_UNKNOWN, 0, #False, @deviceObject)
  If status <> #STATUS_SUCCESS
    ProcedureReturn status
  EndIf
 
  status = IoCreateSymbolicLink(@uniDOSString, @uniNameString)
  If status <> #STATUS_SUCCESS
    IoDeleteDevice(@deviceObject) ; Мы должны сами убирать "хвосты" в режиме ядра!
    ProcedureReturn status
  EndIf
 
  *DriverObject\DriverUnload = @UnloadDriver()
 
  *DriverObject\MajorFunction[#IRP_MJ_CREATE] = @CreateDispatch()
  *DriverObject\MajorFunction[#IRP_MJ_DEVICE_CONTROL] = @DeviceIoControl()
 
  ProcedureReturn #STATUS_SUCCESS
EndProcedure



;
DataSection
  CompilerSelect #PB_Compiler_Processor
    CompilerCase #PB_Processor_x86
      Device:
      !du &#39;\Device\pbdriverio&#39;, 0, 0
     
      DosDevices:
      !du &#39;\DosDevices\pbdriverio&#39;, 0, 0
    CompilerCase #PB_Processor_x64
      Device:
      !du &#39;\Device\pbdriverio_x64&#39;, 0, 0
     
      DosDevices:
      !du &#39;\DosDevices\pbdriverio_x64&#39;, 0, 0
  CompilerEndSelect
EndDataSection


AndTer писал(а):
А если с нуля начинать... может и правда стоит что то из арм. На будущее так сказать.
Соврешенно верно. Современные МК только кажутся сложными, а как начнешь изучать выясняется что они довольно простые.

Repytw писал(а):
К Win7 x64 прикрутить это у меня её не вышло.
Нужен драйвер для x64 и с цифровой подписью. :)

Repytw писал(а):
Новичку ARM??? Чтобы сразу отбить желание?
А вы пробовали? :) Или не глядя осуждаете? :))) :facepalm:
Небольшой пример содержащий настройку выхода PC13, конфигурацию таймера на 2 прерывания в секунду и их обработку с инвертированием выхода PC13.
Очень сложный код? Он написан с применением библиотеки SPL. Тоже можно сделать на регистрах и получится как в PIC или AVR.
Спойлер
Код:
#include "stm32f10x_conf.h"

extern uint32_t SystemCoreClock;   // В переменной хранится текущая частота ядра МК.

void TIM2_IRQHandler(void) // Функция обработки прерывания от TIM2.
{
    // Прерывание по переполнению таймера.
    if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
    {
        TIM_ClearITPendingBit(TIM2, TIM_IT_Update); // Сброс флага прерывания.
        GPIOC->ODR ^= GPIO_Pin_13;                  // Инвертирование вывода PC13.
    }
}


void Init(void) // Инициализация периферии.
{
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);   // Включение тактирования таймера
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);  // и порта GPIOC.

    // Настройка порта в/в PC13.
    GPIO_InitTypeDef gpio;

    gpio.GPIO_Pin = GPIO_Pin_13;        // Пин 13.
    gpio.GPIO_Mode = GPIO_Mode_Out_PP;  // Выход типа push-pull.
    gpio.GPIO_Speed = GPIO_Speed_50MHz; // Предельная частота выхода.

    GPIO_Init(GPIOC, &gpio);            // Конфигурация GPIOC.


    // Настройка таймера.
    TIM_TimeBaseInitTypeDef Tim;
    TIM_TimeBaseStructInit(&Tim);              // Настройки таймера по умолчанию.

    Tim.TIM_Prescaler = SystemCoreClock / 10000 - 1; // Настройка предделителся чтобы получить частоту 10 КГц.
    Tim.TIM_Period    = 5000 - 1;              // Таймер будет переполняться 10000 / 5000 = 2 раза в секунду.

    TIM_TimeBaseInit(TIM2, &Tim);              // Инициализация таймера TIM2 с заданными настройками.

    TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); // Разрешение прерываний по переполнению.
    NVIC_EnableIRQ(TIM2_IRQn);                 // Разрешение прерываний от таймера.

    TIM_Cmd(TIM2, ENABLE);                     // Запуск таймера.
}


int main(void)
{
    SystemCoreClockUpdate(); // Вычисление текущей частоты ядра.
    Init();                  // Инициализация периферии.

    while(1)
    {
    }
}
Код для такой платы (используется светодиод на ней).
СпойлерИзображение

Ivanoff-iv писал(а):
изначально ТС'ом было сказано про "АВР" и "не ардуино"
Может он про другие МК ничего не знает. Зачем изучать устаревшие технологии? Это в дальнейшем вызовет трудности из-за нехватки ресурсов платформы и придется переучиваться. :dont_know: Зачем зря тратить время на то что устарело? :dont_know:


Вложения:
TimBlink.7z [173.08 KiB]
Скачиваний: 314
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программатор с Aliexpress для полного чайника
СообщениеДобавлено: Чт ноя 15, 2018 14:28:57 
Вымогатель припоя

Карма: 9
Рейтинг сообщений: 155
Зарегистрирован: Сб ноя 16, 2013 23:34:34
Сообщений: 671
Рейтинг сообщения: 0
AAX писал(а):
В случае с атмеловскими микроконтроллерами отладчиком является atmel ice, китайские клоны продаются от $4.
Сколько AVRов поддерживают JTAG?
Atmel Ice поддерживает debugWire и oneWire, что существенно расширяет диапазон процессоров, с которыми возможна отладка.
По поводу того, "что лучше учить с нуля - ARM или AVR?" - имхо однозначно 8-ми битный AVR. Наверное, чтобы в CubeMX наговнять быстренько прошивку, и отдать заказчику - ARM очень хорош для начинающего ;) Но если цель стоит разобраться с тем, как работает процессор _внутри_, так сказать... У меня есть опыт "разборок" с STM32. По приколу тоже, не для работы. Причём я программист, и AVR на тот момент освоил достаточно неплохо. Получается, что либо ты используешь HAL или, прости Господи, CubeMX - тогда у тебя тонна книг, примеров, и т.д. Но нулевое понимание того, как работает проц внутри. Либо вдумчивое чтение 100500-страничной документации производителя от корки до корки.
Плюс собирать софт из чужих "кубиков" мне лично не нравится, т.к. всё, что написано не мной, написано неправильно :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программатор с Aliexpress для полного чайника
СообщениеДобавлено: Чт ноя 15, 2018 14:52:05 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 157
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3328
Рейтинг сообщения: 0
AAX писал(а):
AAX писал(а):
В случае с атмеловскими микроконтроллерами отладчиком является atmel ice, китайские клоны продаются от $4.
Сколько AVRов поддерживают JTAG?
Atmel Ice поддерживает debugWire
Китайские за 4$ тоже поддерживают или нужно покупать фирменный? В вики читали какие ограничения у debugWire?
Спойлер
Цитата:
Программные точки останова формируются с помощью входящей в систему команд AVR команды Break. Интегрированная среда разработки обеспечивает сохранение оригинальной команды, заменяемой Break в памяти настольного компьютера, с последующим её восстановлением и продолжением исполнения программы. Таким образом использование программных точек останова тратит ограниченный ресурс данных микроконтроллеров — максимально возможное количество циклов записи стирания программной памяти. Нужно следить, чтобы отладчик не израсходовал его полностью.

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

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

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

AAX писал(а):
Но если цель стоит разобраться с тем, как работает процессор _внутри_, так сказать...
Представьте что кто-то хочет научится писать для компа или телефона. Он должен начинать с подробного изучения работы процессора?
Прочитайте Мартина. https://sunduk.radiokot.ru/loadfile/?load_id=1373389648
Он неплохо написал о STM32 и о ARM Cortex-M процессоре.

AAX писал(а):
Получается, что либо ты используешь HAL или, прости Господи, CubeMX - тогда у тебя тонна книг, примеров, и т.д.
Выше я выкладывал пример без HAL. На уровне регистров STM32 такой же как PIC и AVR. Разве что регистры собраны в группы и находяться в одном адресном пространстве с флешем и ОЗУ, что даже удобнее.

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

AAX писал(а):
Либо вдумчивое чтение 100500-страничной документации производителя от корки до корки.
Слабо верится в то что вы пробовали что-то писать для STM32. То что вы написали даже близко не соответствует реальности. Еще скажите что писали на асме для STM32, компилировали с помощью makefile и даже не знаете как пользоваться отладчиком?

AAX писал(а):
Плюс собирать софт из чужих "кубиков" мне лично не нравится, т.к. всё, что написано не мной, написано неправильно :)
Автомобиль, комп, смартфон сами с нуля разработали и сделали? Дом сами построили с нуля без чьей либо помощи и не используя ничего готового?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программатор с Aliexpress для полного чайника
СообщениеДобавлено: Чт ноя 15, 2018 15:19:22 
Вымогатель припоя

Карма: 9
Рейтинг сообщений: 155
Зарегистрирован: Сб ноя 16, 2013 23:34:34
Сообщений: 671
Рейтинг сообщения: 1
Atmel Ice позволяет прекрасно отлаживать код на tiny24. DebugWire прекрасно позволил мне разобраться с работой МК AVR, большое ему за это спасибо. Ресурс флеша - да хрен с ним, кстати, ни одного МК "до дыр" не затёр :)
Представьте что кто-то хочет научится писать для компа или телефона. Он должен начинать с подробного изучения работы процессора?
Конечно! Иначе это не программист, а хрен пойми, что... Если Вы думаете, что это моё предвзятое мнение - посмотрите программу обучения любого специализированного вуза.
Выше я выкладывал пример без HAL.
но с SPL?
И еще, разве вы не знаете что CubeMX использует HAL и ваше высказывание мягко говоря абсурдно.
где же тут абсурд? Это абстракция от абстракции. На два уровня дальше от реально происходящего в процессоре.
Слабо верится в то что вы пробовали что-то писать для STM32. То что вы написали даже близко не соответствует реальности. Еще скажите что писали на асме для STM32, компилировали с помощью makefile и даже не знаете как пользоваться отладчиком?
смысл этого потока сознания я не понял. Но верить Вы можете во что хотите, у нас свободная страна ;)
Автомобиль, комп, смартфон сами с нуля разработали и сделали? Дом сами построили с нуля без чьей либо помощи и не используя ничего готового?
Если бы я был инженером-конструктором в перечисленных Вами областях, наверное, тоже избегал бы черезмерного использования чужих наработок. Из практики - мне проще самому починить смартфон, комп, автомобиль или дом, чем обращаться к т.н. "специалистам". 80% из них, так же, как и Вы, не считают необходимым осваивать базовые знания по своему предмету. Со всеми вытекающими...


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 61 ]  1, , ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y