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

Вопросы от начинающих по МК


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

Если это не какая нибудь точная измерительная цепь, то без разницы.

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

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

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

  • Ответов
  • Создана
  • Последний ответ

Топ авторов темы

Вот сам вопрос:

Есть ли разница в pullUP для PIN1 и PIN2? Развел схему как для PIN2 и вот думаю теперь - заработает или нет?

да есть, для PIN2 помехозащищенность выше...

post-124881-0-36480400-1455856569_thumb.jpg

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

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

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

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

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

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

да есть, для PIN2 помехозащищенность выше...

Ни на грош не выше.

Разницы по помехозащищенности вообще никакой не будет.

Сопротивление резистора подтяжки слишком велико по сравнению с токоограничительным резистором, чтобы вообще говорить о какой то разнице.

На приведенных картинках речь идет не о порядке включения резисторов, а вообще о назначении последовательного резистора.

Его смысл состоит лишь в увеличении внутреннего сопротивления источника сигнала, чтобы появилась возможность фильтровать или ограничивать помехи посредством их шунтирования емкостью или диодами растяжки (внутренними или внешними).

戦う前に相手のベルトの色に注目

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

Особенности хранения литиевых аккумуляторов и батареек

Потеря емкости аккумулятора напрямую зависит от условий хранения и эксплуатации. При неправильном хранении даже самый лучший литиевый источник тока с превосходными характеристиками может не оправдать ожиданий. Технология, основанная на рекомендациях таких известных производителей литиевых источников тока, как компании FANSO и EVE Energy, поможет организовать правильный процесс хранения батареек и аккумуляторов. Подробнее>>

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

Всем доброго дня !

Что то у меня не получается присвоить переменной значение бита порта ? Делаю так Ok_Flag = (PINC & (1 << PINC5)); , но ни фига не выходит , переменная всегда равна 0 , хотя в симуляторе студии 7 , выставляю пятый пин в высокое состояние , т.е. в 1 , следовательно и переменная должна быть равнв 1 , но не получается , Ok_Flag = 0 Саму эту конструкцию я не выдумывал подглядел в одном чужом проекте , и надо сказать , там она работает , а у меня фигушки .

Сейчас добавил nop-ов , перед этим присвоениеме , поднимаю пин 5 в одном из них , симулятор заходит в Ok_Flag = (PINC & (1 << PINC5));

и на выходе переменная равна почему то 32 , у пина всего два состояния 0 и 1 ?

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

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

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

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

Viktor26

Но мне нужно не значение порта 32 , а нужа 1 или 0. Мне нужен не байт , а бит , пятый бит ?

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

Потому что операция PINC & (1<<5) выдает не булевское значение, а битовую маску, у которой 5-й бит равен 5-му биту PINC, а остальные равны 0 (см. описание побитового И).

Если хотите получить именно булевское значение, так и приведите к нему var = (PINC & (1<<5))!=0;

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

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

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

Битовое поле для меня наверное слишком сложно , Сделал вот так

OK_Flag = OK_Flag<<2;

OK_Flag = OK_Flag>>7;

Потому что операция PINC & (1<<5) выдает не булевское значение, а битовую маску, у которой 5-й бит равен 5-му биту PINC, а остальные равны 0 (см. описание побитового И).

Если хотите получить именно булевское значение, так и приведите к нему var = (PINC & (1<<5))!=0;

Теперь я понял , почему в чужом коде это работало :D , там датчик DS18B20 был подключен к нулевому пину , и там это работало , а я перенес датчик на 5 пин , потому у меня и 32 вместо 1 . Вааще это опрос датчика , 1 датчика нет , 0 датчик присутствует .

Всем сасибо .

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

Viktor26

Я навсякий случай перестраховаолся :D , в чужом проекте датчик висит один на весь порт , а мну еще пины заняты индикацией и управлением нагрузкой , хотя они все настроены на выход , сейчас попробую как вы советуете .

Работает , спасибо . Пишет как и задумано - Err0

post-187724-0-32602600-1456077756_thumb.jpg

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

  • 2 недели спустя...

Всем привет!

