реклама на сайте
подробности

 
 
40 страниц V  « < 15 16 17 18 19 > »   
Reply to this topicStart new topic
> Чем или как создать управление микросхемой Lc7821
love777888
сообщение May 15 2015, 07:46
Сообщение #241


Местный
***

Группа: Участник
Сообщений: 207
Регистрация: 1-05-15
Из: Брест
Пользователь №: 86 471



Вскоре я распишу полностью функционал всего усилка.
Go to the top of the page
 
+Quote Post
Xenia
сообщение May 15 2015, 07:48
Сообщение #242


Гуру
******

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



Цитата(demiurg1978 @ May 15 2015, 10:37) *
Ну как-то так... Видео.
Правда всплыл нюанс. Пульт оправляет команды каждые 100 мс. Это видно по Mute. А всплыло на включении дежурного режима. "Уселок" включен. Нажимаю POWER. Он уходит в спячку и заново просыпается. Пока решил так, перед входом в дежурный или рабочий режим обнуляю DataOK. Сижу репу чешу, как обойти этот момент, повтор команд каждые 100 мс...


Чего тут репу чесать? Поставьте паузу 1-2 сек после кнопки STANDBY, и лишь после этого обнулите DataOK. А при выходе из спячки вообще ничего предпринимать не надо, т.к. там и так 5 сек задержки есть при рестарте.

P.S. Обратите внимание, что в последней редакции структуру rc5 я внутри процедуры инициализации Rc5_SetRx() обнулила, чтобы при теплом рестарте в ней не оставались данных с прошлого раза.
Go to the top of the page
 
+Quote Post
demiurg1978
сообщение May 15 2015, 08:03
Сообщение #243


Местный
***

Группа: Участник
Сообщений: 333
Регистрация: 19-12-13
Из: Новосибирск
Пользователь №: 79 709



Всплыла эта фигня на включении дежурки. После дежурки сразу включается рабочий режим. Поправил. Всплыло на рабочем режиме. Включается рабочий режим, сразу дежурный. С Mute видно по видео. Судя по всему придется сделать следующее: отслеживать DataOK, если установлен, сбрасывать его. До тех пор, пока DataOK не придет обнуленным.

Сообщение отредактировал demiurg1978 - May 15 2015, 08:04
Go to the top of the page
 
+Quote Post
Xenia
сообщение May 15 2015, 08:18
Сообщение #244


Гуру
******

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



Цитата(demiurg1978 @ May 15 2015, 11:03) *
Судя по всему придется сделать следующее: отслеживать DataOK, если установлен, сбрасывать его. До тех пор, пока DataOK не придет обнуленным.


Судя по величине промежутка 100 мсек (по стандарту там должно быть 110 мсек), это вам не поможет - МК работает быстро, а потому за это время ни один раз успеет увидеть DataOK обнуленным.

P.S. Ваше видео доступно для погляда только вам, для остальных - "автор ограничил доступ к видео"
Go to the top of the page
 
+Quote Post
demiurg1978
сообщение May 15 2015, 08:43
Сообщение #245


Местный
***

Группа: Участник
Сообщений: 333
Регистрация: 19-12-13
Из: Новосибирск
Пользователь №: 79 709



Цитата(Xenia @ May 15 2015, 15:18) *
Судя по величине промежутка 100 мсек (по стандарту там должно быть 110 мсек), это вам не поможет - МК работает быстро, а потому за это время ни один раз успеет увидеть DataOK обнуленным.

Я не помнил точную цифру, округлил до 100 мс. В том-то и дело, что МК работает быстро. А у меня подход, никаких долгих циклов. Каждая задача разбивается условиями, флагами, состояниями. Такой подход себя давно оправдал тем, что проекты собираются быстро, как конструктор. Автоматное программирование исключает грубые ошибки. Ну а мелкие выявляются при отладке.
Цитата(Xenia @ May 15 2015, 15:18) *
P.S. Ваше видео доступно для погляда только вам, для остальных - "автор ограничил доступ к видео"

Сделано.

Кстати. Такой вопрос. Просто в данный момент мне некогда углубленно вникать. У меня на 16 МГц системный тик 1 мс. Одна итерация main должна с запасом впаковаться в системный тик. Как работает модуль RC5? Если в этом модуле зацикливание больше чем на 1 мс, тады ой...

Сообщение отредактировал demiurg1978 - May 15 2015, 10:22
Go to the top of the page
 
+Quote Post
Xenia
сообщение May 15 2015, 08:56
Сообщение #246


Гуру
******

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



Цитата(demiurg1978 @ May 15 2015, 11:43) *
Кстати. Такой вопрос. Просто в данный момент мне некогда углубленно вникать. У меня на 16 МГц системный тик 1 мс. Одни итерация main должна с запасом впаковаться в системный тик.

Не поняла, что вы называете "системным тиком".

Цитата(demiurg1978 @ May 15 2015, 11:43) *
Как работает модуль RC5? Если в этом модуле зацикливание больше чем на 1 мс, тады ой...

Он работает исключительно на двух обработчиках прерываний: TIMER1_CAPT_vect и TIMER1_COMPA_vect, в каждом из которых всего лишь по 4-6 строк кода. И только в момент готовности кода ДПУ, там чуть больше строк. Едва ли эти обработчики способны заметно на что-то повлиять, тем более, когда у вас МК на 16 Мгц.
Go to the top of the page
 
+Quote Post
demiurg1978
сообщение May 15 2015, 10:28
Сообщение #247


Местный
***

Группа: Участник
Сообщений: 333
Регистрация: 19-12-13
Из: Новосибирск
Пользователь №: 79 709



Цитата(Xenia @ May 15 2015, 15:56) *
Не поняла, что вы называете "системным тиком".

У меня очередь программных таймеров и обработчик. Аппаратный таймер настроен на 1 мс в случае применения 8 и 16 МГц кварца. 10 мс, если кварц для uart, 7,3728 МГц к примеру. 1 мс, 10 мс - это и есть системный тик.

Настройки для RC5 при 16 МГц:
Код
#define  RC5_T                0x006E  // F_CPU=16 000 000, PRESCALER=256

void Rc5_SetRx()
{
// TCCR1B|= _BV(CS10);   //без предделителя
// TCCR1B|= _BV(ICNC1);  //Вкл. подавитель шума на входе захвата
// TCCR1B&= ~_BV(ICES1); //Выбор детектируемого фронта на входе захвата
// Если ICESn =0, то падающий фронт приводит к захвату,  ICESn = 1, то нарастающий фронт.
  TCCR1B = _BV(CS12) | _BV(ICNC1);

// Регистр маски прерываний таймера-счетчика
// _BV(TICIE1) Разрешение прерывания по захвату состояния таймера-счетчика 1;
// _BV(OCIE1A);// Разрешение прерывания по совпадению
  TIMSK |= _BV(TICIE1) | _BV(OCIE1A);
  OCR1A = RC5_T;
  TCNT1=0;
}

Поехало с первого запуска. Точнее, со второго, но я просто поторопился и забыл переставить перемычку кварца на STK-500. sm.gif

Сообщение отредактировал demiurg1978 - May 15 2015, 10:30
Go to the top of the page
 
+Quote Post
Xenia
сообщение May 15 2015, 10:57
Сообщение #248


Гуру
******

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



Цитата(demiurg1978 @ May 15 2015, 13:28) *
Настройки для RC5 при 16 МГц:
#define RC5_T 0x006E // F_CPU=16 000 000, PRESCALER=256


Зря бы такой большой PRESCALER загнали. Модуль rc5.c измеряет длительность импульсов по захвату, а потому RC5_T*17 желательно растянуть на всю шкалу (16 бит) таймера, чтобы измерение было точнее. Отсюда понятно, почему оно не должно превышать 65535. Т.е. надо выбирать МИНИМАЛЬНЫЙ PRESCALER, обеспечивающим при OCR1A=RC5_T период 1.778 мсек.

А если вы ему макушку так сурово подрубили (0x006E*0x11=0x074E), то таймер не достает даже до 1/20 своей шкалы. Ведь как только он достигнет этой макушки, то автомат тут же сбросит его в ноль. Т.е. 19/20 шкалы таймера вы выбросили коту под хвост.

Я же специально для вас подробно написала, что при 16 МГц достаточно PRESCALER=8, и даже выражение RC5_T*17 в цифрах посчитала, показав, что оно в 65535 укладывается. Впрочем, мое дело сторона, хозяин - барин.
Go to the top of the page
 
+Quote Post
demiurg1978
сообщение May 15 2015, 11:11
Сообщение #249


Местный
***

Группа: Участник
Сообщений: 333
Регистрация: 19-12-13
Из: Новосибирск
Пользователь №: 79 709



Я отталкивался от того, что главное заставить таймер отщелкать 1,778 мс. Ща поправлю

Момент:
Код
#define    FAULT_TIME_RC5       RC5_T*17        // не должно быть более 65535


Warning[Pe061]: integer operation result is out of range F:\Work\Projects\ATMEL\IAR\C\TEMPLATE_FOR_XENIA\rc5.c 69
Warning[Pe068]: integer conversion resulted in a change of sign F:\Work\Projects\ATMEL\IAR\C\TEMPLATE_FOR_XENIA\rc5.c 69


Код
#define    FAULT_TIME_RC5       RC5_T*17U        // не должно быть более 65535


Total number of warnings: 0


Сообщение отредактировал demiurg1978 - May 15 2015, 11:22
Go to the top of the page
 
+Quote Post
Xenia
сообщение May 15 2015, 11:27
Сообщение #250


Гуру
******

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



Цитата(demiurg1978 @ May 15 2015, 14:11) *
Код
#define    FAULT_TIME_RC5       RC5_T*17U        // не должно быть более 65535


Вот это вы верно подметили, а я этого подвоха не заметила.
Go to the top of the page
 
+Quote Post
love777888
сообщение May 15 2015, 11:46
Сообщение #251


Местный
***

Группа: Участник
Сообщений: 207
Регистрация: 1-05-15
Из: Брест
Пользователь №: 86 471



Функции грундика оставшиеся
Loudness - функция тонкомпенсации, включается "землей", выключается +5 вольт, триггерный характер работы
Defeat -подключает и отключает тембр блок, влючается "землей", отключается +5вольт, триггерный характер работы
Speaker A - акустическая система а, (на заднице усилка 1-я пара разьемов идущая на АС), влючается "землей", отключается +5вольт, триггерный характер работы
Speaker B - акустическая система b, (на заднице усилка 2-я пара разьемов идущая на АС), влючается "землей", отключается +5вольт, триггерный характер работы
Все остальные, это радио и навароты, типа присвоение имени станции, я думаю и без этого можно обойтись. Вобщем как то так Ксения.

Сообщение отредактировал love777888 - May 15 2015, 11:47
Go to the top of the page
 
+Quote Post
Xenia
сообщение May 15 2015, 12:05
Сообщение #252


Гуру
******

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



Цитата(love777888 @ May 15 2015, 14:46) *
Функции грундика оставшиеся
Loudness - функция тонкомпенсации, включается "землей", выключается +5 вольт, триггерный характер работы
Defeat -подключает и отключает тембр блок, влючается "землей", отключается +5вольт, триггерный характер работы
Speaker A - акустическая система а, (на заднице усилка 1-я пара разьемов идущая на АС), влючается "землей", отключается +5вольт, триггерный характер работы
Speaker B - акустическая система b, (на заднице усилка 2-я пара разьемов идущая на АС), влючается "землей", отключается +5вольт, триггерный характер работы
Все остальные, это радио и навароты, типа присвоение имени станции, я думаю и без этого можно обойтись.


Это вы только про кнопки рассказываете, а меня интересуют прочие контакты японского процессора.
1. Контакты 9 и 10 через транзисторы управляют линиями B и C. Что это?
2. Контакт 20 - RC-OUT. Это что?
3. Что за деталь "VOLUME LED BOARD", к которой идет 22-нога процессора?
4. Нога 16, чем она управляет?
5. Ноги 13 и 24, что они чувствуют?
6. Весь левый край процессора, соединенный разъемом с "TUNER BOARD". Там кроме MUTE что-то полезное есть? STEREO, CL, CE, RDS_CLK, RDS_DATA - это что?
7. Ножки 7 и 11, управляющие через транзисторы линиями SPKA и SPKB - это куда пошло?
8. Вверху FUTABA c цифропоказывающими индикаторами. Схема на нее есть? Достать можно информацию, как ею управлять?
Go to the top of the page
 
+Quote Post
demiurg1978
сообщение May 15 2015, 12:08
Сообщение #253


Местный
***

Группа: Участник
Сообщений: 333
Регистрация: 19-12-13
Из: Новосибирск
Пользователь №: 79 709



ТС, у тебя триггерные включения четко работают? Посмотри пожалуйста видео, ссылка чуть выше. У меня Mute включается как бы дребезгом, из-за повтора команд с пульта каждые 100 мс. Попробуй на Mute нажать и держать, секунду, к примеру.
Go to the top of the page
 
+Quote Post
demiurg1978
сообщение May 15 2015, 13:34
Сообщение #254


Местный
***

Группа: Участник
Сообщений: 333
Регистрация: 19-12-13
Из: Новосибирск
Пользователь №: 79 709



Ксения, я решил проблему с повтором команд пульта.
CODE
static u08 _wait_rc5_data_ok_null;

//========================================================================
bool wait_rc5_data_ok_null (void)
{
u08 a = false;

switch (_wait_rc5_data_ok_null)
{
case 0:
a = true;
break;

case 1:
set_timer (ST_WAIT_RC5_DATA_OK_NULL, NO_RERUN_TIMER, 150);
_wait_rc5_data_ok_null = 2;
a = false;
break;

case 2:
if (wait (ST_WAIT_RC5_DATA_OK_NULL))
{
if (rc5.dataOK)
{
rc5.dataOK = 0;
set_timer (ST_WAIT_RC5_DATA_OK_NULL, NO_RERUN_TIMER, 150);
a = false;
}
else
{
_wait_rc5_data_ok_null = 0;
a = true;
}
}
break;

default:
a = false;
break;
}

if (a)
return true;
else
return false;
}
//------------------------------------------------------------------------
#pragma inline
void set_wait_rc5_data_ok_null (void)
{
_wait_rc5_data_ok_null = 1;
}


//========================================================================

//========================================================================
case PROC_AMPLIFIER_STANDBY_MODE: // Дежурный режим усилителя.
if (wait_rc5_data_ok_null ())
{
if (rc5.dataOK)
{
if (rc5.command == 12)
{
set_wait_rc5_data_ok_null ();
_proc_amplifier = PROC_AMPLIFIER_ON_DELAY_INIT; // включение усилителя.
}
rc5.dataOK = 0;
}
}
break;

case PROC_AMPLIFIER_WORK_MODE:
if (wait_rc5_data_ok_null ())
{
if (rc5.dataOK)
{
switch (rc5.command)
{
case 12:
rc5.dataOK = 0;
set_wait_rc5_data_ok_null ();
_proc_amplifier = PROC_AMPLIFIER_OFF_DELAY_INIT; // POWER, то - дежурный режим усилителя.
return;

case 13:
set_wait_rc5_data_ok_null ();
mute_switch ();
break;

case 16:
Set_Event (EV_ID_VOLUME_CHANGE, SET_CLR_EVENT);
set_volume_dir (VOLUME_UP);
break;

case 17:
Set_Event (EV_ID_VOLUME_CHANGE, SET_CLR_EVENT);
set_volume_dir (VOLUME_DOWN);
break;

default:
break;
}

rc5.dataOK = 0;
}
}


У нас два типа команд. Повтор не нужен (Mute к примеру). Повтор нужен (громкость к примеру). Думаю по коду все понятно будет. Сейчас работает четко как часы.
Go to the top of the page
 
+Quote Post
love777888
сообщение May 15 2015, 15:20
Сообщение #255


Местный
***

Группа: Участник
Сообщений: 207
Регистрация: 1-05-15
Из: Брест
Пользователь №: 86 471



Это вы только про кнопки рассказываете, а меня интересуют прочие контакты японского процессора.
1. Контакты 9 и 10 через транзисторы управляют линиями B и C. Что это?
2. Контакт 20 - RC-OUT. Это что?
3. Что за деталь "VOLUME LED BOARD", к которой идет 22-нога процессора?
4. Нога 16, чем она управляет?
5. Ноги 13 и 24, что они чувствуют?
6. Весь левый край процессора, соединенный разъемом с "TUNER BOARD". Там кроме MUTE что-то полезное есть? STEREO, CL, CE, RDS_CLK. RDS_DATA - это что?
7. Ножки 7 и 11, управляющие через транзисторы линиями SPKA и SPKB - это куда пошло?
8. Вверху FUTABA c цифропоказывающими индикаторами. Схема на нее есть? Достать можно информацию, как ею управлять?

1) Это LOUDNESS И DEFEAT о чем я рассказывал Вам
2) Контакт 20 и 26 RC In & RC out я понимаю типа сервисной шины подключаются прямо на процессор через буфер.
3) "VOLUME LED BOARD" Да забыл учесть я думаю валкодер мигает во время своего передвижения влево или вправо а потом горит, когда останавливается, разумеется все должно мигать при работе с пульта ткогда мы жмем VOL+ VOL-.
4) Нога 16 это задержка колонок систем А и Б, в то время как существуют, два порта на процессоре которые управляют системами А и Б.
5) Ножка 13 это Mute в тембр блоке, но зачем там транзистор T615? в цифровой части? по этой шине?
Ножка 24 я понимаю отслеживает питание, если меньше нормы усилитель не пустишь, вроде Ресета.
6) Это шины управления тюнером он с RDS-ом, моно/стерео режим, МUTE там как раз таки свой, отдельной темой живущий именно в тюнере.
7) Это системы АС А и Б, в более жирной атмеге можно реализовать. Пока здесь обьеденив два этих пина управляю задержкой АС, но это пока.
8) Это люминисцентный индикатор попробую что нибудь найти на нее.


Мюте вроде работает в норме, повторно нажимаешь вкл выкл сам режим.

Сообщение отредактировал love777888 - May 15 2015, 14:38
Go to the top of the page
 
+Quote Post

40 страниц V  « < 15 16 17 18 19 > » 
Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2025 - 00:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01509 секунд с 7
ELECTRONIX ©2004-2016