ARV: мысли вслух
- Сообщения: 1759
- Зарегистрирован: Пт июн 01, 2018 07:28:45
Запускал я АЦП от таймера на Attiny. Не помню, чтобы упирался во что-то магическое, не описанное в даташите. Надо будет покопаться в исходниках - посмотреть инициализацию. Самому даже интересно стало.
- Реклама
- Сообщения: 1978
- Зарегистрирован: Ср июл 17, 2013 13:55:57
ARV,
Вы включили прерывание. Компилятор всегда делает заглушку с RETI емнип в векторах, даже не объявленных в коде. В любом случае переход по вектору происходит, и железо сбрасывает TOV1.TOV1 is automatically cleared when the Timer/Counter1 Overflow Interrupt Vector is executed
пора в управдомыNStorm писал(а):Вы включили прерывание.
Добавлено after 2 minutes 45 seconds:
самое-то смешное, что на самом деле обработчик прерывания по переполнению таймера есть в коде, просто я его не включал флагом этим самым для целей отладки. и ведь после того, как "АЦП заработал" у меня перестала работать индикация, потому что обработчик прерывания её портил - и ни на что не натолкнуло это меня! точно - в управдомы!
Добавлено after 8 minutes 30 seconds:
параллельно и с кнопками беда... тоже наверняка будет что-то позорно-элементраное, но пока не могу понять, в чем беда.
сделал такой код для работы с кнопками:
Код: Выделить всё
event_t get_event(void){
uint8_t btn = buttons;
static event_t prev = EVENT_EMPTY;
static uint16_t cnt;
event_t tmp;
if(btn == 0){
// ничего не нажато
if(prev != EVENT_EMPTY){
// уточняем, сколько времени прошло с предыдущего нажатия
if((get_ticks() - cnt) > RESET_MODE_TIME){
// если больше заданного - возвращаем событие сброса режима
prev = EVENT_EMPTY;
return EVENT_RESET_MODE;
}
}
// возвращаем предыдущее событие
tmp = prev;
prev = EVENT_EMPTY;
return tmp;
} else {
// что-то нажато, разбираем кнопки по событиям
switch(btn){
case BTN_PLUS: tmp = EVENT_UP; break;
case BTN_MINUS: tmp = EVENT_DN; break;
case BTN_ENTER: tmp = EVENT_ENTER; break;
case BTN_PLUS | BTN_MINUS: tmp = EVENT_UPDN; break;
}
}
// проверка долгое/короткое нажатие
if(tmp == prev){
// нажато то же самое, что и в прошлый раз
if((get_ticks() - cnt) > LONG_PRESS_TIME){
// если время удержания больше заданного, ставим флаг долгого события
tmp |= EV_LONG;
return tmp;
}
} else {
// нажато что-то другое, чем в прошлый раз
cnt = get_ticks(); // фиксируем момент нажатия
prev = tmp; // запоминаем, что нажали
}
return EVENT_EMPTY;
}
так вот: нажимаю кнопку - ШИМ зашкаливает на максимальное заполнение. отпускаю - возвращается к тому, что было надо (АЦП отрабатывает регулирование). какая связь между кнопками и работой регулятора - не могу понять.
регулятор сейчас такой, примитивный:
Код: Выделить всё
ISR(ADC_vect, ISR_NOBLOCK){
bool low_power;
static bool batt_chk;
static uint8_t ocr;
int16_t delta;
// TODO управление флагом нужно только при отладке
TIFR1 = _BV(TOV1);//TIMSK1 = _BV(TOIE1);
// когда измеряем напряжение преобразователя
delta = (UADC - ADC);
// реализуем что-то типа пропорционального регулятора
// TODO это как-то влияет?
//if(delta <= 0) TCCR1C = _BV(FOC1A);
low_power = delta > OCRMAX;
if(low_power){
// ограничиваем по верхнему значению скважности
ocr = OCRMAX;
TCCR1A = TIMER_OC_CLEAR(1A) | _BV(WGM10);
} else if(delta < OCRMIN) {
// ноль на выходе PWM создаем "вручную"
TCCR1A = 0;
PORTB &= ~PWM_PIN;
ocr = OCRMIN;
} else {
// в остальных случаях "регулируем"
ocr = delta/2;
TCCR1A = TIMER_OC_CLEAR(1A) | _BV(WGM10);
}
OCR1AL = ocr;
}
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 1978
- Зарегистрирован: Ср июл 17, 2013 13:55:57
Прерывания PCINTx, INTx отключены? Если у вектора АЦП убрать ISR_NOBLOCK эффект сохраняется? Временно если попробовать убрать low_power проверку - уйдет эффект? Т.е. прыгает скважность как будто low_power становится true?
в порядке лирического отступления нарисовалась мысль, что применение SMD в любительской практике сопровождается колоссальными расходами... вроде кажется, что все просто, ан нет: без паяльной станции с феном уже не очень-то и попаяешь, точнее, не распаяешь запаянное, если у него больше 3 ног... да и двумя ножками перепайка SMD-дросселя серии SPRH одним-единственным паяльником малой мощности (т.е. тем же, что и для 0805) превращается в проблему...

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

