Вопросы чЯйника

Раздел начинающих пользователей
Правила форума
В песочнице можно спрашивать когда незнаешь где спросить.
В песочнице нелзя посылать в гугл
В песочнице можно задавать любой вопрос, но на него могут и неответить.
Песочница для тех, кто начинает свои вопросы с защиты чайников от пинков.
В песочницу будут перетаскиваться вопросы неполучившие ответа.
Песочница - попытка навести порядок.
На песочницу большие надежды.

Re: Вопросы чЯйника

Сообщение andrewproffi (Андрей) » 30 ноя 2017, 23:45

Прохожий писал(а):Всем привет!
Не подскажите, пожалуйста, как из регистра MCUCSR Attmega32 Забрать данные? Можно всем байтом, можно и по-битно.
(Вопрос к тому, что хотелось бы видеть из регистра WDRF (Watchdog Reset Flag) флаг перезагрузки по собаке и при старте каждый раз этот флаг суммировать с предыдущими, записывая итог в EEPROM и время от времени посматривать сколько их там накопилось)

вставкой на Си, где присваиваем созданной переменной значение нужного регистра. либо вставкой на Си работать напрямую с регистром как с числом.
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: andrewproffi
Имя: Андрей
(Томск)
Разработчик
Разработчик
Информация о пользователе

Re: Вопросы чЯйника

Сообщение Прохожий (Прохожий) » 01 дек 2017, 06:52

andrewproffi писал(а):вставкой на Си, где присваиваем созданной переменной значение нужного регистра. либо вставкой на Си работать напрямую с регистром как с числом.


Спасибо, что уделяете время на добрый совет :)
Это получается, что W переменная, а PINC регистр? Тогда по синтаксису (если байт расположен в $34 регистре будет выглядеть так?) FCV_W=$34; Не компилируется, ошибку выдаёт. Или FCV_W=MCUCSR;(это весь байт MCU Control and Status Register) тогда компилируется, но вожусь с протеусом, что бы переменную посмотреть
Последний раз редактировалось Прохожий 01 дек 2017, 07:31, всего редактировалось 1 раз.
Ник: Прохожий
Имя: Прохожий
Практикант
Практикант
Информация о пользователе

Re: Вопросы чЯйника

Сообщение Enigm (Enigm) » 01 дек 2017, 11:03

Если вам нужно знать значение бита WDRF то это вам поможет.
FCV_WDT = ((MCUCSR & (1 << 3)) != 0);
Переменная WDT примет значение бита WDRF
Число сдвига,(в данном случае 3) указывает на нужный нам бит.
Можно эту часть ((MCUCSR & (1 << 3)) != 0); вставить в оператор IF (только через C) и сразу выполнять уcловие, если в бите 1 то делаем то то и тд, так можно избавится от лишней переменной WDT
Тут выкладывали хороший документик по работе с битами и байтами почитайте.
Операции с битами.doc
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Enigm
Имя: Enigm
(Сочи)
Разработчик
Разработчик
Информация о пользователе
Вернуться наверх

Re: Вопросы чЯйника

Сообщение Прохожий (Прохожий) » 05 дек 2017, 14:46

Спасибо за подсказку и ссылку :) Всё отлично! Правда столкнулся с другой проблемой. В Атмега 32 не получается записать единицу в регистр MCUCSR=1<<WDRF; Сначала протеус не работал толком, заменил версию, ватчдог заработал, но всё равно не записывается. Попробовал в железе, тоже не записывается :) Заранее благодарен за ответ :)
Ник: Прохожий
Имя: Прохожий
Практикант
Практикант
Информация о пользователе
Вернуться наверх

Re: Вопросы чЯйника

Сообщение Enigm (Enigm) » 05 дек 2017, 14:52

MCUCSR=(1<<WDRF);
Аватар пользователя
Ник: Enigm
Имя: Enigm
(Сочи)
Разработчик
Разработчик
Информация о пользователе
Вернуться наверх

Re: Вопросы чЯйника

Сообщение Вячеслав (Вячеслав) » 05 дек 2017, 16:17

Прохожий писал(а): в железе, тоже не записывается

Если команда в программе как должно не выполняется. железо не поможет. Скобки лишними не бывают, верно. Иногда в вычислениях используют сложную связку действий с разрядами.
Был пример "издевательства" над выходным кодом с DS18B20. Если помнить, что за именем стоит код( число), мне удобно проверять действия с битами на стареньком калькуляторе:
BinCalc.rar

Пусть имя 3-го разряда регистра reg будет ax. Начальное значение reg=7
#define ax 3
Передвинуть reg на 3 позиции влево, можно:
reg=reg<<ax;
Пиши в рг. калькулятора 7 и нажимаешь 3 раза стрелку "сдвиг влево". Получим 38 hex или 56 dec.
Установить бит номер 3 регистра reg можно:
reg=reg|(1<<ax);
(1<<3) - выражение в Си означает,число 1 сдвинутое на 3 разряда влево, маска с установленным 3-им битом. Здесь 2 действия на калькуляторе (RPN Calculator): сдвиг 1 и ИЛИ со значением reg. Или столбиком считай.
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Вячеслав
Имя: Вячеслав
(Саратов)
Суперконсульт
Суперконсульт
Информация о пользователе
Вернуться наверх

