|
|
|
230634 536 45 31 |
|
Опции темы | Поиск в этой теме |
03.02.2014, 15:08 | 41 |
Ветеран Фонарёвки
Регистрация: 28.04.2013 Последняя активность: 08.01.2024 23:25 Адрес: Харьков
Сообщений: 3980
Сказал(а) спасибо: 529
Поблагодарили: 921 раз(а) в 628 сообщениях
|
Re: Модифицируем народный линейный драйвер для тактовой кнопки
Кто можетсказать, где в этой прошивке обрабатывается нажатие кнопки? Группы режимов, количество нажатий? Чтоб сократить их количество и поменять последовательность.
|
03.02.2014, 15:19 | 42 |
сволочь фонарёвки
Регистрация: 27.05.2011 Последняя активность: Сегодня 15:02 Адрес: Россия, Пермский край
Сообщений: 38354
Сказал(а) спасибо: 5939
Поблагодарили: 32751 раз(а) в 15180 сообщениях
|
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 Адрес: Харьков
Сообщений: 3980
Сказал(а) спасибо: 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 Адрес: 哈尔滨
Сообщений: 8022
Сказал(а) спасибо: 934
Поблагодарили: 5193 раз(а) в 2784 сообщениях
|
Re: Модифицируем народный линейный драйвер для тактовой кнопки
Цитата:
При нажатии/отпускании кнопки генерится прерывание ISR(INT0_vect). |
|
03.02.2014, 23:18 | 45 |
Ветеран Фонарёвки
Регистрация: 28.04.2013 Последняя активность: 08.01.2024 23:25 Адрес: Харьков
Сообщений: 3980
Сказал(а) спасибо: 529
Поблагодарили: 921 раз(а) в 628 сообщениях
|
Re: Модифицируем народный линейный драйвер для тактовой кнопки
Спасибо. Завтра днем буду дальше разбираться. Погуглю ISR
|
04.02.2014, 13:28 | 46 |
Увлеченный
|
Re: Модифицируем народный линейный драйвер для тактовой кнопки
а можно вместо кнопки, подключить магнитный датчик ?
|
04.02.2014, 13:32 | 47 |
сволочь фонарёвки
Регистрация: 27.05.2011 Последняя активность: Сегодня 15:02 Адрес: Россия, Пермский край
Сообщений: 38354
Сказал(а) спасибо: 5939
Поблагодарили: 32751 раз(а) в 15180 сообщениях
|
Re: Модифицируем народный линейный драйвер для тактовой кнопки
почему нет, вполне. который дискретный. но, управление ползунком/кольцом/кнопкой с большим ходом - вы сможете морзянку отбивать таким?
|
04.02.2014, 13:45 | 48 |
Увлеченный
|
Re: Модифицируем народный линейный драйвер для тактовой кнопки
мне всего 3 режима надо в подводн фонарь, а какой датчик взять подскажите , я так понял хола нельзя ?
|
04.02.2014, 13:55 | 49 |
Ветеран Фонарёвки
Регистрация: 28.04.2013 Последняя активность: 08.01.2024 23:25 Адрес: Харьков
Сообщений: 3980
Сказал(а) спасибо: 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 Последняя активность: Сегодня 15:02 Адрес: Россия, Пермский край
Сообщений: 38354
Сказал(а) спасибо: 5939
Поблагодарили: 32751 раз(а) в 15180 сообщениях
|
Re: Модифицируем народный линейный драйвер для тактовой кнопки
посмотрите тогда еще один вариант драйвера под тактовую. как раз 3 режима +мунлайт, и очень простое управление
можно, почему нет. конкретную марку не подскажу, но надо искать дискретный (не аналоговый) с питанием от менее 3В, и как можно менее потребляющий в ждущем режиме (и все равно, скорее всего это будет в разы больше, чем 0.2мкА драйвера). возможно из телефона-раскладушки можно выковырять такой. |
04.02.2014, 14:23 | 51 |
сволочь фонарёвки
Регистрация: 27.05.2011 Последняя активность: Сегодня 15:02 Адрес: Россия, Пермский край
Сообщений: 38354
Сказал(а) спасибо: 5939
Поблагодарили: 32751 раз(а) в 15180 сообщениях
|
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 Адрес: Харьков
Сообщений: 3980
Сказал(а) спасибо: 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 Адрес: Харьков
Сообщений: 3980
Сказал(а) спасибо: 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 Адрес: Харьков
Сообщений: 3980
Сказал(а) спасибо: 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 Адрес: Харьков
Сообщений: 3980
Сказал(а) спасибо: 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 Адрес: 哈尔滨
Сообщений: 8022
Сказал(а) спасибо: 934
Поблагодарили: 5193 раз(а) в 2784 сообщениях
|
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 Адрес: Харьков
Сообщений: 3980
Сказал(а) спасибо: 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 Адрес: Харьков
Сообщений: 3980
Сказал(а) спасибо: 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 Адрес: Харьков
Сообщений: 3980
Сказал(а) спасибо: 529
Поблагодарили: 921 раз(а) в 628 сообщениях
|
Re: Модифицируем народный линейный драйвер для тактовой кнопки
Исправил свои ошибки с переводом в двоичную систему. Окончательный вариант
|
Поблагодарили: 4 раз(а) |