управление на затвор с выхода AVR, т.е. 5В, не более.
посмотрел на осциллографе - задний фронт не такой уж и крутой, на глазок - больше сотни микросекунд... ощущение такое, что не работает этот разрядный транзистор VT16 (IRLML6402).

Добавлено after 2 minutes 25 seconds:
даNStorm писал(а):Прерывания PCINTx, INTx отключены?
ничего не меняетсяNStorm писал(а):убрать ISR_NOBLOCK
не проверял, но убирать нельзя, начнет скакать ШИМ из-за переполненияNStorm писал(а):убрать low_power проверку - уйдет эффект?
ну типа того. проблема-то в том, что это проявляется лишь при нажатии любой кнопки! ищу связь...NStorm писал(а):как будто low_power становится true?
Добавлено after 10 minutes 36 seconds:
а вот еще интересный вопрос, практическое (т.е. экспериментальное) решение которого оставляю на будущее: имеет ли смысл применение "разрядного" транзистора в этой схеме?
управление на затвор с выхода AVR, т.е. 5В, не более.
посмотрел на осциллографе - задний фронт не такой уж и крутой, на глазок - больше сотни микросекунд... ощущение такое, что не работает этот разрядный транзистор VT16 (IRLML6402).
- Вложения
-
- й1.PNG
- (9.89 КБ) 537 скачиваний
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Реклама
- Сообщения: 1759
- Зарегистрирован: Пт июн 01, 2018 07:28:45
[uquote="NStorm",url="/forum/viewtopic.php?p=4034276#p4034276"]ARV,
Если разрешено прерывание, а обработчика нет, то GCC прерывание направит на RESET.
Добавлено after 3 minutes 17 seconds:
Вы включили прерывание. Компилятор всегда делает заглушку с RETI емнип в векторах, даже не объявленных в коде. В любом случае переход по вектору происходит, и железо сбрасывает TOV1.[/uquote]TOV1 is automatically cleared when the Timer/Counter1 Overflow Interrupt Vector is executed
Если разрешено прерывание, а обработчика нет, то GCC прерывание направит на RESET.
Добавлено after 3 minutes 17 seconds:
В какой точке?посмотрел на осциллографе - задний фронт не такой уж и крутой,
- Сообщения: 1978
- Зарегистрирован: Ср июл 17, 2013 13:55:57
Да, перепутал. Не RESET, а прыжок на 0ой адрес. Типа программный сброс.
ARV, для дома с алишки фен за 1800р сейчас можно купить отдельный. И за столько же примерно паяльник нормальный.
Добавлено after 2 minutes 47 seconds:
[uquote="ARV",url="/forum/viewtopic.php?p=4034321#p4034321"]не проверял, но убирать нельзя, начнет скакать ШИМ из-за переполнения
...
ну типа того. проблема-то в том, что это проявляется лишь при нажатии любой кнопки! ищу связь...[/uquote]
Я пытаюсь локализовать проблему помочь. Всегда подобными кусками легче определить источник. Можно добавить в тот кусок if (low_power) ... загорание какого-нибудь светика, чисто для отладки. И погладеть, будет ли он гореть, пока нажата кнопка. Чтобы понять, что вход именно тут идет.
ARV, для дома с алишки фен за 1800р сейчас можно купить отдельный. И за столько же примерно паяльник нормальный.
Добавлено after 2 minutes 47 seconds:
[uquote="ARV",url="/forum/viewtopic.php?p=4034321#p4034321"]не проверял, но убирать нельзя, начнет скакать ШИМ из-за переполнения
...
ну типа того. проблема-то в том, что это проявляется лишь при нажатии любой кнопки! ищу связь...[/uquote]
Я пытаюсь локализовать проблему помочь. Всегда подобными кусками легче определить источник. Можно добавить в тот кусок if (low_power) ... загорание какого-нибудь светика, чисто для отладки. И погладеть, будет ли он гореть, пока нажата кнопка. Чтобы понять, что вход именно тут идет.
на затворе VT12, 1-я нога транзистораparovoZZ писал(а):В какой точке?
да я ж вроде и не первый год замужем... светик припаять - та еще проблема, фотки платы вы видели. связь явно с функцией get_event() - если её не вызывать, то и проблем нет. но почему эта функция влияет на ШИМ - пока загадка.NStorm писал(а):Можно добавить в тот кусок if (low_power) ... загорание какого-нибудь светика, чисто для отладки.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 1759
- Зарегистрирован: Пт июн 01, 2018 07:28:45
мне казалось, открытый канал MOSFET получше диода будет... в других схемах ставят биполярник pnp, я подумал - MOSFET получше. я не прав?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
[uquote="ARV",url="/forum/viewtopic.php?p=4034321#p4034321"]а вот еще интересный вопрос, практическое (т.е. экспериментальное) решение которого оставляю на будущее: имеет ли смысл применение "разрядного" транзистора в этой схеме?

