Перейти к содержанию

Помогите с инкрементом в операторе ветвления


Юстас

Рекомендуемые сообщения

с 2001 года, правда 3 года уже работа не связана с контроллерами, только в свободное время приходиться ими заниматься. Может ещё наступят времена и я вернусь обратно :(

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Вот и хорошо что не полезли в Ардуину, она не для программистов а для домохозяек.

На счет Atmel/AVR Studio часто пишут про баги в новых версиях, вроде допотопная 4.19 стабильнее и удобнее. Впрочем, под Вайном она нормально работать не хочет, а отладку можно и в Протеусе провести заодно с прочим железом.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

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

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

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

@dm37 вон оно как... А я бы с удовольствием поступил бы на программиста, да вот возможности ограничены. Семья, работа... Начну над алгоритмом думать, так жена придёт надо ей время уделить или позвонит кто нибудь, собьют с мысли. Одни нервы)))

Изменено пользователем Юстас
Ссылка на комментарий
Поделиться на другие сайты

А что мешает поставить WinAVR? Правда, он старый, но для обучения сойдет. А потом втянетесь и перейдете на чистый gcc+make, либо установите более свежую версию (у меня не получилось, но особо не усердствовал)

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, Юстас сказал:

Начну над алгоритмом думать

Вот это правильно, и главное - не зависит от языка. И думая, нужно рисовать, что нибудь в этом роде

block_shema.gif

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Ссылка на комментарий
Поделиться на другие сайты

Генератор кода в нем ужасен. После него приходят на тот же форум и говорят "вот написал программу а она не работает" причем не понимают как же именно cvavr сгенерировал инициализацию. Ну и форматирование с комментариями там ужасное. Слишком много отвлекающего мусора, инициализация растянута на сотню строк, когда достаточно десятка.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

@Григорий Т. Ого, а я алгоритм на бумаге чуток не так рисовал. Даже сильно не так)) В моём коде это в принципе итак видно))

@COKPOWEHEU мне тоже это не понравилось, начинаешь программу с уборки листинга от мусора))

Ссылка на комментарий
Поделиться на другие сайты

Ну так продемонстрируйте свой алгоритм. Потому что по последнему вашему коду идея не очень-то прослеживается

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

И чем это открывать?

 

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

В архива два файла - .msi и .ddd, оба в текстовике выглядят бессмысленным набором символов. Может, проще выложить алгоритм в виде картинки или текстового описания?

.msi вроде виндовый инсталлятор, но запускаться отказывается. wine говорит "ошибка в формате файла"

Изменено пользователем COKPOWEHEU

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

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

Кстати, у меня там тоже не конечный результат по изменению длительности импульса. Там тоже нужно добавить флаг отпускания кнопок + и -.

Изменено пользователем Григорий Т.

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Ссылка на комментарий
Поделиться на другие сайты

Это из алгоритма вывод или из кода? По коду если у него кнопки будут отпущены, таймер не остановится вроде. А из алгоритма я не вижу отдельного "дерева" для прерывания таймера.

И еще раз предлагаю начать с начала. У нас есть заданное время работы (переменная, инициализированная каким-то значением при запуске) и флаг старта (тоже выставим при старте программы, чтобы отлаживать только один кусок а не все сразу). У нас есть прерывание таймера, срабатывающего с интервалом 1 мс. Кратко, по-русски, опишите, как пытаетесь реализовать, какие переменные используете.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

В 24.10.2016 в 03:38, Юстас сказал:

 if PINA.0 = 1 then     ' ТУТ ЗАСАДА

В BASCOMEне прогал. На С знак равенства "=" означает присвоение, а знак равенства  вот  так  "==".

