Цифровая паяльная станция своими руками.(V 2.0)
- alcxa
- Это не хвост, это антенна
- Сообщения: 1347
- Зарегистрирован: Ср мар 26, 2014 21:50:55
- Откуда: RF-73 ULN
- Контактная информация:
Re: Цифровая паяльная станция своими руками.(V 2.0)
[uquote="Victor_P.",url="/forum/viewtopic.php?p=4058663#p4058663"]alcxa, все ж есть в мануалке: "Если таймер включен, то на индикаторе в младшем разряде светится точка."
Сейчас проверил работу датчика вибрации (положения), все нормально, точка мигает при смене положения паяльника.[/uquote]Так она горит, при отключенном датчике вибрации, когда включаю, не горит, загорается если паяльник поставить в положение когда датчик замкнут. на старой прошивке с этим же паяльником и силовой платой, все нормально
Сейчас проверил работу датчика вибрации (положения), все нормально, точка мигает при смене положения паяльника.[/uquote]Так она горит, при отключенном датчике вибрации, когда включаю, не горит, загорается если паяльник поставить в положение когда датчик замкнут. на старой прошивке с этим же паяльником и силовой платой, все нормально
- Victor_P.
- Поставщик валерьянки для Кота
- Сообщения: 2168
- Зарегистрирован: Сб окт 10, 2009 10:34:07
- Откуда: Україна, Хорол
Re: Цифровая паяльная станция своими руками.(V 2.0)
У меня только одна мысль для этого случая,- на вход датчика идет какой-то периодический сигнал, который постоянно сбрасывает таймер когда датчик разомкнут.
- alcxa
- Это не хвост, это антенна
- Сообщения: 1347
- Зарегистрирован: Ср мар 26, 2014 21:50:55
- Откуда: RF-73 ULN
- Контактная информация:
Re: Цифровая паяльная станция своими руками.(V 2.0)
[uquote="Victor_P.",url="/forum/viewtopic.php?p=4058676#p4058676"]У меня только одна мысль для этого случая,- на вход датчика идет какой-то периодический сигнал, который постоянно сбрасывает таймер когда датчик разомкнут.[/uquote]Как программно отслеживается вибро? на прерываниях ? (EXT_INT0 или PC_INT0) ?
в старых платах v.1.13 сигнал VRS на порту PB6(INT6), в новых PB0(INT0)
Осциллографом посмотрел = там чисто
Но почему старое ПО работает тогда ?
в старых платах v.1.13 сигнал VRS на порту PB6(INT6), в новых PB0(INT0)
Осциллографом посмотрел = там чисто
Но почему старое ПО работает тогда ?
- Victor_P.
- Поставщик валерьянки для Кота
- Сообщения: 2168
- Зарегистрирован: Сб окт 10, 2009 10:34:07
- Откуда: Україна, Хорол
Re: Цифровая паяльная станция своими руками.(V 2.0)
[uquote="alcxa",url="/forum/viewtopic.php?p=4058729#p4058729"]Как программно отслеживается вибро? на прерываниях ? (EXT_INT0 или PC_INT0) ?[/uquote]Да зачем там прерывание? Сильно жирно для этого. В одном скане с опросом кнопок с периодом 10мс. Состояние изменилось, значит была стработка.
[uquote="alcxa",url="/forum/viewtopic.php?p=4058729#p4058729"]в старых платах v.1.13 сигнал VRS на порту PB6(INT6), в новых PB0(INT0)[/uquote]Мы сейчас о какой прошивке говороим вообще? Я о той, что просил GDN для старых плат, но если туда поставить 168 мегу вместо 8й. Т.е. все порты остались остались старые (для плат 1.13).
[uquote="alcxa",url="/forum/viewtopic.php?p=4058729#p4058729"]в старых платах v.1.13 сигнал VRS на порту PB6(INT6), в новых PB0(INT0)[/uquote]Мы сейчас о какой прошивке говороим вообще? Я о той, что просил GDN для старых плат, но если туда поставить 168 мегу вместо 8й. Т.е. все порты остались остались старые (для плат 1.13).
- alcxa
- Это не хвост, это антенна
- Сообщения: 1347
- Зарегистрирован: Ср мар 26, 2014 21:50:55
- Откуда: RF-73 ULN
- Контактная информация:
Re: Цифровая паяльная станция своими руками.(V 2.0)
именно о той: аппаратная версия 1.13 только мега168
- Victor_P.
- Поставщик валерьянки для Кота
- Сообщения: 2168
- Зарегистрирован: Сб окт 10, 2009 10:34:07
- Откуда: Україна, Хорол
Re: Цифровая паяльная станция своими руками.(V 2.0)
alcxa, тогда мыслей нету. Как вариант можно проверить наличие напряжения на PINB6 без датчика, там включена подтяжка, должна быть единица.
А также попробовать сделать цепь датчика как в более поздних версиях:

