Jump to content
Sign in to follow this  
-=FISHER=-

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

Recommended Posts

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

Edited by ARV

Share this post


Link to post
Share on other sites
9 минут назад, ARV сказал:

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

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

Share this post


Link to post
Share on other sites
9 часов назад, -=FISHER=- сказал:

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

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

Share this post


Link to post
Share on other sites

Конденсаторы Panasonic. Часть 4. Полимеры – номенклатура

В заключительной, четвертой статье из цикла «Конденсаторы Panasonic» рассматриваются основные достоинства и особенности использования конденсаторов этого японского производителя на основе полимерной технологии. Главной конструктивной особенностью таких конденсаторов является полимерный материал, используемый в качестве проводящего слоя. Полимер обеспечивает конденсаторам высокую электрическую проводимость и пониженное эквивалентное сопротивление (ESR). Номинальная емкость и ESR отличается в данном случае высокой стабильностью во всем рабочем диапазоне температур. А повышенная емкость при низком ESR идеальна для решения задач шумоподавления и ограничения токовых паразитных импульсов в широком частотном диапазоне.

Читать статью

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)) //если уперлись в нижнюю или верхнюю границу
	{
		//мигаем
	}
}

 

Share this post


Link to post
Share on other sites

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

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);}
		}
	}	
}

 

Share this post


Link to post
Share on other sites
                     

STM32G0 - средства противодействия угрозам безопасности

Результатом выполнения требований безопасности всегда является усложнение разрабатываемой системы. Особенно чувствительными эти расходы стали теперь, в процессе массового внедрения IoT. Обладая мощным набором инструментов информационной безопасности, микроконтроллеры STM32G0 производства STMicroelectronics, объединив в себе невысокую цену, энергоэффективность и расширенный арсенал встроенных аппаратных инструментов, способны обеспечить полную безопасность разрабатываемого устройства.

Подробнее...

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

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

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

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

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

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

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

 

 

Share this post


Link to post
Share on other sites
14.09.2019 в 11:46, Starichok сказал:

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

 

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Сообщения

    • блин... ДГС не стабилизирует напряжения, а выравнивает, сам он не за чем не следит, просто пропорционально току протекающему через одну обмотку, на второй обмотке наводится напряжение, встречное к питающему, и это наведение подобрано так, чтоб компенсировать изменения напряжения во вторичной цепи выхода в котором произошли изменения, для другого выхода.  Например - нет ДГС. Допустим, что регулятор стабилизирует напряжение только по первому выходу, - чисто для пояснения роли ДГС и его функции. Есть некоторая амплитуда и ширина импульсов, при которой напряжение близко к образцовому. Произошли изменения: напряжение в сети снизилось, нагрузка выросла по первому выходу... напряжение на первом выходе стало меньше образцового. регулятор увеличивает ширину импульсов и доводит напряжение до нормы по первому выходу. А в это время, на втором выходе, напряжение выросло, на величину падения во вторичной цепи первого выхода. Но вот установили ДГС, и напряжение на втором выходе снизилось пропорционально току по первому выходу. Вот на численном примере Было по 10 вольт на обоих выходах, На первом выходе ток потребления вырос на 1 Ампер, и напряжение на нём упало до 9 Вольт. Напряжение на втором выходе упало до 9,5 Вольт (пол вольта упало в первичке, пол во вторичке, поэтому на втором выходе на пол вольта, так как во вторичке у него потерь не было). Регулятор увеличивает ширину импульсов и доводит напряжение на первом выходе до 10 Вольт, а напряжение на втором выходе становится 10,5 Вольт, эти лишние 0,5 Вольта это падение напряжения во вторичной цепи первого выхода, которые скомпенсировал регулятор на первом выходе. Но поставили ДГС который на каждый ампер тока снижает напряжение в другом канале на пол вольта. И теперь напряжения стабильны. Теперь перенесите работу ДГС, на БП без регулятора и его роль становится видна - выравнивать напряжения на выходах, чтоб они не сильно отличались. Для численного примера без него будет под нагрузкой 1 Ампер 9 и 9.5 Вольт соответственно, а с ним 9 и 9 Вольт, - напряжения близки.
    • Схему положите, обозначьте что, где и сколько, может кто-нибудь ответит. Нужно давать полную инфу, я писал. Как это понимать, что послужило пищей для такого вывода? Дырка появилась, ножки отвалились, ещё что-нибудь...  если ножки, то какие, что с питанием и тд...
    • https://forum.cxem.net/index.php?/topic/198431-светодиодные-лампы-хорошие-и-плохие/
    • Пока не поздно, измените проект, если не желаете влипнуть на ощутимые деньги.
    • Потрахается, перепаяет. А заодно пусть уменьшит ток драйвера раза в полтора-два, снизит нагрев. И в следующий раз не выбрасывайте чек. Задолбайте магазин заменами по гарантии (если сами не задолбаетесь бегать туда)
    • Ну тут еще и от конструктива зависит. У меня тоже один завелся сразу и без проблем, а со вторым еще и повоевать пришлось. Делал тоже с разницей в пару лет))) Детали все оригинал в обоих случаях (проверено), платы одинаковые, а вот конструктив весьма отличается. P.S. Да и пару лет назад проблемы с подмагничиванием сердечника транса не было в принципе, а сегодня это проблема
    • А зачем бороться? Блок же не стабилизированный, поэтому выходное напряжение и будет нестабильно и зависимо от сетевого напряжения.  А если сильно завышает напряжение, возможно проблема ещё и в выбросах, резонансах. Выбросы частотой, временем переключения, и снабберами можно уменьшит. (Но так же и увеличить ими же).
  • Покупай!

×
×
  • Create New...