управление на затвор с выхода AVR, т.е. 5В, не более.
посмотрел на осциллографе - задний фронт не такой уж и крутой, на глазок - больше сотни микросекунд... ощущение такое, что не работает этот разрядный транзистор VT16 (IRLML6402).[/uquote]
в таком включени точно не будет работать схема неверная...
ты еще попробуй BGA им перепаять а потом выдай опус тем кто их придумал там паялом к ножкам ваще никахнедобраца...
но ИК станция и паялна печь обе проблемы в принеципе решает
управление на затвор с выхода AVR, т.е. 5В, не более.
посмотрел на осциллографе - задний фронт не такой уж и крутой, на глазок - больше сотни микросекунд... ощущение такое, что не работает этот разрядный транзистор VT16 (IRLML6402).[/uquote]
в таком включени точно не будет работать схема неверная...
а зачем паять ЭТО smd тупой паялойARV писал(а):без паяльной станции с феном уже не очень-то и попаяешь, точнее, не распаяешь запаянное, если у него больше 3 ног... да и двумя ножками перепайка SMD-дросселя серии SPRH одним-единственным паяльником малой мощности (т.е. тем же, что и для 0805) превращается в проблему...
ты еще попробуй BGA им перепаять а потом выдай опус тем кто их придумал там паялом к ножкам ваще никахнедобраца...
но ИК станция и паялна печь обе проблемы в принеципе решает
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
я рассуждал так:musor писал(а):в таком включени точно не будет работать
1. подается на затвор VT12 высокий уровень. это соответствует высокому уровню и на p-канальном VT16, т.е. он закрыт, т.е. никак не влияет ни на что.
2. высокий уровень снимается, подается ноль. поскольку затвор VT12 заряжен до +5В, а затвор VT16 соединен с общим, это условие отпирания VT16. сопротивление канала p-MOSFET-а минимально (миллиОмы), и затвор VT12 предельно быстро разряжается через этот канал, а вход МК не перегружен втекающим током.
3. затвор VT16 имеет значительно меньшую ёмкость, чем затвор VT12, поскольку VT12 гораздо высоковольтнее и мощнее, поэтому заряд-разряд затвора этого маломощного транзистора МК не угрожает
где я ошибся?
Добавлено after 3 minutes 31 second:
так я об этом и писал:musor писал(а):но ИК станция и паялна печь обе проблемы в принеципе решает
ARV писал(а):сопровождается колоссальными расходами
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 1759
- Зарегистрирован: Пт июн 01, 2018 07:28:45
Не будет такого при большой величине втекающего тока. В даташите приведены графики.подается ноль.
У Atmel есть модели МК с усиленным нижним драйвером. Но ноги не все и AtMega вроде такими не обладает.
Я вот не пойму: вы не прочли мои пояснения? Наличие р-канальника и препятствует возникновению большого втекающего тока! Ну, должно препятствовать по плану...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 1759
- Зарегистрирован: Пт июн 01, 2018 07:28:45
Нарыл исходники для какой-то тиньки (441 или 44А)
Инициализация АЦП
АЦП запускает Т0:
Первый запуск АЦП - вручную.
Обработчик переполнения Т0 пустой:
В прерывании от АЦП тупо читаем регистр с данными.
15кГц частота дискретизации как с куста и без лишнего шаманства.
Инициализация АЦП
Код: Выделить всё
void ADC_Init(void)
{
DIDR0 = (1<<ADC1D) | (1<<ADC2D) | (0<<ADC3D); // Отключаем триггер Шмитта от сигнальной ноги
ADMUXB = (0<<REFS2) | (0<<REFS1) | (1<<REFS0) | (0<<GSEL1) | (1<<GSEL0); // Внутренний ИОН 1.1в, усиление = 100
ADCSRB = (1<<ADLAR) | (1<<ADTS1) | (1<<ADTS0); // Работаем только со старшими 8-ю битами, запуск от таймера T0
ADCSRA = (1<<ADEN) | (1<<ADIE) | (1<<ADATE) | (0<<ADPS2) | (1<<ADPS1) | (1<<ADPS0); // Прескалер = 8
}Код: Выделить всё
TIMSK0 = Bit(TOIE0);
T0_Mode_CTC;
Обработчик переполнения Т0 пустой:
Код: Выделить всё
//... Прерывание при переполнении таймера 0
ISR(TIMER0_OVF_vect)
{
}Код: Выделить всё
ISR(ADC_vect)
{
ADC_Get_Data();
}Никогда не любил аналоговую технику... Потому что не понимаю её в принципе. Ну и плюс всякие пробелы в знаниях, например, ТАУ со всеми этими полюсами АЧХ/ФЧХ и передаточными функциями... С горем пополам эмитерный повторитель и ключевой режим освоил, и всё...
Но чтобы неоновую лампочку не суметь зажечь правильно - этого я от себя не ожидал... Даже тут аналоговая суть процессов подставила мне ножку... Одно расстройство от этого аналога... Цифра куда лучше!
Но чтобы неоновую лампочку не суметь зажечь правильно - этого я от себя не ожидал... Даже тут аналоговая суть процессов подставила мне ножку... Одно расстройство от этого аналога... Цифра куда лучше!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Размышления мои продолжаются... Пытаюсь осмыслить наиболее простое решение для задачи использования одного вывода МК для двух функций: управления реле и индикации режима работы реле. Казалось бы, в чем проблема? Но, как обычно, захотелось мне индицировать 2 варианта отключенного состояние реле: обычное отключение и аварийное, то есть когда реле отключено просто так, светодиод не светится, а когда по аварии - светодиод мигает. при включенном состоянии реле светодиод, естественно, горит непрерывно.
Реле сейчас рассматриваю обычное, электромагнитное, управление MOSFET-ключом. Но в перспективе возможно применение и оптореле симисторного типа (или просто симистор с оптроном MOC).
Попутно думаю: а возможно ли на тот же пин МК навесить и третью функцию - контроль нормально разомкнутого контакта датчика аварии? То есть возможно ли одним пином контролировать замыкание датчика (на общий), управлять ключом реле и мигать светодиодом, если датчик замкнут? Ну и впридачу, чтобы схема была попроще...
Реле сейчас рассматриваю обычное, электромагнитное, управление MOSFET-ключом. Но в перспективе возможно применение и оптореле симисторного типа (или просто симистор с оптроном MOC).
Попутно думаю: а возможно ли на тот же пин МК навесить и третью функцию - контроль нормально разомкнутого контакта датчика аварии? То есть возможно ли одним пином контролировать замыкание датчика (на общий), управлять ключом реле и мигать светодиодом, если датчик замкнут? Ну и впридачу, чтобы схема была попроще...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 1759
- Зарегистрирован: Пт июн 01, 2018 07:28:45
Было бы не плохо ещё и тактовый сигнал завести на этот пин. Да и вообще, предлагаю подумать над однопиновым микроконтроллером. Это ж какая экономия?
parovoZZ, идеи хорошие, но на перспективу. А сейчас по озвученным идеям есть идеи? 
Добавлено after 4 minutes 7 seconds:
Мои собственные мысли пока вертятся вокруг того факта, что электромагнитное реле - штука весьма инерционная, и поэтому снятие управляющего сигнала с ключа на 10-100 микросекунд никак не скажутся на его (реле) контактах. В то же время 100 мкс для МК - это приличное время, можно что-нибудь успеть... только вот что именно успевать, пока не придумал.
Туго стал соображать последнее время...
Добавлено after 8 hours 44 minutes 9 seconds:
Передумал я извращаться. Пооптимизировал общий алгоритм, подумал над схемой, и пришел к выводу, что отдельный пин на светодиод будет куда разумнее всего этого... И проще во всех отношениях, включая программу.
Добавлено after 4 minutes 7 seconds:
Мои собственные мысли пока вертятся вокруг того факта, что электромагнитное реле - штука весьма инерционная, и поэтому снятие управляющего сигнала с ключа на 10-100 микросекунд никак не скажутся на его (реле) контактах. В то же время 100 мкс для МК - это приличное время, можно что-нибудь успеть... только вот что именно успевать, пока не придумал.
Туго стал соображать последнее время...
Добавлено after 8 hours 44 minutes 9 seconds:
Передумал я извращаться. Пооптимизировал общий алгоритм, подумал над схемой, и пришел к выводу, что отдельный пин на светодиод будет куда разумнее всего этого... И проще во всех отношениях, включая программу.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 46221
- Зарегистрирован: Пт янв 23, 2009 19:20:05
Ребята! Давайте не засирать эту тему - я её иногда читаю, почти как детектив: ничего не понятно - но всё равно интересно! 


