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

Запись "заводских" настроек в EEPROM AtMega8


-=FISHER=-

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

Во-первых, я сразу написал, что что-то напортачил с "краями"... Во-вторых, не рекомендую работать напрямую с OCRxx - лучше изменять и анализировать промежуточную переменную, а после её обработки её вывести в регистр за единственное обращение

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

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

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

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

9 минут назад, ARV сказал:

Во-первых, я сразу написал, что что-то напортачил с "краями"... 

Да я всё понял, очень жалко что в таком виде логика не работает. Думал может что-то очевидное упускаю.

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

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

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

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

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

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

9 часов назад, -=FISHER=- сказал:

Но вот незадача, как только упремся в 255 или 0, сюда больше не можем зайти!

просто нужно еще добавить проверку двух условий - когда равно 255 и когда равно нулю. и там принимать решение, что делать в этих случаях.

Мудрость приходит вместе с импотенцией...

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

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

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

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

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

10 часов назад, Starichok сказал:

просто нужно еще добавить проверку двух условий - когда равно 255 и когда равно нулю. 

Спасибо, добавил. В этом случае "мигаем" пока кнопка остается нажатой. Потом кнопку отпусили и при следующем нажатии яркость должна начать в противоположную сторону. Но ведь теперь туда уже не войти? Голову сломал уже, как же найти такой алгоритм, чтобы это заработало?...

void set_bright(uint8_t cnum, uint8_t mode)
{
	if((chanel[cnum].Bright[mode] < 255) && (chanel[cnum].Bright[mode] > 0)) //изменяем яркость, пока не упремся в границу
	{
		chanel[cnum].Bright[TARGET]+=dir;
	}
	
	if((chanel[cnum].Bright[mode]==255)||(chanel[cnum].Bright[mode]==0)) //если уперлись в нижнюю или верхнюю границу
	{
		//мигаем
	}
}

 

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

В общем я сделал "по тупому":

void set_bright(uint8_t cnum, uint8_t mode)
{
	if(dir==1) //если увеличиваем яркость
	{
		if(chanel[cnum].Bright[mode] < 255) //пока не уперлись в потолок увеличиваем яркость
		{
			chanel[cnum].Bright[TARGET]+=dir;
		}
		else //а когда упёрлись
		{
          	//мигаем тем каналом, яркость которого регулировали, останавливая мигание
          	//на предельном значении потолка, т. е. 255
			if(cnum==0){OCR1A=0; _delay_ms(100); OCR1A=255; _delay_ms(100); }
			if(cnum==1){OCR1B=0; _delay_ms(100); OCR1B=255; _delay_ms(100); }
		}
	}
	
	if(dir==-1) //если уменьшаем яркость
	{
		if(chanel[cnum].Bright[mode] > 0) //пока не уперлись в пол увеличиваем яркость
		{
			chanel[cnum].Bright[TARGET]+=dir;
		}
		else //а когда упёрлись
		{
          	//мигаем тем каналом, яркость которого регулировали, останавливая мигание
          	//на предельном значении потолка, т. е. 0          
			if(cnum==0){OCR1A=255; _delay_ms(100); OCR1A=0; _delay_ms(100);}
			if(cnum==1){OCR1B=255; _delay_ms(100); OCR1B=0; _delay_ms(100);}
		}
	}	
}

 

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

вопрос: когда у тебя изменяется знак dir?

если после отпускания кнопки, то получится ерунда.

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

нужно знак приращения менять после достижения 255 или достижения нуля.

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

а после отпускания кнопки знак dir изменится только в том случае, если новая переменная равно 1.

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

 

 

Мудрость приходит вместе с импотенцией...

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

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

14.09.2019 в 11:46, Starichok сказал:

вопрос: когда у тебя изменяется знак dir?

если после отпускания кнопки, то получится ерунда.

Да при отжатии кнопки, сейчас всё работает именно так как я и задумывал.

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

14.09.2019 в 11:46, Starichok сказал:

нужно знак приращения менять после достижения 255 или достижения нуля.

По моему плану именно при отпускании кнопки.

Мы все учились по-немногу, чему-нибудь и как-нибудь...

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

тебе, конешно,  виднее, я твоих планов не знаю.

но на мой взгляд, ты не правильно спланировал.

еще раз повторю:

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

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

добавить одну переменную - ноль проблем. зато не придется лишние разы торкать кнопку.

 

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

Мудрость приходит вместе с импотенцией...

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

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

@Starichok , тут логика такая: когда дожидаешься достижения определенного значения автоматически изменяемого параметра (тут - яркости), то велик шанс проскочить нужный уровень. И тут как раз уместно изменение знака приращения на противоположный, чтобы легко вернуться на нужный уровень :) 

Я делал по почти такому алгоритму управление термостатом при помощи одной кнопки, только у меня знак приращения менялся при отпускании кнопки только в том случае, если кнопка удерживалась нажатой больше 2,5 секунд, а если меньше - знак сохранялся. Это позволяло короткими тычками регулировать в пределах 1-2 шага в одну сторону, а смена направления возникала при намеренном проскоке требуемого значения.

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

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

понятное дело. именно поэтому я и сделал такую припуску к своему предыдущему посту.

Мудрость приходит вместе с импотенцией...

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

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

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

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

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

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

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

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

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

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

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

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

  • Сообщения

    • Для меня наверное лучше купить готовый.. цель повысить чувствительность до 1 mV.. Наверное на Авто стоит покупать , мне бы фотку какую нить..такого активного щупа..))
    • Так на схемах обозначается подключение к сети 220 В.
    • Привет, радионарод! Вот, решил показать, рассказать и дать попробовать свою придумку, как я внешнюю синхронизацию к "ослику" прикрутил. DSO138 уже не так популярен, но кто-то пользуется, кому-то быть может пригодится. Подробной информации по таким доработкам в сети не встречал, так что делюсь, чем сам измыслился. Собственно, схема. Немного фоточек. С "ослика" не пугайтесь, не умею я делать красивые корпуса с красивыми мордами лица к ним. Двухканального функционального генератора с возможностью двигать фазу у меня нет, поэтому какая-то программа-генератор из Интернетов, звуковая карта и DSO138. Смотрим синус, т.к. меандр из звуковухи никакой. Конечно, видна погрешность в измерениях. Прибор-то - игрушка. Да и генератор не блещет точным сигналом. Полноценного аналога внешней синхронизации (как у аналоговых приборов) не получится, но даже в таком виде эта доработка расширяет функционал осциллографа и дает в некоторых случаях возможность изучать два сигнала. Как пользоваться. Из иных доработок. Как видите, дурацкие ползунковые переключатели заменены на сдвоенные галетники на три положения. Кнопки поставлены большие тактовые 12х12 мм. Подпаяны паралельно, старые удалять не нужно. Светодиод тоже в паралель. Питание батарейное, от аккумулятора старого "умнофона". Полтора ампер-часа, наверное. Плата зарядки, плюс повышайка с фильтрами по питанию. Корпус алюминиевый от "не-знаю-как-правильно-называется", там жесткий диск стоял с парой ветродуйчиков. Гетинакс, оргстекло.   Короче, удачи!
    • Тут нет схемы самой Ардуино(но есть второе напряжение 3,3в , схема ниже)   Не вывозит!!!
    • Сорри, вопрос был не вам - исправлено.   И как Вы об этом узнали? Иными словами, можно ли без ПК узнать есть ли в кишках лого какая-либо рабочая программа или память пуста?
    • Мне нужно настраивать мд Квазар Арм там от 7 до 10 кГц.. Посоветуйте как мне поступить лучше?
×
×
  • Создать...