|  | 
| 
 | ||||||||
|     | 
|  |  455706  536  46  31 |  | Опции темы | Поиск в этой теме | 
|  03.02.2014, 15:08 |  41   | 
| Ветеран Фонарёвки Регистрация: 28.04.2013 Последняя активность: 08.01.2024 23:25 
					Сообщений: 3969
 Сказал(а) спасибо: 529 
		
			
				Поблагодарили: 921 раз(а) в 628 сообщениях
			
		
	 |  Re: Модифицируем народный линейный драйвер для тактовой кнопки 
			
			Кто можетсказать, где в этой прошивке обрабатывается нажатие кнопки? Группы режимов, количество нажатий? Чтоб сократить их количество и поменять последовательность.
		 | 
|   |     | 
|  03.02.2014, 15:19 |  42   | 
| сволочь фонарёвки Регистрация: 27.05.2011 Последняя активность: Сегодня 13:32 
					Сообщений: 40357
 Сказал(а) спасибо: 6666 
		
			
				Поблагодарили: 36039 раз(а) в 16649 сообщениях
			
		
	 |  Re: Модифицируем народный линейный драйвер для тактовой кнопки 
			
			группы-режимы: unsigned char Mode[5][3]={{6,6,6},{29,33,36},{73,117,146},{0b00001,0b01000,0b01001},{0b10000,0b10001,0b11001}}; первые режимы в трех группах, вторые режимы в трех и т.д. до 5-го (десятичные цифры - скажность, двоичные - управление выходными портами, чтобы включались соответствующие стабилизаторы ) нажатия обрабатываются в процедуре static inline void SwitchMode() [Исправлено: galex, 03.02.2014 в 15:20] | 
|   |     | 
|  03.02.2014, 18:49 |  43   | 
| Ветеран Фонарёвки Регистрация: 28.04.2013 Последняя активность: 08.01.2024 23:25 
					Сообщений: 3969
 Сказал(а) спасибо: 529 
		
			
				Поблагодарили: 921 раз(а) в 628 сообщениях
			
		
	 |  Re: Модифицируем народный линейный драйвер для тактовой кнопки 
			
			допустим, я хочу оставить только одну группу 1 . 5 шимом из 350 2 . 50 шимом из 350 3 . 200 шимом из 350 4 . 1050 без шима 5 . 2800 без шима Что из этого массива остается? Так? unsigned char Mode[5]={6,36,146,0b01001,0b11001}; И я не вкурю никак, каким образом мы кнопку опрашиваем. PORTB &= ~_BV(PB1); = сюда смотреть? Как изменять число нажатий? По программе понятно, что по значению в (B == 0b/число/) выбирается режим. Но как туда число попадает... Голова сегодня уже квадратом от настроек ШИМ и портов   | 
|   |     | 
|  03.02.2014, 19:05   |  44   | |
| Ветеран Фонарёвки Регистрация: 08.10.2011 Последняя активность: 30.03.2024 21:54 
					Сообщений: 7998
 Сказал(а) спасибо: 934 
		
			
				Поблагодарили: 5204 раз(а) в 2785 сообщениях
			
		
	 |  Re: Модифицируем народный линейный драйвер для тактовой кнопки Цитата: При нажатии/отпускании кнопки генерится прерывание ISR(INT0_vect). | |
|   |     | 
|  03.02.2014, 23:18 |  45   | 
| Ветеран Фонарёвки Регистрация: 28.04.2013 Последняя активность: 08.01.2024 23:25 
					Сообщений: 3969
 Сказал(а) спасибо: 529 
		
			
				Поблагодарили: 921 раз(а) в 628 сообщениях
			
		
	 |  Re: Модифицируем народный линейный драйвер для тактовой кнопки 
			
			Спасибо. Завтра днем буду дальше разбираться. Погуглю ISR
		 | 
|   |     | 
|  04.02.2014, 13:28 |  46   | 
| Увлеченный |  Re: Модифицируем народный линейный драйвер для тактовой кнопки 
			
			а можно вместо кнопки, подключить магнитный датчик ?
		 | 
|   |     | 
|  04.02.2014, 13:32 |  47   | 
| сволочь фонарёвки Регистрация: 27.05.2011 Последняя активность: Сегодня 13:32 
					Сообщений: 40357
 Сказал(а) спасибо: 6666 
		
			
				Поблагодарили: 36039 раз(а) в 16649 сообщениях
			
		
	 |  Re: Модифицируем народный линейный драйвер для тактовой кнопки 
			
			почему нет, вполне. который дискретный. но, управление ползунком/кольцом/кнопкой с большим ходом -  вы сможете морзянку отбивать таким?
		 | 
|   |     | 
|  04.02.2014, 13:45 |  48   | 
| Увлеченный |  Re: Модифицируем народный линейный драйвер для тактовой кнопки 
			
			мне всего 3 режима надо в подводн фонарь, а какой датчик взять подскажите , я так понял хола нельзя ?
		 | 
