|
|
![]() ![]() |
|
![]() ![]() ![]() ![]() |
|
Опции темы | Поиск в этой теме |
![]() ![]() |
![]() ![]() |
![]() Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24
Сообщений: 5759
Сказал(а) спасибо: 340
Поблагодарили: 8159 раз(а) в 2385 сообщениях
|
![]()
Я смотрю как минимум парочка подобных тем уже есть, будет ещё одна
![]() Та же беда, отлаживал свою поделку (не помню уже какую), где требовалось отключать RESET. Из-за чего пришлось на коленке собирать из подручного хлама максимально простой HV-программатор. Благо протокол программирования хорошо расписан в даташите. Т.к. я не хотел заниматься поиском 12V источника питания - решил влепить преобразователь и питать от USB. Первоисточник, там полная помойка после замены движка, так что дублирую тут: Схема: Как видим ничего особо сложного, кроме преобразователя. Сам восстановитель выполнен ввиде переходника между моим программатором и программируемым устройством: Конечно гнездо можно было и аккуратнее выполнить, но я не сразу додумался до такого решения: Это фото я добросовестно скомуниздил у одного знакомого. Вместо LM27313 можно впаять 2731. Должны подойти LM2703 и LM2704. Вот архив со всякой требухой: reanimator.rar Для возможности восстановления через ISP необходимо добавить один штырь на штекере, рядом с пином GND, и подключить его к выводу Sii (у 8-ми лапых МК он рядом с RESET - PB3). В таком случае достаточно вместо программатора подключить реаниматор и подать на него питание всё тем же программатором (использовать как переходник), и он тут же зальёт в МК зашитые в него (всё тем же программатором) фьюзы. Восстановив при этом тактирование, RESET и т.п. Т.е. да, фьюзы нужно предварительно зашить в программу реаниматора, но для разработчиков это не проблема, исходник понятный. Там только пару констант двоичных поменять, они отмечены стрелками. Реаниматор будет три раза в секунду пытаться прошить МК до тех пор, пока не получит положительный результат. Проблемы могут возникать из-за плохого контакта, слишком большой внутрисхемной ёмкости на RESET и VCC МК (десятки микрофарад), из-за неправильного уровня на линиях A0...A2 (читаем даташит, для 8-ми лапок не актуально) во время входа в режим последовательного HV программирования. Светодиод мигает при попытках программирования (3Гц, иначе фьюзы забыли реаниматору прошить), при успешной верификации он начинает просто гореть... В целом я им доволен. Выручает меня и ещё как минимум двоих знакомых, не жалуемся. Я его порядочно мучаю. На надёжный контакт нагло сру, ему по-барабану, один раз подключил Li-ion неправильно - дымок пошел, но он работает по сей день... [Исправлено: INFERION, 07.04.2013 в 18:20] |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
![]() Регистрация: 06.06.2010 Последняя активность: Вчера 17:04
Сообщений: 2012
Сказал(а) спасибо: 697
Поблагодарили: 859 раз(а) в 360 сообщениях
|
![]()
а что за блютуз модуль на фото ?
|
![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |
![]() Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24
Сообщений: 5759
Сказал(а) спасибо: 340
Поблагодарили: 8159 раз(а) в 2385 сообщениях
|
![]()
Если по секрету - дульный беспроводной хронограф на 13-й тиньке. Один товарищ (не без моего участия) практикуется на нём. Осваивает AVR и, собственно, RFM70. Эта штука встраивается в глушитель и транслирует информацию о скорости снаряда на спец. приёмник с дисплеем, отображающий всю статистику и т.п. Батарейки ёмкостью в 50мА*ч должно хватить тысяч на 100 выстрелов. Для пневматики это, огнестрел оно не переживёт там
![]() [Исправлено: INFERION, 07.04.2013 в 20:44] |
![]() |
![]() ![]() |
Поблагодарили: 1 раз |
shurko_3 (07.04.2013)
|
![]() |
![]() ![]() |
![]() Регистрация: 06.06.2010 Последняя активность: Вчера 17:04
Сообщений: 2012
Сказал(а) спасибо: 697
Поблагодарили: 859 раз(а) в 360 сообщениях
|
![]()
давно хотел взять вот такую http://www.fasttech.com/pro... штуку, и прекрутить к фонарю, что бы управление(обмен данными) прямо с телнфона было, но в сфере программирования большой пробел ((
максимум, что смог получить от этой платки, так это беспроводной виртуальный ком порт на компе. |
![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |
|
![]() Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24
Сообщений: 5759
Сказал(а) спасибо: 340
Поблагодарили: 8159 раз(а) в 2385 сообщениях
|
![]()
А куда такой фонарь то нужен? С дистанционным управлением... Народ удивляется как вообще фонарь может столько стоить, и откуда в нём процессор берётся, а тут ещё и чтоб "Wi-Fi раздавал" )). Куда катится мир?..
Bluetooth сам по себе сложен (по крайней мере для меня), для управления железками ото всякие RFM70 за 30грн и удобны. Я после возни с USB напрочь забил на все эти высокоуровневые протоколы и интерфейсы, требующие использования увесистых библиотек. Решил что рано мне пока ещё туда лезть. Интересное мнение автор последнего фото высказал по поводу этого модуля: Цитата:
![]() [Исправлено: INFERION, 07.04.2013 в 22:04] |
|
![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |
![]() Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24
Сообщений: 5759
Сказал(а) спасибо: 340
Поблагодарили: 8159 раз(а) в 2385 сообщениях
|
![]()
Более свежий код:
Код:
;восстановитель фьюзов на ATtiny13. Тактовая 8МГц. .INCLUDE "tn13def.inc" ;Векторы прерываний rjmp RESET rjmp INT_0 .ORG 0x0003 reti .ORG 0x000A ;Конфигурация RESET: ldi R16, 0b10000000 ;Отключить аналоговый компаратор out ACSR, R16 Ldi R16, LOW(RAMEND);инициализация стека out SPL, R16 ldi R16, 0b100011 ;Разрешить Sleep в режиме idle, INT0 на передний фронт out MCUCR, R16 sbi PORTB, 4 ser R16 ;Все порты на выход out DDRB, R16 ser R16 ;Сбросить и остановить предделитель таймера out GTCCR, R16 ldi R16, 0b101 ;Предделитель таймера на 1024 out TCCR0B, R16 ldi R16, 0b00000010 ;Включить over0 out TIMSK0, R16 sei ;Разрешить прерывания ;Программа ;Задержка перед первой командой clr R16 ;Запустить предделитель таймера out GTCCR, R16 sleep ser R16 ;Сбросить и остановить предделитель таймера out GTCCR, R16 ;Вход в режим программирования repeat: cbi PORTB, 1 sbi DDRB, 1 ;PB1 - выход cbi PORTB, 4 ;Включить питание МК и подать 12V на RESET clr R16 ;Запустить предделитель таймера out GTCCR, R16 ; ldi R16, 16 ;Ждём 0,5с pwonlp: sleep ; dec R16 ; brne pwonlp ser R16 ;Сбросить и остановить предделитель таймера out GTCCR, R16 cbi DDRB, 1 ;PB1 - вход sbi PORTB, 1 ;PB1 - подтягивание ;Команды ;R27 - SDO ;R28 - SDI ;R29 - SII ldi R28, 0b10000000 ;Форматирование чипа ldi R29, 0b01001100 rcall spi ;Chip Erase, Instr.1 ldi R28, 0b00000000 ldi R29, 0b01100100 rcall spi ;Chip Erase, Instr.2 ldi R28, 0b00000000 ldi R29, 0b01101100 rcall spi ;Chip Erase, Instr.3 sbic PINB, 1 rjmp error ser R16 ;Убрать флаг INT_0 out GIFR, R16 ldi R16, 0b01000000 ;Включить INT_0 out GIMSK, R16 sleep ldi R28, 0b01000000 ;Запись младшего фьюза ldi R29, 0b01001100 rcall spi ;Write Fuse Low Bits, Instr.1 ldi R28, 0b11100010 ;Fuse Low Bits <------------- ldi R29, 0b00101100 rcall spi ;Write Fuse Low Bits, Instr.2 ldi R28, 0b00000000 ldi R29, 0b01100100 rcall spi ;Write Fuse Low Bits, Instr.3 ldi R28, 0b00000000 ldi R29, 0b01101100 rcall spi ;Write Fuse Low Bits, Instr.4 sbic PINB, 1 rjmp error ser R16 ;Убрать флаг INT_0 out GIFR, R16 ldi R16, 0b01000000 ;Включить INT_0 out GIMSK, R16 sleep ldi R28, 0b00000100 ;Чтение младшего фьюза ldi R29, 0b01001100 rcall spi ;Read Fuse Low Bits, Instr.1 ldi R28, 0b00000000 ldi R29, 0b01101000 rcall spi ;Read Fuse Low Bits, Instr.2 ldi R28, 0b00000000 ldi R29, 0b01101100 rcall spi ;Read Fuse Low Bits, Instr.3 cpi R27, 0b11100010 ;Верификация младшего фьюза brne error ldi R28, 0b01000000 ;Запись старшего фьюза ldi R29, 0b01001100 rcall spi ;Write Fuse High Bits, Instr.1 ldi R28, 0b11010101 ;Fuse High Bits <------------- ldi R29, 0b00101100 rcall spi ;Write Fuse High Bits, Instr.2 ldi R28, 0b00000000 ldi R29, 0b01110100 rcall spi ;Write Fuse High Bits, Instr.3 ldi R28, 0b00000000 ldi R29, 0b01111100 rcall spi ;Write Fuse High Bits, Instr.4 sbic PINB, 1 rjmp error ser R16 ;Убрать флаг INT_0 out GIFR, R16 ldi R16, 0b01000000 ;Включить INT_0 out GIMSK, R16 sleep ldi R28, 0b00000100 ;Чтение старшего фьюза ldi R29, 0b01001100 rcall spi ;Read Fuse High Bits, Instr.1 ldi R28, 0b00000000 ldi R29, 0b01111010 rcall spi ;Read Fuse High Bits, Instr.2 ldi R28, 0b00000000 ldi R29, 0b01111100 rcall spi ;Read Fuse High Bits, Instr.3 cpi R27, 0b11010101 ;Верификация старшего фьюза brne error sbi PORTB, 4 ;Выключить питание (конец работы) loop: sleep rjmp loop ;Внешнее прерывание INT_0: clr R16 ;Выключить INT_0 out GIMSK, R16 ser R16 ;Убрать флаг INT_0 out GIFR, R16 reti ;Перезагрузка при ошибке error: clr R16 ;Запустить предделитель таймера out GTCCR, R16 ldi R16, 7 loope: sleep dec R16 brne loope sbi PORTB, 4 ldi R16, 7 loope1: sleep dec R16 brne loope1 ser R16 ;Сбросить и остановить предделитель таймера out GTCCR, R16 rjmp repeat ;Программный SPI ;0 spi: clr R27 sbi PORTB, 2 rcall delay sbic PINB, 1 ori R27, 0b10000000 cbi PORTB, 2 ;1 sbrc R28, 7 sbi PORTB, 0 sbrc R29, 7 sbi PORTB, 3 rcall delay sbi PORTB, 2 rcall delay sbic PINB, 1 ori R27, 0b01000000 cbi PORTB, 2 cbi PORTB, 0 cbi PORTB, 3 ;2 sbrc R28, 6 sbi PORTB, 0 sbrc R29, 6 sbi PORTB, 3 rcall delay sbi PORTB, 2 rcall delay sbic PINB, 1 ori R27, 0b00100000 cbi PORTB, 2 cbi PORTB, 0 cbi PORTB, 3 ;3 sbrc R28, 5 sbi PORTB, 0 sbrc R29, 5 sbi PORTB, 3 rcall delay sbi PORTB, 2 rcall delay sbic PINB, 1 ori R27, 0b00010000 cbi PORTB, 2 cbi PORTB, 0 cbi PORTB, 3 ;4 sbrc R28, 4 sbi PORTB, 0 sbrc R29, 4 sbi PORTB, 3 rcall delay sbi PORTB, 2 rcall delay sbic PINB, 1 ori R27, 0b00001000 cbi PORTB, 2 cbi PORTB, 0 cbi PORTB, 3 ;5 sbrc R28, 3 sbi PORTB, 0 sbrc R29, 3 sbi PORTB, 3 rcall delay sbi PORTB, 2 rcall delay sbic PINB, 1 ori R27, 0b00000100 cbi PORTB, 2 cbi PORTB, 0 cbi PORTB, 3 ;6 sbrc R28, 2 sbi PORTB, 0 sbrc R29, 2 sbi PORTB, 3 rcall delay sbi PORTB, 2 rcall delay sbic PINB, 1 ori R27, 0b00000010 cbi PORTB, 2 cbi PORTB, 0 cbi PORTB, 3 ;7 sbrc R28, 1 sbi PORTB, 0 sbrc R29, 1 sbi PORTB, 3 rcall delay sbi PORTB, 2 rcall delay sbic PINB, 1 ori R27, 0b00000001 cbi PORTB, 2 cbi PORTB, 0 cbi PORTB, 3 ;8 sbrc R28, 0 sbi PORTB, 0 sbrc R29, 0 sbi PORTB, 3 rcall delay sbi PORTB, 2 rcall delay cbi PORTB, 2 cbi PORTB, 0 cbi PORTB, 3 ;9 rcall delay sbi PORTB, 2 rcall delay cbi PORTB, 2 ;10 rcall delay sbi PORTB, 2 rcall delay cbi PORTB, 2 delay: inc R18 tst R18 brne delay ret test_tn13.hex [Исправлено: INFERION, 23.05.2013 в 07:18] |
![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |
![]() Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24
Сообщений: 5759
Сказал(а) спасибо: 340
Поблагодарили: 8159 раз(а) в 2385 сообщениях
|
![]()
Слепил версию 1.1:
Печатная плата: Восстановитель.lay Силовая часть мощнее, плата симпатичнее, компактнее и что главное - разводка не под зеркальный разъём. Т.е. соответствует этой картинке: ![]() Если появится желание - перепишу программу. Автораспознавалку добавлю. Непонятно только что делать, если сигнатура повреждена. [Исправлено: INFERION, 06.06.2014 в 17:09] |
![]() |
![]() ![]() |