Еще можно выбрать режим реакции на датчик 2 или 3, сам датчик отключить, на порт припаять провод. Когда станция заснет тыкнуть этим проводом на землю, должна проснуться. Оставить этот провод на земле, подождать пока опять заснет и отключить от земли, опять должна проснуться.
А также попробовать сделать цепь датчика как в более поздних версиях:
Еще можно выбрать режим реакции на датчик 2 или 3, сам датчик отключить, на порт припаять провод. Когда станция заснет тыкнуть этим проводом на землю, должна проснуться. Оставить этот провод на земле, подождать пока опять заснет и отключить от земли, опять должна проснуться.
- alcxa
- Это не хвост, это антенна
- Сообщения: 1347
- Зарегистрирован: Ср мар 26, 2014 21:50:55
- Откуда: RF-73 ULN
- Контактная информация:
Re: Цифровая паяльная станция своими руками.(V 2.0)
Ставил я с кондером и на 10nF и на 100nF, оставил 100nF = осц там чистая единичка, мысля есть мегу заменить
т.е. я спаял плату управления с 168 мегой и поставил вместо платы с 8мегой, на которой вибро нормально работает
т.е. я спаял плату управления с 168 мегой и поставил вместо платы с 8мегой, на которой вибро нормально работает
Re: Цифровая паяльная станция своими руками.(V 2.0)
[uquote="alcxa",url="/forum/viewtopic.php?p=4058950#p4058950"]спаял плату управления с 168 мегой и поставил вместо платы с 8мегой, на которой вибро нормально работает[/uquote]
Не взаимозаменяемы,- совпадает только распиновка
http://ww1.microchip.com/downloads/en/A ... oc2553.pdf
Не взаимозаменяемы,- совпадает только распиновка
http://ww1.microchip.com/downloads/en/A ... oc2553.pdf
Re: Цифровая паяльная станция своими руками.(V 2.0)
alcxa у тебя датчик подключен отдельным проводом на массу,или общим в ручке.Были у меня подобные загоны когда пытался подключить ручку с четырехпроводным кабелем,поменял на пятипроводной и забыл о этой проблеме навсегда.
- alcxa
- Это не хвост, это антенна
- Сообщения: 1347
- Зарегистрирован: Ср мар 26, 2014 21:50:55
- Откуда: RF-73 ULN
- Контактная информация:
Re: Цифровая паяльная станция своими руками.(V 2.0)
Вот потестил подробнее (силовая аппаратная часть 1.13, меняется только платка управления)
подключил ручку без вибродатчика с тремя проводами (дабы не вытаскивать силовую плату из корпуса и не отпаивать провода), эмуляция датчика пинцетом путем замыкания на землю VRS:
на 168меге (новая прошивка): при включении точка не горит, загорается когда замкнешь и горит пока замкнуто
на 8меге (старая прошивка): при включении точка горит, кратковременно гаснет при замыкании и при размыкании
Раз реакция на замыкание VRS есть - значит порт меги рабочий (да и на 2х мегах проверял) = т.е. проблема программная (может инициализация порта не правильная или где-то в коде физически порт прописан, а не по условию)
подключил ручку без вибродатчика с тремя проводами (дабы не вытаскивать силовую плату из корпуса и не отпаивать провода), эмуляция датчика пинцетом путем замыкания на землю VRS:
на 168меге (новая прошивка): при включении точка не горит, загорается когда замкнешь и горит пока замкнуто
на 8меге (старая прошивка): при включении точка горит, кратковременно гаснет при замыкании и при размыкании
Раз реакция на замыкание VRS есть - значит порт меги рабочий (да и на 2х мегах проверял) = т.е. проблема программная (может инициализация порта не правильная или где-то в коде физически порт прописан, а не по условию)
Re: Цифровая паяльная станция своими руками.(V 2.0)
alcxa все остальное работает корректно,только с датчиком проблема ?
- alcxa
- Это не хвост, это антенна
- Сообщения: 1347
- Зарегистрирован: Ср мар 26, 2014 21:50:55
- Откуда: RF-73 ULN
- Контактная информация:
Re: Цифровая паяльная станция своими руками.(V 2.0)
[uquote="GDN",url="/forum/viewtopic.php?p=4060733#p4060733"]alcxa все остальное работает корректно,только с датчиком проблема ?[/uquote]Я только т12 подключал, паять можно
- alcxa
- Это не хвост, это антенна
- Сообщения: 1347
- Зарегистрирован: Ср мар 26, 2014 21:50:55
- Откуда: RF-73 ULN
- Контактная информация:
Re: Цифровая паяльная станция своими руками.(V 2.0)
В общем поглядев код, нашел следующее:
т.е. получается что сравниваем значение с порта (char) с логической переменной, в новой аппаратной версии порт вибродатчика нулевой и поэтому это сравнение работает, а для старой этот алгоритм уже не прокатывает
[uquote="Victor_P.",url="/forum/viewtopic.php?p=4058780#p4058780"]Да зачем там прерывание? Сильно жирно для этого.[/uquote]вот пишете что жирно, - а хранение логических переменных в целом байте это не жирно?
AVR отлично работают с битами, и если упаковать все битовые переменные и еще выделить под это регистр то код станет намного быстрее и меньше
И если навести порядок с типами переменных (может галка в компиляторе где нить) = то код получится намного меньше и все влезет в 8 мегу
(в CVAVR например убрать галку "Promote chat to int")
----------
Таблетка: Нужно изменить в прошивке по адресу 0x1294 байт 0x90 на 0x96
После этого точка в правом разряде начала отмаргивать состояние вибродатчика
Код: Выделить всё
in r18,p03 = читаем с порта
andi r18,0x40 = маска по биту вибродатчика
ldi r19,0 <= это лишний код связанный с преобразованием типа данных char = int
lds r20,D01CC = тут хранится переменная которая 0 или 1
ldi r21,0 <= это лишний код связанный с преобразованием типа данных char = int
lds r24,D01A1
cp r18,r20 = если равно, но тут сравнение с переменной которая 0 или 1
cpc r19,r21 <= это лишний код связанный с преобразованием типа данных char = int
breq L0947
******** далее
L0947:
in r25,p03 = второй раз читаем порт (а если уже состояние порта изменилось ????? т.е. дребезг)
bst r25,b6 сохраняем состояние порта вибродатчика во флаг
clr r25
bld r25,b0 флаг пишем в младший бит
sts D01CC,r25 сохраняем в памяти: тут запоминается либо 0 либо 1 (т.е. видимо boolean)
т.е. получается что сравниваем значение с порта (char) с логической переменной, в новой аппаратной версии порт вибродатчика нулевой и поэтому это сравнение работает, а для старой этот алгоритм уже не прокатывает
[uquote="Victor_P.",url="/forum/viewtopic.php?p=4058780#p4058780"]Да зачем там прерывание? Сильно жирно для этого.[/uquote]вот пишете что жирно, - а хранение логических переменных в целом байте это не жирно?
AVR отлично работают с битами, и если упаковать все битовые переменные и еще выделить под это регистр то код станет намного быстрее и меньше
И если навести порядок с типами переменных (может галка в компиляторе где нить) = то код получится намного меньше и все влезет в 8 мегу
(в CVAVR например убрать галку "Promote chat to int")
----------
Таблетка: Нужно изменить в прошивке по адресу 0x1294 байт 0x90 на 0x96
После этого точка в правом разряде начала отмаргивать состояние вибродатчика
Re: Цифровая паяльная станция своими руками.(V 2.0)
В последней версии станция питается от 3.7 вольт. Фьюзы даны для 3.7 и 5 вольт. Станцию можно питать 5 вольтами, без каких либо переделок, установив фьюзы для 5 вольт?
- Victor_P.
- Поставщик валерьянки для Кота
- Сообщения: 2168
- Зарегистрирован: Сб окт 10, 2009 10:34:07
- Откуда: Україна, Хорол
Re: Цифровая паяльная станция своими руками.(V 2.0)
RX24, есть схемы с питанием 5В и 3.6В. Питать 3.6В схему пятью вольтами можно, но номиналы некоторых резисторов придется поменять. Собственно, если сравнить между собой схемы, все станет понятно.
alcxa, сравнивать значение байта (да чего угодно) с логической переменной в С никто не запрещает, при этом 0 будет false, все остальное true. Думаю, это Вы и без меня знали. Какие неявные преобразования при этом делает компилятор я не в курсе да и не интересно мне это. Я не програмист в том смысле, что не работаю им, не пишу код постоянно и не вникаю в тонкости языка. Что выучил, тем и пользуюсь как могу.
Не совсем понял эту фразу "в новой аппаратной версии порт вибродатчика нулевой и поэтому это сравнение работает, а для старой этот алгоритм уже не прокатывает". А какая разницы для этого алгоритма какой порт, 0 или 6?
...а хранение логических переменных в целом байте это не жирно?...храню в булевских, но насколько слышал, авр с ними напрямую не работает, а как оно там организовано в компиляторе не в курсе, см. выше.
Сам код опроса вибродатчика выглядит так (только он не в одной куче как здесь):
Предложите как его изменить на более правильный. Я так понимаю _VSensLS можно сделать байтовой, чтоб небыло неявных преобразований, но что это даст?
alcxa, сравнивать значение байта (да чего угодно) с логической переменной в С никто не запрещает, при этом 0 будет false, все остальное true. Думаю, это Вы и без меня знали. Какие неявные преобразования при этом делает компилятор я не в курсе да и не интересно мне это. Я не програмист в том смысле, что не работаю им, не пишу код постоянно и не вникаю в тонкости языка. Что выучил, тем и пользуюсь как могу.
Не совсем понял эту фразу "в новой аппаратной версии порт вибродатчика нулевой и поэтому это сравнение работает, а для старой этот алгоритм уже не прокатывает". А какая разницы для этого алгоритма какой порт, 0 или 6?
...а хранение логических переменных в целом байте это не жирно?...храню в булевских, но насколько слышал, авр с ними напрямую не работает, а как оно там организовано в компиляторе не в курсе, см. выше.
Сам код опроса вибродатчика выглядит так (только он не в одной куче как здесь):
Код: Выделить всё
#include <stdbool.h>
...
#define V_SENS (PINB&(1<<PINB6))
uint8_t VSMode;
bool _VSensLS = false;
bool VSAlarm;
...
if (V_SENS != _VSensLS) {
switch (VSMode) {
case 1: {
if (StMainMode < SMM_STB_DE) VSAlarm = true;
break;
};
case 2: {
if (StMainMode < SMM_OFF_DE) VSAlarm = true;
break;
};
case 3: {
VSAlarm = true;
break;
};
}
}
_VSensLS = V_SENS;
Предложите как его изменить на более правильный. Я так понимаю _VSensLS можно сделать байтовой, чтоб небыло неявных преобразований, но что это даст?
Последний раз редактировалось Victor_P. Пт июл 16, 2021 11:39:55, всего редактировалось 1 раз.
Re: Цифровая паяльная станция своими руками.(V 2.0)
Victor_P., А где можно увидеть версию станции 1.30 с пятью вольтами? Скачал архив со всеми версиями там только версия 1.30 где питание 3.7 вольт, может я что то просмотрел, или недопонял?
- Victor_P.
- Поставщик валерьянки для Кота
- Сообщения: 2168
- Зарегистрирован: Сб окт 10, 2009 10:34:07
- Откуда: Україна, Хорол
Re: Цифровая паяльная станция своими руками.(V 2.0)
[uquote="RX24",url="/forum/viewtopic.php?p=4061619#p4061619"]Victor_P., А где можно увидеть версию станции 1.30 с пятью вольтами?[/uquote]1.30 нигде, она только с 3.6В. Но есть же 1.20 и 1.13, вот в них и можно посмотреть.
Re: Цифровая паяльная станция своими руками.(V 2.0)
Victor_P., Можно еще вопрос, можно ли в версии, например 1.13 применить драйвер по схеме версии 1.30? В версии 1.30 2 транзистора, в версиях 1.13 и выше 4 транзистора.
- alcxa
- Это не хвост, это антенна
- Сообщения: 1347
- Зарегистрирован: Ср мар 26, 2014 21:50:55
- Откуда: RF-73 ULN
- Контактная информация:
Re: Цифровая паяльная станция своими руками.(V 2.0)
[uquote="Victor_P.",url="/forum/viewtopic.php?p=4061612#p4061612"]Предложите как его изменить на более правильный.[/uquote]ввести логическую переменную и в нее считать данные с порта и потом уже с ней работать (заодно уберется двойное считывание порта),
но возможно и прокатит так:
нужно смотреть как это компилятор преобразует
Если компилятор CVAVR то объявлять битовые переменные лучше "bit", и потом в условиях будет сравнивать биты, а не байты, да еще компилятор упакует все битовые переменные в байт
[uquote="Victor_P.",url="/forum/viewtopic.php?p=4061612#p4061612"]Не совсем понял эту фразу "в новой аппаратной версии порт вибродатчика нулевой и поэтому это сравнение работает, а для старой этот алгоритм уже не прокатывает". А какая разницы для этого алгоритма какой порт, 0 или 6?[/uquote]VRS в версии 1.13 = B6, а в версии 1.30 = B0
т.е.: по исходнику мы читаем состояние порта вибродатчика и для старой версии имеем 0 или 32 (1 << 6) и это число сравниваем с сохраненным значением 0 или 1: и (32==1) но это не так, я думаю понятно куда клоню
но возможно и прокатит так:
Код: Выделить всё
if ((V_SENS) != _VSensLS) {
Если компилятор CVAVR то объявлять битовые переменные лучше "bit", и потом в условиях будет сравнивать биты, а не байты, да еще компилятор упакует все битовые переменные в байт
[uquote="Victor_P.",url="/forum/viewtopic.php?p=4061612#p4061612"]Не совсем понял эту фразу "в новой аппаратной версии порт вибродатчика нулевой и поэтому это сравнение работает, а для старой этот алгоритм уже не прокатывает". А какая разницы для этого алгоритма какой порт, 0 или 6?[/uquote]VRS в версии 1.13 = B6, а в версии 1.30 = B0
т.е.: по исходнику мы читаем состояние порта вибродатчика и для старой версии имеем 0 или 32 (1 << 6) и это число сравниваем с сохраненным значением 0 или 1: и (32==1) но это не так, я думаю понятно куда клоню
- Victor_P.
- Поставщик валерьянки для Кота
- Сообщения: 2168
- Зарегистрирован: Сб окт 10, 2009 10:34:07
- Откуда: Україна, Хорол
Re: Цифровая паяльная станция своими руками.(V 2.0)
[uquote="alcxa",url="/forum/viewtopic.php?p=4061633#p4061633"]ввести логическую переменную и в нее считать данные с порта и потом уже с ней работать[/uquote]И мы опять получим неявное преобразование типов из байта в булевскую величину (не пишу в бит, т.к. не уверен что там именно бит).
[uquote="alcxa",url="/forum/viewtopic.php?p=4061633#p4061633"](заодно уберется двойное считывание порта),[/uquote]А где у меня двойное считывание?
[uquote="alcxa",url="/forum/viewtopic.php?p=4061633#p4061633"]но возможно и прокатит так:
нужно смотреть как это компилятор преобразует[/uquote]? при этом после обработки препроцессором получим опрос порта в двойных скобках, вот так:
зачем?
[uquote="alcxa",url="/forum/viewtopic.php?p=4061633#p4061633"]Если компилятор CVAVR то ...[/uquote]avr gcc, насколько я в курсе. IDE Microchip(Atmel)Studio.
[uquote="alcxa",url="/forum/viewtopic.php?p=4061633#p4061633"]т.е.: по исходнику мы читаем состояние порта вибродатчика и для старой версии имеем 0 или 32 (1 << 6) и это число сравниваем с сохраненным значением 0 или 1: и (32==1) но это не так, я думаю понятно куда клоню[/uquote]Понятно, но компилятор по идее должен перед сравнением провести преобразование типов. Хотя вот этот момент нужно продумать, скорее всего собака зарыта где-то рядом. Возможно нужно сделать явное преобразование так: или так или вообще _VSensLS обьявить байтовой.
Добавлено after 5 minutes 22 seconds:
[uquote="RX24",url="/forum/viewtopic.php?p=4061632#p4061632"]Victor_P.можно ли в версии, например 1.13 применить драйвер по схеме версии 1.30?[/uquote]можно.
[uquote="alcxa",url="/forum/viewtopic.php?p=4061633#p4061633"](заодно уберется двойное считывание порта),[/uquote]А где у меня двойное считывание?
[uquote="alcxa",url="/forum/viewtopic.php?p=4061633#p4061633"]но возможно и прокатит так:
Код: Выделить всё
if ((V_SENS) != _VSensLS) {
Код: Выделить всё
if (((PINB&(1<<PINB0))) != _VSensLS) {
[uquote="alcxa",url="/forum/viewtopic.php?p=4061633#p4061633"]Если компилятор CVAVR то ...[/uquote]avr gcc, насколько я в курсе. IDE Microchip(Atmel)Studio.
[uquote="alcxa",url="/forum/viewtopic.php?p=4061633#p4061633"]т.е.: по исходнику мы читаем состояние порта вибродатчика и для старой версии имеем 0 или 32 (1 << 6) и это число сравниваем с сохраненным значением 0 или 1: и (32==1) но это не так, я думаю понятно куда клоню[/uquote]Понятно, но компилятор по идее должен перед сравнением провести преобразование типов. Хотя вот этот момент нужно продумать, скорее всего собака зарыта где-то рядом. Возможно нужно сделать явное преобразование так:
Код: Выделить всё
if (V_SENS != (uint8_t)_VSensLS) {Код: Выделить всё
if ((bool)V_SENS != _VSensLS) {Добавлено after 5 minutes 22 seconds:
[uquote="RX24",url="/forum/viewtopic.php?p=4061632#p4061632"]Victor_P.можно ли в версии, например 1.13 применить драйвер по схеме версии 1.30?[/uquote]можно.