Форум по микроконтроллерам: Регулятор мощности для паяльника на PIC16F628A - Форум по микроконтроллерам

Перейти к содержимому

  • 2 Страниц +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Регулятор мощности для паяльника на PIC16F628A Изменить прошивку PIC

#1 Гость_obuhus_*

  • Группа: Гости

Отправлено 12 Ноябрь 2016 - 10:17

Доброго дня и здоровья всем.
Прошу помочь изменить прошивку процессора вот из этого описания http://chipmk.ru/index.php/8-bytovye-pribory/100-regulyator-moshchnosti-dlya-payalnika-na-pic16f628a
Сам в программировании процессоров не силен - языков не знаю. Греть буду не паяльник, но нагреватель.
Задача:
1. Убрать 2х минутный разогрев при включении. Сразу на установленную мощность.
2. Регулировка через 5% от 100% до 30%. Ниже уже не нужно.

Заранее благодарен отозвавшимся на призыв.
Дмитрий.

#2 Гость_boatcall_*

  • Группа: Гости

Отправлено 12 Ноябрь 2016 - 15:14

Просмотр сообщенияobuhus (12 Ноябрь 2016 - 10:17) писал:

Доброго дня и здоровья всем.
Прошу помочь изменить прошивку процессора вот из этого описания http://chipmk.ru/index.php/8-bytovye-pribory/100-regulyator-moshchnosti-dlya-payalnika-na-pic16f628a
Сам в программировании процессоров не силен - языков не знаю. Греть буду не паяльник, но нагреватель.
Задача:
1. Убрать 2х минутный разогрев при включении. Сразу на установленную мощность.
2. Регулировка через 5% от 100% до 30%. Ниже уже не нужно.

Заранее благодарен отозвавшимся на призыв.
Дмитрий.

А чем помочь-то? Для повторения данного уё..ща ищите аффтара. Там уникальный авторский код, настолько секретный, что исходников не дают, только hex-ы, что уже косвенно говорит о качестве кода, равно, как и фраза "Схема, детали и их номиналы подбирались экспериментально и из того, что было под рукой.". Т.е. даже что-то подбиралось, хотя что там побирать...всё сделано один хрен через ж. От пионера пионеру, короче, конструкция, в худшем смысле. :D Руки нужно отрывать за такие публикации, причем не автору, а выпускающему редактору.

Сообщение отредактировал boatcall: 12 Ноябрь 2016 - 15:17


#3 Гость_mf323_*

  • Группа: Гости

Отправлено 12 Ноябрь 2016 - 17:26

Просмотр сообщенияboatcall (12 Ноябрь 2016 - 15:14) писал:

А чем помочь-то? Для повторения данного уё..ща ищите аффтара...


Не совсем понятен смысл сего негодования. Может я что-то упустил, но честно говоря, не понимаю в чем проблема то, вроде и схема есть, и код выложили, полный набор, для многих, думаю, такое устройство будет интересно повторить, разве нет?
Посмотрел код, думал сейчас по-быстрому найду 2-ух минутную задержку итд, но не тут то было, возможно источник такта на прерывания "инт", но я их не имитировал. Всё, что мне удалось по-быстрому понять, так это то, что постоянно идут прерывания по 1мс от тмр2, каждые 20мс опрос кнопок в основном цикле и какие-то проверки, в прерываниях по "инт" предзагружается тмр1 и включаются прерывания от него. Чтоб разобраться полностью, нужно уже время под это дело выделять. Но сам код интересен, правда не хватает универсальности, например чтобы эта самая задержка была настраиваемой (и эта тема уже не возникла бы), ввести какой-нибудь таймаут (включаемый/отключаемый) на отключение (тоже настраиваемый) итд, тем более что памяти всего на 25% израсходовано, там ещё писать и писать можно.

Сообщение отредактировал mf323: 12 Ноябрь 2016 - 17:28


#4 Гость_boatcall_*

  • Группа: Гости

Отправлено 14 Ноябрь 2016 - 08:44

Просмотр сообщенияmf323 (12 Ноябрь 2016 - 17:26) писал:

Не совсем понятен смысл сего негодования. Может я что-то упустил, но честно говоря, не понимаю в чем проблема то, вроде и схема есть, и код выложили, полный набор, для многих, думаю, такое устройство будет интересно повторить, разве нет?
Посмотрел код, думал сейчас по-быстрому найду 2-ух минутную задержку итд, но не тут то было, возможно источник такта на прерывания "инт", но я их не имитировал. Всё, что мне удалось по-быстрому понять, так это то, что постоянно идут прерывания по 1мс от тмр2, каждые 20мс опрос кнопок в основном цикле и какие-то проверки, в прерываниях по "инт" предзагружается тмр1 и включаются прерывания от него. Чтоб разобраться полностью, нужно уже время под это дело выделять. Но сам код интересен, правда не хватает универсальности, например чтобы эта самая задержка была настраиваемой (и эта тема уже не возникла бы), ввести какой-нибудь таймаут (включаемый/отключаемый) на отключение (тоже настраиваемый) итд, тем более что памяти всего на 25% израсходовано, там ещё писать и писать можно.


А с чего Вы взяли, что я негодовал? Кода, я слава богу, не видел, в тот раздел меня не пускают, зато видел принципиальную схему и фото макета, из чего и назвал эту поделку уе..щем. Если автор устройства считает возможным подключать LED-индикатор напрямую, без токоограничивающих резисторов, если лепит MOC c детектором нуля, хотя этот ноль ловит через оптрон, то значит автор плохо разбирается в том, что потом ещё и рекомендует кому-то и лично меня его программа не интересует. Вы и сами подтвердили, что разобираясь с ней испытывали затруднения. Если кому-то интересно это повторить, то пусть повторяют, кто-ж против, просто после повторения подобных поделий и появляются специалисты, которые потом утверждают, что резисторы в данном случае лишние, а PIC легко работает и так, к тому-же от 9в с резонатором на 25MHz. :) Когда я собирал подобное, я взял AN958 от Microchip, а не подобный хлам, который заслуживает лишь публикации в журнале "Коневодство" "Радио". :)

#5 Пользователь офлайн   MAZ 

  • Консерватор - до мозга костей и суставов
  • Группа: Администраторы
  • Сообщений: 1 452
  • Регистрация: 15 Февраль 11
  • ГородРоссия

Отправлено 14 Ноябрь 2016 - 18:36

Вы не правы. Автор, очень грамотный человек в схемотехнике, а тем более в разработке программного кода. Лично я не знаю ни одного здесь человека, кто знает больше его. И самое главное. Он еще Человек. Не кичится своими знаниями и всегда готов помочь.
Его попросили написать статью для сайта. Даже в таком виде. В Протеусе токоограничительные резисторы не нужны. И опять Вы знаете как4им способом управляется индикатор? Насчет контроля нуля. На мой взгляд, драйвер только включает симистор в нужное время, при уменьшение напряжения до нуля. А контроль нуля нужен ддя подсчета полуволн. Надо было просто спросить у него.))
Насколько мне известно, сейчас он серьезно занят проектом для нужд промышленности. Освободится , ответит.
Если бы Бог не был консерватором, вместо десяти заповедей мы имели бы десять предложений
0

#6 Пользователь офлайн   Alex 

  • Убиватель МК
  • PipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 902
  • Регистрация: 15 Февраль 11

Отправлено 14 Ноябрь 2016 - 21:29

Просмотр сообщенияmf323 (12 Ноябрь 2016 - 17:26) писал:

Посмотрел код, думал сейчас по-быстрому найду 2-ух минутную задержку итд, но не тут то было
...
static int  cnt_start=120000/100;
...
120000 - это время старта (в миллисек.), при котором вых. мощность равна 99%
Делим на 100, т.к. время декремента переменной = 100 мс. Получается 120 секунд, т.б. 2 минуты.

Если поставить 0, то разогрева при пуске не будет.

Цитата

Автор, очень грамотный человек в схемотехнике, а тем более в разработке программного кода.
Сань, ты мне льстишь :rolleyes:
Не говорите что мне делать, и я не скажу куда Вам идти !
0