Соответственно для оператора сравнения "if" эта строка  должна выглядеть так,  if PINA.0 == 1 then

 

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Сообщения

    • @Falconist , раз по заданию нужен - обосновать не проблема. И вообще-то про его "нужность" у меня написано. Для особо придирчивых могу обосновать так: R6 применён, чтобы обеспечить на выходе компаратора высокий уровень сигнала, а не ограничивать его напряжением база-эмиттер. Это нужно, чтобы правильно срабатывала имеющаяся внутренняя цепь гистерезиса в компараторе. Ей нужно, чтобы уровень выходного напряжения был достаточный. Иначе будет "звон" при переключении на пологих фронтах. Возражения есть?
    • Коробки должны быть прозрачными, с крышками, и удобно складируемыми. Можно, конечно, круглые, но прямоугольные удобнее.
    • На самом деле - фигня вопрос. R1 - чтобы привязать потенциал входа ОУ к нулю. Определяет требуемое входное сопротивление этого детектора. Берём равным заданному входному сопротивлению, например 10 кОм. R2, R3 - резистивный делитель напряжения, устанавливает порог срабатывания вашего "детектора". Допустим, задан порог срабатывания 1,0 В. Выбираем ток этого делителя. Он должен быть минимум в 50 - 100 раз больше входного тока утечки компаратора, чтобы паразитный ненормированный входной ток не влиял на точность. Допустим, он по справочнику не более 1 мкА. Выбираем ток делителя в 1000 раз больше - 1 мА. Напряжение питания компаратора и этого делителя берём меньше напряжения питания, чтобы работал параметрический стабилизатор на вашем стабилитроне без позиционного обозначения. Выбор примерно 5 В - нормально. И для компаратора напряжение питания в допустимом диапазоне, и на регулировку достаточно остаётся. Итого, стабилитрон на (примерно, с допуском) 5,1 В. На выходе делителя напряжения (на входе компаратора) должно быть 1 В (это порог). Считаем номиналы резисторов: R3 = 1 В / 1 мА = 1 кОм. R2 = (5,1-1)В / 1 мА = 4,1 кОм. Выбираем ближайшие номиналы из ряда заданной точности. Например, из ряда Е96 с 1% точностью это будут номиналы 1,0 кОм и 4,12 кОм. Если нужна точность установки порога лучше, чем может обеспечить стабилитрон, напряжение порога можно подстроить изменяя в небольших пределах сопротивление одного из этих резисторов. Из справочника берём ток потребления компаратора. Например, он 5 мА. Выбираем номинал выходного резистора R7 таким, чтобы обеспечить выдачу 5 В на заданную нагрузку. Допустим, нагрузка 1 кОм. Тогда чтобы на ней напряжение могло быть 5 В, сопротивление R7 должно быть не более 100 Ом (5,1 В / (1+0,1)кОм * 1 кОм = 5,0 В). Ток через R7, когда на выходе 0, будет равен 5,1 В / 0,1 кОм = 51 мА (примерно, напряжение насыщения UБЭ транзистора не учитываем, хотя можно и учесть). Ток через R5 не должен превышать максимально-допустимый выходной ток компаратора (берётся из справочника). Выбираем этот ток вдвое меньше, равным 2 мА. Тогда R5 = (5,1 - UБЭ) / 2 мА = (5,1-0,7)/2 = 2,2 кОм. Итого, от источника будет потребляться ток 5 мА в компаратор, плюс 1 мА в делитель напряжения порога, плюс 51 мА через R7 или 2 мА через R5 плюс ток в стабилитрон. Током в базу транзистора пренебрегаем, хотя можно и учесть. Ток в стабилитрон должен компенсировать изменение тока потребления остальной части схемы, то есть 51 - 2 мА (бывает или один, или второй) = 49 мА. Ток в стабилитрон зададим равным 50 мА, с запасом в 1 мА, чтобы через стабилитрон всегда тёк какой-то ток. Итого, суммарный ток потребления будет постоянным и равным 5 + 1 + 51 + 1 = 58 мА или 5 + 1 + 2 + 50 = 58 мА. Отсюда требуемое сопротивление балластного резистора R4 равно (9 - 5,1)В / 58 мА = 67,2 Ом. Из того же ряда выбираем номинал 66,5 Ом (в сторону уменьшения, "лишний" ток заберёт стабилитрон). Остался резистор R6. В принципе, он в данной схеме действительно не очень нужен (если взять R5 номиналом побольше), но у нас он будет ограничивать ток в базу транзистора, чтобы он не уходил в глубокое насыщение и переключался побыстрее. Ток коллектора транзистора мы знаем - 51 мА. Коэффициент усиления транзистора по току берём из справочника. Берём минимальный, чтобы гарантированно открывался. Например, 100. Ток базы будет 51 мА / 100 = 510 мкА. Чтобы такой ток шёл с +5,1 В, суммарное сопротивление R6 и R5 должно равняться 5,1 В / 510 мкА = 10 кОм. Номинал R6 равен 10 кОм - 2,2 кОм = 7,8 кОм. Из ряда Е96 выбираем ближайший номинал 7,87 кОм. Всё.  
    • Схему ищите в начале темы. Я не занимался изготовлением доктора (только софт), поэтому подсказать Вам в этом вопросе не могу.
    • Я бы, наверное, в этой ситуации подал на УНЧ сигнал с другого источника, с того же смартфона, и посмотрел, что покажет спектра. Может что-то не в порядке в настройках программы? Сама на себя звуковая карта нормальную картинку даёт?
    • Что точно скажу, так вместо TIP41 ставьте TOSHIBA 2SC5200 (если найдëте оригиналы), либо 2N3055 (если найдëте оригиналы), либо если этого не найдëте, КТ819 в TO 3, эти транзисторы лучшие для JLH1969. Но транзисторы туда надо ставить именно в корпусе TO 3 или TO 247 ибо тепловыделение большое. TO 220 расчитан на 25 ватт тепловыделения, а JLH 1969 при правильном токе покоя и питании будет выделять около 50-65 ватт, что уже выше тепловыделения TO220. Если кратко, такие TIP41 там просто сгорят от перегрева, даже если будут стоять на крупном радиаторе и с алюмооксидными термопрокладками (в идеале лучше такие прокладки и используйте, 0.25 или 0.5 мм толщиной). Выходной конденсатор от 4700 мкФ и выше, НЕ НИЖЕ! Иначе будет сильно НЧ заваливать. Конденсатор по входу ставьте плëночный, 1-4.7 мкФ, НЕ МЕНЬШЕ! Иначе тоже будет НЧ заваливать. 
×
×
  • Создать...