Re: Вопросы чЯйника

Сообщение Прохожий (Прохожий) » 05 дек 2017, 16:56

Спасибо парни за помощь и тем более с такими подробными разъяснениями. Сегодня более подробно ознакомился с любезно предоставленным Enigm файлом Операций с битами (даже оригинал в инете нашёл :) ). Через FCV_WDT = ((MCUCSR & (1 << 3)) != 0); бит "вижу". Но со скобками или без MCUCSR=1<<WDRF; так записать и не удалось. Вячеслав, спасибо за калькулятор и алгоритм действий :)
Дело в том, что, как я понимаю, бит WDRF показывает был ли резет МК по ватчдогу. При старте контроллера по питанию, в железе, он у меня "ноль", потом при сбросе по вачдогу должен встать в "единицу". И при следующем старте контроллера он должен единицей и остаться которую мы сбрасываем "нолём" или перезапуском по питанию. Вот как раз этой единицы я и не вижу. Хотел принудительно её записать для эксперимента. При этом при отсутствии или наличии asm ("wdr") вачдог работает как надо :) (я уже ранее отмечал, всё делается для того, что бы при резетах по собаке, всё суммировалось и копилось, что бы потом при достижении определённого уровня вывести на индикацию. А иначе никак стату по помехами и ошибках в топологии платы, деталях, недостаточной экранировке не найти :)
Фьюзы все отрублены, кроме SPIEN. Газует от кварца 16МГц.
Ник: Прохожий
Имя: Прохожий
Практикант
Практикант
Информация о пользователе
Вернуться наверх

Re: Вопросы чЯйника

Сообщение щербатый (щербатый) » 05 дек 2017, 17:39

Вячеслав писал(а):мне удобно проверять действия с битами на стареньком калькуляторе.

Приветствую Вячеслав. Ну ничего себе, у тебя старенький калькулятор. Это какой то мегакалькулятор. Поставлю себе, поработаю. Один недостаток вижу сразу, место на экране много занимает. Посмотри мой, я уже выкладывал его здесь. Все самое нужное под рукой, никакой избыточности. Строго по Оккаму. Отсекай лишнее.
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: щербатый
Имя: щербатый
Супер разработчик
Супер разработчик
Информация о пользователе
Вернуться наверх

Re: Вопросы чЯйника

Сообщение Вячеслав (Вячеслав) » 06 дек 2017, 05:57

Прохожий писал(а):А иначе никак стату по помехами и ошибках в топологии платы, деталях, недостаточной экранировке не найти

Большую часть "карьеры" работал с железом. Никакими программными увертками нельзя убрать ошибки в топологии платы. Это смешно. Некоторые производители дают указания по топологии ПП с компонентом. Присмотрись. По борьбе с помехами написаны тома. Борись с ними. Используй годное. Экранируй грамотно. 2х2=4. Использую FC по лени своей. Надеюсь, что разработчика ПО правильно запускают МК подачей питания и вход- выход по прерыванию делают с сохранением и восстановлением нужных регистров. Верить надо люДям.
щербатый писал(а):Посмотри мой

Этот есть, арифметика слаба. Деление на 10 не сделаешь. :)
calc32.rar

Что-то хиреет наш наш форум. Лыжи мажут?
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Вячеслав
Имя: Вячеслав
(Саратов)
Суперконсульт
Суперконсульт
Информация о пользователе
Вернуться наверх

Re: Вопросы чЯйника

Сообщение Прохожий (Прохожий) » 06 дек 2017, 07:36

Вячеслав писал(а):Большую часть "карьеры" работал с железом.

Так я тебе тоже скажу, как работник работнику с железом :) Экранирование, разводка плат и прочее всегда спотыкается об одно и тоже - это проверка конечного результата в неблагоприятных условиях :) Доходит до того, что лабораторный блок питания приходится задвигать в сторону и "испытывать" на чём попало :) Но, блин...нужно не только смоделировать ситуацию, а ещё её как то рассмотреть и систематизировать. Речь собственно об этом и идёт. Вот тут низкий поклон AVR, так как по регистру можно посмотреть, собрать, обсчитать и получить статистику по некоторым видам неисправности. Включил систему и идёшь спать спокойно. Всё работает тип-топ недельку другую по всякому...потом слил прошивку, посмотрел что в EEPROM накидано, сделал выводы и париться не нужно :) Вот я и хочу регистр MCUCSR по всякому измучить, но поставленной задачи добиться. По существу наблюдение статы 2/3 форумчан так то тоже надо :)
Форум - это да...народ в ардуино подался, их понять можно :) Хотя со стороны, по-ложа руку на сердце, форум сам к этому упорно шёл. Не смотря на большое количество хороших и знающих людей, всегда готовых помочь (низкий Вам поклон), сам форум (его концепт) не очень доброжелательный :)
Ник: Прохожий
Имя: Прохожий
Практикант
Практикант
Информация о пользователе
Вернуться наверх

Пред.След.

Вернуться в ПЕСОЧНИЦА

Кто сейчас на форуме

Пользователь просматривает форум: tigr777, Volume