|   |     | 
|  04.02.2014, 13:55 |  49   | 
| Ветеран Фонарёвки Регистрация: 28.04.2013 Последняя активность: 08.01.2024 23:25 
					Сообщений: 3969
 Сказал(а) спасибо: 529 
		
			
				Поблагодарили: 921 раз(а) в 628 сообщениях
			
		
	 |  Re: Модифицируем народный линейный драйвер для тактовой кнопки 
			
			Пишу для себя коменты к коду, многое уже понятно. Но все равно еще не понял, как записываются биты в B, куда посмотреть? B == 0b00000001 // < . > B == 0b00010000 //< _ > B == 0b00010010 // < _ . > B == 0b00100001 //< . _ > B == 0b00000011 // < . . > B == 0b00110000 //< _ _ > B == 0b01110000 //< _ _ _ > B == 0b00000111 //< . . . > Допишу коменты, выложу. Пока что разобрался с портами выхода и режимами. | 
|   |     | 
| Поблагодарили: 1 раз | 
			 Ikepod (07.12.2014) | 
|  04.02.2014, 14:03 |  50   | 
| сволочь фонарёвки Регистрация: 27.05.2011 Последняя активность: Сегодня 13:32 
					Сообщений: 40357
 Сказал(а) спасибо: 6666 
		
			
				Поблагодарили: 36039 раз(а) в 16649 сообщениях
			
		
	 |  Re: Модифицируем народный линейный драйвер для тактовой кнопки 
			
			посмотрите тогда еще один вариант драйвера под тактовую. как раз 3 режима +мунлайт, и очень простое управление можно, почему нет. конкретную марку не подскажу, но надо искать дискретный (не аналоговый) с питанием от менее 3В, и как можно менее потребляющий в ждущем режиме (и все равно, скорее всего это будет в разы больше, чем 0.2мкА драйвера). возможно из телефона-раскладушки можно выковырять такой. | 
|   |     | 
|  04.02.2014, 14:23 |  51   | 
| сволочь фонарёвки Регистрация: 27.05.2011 Последняя активность: Сегодня 13:32 
					Сообщений: 40357
 Сказал(а) спасибо: 6666 
		
			
				Поблагодарили: 36039 раз(а) в 16649 сообщениях
			
		
	 |  Re: Модифицируем народный линейный драйвер для тактовой кнопки 
			
			если просто записать, то PORTB = если какой-то конкретный бит (например второй) установить/сбросить, то PORTB |= _BV(PB2); / PORTB &= ~_BV(PB2); ну или сразу несколько, первый и третийй, допустим: PORTB |= 0b00101; / PORTB &=~ 0b00101; вроде так. | 
|   |     | 
|  04.02.2014, 16:28 |  52   | 
| Ветеран Фонарёвки Регистрация: 28.04.2013 Последняя активность: 08.01.2024 23:25 
					Сообщений: 3969
 Сказал(а) спасибо: 529 
		
			
				Поблагодарили: 921 раз(а) в 628 сообщениях
			
		
	 |  Re: Модифицируем народный линейный драйвер для тактовой кнопки 
			
			TCCR0A = 0x83; задаем режим работы ШИМ 0b10000011 - это получается у нас FAST PWM? режим сброса OC0A при совпадении, и установки OC0A при достижении конца COM0A1=1|COM0A0=0|COM0B1=0|COM0B0=0|-|-|WGM01=1|WGM00=1 Зачем тогда используют ШИМ с фазовой коррекцией в других прошивках (с той же веломании 0х21 - выход на РВ1)? | 
|   |     | 
|  04.02.2014, 18:41 |  53   | 
| Ветеран Фонарёвки Регистрация: 28.04.2013 Последняя активность: 08.01.2024 23:25 
					Сообщений: 3969
 Сказал(а) спасибо: 529 
		
			
				Поблагодарили: 921 раз(а) в 628 сообщениях
			
		
	 |  Re: Модифицируем народный линейный драйвер для тактовой кнопки 
			
			Еще вопрос по обработке прерывания INT0. Для чего каждая строчка подробно? WDTCR |= (1<<WDCE) | (1<<WDE); //установка битов WDCE и WDE в 1? Это включение вочдога для атини13? WDTCR = 0x40 - что это дает? [Исправлено: MSS, 04.02.2014 в 18:44] | 