Делаю таймер для временной паузы при включении на ATtiny13A, считает от 0 до 5с, шаг 0.1с. Выбор времени производится потенциометром. При окончании отсчёта загорается светодиод.

Вылезла проблемка - "мёртвая зона" в начале отсчёта, от 0с до 0.3с (примерно) считает по максимуму - 5с. Так же происходит, когда просто посадить землю на вход АЦП.

Проблема решается добавлением резистора между нижней ножкой потенца и землёй (стрелка на схеме), чем меньше номинал, тем лучше, пока поставил 100 Ом.

Вопрос в том, почему такая ерунда происходит около нуля и резистор если поставить 50 Ом, не будет ли превышения тока, мало ли?

post-187141-0-35835200-1457293371_thumb.jpg

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

Или потенциометр неисправен, или проблема в коде. Особенно забывают отключать аналоговые входы как цифровые выходы, или подтяжку - и начинают соревноваться выход МК и потенциометр, а АЦП себе как ни в чем не бывало оцифровывает.

Да и код тоже выкладывайте, скорей всего проблема именно там.

Но для начала я бы всё же измерил напряжение на входе АЦП, чтобы исключить аппаратную проблему. Может, он у тебя вполне правильно реагирует.

Учение - изучение правил. Опыт - изучение исключений.

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

Потенц пробовал другой, то же самое происходит. Код сейчас выложу

Подтяжку не включал, на выход этот пин, где АЦП использую, не инициализировал.

Напряжение на входе от 0 до 5В меняется, без резистора 100Ом.

;FREQUENCY 1.2MHz
.include "tn13adef.inc"
.def temp=r16
.def delay=r17
.def count=r18
.def flag=r19
.def cycle=r20
.org 0x0000
rjmp Reset
.org 0x0003
rjmp TIM0_OVF ;
.org 0x0006
rjmp TIM0_COMPA
.org 0x0009
rjmp ADC_CC
.org 0x000A


Reset:
ldi temp, low(RAMEND);
out SPL,temp

ldi temp,0b00000100 ;разрешение прерывания по совпадению
out TIMSK0,temp ;compare match A
ldi temp,233
out OCR0A,temp
ldi temp,0b00000010 ;CTC mode
out TCCR0A,temp
ldi temp, 0b00000001 ;запуск таймера0,
out TCCR0B, temp ;без предделения
ldi temp, 0b00100010 ;задействуем ADC2(PB4), ADLAR=1
out ADMUX, temp ;Vсс used as analog reference
sbi ADCSRA, 7 ;ADC ON
sbi ADCSRA, 3 ;ADC interrupt enable
sbi ADCSRA, 2 ; ADC frequency=75kHz
sei

clr cycle
clr count
clr flag
clr delay
sbi DDRB,3
cbi PORTB,3


Main_cycle:

rjmp Main_cycle

TIM0_COMPA:
inc count
sbrc flag,0
rjmp time_delay
sbi ADCSRA,6 ;start single convertion
sbr flag,0b00000001 ;пока произв одну конверсию
reti
time_delay:
cpi count,101 ;мин. деление(точность отсчёта)
breq next_cycle
reti
next_cycle:
clr count
inc cycle
cp delay,cycle
breq on_relay
reti
on_relay:
sbi PORTB,3
reti


ADC_CC:
in delay,ADCH
reti

Код под спойлером

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

Там есть еще регистр(DIDR0) в АЦП, который отключает аналоговые пины от цифровой части контроллера напрочь. Если это не сделать одна проблема остаётся - к этим выводам подключен входной буфер с триггером шмидта, он конечно на напряжение не влияет но может переключаться и давать броски тока по питанию в моменты перехода напряжения через пороги срабатывания. Это к наблюдаемым эффектам приводить не может, но надо знать о такой особенности.

Учение - изучение правил. Опыт - изучение исключений.

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

Производится одна конверсия АЦП и считается столько циклов, какое значение считало АЦП от 0 до 255. Используется 8 бит из 10.

В даташите сказано, что отключение цифрового выхода в DIDR0 уменьшает потребление.

Числа подобраны для частоты 1.2МГц, в регистре сравнения 233, 101 цикл и число циклов из результата измерения АЦП, эти 3 числа как бы перемножаются, чтобы получить нужный отрезок времени задержки. При перемножении получится число отсчитываемых тактов, так как предделитель =0.