#7 Пользователь офлайн   MAZ 

  • Консерватор - до мозга костей и суставов
  • Группа: Администраторы
  • Сообщений: 1 452
  • Регистрация: 15 Февраль 11
  • ГородРоссия

Отправлено 14 Ноябрь 2016 - 22:10

Понял, забыл. Еще и скромный. :drinks:
Если бы Бог не был консерватором, вместо десяти заповедей мы имели бы десять предложений
0

#8 Пользователь офлайн   Alex 

  • Убиватель МК
  • PipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 902
  • Регистрация: 15 Февраль 11

Отправлено 14 Ноябрь 2016 - 22:15

:D
:drinks:
Не говорите что мне делать, и я не скажу куда Вам идти !
0

#9 Гость_mf323_*

  • Группа: Гости

Отправлено 15 Ноябрь 2016 - 00:02

Просмотр сообщенияAlex (14 Ноябрь 2016 - 21:29) писал:


...
static int  cnt_start=120000/100;
...
120000 - это время старта (в миллисек.), при котором вых. мощность равна 99%
Делим на 100, т.к. время декремента переменной = 100 мс. Получается 120 секунд, т.б. 2 минуты.

Если поставить 0, то разогрева при пуске не будет.


Мне только hex достался, так что всё что я видел, это мною дизассемблированный текст.


Некогда было особо глубоко вникать, анализировать этот код, но тем не менее заинтересовал один момент из следующего куска:

Скрытый текст

Что именно происходит в промежутке между этими(ниже) строками и почему сделано именно так?
             CALL         METKA_0x0064
             GOTO         METKA_0x015A


#10 Пользователь офлайн   Alex 

  • Убиватель МК
  • PipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 902
  • Регистрация: 15 Февраль 11

Отправлено 15 Ноябрь 2016 - 00:04

Это СИшный компилятор. Причём, старенький хайтек, без какой-либо оптимизации. Он, бывает, ещё и не такое вытворяет :)
Исходник могу кинуть в личку, если хотите. Но он на Сях :unknw:
Не говорите что мне делать, и я не скажу куда Вам идти !
0

#11 Гость_mf323_*

  • Группа: Гости

Отправлено 15 Ноябрь 2016 - 00:29

си я не знаю.
Я почему-то был уверен, что код писался именно на ассемблере.

Кпримеру, в своих кодах я часто использую вот такую конструкцию, когда надо дублирующий флаг организовать (обычно, чтобы однократно среагировать потом на сам факт изменения)
             BSF          REG_0x30,0
             BTFSC        PORTA,6
             BCF          REG_0x30,0


Но откуда сишный компилятор так умеет делать. Слишком уж чётко для него.

#12 Пользователь офлайн   Alex 

  • Убиватель МК
  • PipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 902
  • Регистрация: 15 Февраль 11

Отправлено 15 Ноябрь 2016 - 00:34

Хм... Обычная конструкция, ничего особенного :unknw:
Почему бы компилятору о ней не знать ? :unsure:

PS: Только аккуратнее с такими конструкциями - они не атомарны !
Не говорите что мне делать, и я не скажу куда Вам идти !
0

#13 Гость_mf323_*

  • Группа: Гости

Отправлено 15 Ноябрь 2016 - 00:52

Что значит "не атомарны". Это как?

Я даже не про то, что компилятор не может это знать, а про то что, а вдруг регистры из разных банков, что он тогда делать будет? Всё-равно прибегнет к такой конструкции, предварительно используя косвенную адресацию или откажется от неё?

#14 Пользователь офлайн   Alex 

  • Убиватель МК
  • PipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 902
  • Регистрация: 15 Февраль 11

Отправлено 15 Ноябрь 2016 - 00:53

А, дак это кнопка опрашивается. Ну да, у меня так и сделано в коде - установка флага -> проверка бита порта -> сброс флага, в соответствии со значением уровня.

Цитата

а вдруг регистры из разных банков
За банками компилятор сам следит.

Цитата