|   |     | 
|  05.02.2014, 16:04 |  54   | 
| Ветеран Фонарёвки Регистрация: 28.04.2013 Последняя активность: 08.01.2024 23:25 
					Сообщений: 3969
 Сказал(а) спасибо: 529 
		
			
				Поблагодарили: 921 раз(а) в 628 сообщениях
			
		
	 |  Re: Модифицируем народный линейный драйвер для тактовой кнопки 
			
			Есть вопросы по обработке прерывания по вочдогу. Посмотрите, кто разбирается и сможет дополнить? кусок с проверкой напряжения на аккуме более менее понятен. (при Р=0) Не понятно зачем включать и сразу выключать вочдог? Далее по обработке короткого нажатия на кнопку есть условие if ((bit_is_set(PINB,PB1))) {выполняем код и далее идет вочдог} WDTCR = 0x46 - почему 46? в даташит это зарезервированное значение. там же MCUCR=0x00;//The low level of INT0 generates an interrupt request это находится в условии, что кнопка не нажата. как это работает? Чуть ниже else {P=2 WDTCR |= (1<<WDCE) | (1<<WDE);// включили вочдог WDTCR = 0x44; //опять не понятно, почему 44??WDP3,WDP2=1; WDP1,WDP0=0 - зарезервировано?************************?? } } MCUCR=0x03;// The rising edge of INT0 generates an interrupt request т.е. при отпускании нажатой кнопки прерывание? И весь этот кусок заканчивается GIMSK=0x40;//101000 внешнее прерывание по INT0 не разрешено?? как это понимать? Не понятна логика работы ISR(WDT_vect) обработчика прерывания вочдога  ( например как это понять? B|=((1<<NB)<<4) ??? [Исправлено: MSS, 05.02.2014 в 17:43] | 
|   |     | 
|  06.02.2014, 15:19 |  55   | 
| Ветеран Фонарёвки Регистрация: 28.04.2013 Последняя активность: 08.01.2024 23:25 
					Сообщений: 3969
 Сказал(а) спасибо: 529 
		
			
				Поблагодарили: 921 раз(а) в 628 сообщениях
			
		
	 |  Re: Модифицируем народный линейный драйвер для тактовой кнопки 
			
			Вот, что у меня получилось откаментировать. Лично мне теперь на много понятней стало, что же там понаписано в программе было. Только не понял с регистрами GIMSK=0x40 -почему записываем 40? | 
|   |     | 
| Поблагодарили: 1 раз | 
			 galex (07.02.2014) | 
|  06.02.2014, 19:40   |  56   | 
| Ветеран Фонарёвки Регистрация: 08.10.2011 Последняя активность: 30.03.2024 21:54 
					Сообщений: 7998
 Сказал(а) спасибо: 934 
		
			
				Поблагодарили: 5204 раз(а) в 2785 сообщениях
			
		
	 |  Re: Модифицируем народный линейный драйвер для тактовой кнопки 
			
			Ватчдог взводится на 1 секунду. Где такое в даташите??? разрешение прерывания по 6-й ноге (INT0). GIMSK=0x40 = GIMSK=0b1000000 внешнее прерывание по INT0 разрешено. [Исправлено: ceramic, 06.02.2014 в 19:53] | 
|   |     | 
|  06.02.2014, 20:47 |  57   | 
| Ветеран Фонарёвки Регистрация: 28.04.2013 Последняя активность: 08.01.2024 23:25 
					Сообщений: 3969
 Сказал(а) спасибо: 529 
		
			
				Поблагодарили: 921 раз(а) в 628 сообщениях
			
		
	 |  Re: Модифицируем народный линейный драйвер для тактовой кнопки 
			
			WDTCR – Watchdog Timer Control Register стр 41 даташит 0x46=00101110 Bit 7 - WDTIF Bit 6 - WDTIE Bit 5 - WDP3 =1 Bit 4 - WDCE =0 Bit 3 - WDE = 1 Bit 2:0 - WDP[2:0] = 110 таблица 8.2 1 сек = 0110 - но у нас wdp3=1??? и wdp3=1, wdp2=1, wdp1=1, wdp0=0 в таблице - резерв Я так понимаю - устанавливаем третий бит и по таблице для 1 сек второй и первый т.е. 0b1110 или 0x14?? [Исправлено: MSS, 06.02.2014 в 21:07] | 
|   |     | 
|  06.02.2014, 23:01 |  59   | 
| Ветеран Фонарёвки Регистрация: 28.04.2013 Последняя активность: 08.01.2024 23:25 
					Сообщений: 3969
 Сказал(а) спасибо: 529 
		
			
				Поблагодарили: 921 раз(а) в 628 сообщениях
			
		
	 |  Re: Модифицируем народный линейный драйвер для тактовой кнопки 
			
			вот блин, x - получается HEX ... теперь все понятно с прошивкой. нуб я еще   теперь попробую тут рампинг прилепить... [Исправлено: MSS, 06.02.2014 в 23:38] | 
|   |     | 
|  07.02.2014, 14:56 |  60   | 
| Ветеран Фонарёвки Регистрация: 28.04.2013 Последняя активность: 08.01.2024 23:25 
					Сообщений: 3969
 Сказал(а) спасибо: 529 
		
			
				Поблагодарили: 921 раз(а) в 628 сообщениях
			
		
	 |  Re: Модифицируем народный линейный драйвер для тактовой кнопки 
			
			Исправил свои ошибки с переводом в двоичную систему. Окончательный вариант | 
|   |     | 
| Поблагодарили: 4 раз(а) |