|
|
  |
Чем или как создать управление микросхемой Lc7821 |
|
|
|
May 13 2015, 10:28
|
Местный
  
Группа: Участник
Сообщений: 333
Регистрация: 19-12-13
Из: Новосибирск
Пользователь №: 79 709

|
Цитата(love777888 @ May 13 2015, 17:25)  ... На видео (сообщение выше) я сымитировал код пду кнопой. Счет светодиодов справа налево. Первый светодиод - как бы ваши 6 светодиодов. Второй реле питания. Последний для отладки. Начало видео - включение уселка. Все правильно?
|
|
|
|
|
May 13 2015, 11:44
|
Местный
  
Группа: Участник
Сообщений: 333
Регистрация: 19-12-13
Из: Новосибирск
Пользователь №: 79 709

|
Поправил проект. Новое видео. Светодиоды справа налево: Реле включения уселка. Реле колонок. Ваши светодиоды. Код для Ксении: CODE //======================================================================== __C_task main () { wdt_enable (WDTO_15_MS);
init_sys_timer ();
__enable_interrupt ();
Init_Events ();
while (1) { __watchdog_reset ();
service_timers ();
proc_amplifier ();
Process_Events (); } } //========================================================================
CODE //======================================================================== void proc_amplifier (void) { static u08 _proc_amplifier;
if (_proc_amplifier != PROC_AMPLIFIER_INIT) { kbd_drv (); }
switch (_proc_amplifier) { case PROC_AMPLIFIER_INIT: // Инициализация ввода-вывода, переменных. // proc_amplifier_init (); // В этом блоке инициализация периферии. ПДУ, SPI, микросхема.
_proc_amplifier = PROC_AMPLIFIER_ON_DELAY_INIT; break;
case PROC_AMPLIFIER_STANDBY_MODE: // Дежурный режим усилителя. if (Get_Event (EV_ID_KEY_PRESSED) && (GetKeyCode () == KEY_POWER_ON_COD)) // Если код ПДУ POWER, то { _proc_amplifier = PROC_AMPLIFIER_ON_DELAY_INIT; // включение усилителя. } break;
case PROC_AMPLIFIER_ON_DELAY_INIT: pwr_relay_on (); // Включение реле питания.
_blink_leds = 0; // Инициализация состояния модуля. _delay_for_speaker = 0; // Инициализация состояния модуля.
_proc_amplifier = PROC_AMPLIFIER_ON_DELAY; break;
case PROC_AMPLIFIER_ON_DELAY: // Мигание светодиодов. Задержка включения колонок. if (Get_Event (EV_ID_SPEAKER_ON)) { _proc_amplifier = PROC_AMPLIFIER_WORK_MODE; return; }
blink_leds (); // Мигание светодиодов. delay_for_speaker (); // Задержка включения колонок. break;
case PROC_AMPLIFIER_WORK_MODE: if (Get_Event (EV_ID_KEY_PRESSED)) // Если код ПДУ { u08 key = GetKeyCode ();
switch (key) { case KEY_POWER_ON_COD: _proc_amplifier = PROC_AMPLIFIER_OFF_DELAY_INIT; // POWER, то - дежурный режим усилителя. break;
case KEY_VOLUME_UP_PRESSED_COD: motor_vol_up_on (); break;
case KEY_VOLUME_DOWN_PRESSED_COD: motor_vol_down_on (); break;
case KEY_VOLUME_UP_UNPRESSED_COD: motor_vol_up_off (); break;
case KEY_VOLUME_DOWN_UNPRESSED_COD: motor_vol_down_off (); break;
default: break; } } break;
case PROC_AMPLIFIER_OFF_DELAY_INIT: speaker_relay_off (); // Отключение реле колонок.
set_timer (ST_SPEAKER_RELAY, NO_RERUN_TIMER, AMPLIFIER_OFF_DELAY); _proc_amplifier = PROC_AMPLIFIER_OFF_DELAY; break;
case PROC_AMPLIFIER_OFF_DELAY: if (wait (ST_SPEAKER_RELAY)) { pwr_relay_off (); // Отключение реле питания. _proc_amplifier = PROC_AMPLIFIER_STANDBY_MODE; } break;
default: break; } } //------------------------------------------------------------------------
//======================================================================== void delay_for_speaker (void) { switch (_delay_for_speaker) { case 0: set_timer (ST_SPEAKER_RELAY, NO_RERUN_TIMER, SPEAKER_DELAY); // 5 мс для отладки. 5000, 5 секунд. _delay_for_speaker = 1; break;
case 1: if (wait (ST_SPEAKER_RELAY)) { speaker_relay_on (); // Включение реле динамиков. Set_Event (EV_ID_SPEAKER_ON, SET_CLR_EVENT); _delay_for_speaker = 2; } break;
default: break; } } //========================================================================
//======================================================================== void blink_leds (void) { static u08 i;
switch (_blink_leds) { case 0: all_leds_on ();
set_timer (ST_LEDS, NO_RERUN_TIMER, BLINK_LEDS_TIME); _blink_leds = 1; break;
case 1: if (wait (ST_LEDS)) { all_leds_switch ();
if (!(LED_1_DDR & (1<<LED_1))) { i++;
if (i >= 3) { i = 0; _blink_leds = 2; return; } } set_timer (ST_LEDS, NO_RERUN_TIMER, BLINK_LEDS_TIME); } break;
default: break; } } //========================================================================
|
|
|
|
|
May 13 2015, 14:21
|
Местный
  