Что значит "не атомарны". Это как?
Это значит, что если во время этой операции, другой поток (например, обработчик прерывания) будет использовать этот же самый ресурс - могут возникнуть неприятности.
Например, в вышеприведённом коде, есть момент, когда значение флага не соответствует действительности.

Но понятие атомарности существует только в использовании разделяемого ресурса в нескольких потоках. Иными словами, такая конструкция не всегда небезопасна. Нужно просто понимать, что ты делаешь :)
Не говорите что мне делать, и я не скажу куда Вам идти !
0

#15 Гость_mf323_*

  • Группа: Гости

Отправлено 15 Ноябрь 2016 - 14:44

Просмотр сообщенияAlex (15 Ноябрь 2016 - 00:53) писал:

Это значит, что если во время этой операции, другой поток (например, обработчик прерывания) будет использовать этот же самый ресурс - могут возникнуть неприятности.
Например, в вышеприведённом коде, есть момент, когда значение флага не соответствует действительности.


Ну, о таких опасностях я то в курсе чисто из своей же практики многочисленных ошибок, когда бывает, например, начинаешь использовать косвенную адресацию в обработчике, но забываешь при входе\выходе добавить сохранение\восстановление fsr; или установить текущую страницу (если программа многостранична), нужный банк (ведь ты можешь прыгнуть из какого-угодно), ну и конечно держу в голове постоянный запрет на исользование в обработчике тех же временных регистров ( в си их вроде называют локальной переменной, если я правильно понимаю), что и в основном цикле. Причём на уровне теории я всё это прекрасно знаю и понимаю, но подобные ошибки всё-равно порой вылазят чисто по невнимательности. То есть, это довольно известная опасность я думаю, и что касается этого самого другого потока, - собственно, применительно к обсуждаемым микроконтроллерам, это только обработчик прерываний и может быть, больше ничего.

#16 Гость_obuhus_*

  • Группа: Гости

Отправлено 17 Ноябрь 2016 - 01:20

Просмотр сообщенияAlex (14 Ноябрь 2016 - 21:29) писал:

...
static int  cnt_start=120000/100;
...
120000 - это время старта (в миллисек.), при котором вых. мощность равна 99%
Делим на 100, т.к. время декремента переменной = 100 мс. Получается 120 секунд, т.б. 2 минуты.

Если поставить 0, то разогрева при пуске не будет.



Очень рад, что столько отзывчивых людей нашлось.
Alex, если не трудно, можно как-то откорректировать исходную прошивку под мои нужды?
Если требуется, готов отомстить материально. Заранее спасибо.

#17 Пользователь офлайн   Alex 

  • Убиватель МК
  • PipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 902
  • Регистрация: 15 Февраль 11

Отправлено 17 Ноябрь 2016 - 01:22

Индикатор какой у Вас (ОК или ОА) ?
Не говорите что мне делать, и я не скажу куда Вам идти !
0

#18 Гость_obuhus_*

  • Группа: Гости

Отправлено 17 Ноябрь 2016 - 01:50

Просмотр сообщенияAlex (17 Ноябрь 2016 - 01:22) писал:

Индикатор какой у Вас (ОК или ОА) ?


Пока никакой. Это вторично. Главное, чтобы работало.
Пытаюсь моделировать в протеусе...

#19 Гость_obuhus_*

  • Группа: Гости

Отправлено 17 Ноябрь 2016 - 01:56

Alex. Должен отметить. Из всех миллионов регуляторов, которые я насобирал в интернете и пробовал моделить в Протеусе, только Ваш сразу заработал адекватно, понятно и наглядно. На мой взгляд это говорит о качестве кода прошивки. Поэтому ещё раз спасибо за текущий проект и с надеждой на помощь в моем... )))

#20 Пользователь офлайн   Alex 

  • Убиватель МК
  • PipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 902
  • Регистрация: 15 Февраль 11

Отправлено 17 Ноябрь 2016 - 01:57

Сейчас сделаем, не переживайте :)
Не говорите что мне делать, и я не скажу куда Вам идти !
0

Поделиться темой:


  • 2 Страниц +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей