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

Вебинар STM32G0 – новый лидер бюджетных 32-битных микроконтроллеров от STMicroelectronics

Компания Компэл приглашает вас 25 сентября принять участие в вебинаре, который посвящен новому семейству микроконтроллеров STM32G0. Вебинар рассчитан на технических специалистов и тех, кто хорошо знаком с семейством STM32. На вебинаре будут освоены современные методы тестирования производительности микроконтроллеров на примере самых бюджетных 32-битных семейств общего назначения STM32G0 и STM32F0 и проведено их подробное сравнение.

Подробнее

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
                     

Построение оптимального преобразователя мощности

Управляющие контроллеры, драйверы и МОП-транзисторы являются важнейшими элементами для инверторов и импульсных источников питания. Проектирование современных импульсных преобразователей, таких как импульсные источники питания (SMPS), DC/DC-преобразователи, приводы промышленных двигателей и инверторы солнечных батарей, необходимо выполнять с учетом целого ряда факторов. Существуют коммерческие, законодательные и экологические требования, направленные на повышение эффективности, снижение потерь, уменьшение эксплуатационных расходов, минимизацию потребления энергии. Кроме того, пользователи хотят видеть постоянное повышение эффективности без какого-либо увеличения габаритов и необходимости принятия дополнительных мер для защиты как элементов схемы, так и самих пользователей.

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

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

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

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

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

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

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

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

 

 

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  

  • Сообщения

    • возможно - у меня мало опыта - но как понял они слабое звено в цепи - может ошибаюсь - с учетом не большого опыта - чем лучше сделать условия работы ключей - меньше проблем - в схеме на ир2153 - я применил - с подсказки Сергея диоды на разряд - резисторы между стоком -истоком - результат - практически не греются и даже радиатор на них не ставил - здесь ес все в конечном итоге выйдет с основной схемой шим и зашитой- норм - что предложил - почему-бы не сделать работу ключей более комфортной.имхо
    • Много раз видел такие сообщения от других, про доп диоды, но не разу не встречал пробитые диоды у собственных транзисторов и никогда доп диоды не ставил и в сварочниках да же не видел такого, так что это миф о доп диодах)
    • Клиенту безграмотному я начну с 10-20 у.е. за страницу текста А4 .... и никак иначе ... А пока тебе ответят КНИГИ и ГУГЛЬ, которые ты даже не открывал, но возомнил себя супер-пупер программером, который безотказен для друзей .... Я таких всегда спрашиваю - А если друг уже без девочки пол-года и попросит тебя .... Тоже "возмешь" - ся
    • Делать линейный блок питания с такими характеристиками на микросхемах затруднительно. Слишком уж большие напряжения. Поэтому проще нарисовать схему на дискретных элементах. Расчетные параметры следующие. Выходное напряжение от 13в до 34в и выше. Устанавливается R17R18. Номинальное сопротивление нагрузки 14,45ом. Выходной ток номинальный 2,35А. Выходной ток в режиме ограничения не менее 3,0А. Задается R8. Выходной ток короткого замыкания около 0,2А. Порог распознавания напряжения короткого замыкания не менее 2 вольт. Задается резистором R9. Порог распознавания сопротивления короткого замыкания не менее 1,5ом. Задается резистором R9. Размах пульсаций выходного напряжения от пика до пика около 95мкв. Просадка напряжения при изменении выходного тока от 0А до 2,35А около 1,8мв. Выходное сопротивление около 0,00077ом или 0,77мОм. При изменении входного напряжения от 41в до 91в выходное напряжение изменяется примерно на 6мв (коэффициент стабилизации по напряжению около 4396). Температурный дрейф выходного напряжения около минус 2мв/°C. Минимальное статическое падение напряжения между входом и выходом 7в. Минимальное динамическое падение напряжения между входом и выходом 2в. 00_Bp_30v_80w_Расчетная_модель.pdf BP_34V_80W_Оригиналы_рисунков.zip    
    • @rocker60 , где и кто тут говорил про деление уровня сигнала с генератора?
    • спасибо, но ведь у вас источник 12 вольт, будет эта схема работать на 5 вольтах?
    • Я не знаю, как кто, я подаю на вход сигнал без всяких делителей! Зачем сигнал 250 mV делить на 10. На универсальный вход поступит 25 mV.  Во всех инструкциях и Service Manual как на отечественные, так и на импортные УНЧ и ресиверы вход AUX -250 mV. При таком уровне сигнала и надо проверять УНЧ. Грамотная проверка сигналом прямоугольной формы описана выше
×
×
  • Create New...