Группа: Участник
Сообщений: 207
Регистрация: 1-05-15
Из: Брест
Пользователь №: 86 471

|
Для начала спасибо вам большое! Да алгоритм правильный, в этом усилителе я бы еще хотел использовать такие команды, как defeat и loudness, но это я могу и сам сделать на обычной логике типа cd4013, так как я недумаю, что особый вес был в них с управления с пульта. У меня есть усилитель Sony вот там ситуация караул, в коммутаторе стоят 7823 7822, с разными адресами,куча кнопок, стоит процессор обработки 5.1 и как вы догадались, все командует контроллер, с той же шиной spi. который упален, после грозы. ну это к слову, о том что в сони если ставить то только 40 ножку, а в грундике, если Ксения прокомпилирует прошивку, то хватит, и атмега8. Так что надежда на гуру Ксению.
|
|
|
|
|
May 13 2015, 14:57
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(love777888 @ May 13 2015, 17:39)  Только это и делаем ждемс..., в продаже есть 32я дип корпус, продавец не знает с буквой а или нет, или они в дипе вам все с буквой а? Буква "А" после цифры - обновленная серия. Чуть меньше токопотребление, но архитектурно то же самое, что и без буквы "А". Мега32 (или Мега32А) - это фактически та же Мега8 (Мега8А), только с памятью в 4 раза большей (32К вместо 8К). Ну и в корпусе DIP40 она бывает, а Мега8 нет. Тем не менее, Мега162 лучше уже тем, что у нее есть "interrupt PCINT", т.е. способность реагирования на уровне железа на изменение состояния линий портов, тогда как на Меге8 приходиться опрашивать порты с периодичностью 10 мсек (чтобы не прозевать кнопки), что не только занимает один из таймеров, но делает алгоритм "некрасивым". Мега162 в этом отношении не уникум, но она самая дешевая из тех, кто имеет это "интеррапт" и выпускается в корпусе DIP40. P.S. Вам надо было соглашаться на мой вариант - Мега162 уже давно бы прибыла к вам почтой и по цене ниже, чем у вашего продавца.
|
|
|
|
|
May 13 2015, 15:15
|
Местный
  
Группа: Участник
Сообщений: 207
Регистрация: 1-05-15
Из: Брест
Пользователь №: 86 471

|
Ксения я сам из беларусии, как для меня яделаю заказы на.алиекспресс, там будет самым выгодным, покупать, эти атмелы , без переплат, в сравнении местный барыга предлагает 32 ю за 7$, в китае 5 32а стоит 9$. так что так делайте выводы, тем более что почта у вас в росии быстрее чем в беларусии, но 162 я заказал у местного цена будет порядка 12$ за одну в то время как в китае две будут столько стоить. но заказал из за времени сказал что скоро поедет в польшу за товаром.
|
|
|
|
|
May 13 2015, 15:23
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(love777888 @ May 13 2015, 18:15)  Ксения я сам из беларусии, как для меня яделаю заказы на.алиекспресс, там будет самым выгодным, покупать, эти атмелы , без переплат, в сравнении местный барыга предлагает 32 ю за 7$, в китае 5 32а стоит 9$. так что так делайте выводы, тем более что почта у вас в росии быстрее чем в беларусии, но 162 я заказал у местного цена будет порядка 12$ за одну в то время как в китае две будут столько стоить. но заказал из за времени сказал что скоро поедет в польшу за товаром. Я полагаю, что 32-я вам не нужна, т.к. не стоит своих денег. А 162-я стоит в Москве 300 руб (6$), т.е. почти как в Китае. Я уж с тех пор, как предлагала вам посредничество, уже дважды в магазине была - купила себе LC7821 и TSOP31236 (фотодиод).
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|