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

Литиевые батарейки Fanso для систем телеметрии и дистанционного контроля

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

Подробнее

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
                     

Приглашаем на вебинар Решения для построения ультразвуковых счетчиков жидкостей и газов на базе MSP430

Компэл совместно с Texas Instruments 23 октября 2019 приглашают на вебинар, посвященный системам-на-кристалле для построения ультразвуковых расходомеров жидкостей и газов на базе ядра MSP430. Вебинар проводит Йоханн Ципперер – эксперт по ультразвуковым технологиям, непосредственно участвовавший в создании данного решения. На вебинаре компания Texas Instruments представит однокристальное решение, позволяющее создавать точные недорогие счетчики жидкостей и газов.

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

вопрос: когда у тебя изменяется знак 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  

  • Сообщения

    • Кто это такие? Почему в печенках у тебя сидят? Расскажи
    • да нахрен он вообще нужен? покрасить и выкинуть, а так электролиты, дросселя из порошка, аккумуляторы
    • Мне очень запала эта схемка,кто бы ее правильно на кварц.стабилизацию качнул!?Хотя жалоб о стабильности от меня.Просто хотелось бы увести его из этого диапазона.  представляю мощного жука #1²  и #1³ Т1 КТ3130Б; Т2 Bfr93; Т3 Bfr93. Т1 КТ3107Л; Т2 КТ368; КТ913Б.     Для антенн буду использовать посеребренный провод. .ля,как же я доволен вашей схемкой! Всем огромное благодарное!
    • Вопрос следовало задать в теме защиты акустики, так так собственно к усилителю она имеет опосредованное отношение. По вопросу, я делаю так       
    • Здарова друзья!Ну что пробовал я собирать как и обещал,эту схему!Так как на схемке. Работает жучек,но мощность сильно падает,до 150метров,катушку на выходе делал так :L3 3+3витка(2катушки)спаивал в одну катушку,получался центральный выход на коллектор s9018,и катушечка L4 на 2виточка, от которой идет уже конкретно антенна,своими двумя витками помещалась посредине L3,3миллиметровый латунный сердечник плотно проходил внутри,и это не добавляло особо мощности,только взлетала частота до 145мГц что немножко упрощало его поиск и все. Потому я от этого каскада отказался.Просто перед антенной поставил конденсатор от 10--22pf!
    • То есть цифровой вольтметр определяет направление тока и по этому принципу ставит знак? И высчитывает разность потенциалов этого минуса?
    • Еще раз напишу, что стрелочки указывают направление тока. Если батарейку (любую) перевернуть, тока не будет, светодиод светится не будет. Ионы не перейдут через запрещённую зону PN-перехода диода  при "не той" полярности. Считай, что в мультиметре знак "минус" подсвечивает тот светодиод, который правый. Переворачиваешь правую батарейку, и мультиметр твой покажет напряжение без знака "минус".
  • Покупай!

×
×
  • Create New...