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

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


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

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

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

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

Ошибаетесь, конструкция ldi r16,(0<<x | 0<<y) записывает в r16 число 0, честно вычисленное сдвигом нуля на x и y соответственно. А потом этот ноль попадает в EECR. Если хотите занулить только определенные биты, придется либо побитовым доступом (cbi/sbi) либо чтением-модификацией-записью (in r16,EECR / andi r16,~(1<<x | 2<<y) / out EECR,r16). Обратите внимание на побитовое НЕ перед выражением.

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

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

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

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

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

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

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

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

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

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

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

Ошибаетесь, конструкция ldi r16,(0<<x | 0<<y) записывает в r16 число 0...

Если честно, бестолковая конструкция. Если бы нужно было установить биты в 1, тогда понятно. А вот нулевое значение, принудительно устанавливать в 0, да еще методом сдвига - абсурд.

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

Никакого абсурда. Простая унификация. Все равно сдвигать и считать константу будет компилятор а не программа и это произойдет один раз во время компиляции.

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

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

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

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

Всем здравствуйте . Прошу разъяснить режим Power-save Mode МК ATmega8 ? Как я понял в этом режиме Таймер2 находящийся в асинхронном режиме продолжает считать во время сна . А как ведет себя МК когда наступает прерываени по совпадению или переполнению Т2 , ведь счет времени идет в прерывании , контролер просыпается на время обработки прерывания и потом опять засыпает ? Или его каждый раз после обработки прерывания надо отправлять в сон ?

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

нет, он тупо просыпается и ВСЁ. Чтобы его снова загнать в сон нужно снова дать команду.

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

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

нет, он тупо просыпается и ВСЁ. Чтобы его снова загнать в сон нужно снова дать команду.

Спасибо , с этой частью режима сна все понятно , но полной ясности так и нет , остается не понятно , в каком месте программы подавать команду sleep ? Можно ли её расположить в самом прерывании Таймера 2 , ну типа в прерывании посчитались секунды , минуты , часы и в конце по условию , если оно истинно ( конкретно в моем случае , опрос пина , если там 0 то sleep) - спать ? И еще , саму настройку регистра MCUCR на Power-save Mode прописывать в прерывании или майне ?
Ссылка на комментарий
Поделиться на другие сайты

Технически, запрета нет. Но проснуться контроллер уже не сможет, поскольку просыпается он при входе в обработчик прерывания, а когда он в нем и уснул, прерывания запрещены глобально (бит I регистра SREG). То есть либо разрешать их искусственно (sei) и мучиться со стеком (впрочем, если подойти к этому аккуратно, может и не так уж сложно), либо засыпать в main'е.

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

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

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

Режим сна описывается один раз, в процессе инициализации.

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

Обычно в сон загоняется контроллер в основном цикле программы. Если его нет то делай вход в сон в бесконечном цикле.

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

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

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

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

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

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

У тебя программы основной вообще нет, всё работает чисто на прерываниях?

Есть , небольшой кусочек , опрос кнопок . Инициализацию сна пропишу в начале main-а , а условие со sleep вначале основного цикла . Так , наверное , будет для меня проще .

Жара спадет проверю все на практике ,

Еще раз , спасибор вам мужики !

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

Всем добрый вечер ! Опять вопрос ? Теперь по фузам . В коде который я брал за основу вот от сюда часы тактируются счетчиком Т1 от кварца на 8МГц , я переписал код под счетчик Т2 с часовым кварцем , тактирование самого МК осталось прежнее 8МГц , но от внутреннего RC генератора , дописал режим сна , в протеусе вроде как работает , но есть небольшой косяк , через несколько секунд 8-10 примерно , в режиме сна , по череди загораются разряды с частотой в 1 сек , типа бегущей строки , и опять секунд 10 индикация оключена . Вот хочу посмотреть на это дело в реальности , но блин эти сташные фьюзы :umnik2: , да еще в такой комбинации , чтобы МК тактировался от 8МГц , а Т2 от 32768Гц , я немею и потею :heat: . Помогайтие !!

У меня сейчас такая конфигкрация

post-187724-0-99105700-1434999080_thumb.jpg

Предполагаю вот такую конфигурацию

post-187724-0-58343200-1434999180_thumb.jpg

, если бы я прошил , то залочил бы МК ?

P.S. сейчас наткнулся на один форум , Как я понял мне фузы и не надо трогать , т.к когда Т2 устанавливается в асинхронный режим битом AS2 , то пины TOSC1 и TOSC2 отсоединены от порта С и Т2 тактируется от часового кварца , а сам МК от задоной частоты внутреннего RC генератора . Правильно ли я понял ?

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

Всем привет. Собрал такую схему-коректор показаний спидометра http://radioelectronika.ru/?mod=cxemi&sub_mod=full_cxema&id=475

Ничего не работает. Я так подозреваю что что-то напорол с fuse.

В статье сказанно

"Для загрузки программы в устройство подойдет любой ISP-программатор с минимальной скоростью программирования не выше 125 кГц. Дело в том, что с завода микроконтроллеры ATtiny2313 поставляют с внутренним RC-генератором. включенным на 500 кГц, а скорость программирования не может превышать 1/4 тактовой частоты. Чтобы переключить тактирование на внешний резонатор, необходимо перепрограммировать разряды конфигурации CKSEL1-CKSEL3 и CKDIV8. По умолчанию их состояние — 100 и О соответственно. Для работы с внешним резонатором частотой 16 МГц их необходимо перевести в состояние 111 и 1 соответственно. Остальные разряды менять не надо. Установка разрядов CKSEL1 — CKSEL3 в состояние 000 приведет к переключению микроконтроллера на внешний тактовый генератор и сделает невозможным программирование или изменение конфигурации без подключения внешнего источника тактовой частоты."

Будьте добры скажите какие fuse надо выставить.

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

hfuse=0xD9

lfuse=0xFF

Кстати, по умолчанию ATtiny2313 настроен на внутренний RC-генератор 8 МГц, но с предделителем 1:8, то есть реальная тактовая частота 1 МГц. AVRDoper (на железе Prottoss'a, оно же avr910) берет тиньку без малейших проблем.

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

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

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

Галочки специфичны для оболочки. В одних галочка означает поднятый бит (лог.0), в других сброшенный (лог.1). А вообще, в даташите, в разделе Memory Programming -> Fuse Bits расписано положение всех фузов в регистрах lfuse, hfuse, efuse, можно пошаманить вручную, это не сложно. Только учтите, что "выставленный" фуз это лог.0, а "сброшенный" - лог.1, особенность флеш-памяти. Еще можно запомнить состояние SPIEN и RSTDISBL регистра hfuse, их менять нельзя пока не обзаведетесь параллельным программатором.

Тактирование от кварца задается по диапазонам (0.4-0.9 МГц) ; (0.9 - 3 МГц) ; (3 - 8 МГц) ; (8 МГц - max), где max- максимальная тактовая частота, для ATtiny2313-20PU это 20 МГц, а для ATmega8L-8AU - 8МГц, за подробностями а даташит и к Евстифееву. То есть последний диапазон это не 8 МГц а >8 МГц.

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

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

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

Здравствуйте. Подскажите пожалуйста если "скрестить" вот эту схему

post-154527-0-72070200-1435406250.png

с программатором PIC к примеру:

post-154527-0-36248900-1435406369_thumb.jpg

получится ли USB программатор для PIC-ов?

рулим

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

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

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

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

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

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

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

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

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

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

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

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