Перемножаются не арифметически, а циклами, конечно :)

Минимальное "деление" 233*101 = 23533 тактов, это 1/51я доля секунды. (хотя достаточно для этой задачи 0.1с) и оно "умножается" на значение, считанное АЦП от 0 до 255

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

отключение цифрового выхода в DIDR0 уменьшает потребление.

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

Слишком чего-то сложно, помоему.

В вашем случае прерывания тут не нужны собственно. Задача ведь у контроллера одна...

Делаем преобразование АЦП синхронно, ожидая его окончание(буквально 100...200мкс).

Потом считаем количество переполнений таймера(это можно делать по признаку прерывания, который таймер в регистре выставляет независимо от того разрешены они или нет, и его надо специально сбрасывать записью в тот же регистр "1"), настроенного на счёт до переполнения за 100мс.

Учение - изучение правил. Опыт - изучение исключений.

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

Таймер в 13й тиньке один восьмибитный, на 100мс при частоте 1.2 МГц не получится прерывание настроить.

Минимум 1172 такта будет, а нам надо не больше 255

Да, можно было запустить АЦП при инициализации МК, но проблема, скорее всего не в этом )

В моем варианте конверсия происходит после ~250 тактов после инициализации МК, может какие то процессы при этом устаканятся после запуска МК.

А вообще то единица отсчёта то не 100мс а 20

Поэтому можно упростить, поставив предделитель таймера, и совпадение по нужному числу, и отсчитать этот интервал 0-255 раз (значение АЦП).

Но проблема остаётся)

То есть, в принципе, проблема решена схематически, просто интересно, откуда ноги растут :)

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

Ноги у тебя растут видимо от процедуры умножения, она может неадекватно отрабатывает при нулевом значении...

У таймера есть предделитель, вплоть до 1024 если память мне не изменяет. Можешь и по 20мс считать, делов то.

Если использовать предделитель таймера 1024, при тактовой частоте 1.2Мгц таймер будет считать практически миллисекунды, т.е. до 250мс он сосчитать до переполнения всяко сумеет.

таймер настроить надо в режим CTC, в регистр сравнения внести значение 20 и приготовится отслеживать прерывания по сравнению. В программе останется только считать эти прерывания(без разрешения и обработчика), и сбрасывать флаг.

А вот АЦП я бы запустил через 100мс от старта контроллера, ведь такая минимальная задержка всёравно нужна. А дальше синхронно производим запуск АЦП, ждём его результатов и добиваем столько циклов таймера, сколько измерили через АЦП за вычетом 5(5 циклов таймера - 100мс).

Если меньше 5 - сразу выходим(100мс у нас уже отработало до запуска АЦП)

Учение - изучение правил. Опыт - изучение исключений.

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

Да, тут я ошибся, точно, считает почти миллисекунды.

Но без прерываний вроде как не будет проще, тогда надо будет сбрасывать флаг программно.

Но попробую так сделать)

Синхронно, это имеется ввиду один раз запустить конверсию АЦП?

Или запускать периодически, чтобы отслеживалось текущее состояние потенца?

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

Нет, синхронно это значит запустить и ждать пока не закончит. АЦП отработает раньше чем таймер насчитает единицу...

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

Учение - изучение правил. Опыт - изучение исключений.

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

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

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

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

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

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

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

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

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

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

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

  • Сообщения

    • Зачем? Это всего лишь буферная ёмкость между ИИП и платой усилителя, сглаживающая возможные просадки. А плёнка/керамика есть(должна быть) на плате, возле питающих микросхему "ног", как в этом варианте  Поскольку система бюджетная, для "2." пара 15ас-213 вполне приемлема. А что ты планируешь в качестве ".1"?  Сабвуфер всё-таки.
    • Ну, обычное сложение диодным "ИЛИ" выходов интеграторов каналов стабилизации выходного напряжения и выходного тока, "кто перетянет". В чём вопрос-то? Будет ли работать? Ну будет работать. Или вам мнение про что-то другое надо?
    • Если плата односторонняя - поставьте заклёпку.
    • Очевидно, внимательно смотреть по всем цепям, которыми подключено, начаная с питания?
    • Вот любительская конструкция в которой можно подглядеть интересную систему замера сопротивления и в целом возможную топологию.   Так же советую заценить мануалы на В7-38, В7-84 и особенно В7-87. Последние два весьма современные приборы, и из В7-87 по сути весь "фронтэнд" можно взять как базу. Однако, прежде чем начать разрабатывать конкретную схему, стоит уточнить требования к итоговому прибору, да и его конструктив в том числе. Настольный/переносной? Какая у прибора будет разрядность? Какой будет использоваться АЦП? На тему встроенных АЦП МК есть отличная статья от Леонида Ивановича, где описана проблема, которая возникнет при работе с ними, и метод её решения. https://leoniv.livejournal.com/194681.html С диапазонами непонятка. В параметре "10мВ-1В" что имеется в виду? Не понятно, почему все пределы не кратны по десятке (например, 1/10/100 или 5/50/500). С токовыми пределами тот же вопрос, 1мА-100мА что означает, и почему пределы 1А и 5А не кратны друг другу, скажем как 1А и 10А (ну или обратно, 5А и 500мА)?   Касательно входного делителя. Не обязательно делать его на все пределы индивидуально, поставьте туда перед АЦП усилитель-буфер с переключаемым усилением между х1 и х10, например, ведь в любом случае, от схемы требуется измерять ток, а для этого нужен будет усилитель сигнала с шунта. Поэтому можно использовать этот усилитель для добавления в делитель некоторых пределов. Делитель будет делать "шаг" в сто раз - х1 х100, а после него стоит усилитель, добавляющий, в данном случае, предел х10 и х0.1 Так, например, построен В7-38, разве что х10 усилителя там нет, это "усиление" реализовано за счёт переключения предела АЦП с 2В до 0,2В. Коммутаторов, в таком случае, в цепи напряжения будет два - реле переключающее х1 и х100 делитель, поскольку оно работает с возможными +/-500В по входу, и ключ на полевиках типа DG419/DG411/4052/4053/etc, переключающий усиление буфера между х1 и х10, работающий с +/-5В максимум. Обычно делители ставят по принципу R+9R+90R+... и тд, таким образом мы в любой точке включения получаем делитель, дающий одну десятую/сотую и тд от входного напряжения. От этого метод с усилителем в 10 раз и кажется мне более логичным - нужно реализовать всего один делитель 99:1 (например из двух резисторов МРХ 10 МОм и 100кОм, параллельно 100кОм прицепить цепочку настройки, которая собьёт его сопротивление до 90к), после чего уже индивидуально подстраивать х10 усилитель и входной делитель. Плюс, получаем узел, который можно использовать для усиления сигнала с шунта. В целом, так же можно снизить и число шунтов, в "крутых" приборах я видел их от силы два, на "много ампер" и на "всё остальное", что реализуется усилителями после них. Тут уже вопрос стоит в том, какое падение напряжения на шунте максимально допустимо для конструкции. Я в своих мыслях по измерителю на ICL7135 пришёл к выводу, что пожертвовать 0,1В...0,2В на амперметр это максимум, который можно себе позволить.   PS На всякий случай, а то может кто прицепится Я не предлагаю использовать такие экзотические вещи, как сборки согласованных резисторов, а так же сильно запариваться над эффектами, которые по-хорошему надо бы учесть при финальном проектировании - навроде дрейфа коэффициентов деления/усиления от температуры, потому что не тот уровень конструкции. Исходя из скромного ТЗ, как я понял, задачи получить какой-либо серьезный измеритель не стоит, чисто прибор уровня детешки +/-, с возможностью вывода значений во внешний мир через USB. PPS Мануалы на вышеназванные мультиметры со схемами: v7-87.pdf v7-84-тпг.pdfВ7-38 - ТОИЭ (вариант 1).djvu
    • Не совсем вас понял, я предложил пересчитать резисторы в делителе и оптрон запитать от ваших 12 В, что не так?
    • Прощу высказать мнение насчет схемы управления, в части регулировки тока, . Схема собрана автором и лежит в интернете.  LM358 universal.rar
  • Похожий контент

×
×
  • Создать...