PDA

Просмотр полной версии : Управление PLL синтезатором LC72137 в Degen-1103



ew6ml
29.08.2012, 15:50
Здравия желаю всем коллегам!
Скоро возвращаюсь в свой родимый QTH (Витебск) после длительной командировки :buj:.
Есть идея реанимировать свой старый проект онлайн-приёмника receiver.by. Однако затея у меня более грандиозная: использовать максимальную скорость переключения частоты для слушателя(практическ и мгновенную). Кто ранее пользовался приёмником помнит, что время перестройки составляло до 15 сек (непосредственно время переключения частоты около 5 сек + время задержки вещающей программы IceCast).

С вещающей стороной данного вопроса я уже разобрался - это будет ffmpeg для linux.
Сам интерфейс ввода частоты придётся немного доработать и управлять уже не "кнопками" дегена, а непосредственно PLL-кой (LC72137) со своего МК.

Так вот читаю даташит на сей синтезатор... может я что-то не так понимаю - не пинайте сильно, а лучше поправьте пожалуйста...
Насколько я правильно понял у данной мс такой алгоритм работы:

118745
Три режима работы:
1. IN1 Mode (управляющее слово 0x82 или 0b00010100) и далее 24 бита данных - даёт команду коэффициента деления, шага частоты, диапазон перестройки
2. IN2 Mode (управляющее слово 0x92 или 0b10010100) и далее 24 бита данных - даёт команду для служебных функций
3. Out Mode (управляющее слово 0xA2 или 0b01010100) и далее 24 бита данных выводится по порту DO из МС.

Выводить данные из PLL-синтезатора мне нет нужды. Поэтому достаточно ли управлять так:
1. Сначала подаём 0x82 + данные
2. Потом подаём 0x92 + данные ?

Если у кого есть какие-нить заготовки исходного кода буду тоже премного благодарен.

Добавлено через 32 минут(ы):

Управлять PLL синтезатором планирую с помощью PIC18F2550. Вот каким образом:


// Все три порта на выход
// RC0 => CE, RC1 => DI, RC2 => CLK

#define m_CE LATCbits.LATC0
#define m_DI LATCbits.LATC1
#define m_CLK LATCbits.LATC2

/////////////////////
UsartFunc(0x82); // init IN1
m_CE = 1; // включаем CE
UsartFunc(0b11111111 ); // данные 1-ый байт
UsartFunc(0b11111111 ); // данные 2-ой байт
UsartFunc(0b11111111 ); // данные 3-ий байт
m_CE = 0; // выключаем CE

UsartFunc(0x92); // init IN2
m_CE = 1; // включаем CE
UsartFunc(0b11111111 ); // данные 1-ый байт
UsartFunc(0b11111111 ); // данные 2-ой байт
UsartFunc(0b11111111 ); // данные 3-ий байт
m_CE = 0; // выключаем CE
/////////////////////

void UsartFunc(unsigned char dataByte) // dataByte - байт переданных данных
{
static byte i;
for(i = 0; i < 8; i++){
m_DI = UBit(dataByte, i); // перевести RC1 в состояние i-того бита байта переданных данных
m_CLK = 1; // сигнал CLK в "1" _-
m_CLK = 0; // сигнал CLK в "0" -_
}
}// end UsartFunc

BOOL UBit(unsigned char byteB, unsigned char bit0)
{
if(((byteB >> bit0) & 1) > 0)
{
return 1;
}else{
return 0;
}
}

ew6ml
29.08.2012, 18:29
По мере продвижения решения этого вопроса буду дописывать свои наработки (мысли в слух так сказать)...
Здесь и далее речь будет вестись касательно коротких волн. FM и околозвуковые частоты - мну не интересно априори.

Диапазон перестройки частоты синтезатора первого гетеродина: 57,595 ... 85,844 МГц, что будет соответствовать принимаемым частотам от 1750 до 29999 кГц (ПЧ приёмника: 55.845 МГц).<br>

К сожалению, частотомера у меня нет, поэтому исхожу из опыта - перестройку частоты ниже первой ПЧ разработчикам реализовать было бы сложнее (варикапы с большой ёмкостью, падение добротности). А может я и не прав? В нете ответа не нашёл...

---

Теперь будем разбираться с данными, которые надо кормить этому зверю.
В первом пакете (после слова 0x82):
118756

Первое что попалось в даташите - это биты R0, R1, R2, R3.
Для шага перестройки в 1 кГц их устанавливаем так: 1 1 0 1 соответственно (или 0xB).

Биты SNS и DVS "устанавливают деление" (дословно из перевода).
Я интуитивно выбрал так: 0 1 (272 до 65535 и "диапазон входных частот" от 10 до 160 МГц). Интуитивно, потому что выход AMIN в схеме синтезатора приёмника не используется.

Что такое CTE и DNC пока разбираюсь...

ew6ml
29.08.2012, 20:38
СТЕ - бит, ответственный за начало счёта/сброса частоты с входа IF. 20 бит результата счёта потом выводится из памяти. Но так как вывод данных меня не интересует, то устанавливаем в 0.
DNC - "Dont't care" (не важно), но советуют в 0.

Теперь о том, как заполнить биты P0...P15. Исходя из примеров на странице 15 даташита (кстати в 3-ем примере ошибка "For a 9 3 kHz...") формула для расчёта коэфф.деления:


Коэфф = Частота / Частота PLL = Частота, кГц


Соответственно если надо установить 57595 кГц достаточно перевести это число в шестнадцатиричную систему: 57595 => 0xE0FB => 0b1110 0000 1111 1011
Меняем направление: 1101 1111 0000 0111 или B F 0 E соответственно для битов P0...P15.

UN9GW
29.08.2012, 21:36
Не правильно.*
Частота 57595 кГц находится в FM диапазоне частот данного синтезатора.*
Это значит, что нужно учесть входной делитель на 2.*
А это значит, что минимальный шаг перестройки будет 10 кГц при частоте сравнения 5 кГц.
Коэфф. деления считается как:
57590 / 5 / 2 = *5759 или 167F (hex)
Есть ещё "хитрости" загрузки этот синтеза.
1. Без загрузки байтов по адресу 0х92 синтез не будет реагировать ни на что вообще.*
2. Грузить адреса нужно побитно и зеркально, т.е. не 0х82, а 0х28, начинать с младшей тетрады и грузить младшим битом вперёд.
Ну и т.д. Следующие два байта тоже грузятся со сдвигом вправо, но не зеркально, а последний байт грузится как обычно с MSB и сдвигом влево.*

Успехов!

P.S. Кстати, в названиях функций встречается USART. При чём тут usart? Это обычная передача данных с клоками. Чем-то похожа на I2C. *

*

ew6ml
29.08.2012, 21:58
Пришло время разобраться во второй процедуре, а точнее в передаваемых ей данных...

118767IOC1 - режим порта ввода/вывода IO1 (0 - вход). 8-ой пин принимает сигнал FM TUNE от TA2057 (пусть будет)
IOC2 - режим порта ввода/вывода IO2 (1 - выход) 9-ый пин. Не разобрался для чего он, но идёт на базу, значит выход.
IO1 - 1
IO2 - 1
BO1 - 1 (AM/FM)
BO2 - 1 (ДВ/КВ)
BO3 - вкл/выкл SSB (3-ий гетеродин). 1 - выкл; 0 - вкл.
BO4 - 0 (вкл. 2-ой гетеродин)
DNC - "don't care" - 0
DOC0...DOC2 - что-то связанное с выводом данных - все в 0
UL0,UL1 - ??? - думаю, что оба в 0 (что-то связанное с фазовой ошибкой PLL)
DZ0,DZ1 - ??? - "Phase comparator dead zone control data"
118773
МОЖЕТ КТО ПОДСКАЖЕТ ЧТО ЗА БИТЫ ТАКИЕ ХИТРЫЕ???


Не правильно.*
Частота 57595 кГц находится в FM диапазоне частот данного синтезатора.*
Это значит, что нужно учесть входной делитель на 2.*
А это значит, что минимальный шаг перестройки будет 10 кГц при частоте сравнения 5 кГц.
Коэфф. деления считается как:
57590 / 5 / 2 = *5759 или 167F (hex)
*
Да, действительно упустил деление на два(
Спасибо Игорь за найденную ошибку.

По поводу функций - их копировал из проекта, которых раздобыл в паблике, а названия не менял...

ur5xca
29.08.2012, 22:11
Это биты детектирования рассинхронизации , никогда я их и не применял правда у меня синтез на LC72131 но по своей структуре многие ИМС типа LC очень похожи а в слове IN2 у меня стояли нули
только один раз его посылал в начале исполнения программы но вроде бы можно и без него обойтись.

ew6ml
29.08.2012, 22:23
Это биты детектирования рассинхронизации , никогда я их и не применял правда у меня синтез на LC72131 но по своей структуре многие ИМС типа LC очень похожи а в слове IN2 у меня стояли нули
только один раз его посылал в начале исполнения программы но вроде бы можно и без него обойтись.
Спасибо за файлик. Полезная инфа с переводом)

ur5xca
29.08.2012, 22:30
В свое время этот документик мне помог в написании программы для своего синтеза , думал что это описание только для LC72131 но потом посмотрел даташиты на другие LC оказалось все они почти одинаковые .

ew6ml
30.08.2012, 07:19
UL0,UL1 - 0 0
DZ0,DZ1 - 0 0
GT0,GT1 - 0 0 (биты связаны с частотомером)
TBC - включает(1) на выходе BO1 сигнал 8 Гц. Данный выход используется в дегене для переключения FM/AM и никакие 8 герц нам не надо - 0
DLC - выход накачки. Наверное 0
IFS - чувствительность частотомера - 1
TEST0...TEST2 - тестовые биты - все в 0

ew6ml
30.08.2012, 08:34
Фото будущего примача:
118809

UN9GW
30.08.2012, 12:17
только один раз его посылал в начале исполнения программы но вроде бы можно и без него обойтись.
Один раз обязательно нужно что-нибудь посылать по этому адресу (можно и нули - это зависит от конкретной схемы) иначе синтез не будет реагировать на перестройку частоты.*

ew6ml
30.08.2012, 15:30
Один раз обязательно нужно что-нибудь посылать по этому адресу (можно и нули - это зависит от конкретной схемы) иначе синтез не будет реагировать на перестройку частоты.*
О каких конкретно битах идёт речь? UL0, UL1, DZ0, DZ1 ? О всех четырёх?

Добавлено через 17 минут(ы):


А это значит, что минимальный шаг перестройки будет 10 кГц при частоте сравнения 5 кГц.
Частота сравнения - это опорная частота? Я правильно понял?
Мне необходимо добиться шага перестройки в 1 кГц, тогда как быть?
118823

ur5xca
30.08.2012, 15:45
О каких конкретно битах идёт речь? UL0, UL1, DZ0, DZ1 ? О всех четырёх?
Речь шла о слове IN2 в целом, посылать его надо хотя бы один раз в начале а дальше можно не использовать , если нужно использовать цифровые выводы BO и другие то придется отправлять его каждый раз когда нужно изменить их состояние .

UN9GW
30.08.2012, 16:05
Частота сравнения - это опорная частота? Я правильно понял?
*

Нет. Опорник у этих мс 4,5 или 7,2 МГц.*
Шаг в 1кГц может быть только в диапазоне АМ, где нет предделителя на 2.*
*У Вас все частоты, при использовании ПЧ 55 (с копейками) МГц будут лежать выше 40МГц, т.е. в диапазоне FM данного синтезатора.*
А в этом диапазоне (или режиме) предделитель на 2 включается всегда (см. структурная схема). Поэтому минимально можно получить шаг 6,250 кГц (при частоте сравнения 3,125 кГц).

Владимир_К
30.08.2012, 16:42
Нет. Опорник у этих мс 4,5 или 7,2 МГц.*
Шаг в 1кГц может быть только в диапазоне АМ, где нет предделителя на 2.*
*У Вас все частоты, при использовании ПЧ 55 (с копейками) МГц будут лежать выше 40МГц, т.е. в диапазоне FM данного синтезатора.*
А в этом диапазоне (или режиме) предделитель на 2 включается всегда (см. структурная схема). Поэтому минимально можно получить шаг 6,250 кГц (при частоте сравнения 3,125 кГц).
Я вот смотрю даташит на LC72131, там вроде нигде не сказано, что шаг перестройки для режима FM не может быть 1 кгц. С предлелителем на 2 тут ясно. Тогда может все же шаг перестройки можно получить 2 кгц. Уточните, пожалуйста, а то может оказаться, что я закупил их, и пролетел, по незнанию...

UN9GW
30.08.2012, 17:16
Быть может, что 2кГц можно сделать.*
Дело в том, что это зависит от возможностей делителя опорной частоты (reference divider), а о его коэффициенте деления (диапазоне Кд) в даташите практически ничего не сказано.*

ew6ml
30.08.2012, 17:26
Я вот смотрю даташит на LC72131, там вроде нигде не сказано, что шаг перестройки для режима FM не может быть 1 кгц. С предлелителем на 2 тут ясно. Тогда может все же шаг перестройки можно получить 2 кгц. Уточните, пожалуйста, а то может оказаться, что я закупил их, и пролетел, по незнанию...
В дегене ж как-то разработчики получили шаг перестройки в 1 кГц. Предлагаю разобраться как?! :)
Набросал схемку включения синтезатора в дегене-1103
118828Кстати, я вот в данный момент управляю синтезатором по трём проводам родной платой cpu. Может реально как-то отследить сигналы, которые плата cpu отдаёт? Запоминающего осцилографа у меня нет( А вот собрать для этого что-нить можно было б...

labuda51
30.08.2012, 18:14
Там есть ещё прескалер 1:16,1:17 перед 12бит счётчиком-наверное его используют.Скажем 80Мгц делят на 2 затем на 80000 тогда частота сравнения должна 500гц.По другому не додумал.

Владимир_К
30.08.2012, 18:56
Кстати, я вот в данный момент управляю синтезатором по трём проводам родной платой cpu. Может реально как-то отследить сигналы, которые плата cpu отдаёт? Запоминающего осцилографа у меня нет( А вот собрать для этого что-нить можно было б...
Да отследить то наверное можно, но вот мне на ум ничего кроме сдвиговых регистров на ум не приходит. Те регистры, что я использовал(с которыми имел дело) - 8 разрядные. Ну 4 микросхемы для того чтобы отследить 32 разряда, я еще понимаю. А тут же получается три раза по столько. 12 микросхем, 66 светодиодов. Наверное надо поискать регистры с большим числом разрядов, если есть, может так.
Может подумать, как применить какие-нибудь индикаторы, например десятиразрядные (кажется HT6313, но я уже точно не помню как там организовано, там свой контроллер, цифры и некоторые буквы он формирует, в зависимости от кода, но загоняется все по двум проводам)? Десять разрядов, по семь сегментов, это уже прилично. Там информация примерно так и загоняется: дата - потом строб. По тому, засвечено знакоместо или нет и зная адрес этого знакоместа, можно расшифровать, что туда загнали. А лучше всего - сварганить программку для компьютера. И загонять информацию в СОМ -порт, например. Тем более если Вы пишете на Си. Я кроме Ассемблера, дальше никак не сподоблюсь. Ни времени, да и мозги уже не те. Ленивый стал. Возможно в библиотеках программ есть что-нибудь похожее. Да наверняка есть.

Быть может, что 2кГц можно сделать.*
Дело в том, что это зависит от возможностей делителя опорной частоты (reference divider), а о его коэффициенте деления (диапазоне Кд) в даташите практически ничего не сказано.*
Ага, малость успокоили. Например в даташите на LM7001, там четко указано, какой шаг для входа А и F. Но там ограничено коэффициентом деления, (там максимум 16383 вроде.)

ur5xca
30.08.2012, 18:58
Можно попробовать получить шаг в 1КГц использовав в АМ режиме до 40Мгц по даташиту, но в реале можно и повыше этого же ни кто не отменял все условия для этого есть надо только установить биты DVS-0 SNS-1 и самое главное максимальное значение которое можно послать в таком раскладе при 1Кгц шаге 65535 в килогерцах выйдет то самое , ну и в добавок можно проверить будет ли работать в FM режиме с шагом 2КГц я пробовал на ближайшем сородиче LM7001 в FM режиме устанавливал шаг в 1КГц и все работало но до 16,383 МГц так как это макс. коэф. деления ДПКД по аналогии здесь тоже должно вот только предделитель мешает поэтому выйдет 2КГц.

UN9GW
30.08.2012, 19:02
Думаю, что нет смысла что-либо отслеживать.*
Нужно просто написать программку для мк и завести шаг, скажем 10кГц, а далее уже поэкспериментировать с более мелким шагом.
Так будет проще по времени. И софт уже будет на 90% готов.*

Владимир_К
30.08.2012, 19:03
Кстати, я вот в данный момент управляю синтезатором по трём проводам родной платой cpu. Может реально как-то отследить сигналы, которые плата cpu отдаёт? Запоминающего осцилографа у меня нет( А вот собрать для этого что-нить можно было б...
Да отследить то наверное можно, но вот мне на ум ничего кроме сдвиговых регистров на ум не приходит. Те регистры, что я использовал(с которыми имел дело) - 8 разрядные. Ну 4 микросхемы для того чтобы отследить 32 разряда, я еще понимаю. А тут же получается три раза по столько. 12 микросхем, 66 светодиодов. Наверное надо поискать регистры с большим числом разрядов, если есть, может так.
Может подумать, как применить какие-нибудь индикаторы, например десятиразрядные (кажется HT6313, но я уже точно не помню как там организовано, там свой контроллер, цифры и некоторые буквы он формирует, в зависимости от кода, но загоняется все по двум проводам)? Десять разрядов, по семь сегментов, это уже прилично. Там информация примерно так и загоняется: дата - потом строб. По тому, засвечено знакоместо или нет и зная адрес этого знакоместа, можно расшифровать, что туда загнали. А лучше всего - сварганить программку для компьютера. И загонять информацию в СОМ -порт, например. Тем более если Вы пишете на Си. Я кроме Ассемблера, дальше никак не сподоблюсь. Ни времени, да и мозги уже не те. Ленивый стал. Возможно в библиотеках программ есть что-нибудь похожее. Да наверняка есть.

Быть может, что 2кГц можно сделать.*
Дело в том, что это зависит от возможностей делителя опорной частоты (reference divider), а о его коэффициенте деления (диапазоне Кд) в даташите практически ничего не сказано.*
Ага, малость успокоили. Например в даташите на LM7001, там четко указано, какой шаг для входа А и F. Но там ограничено коэффициентом деления, (там максимум 16383 вроде.)

Там есть ещё прескалер 1:16,1:17 перед 12бит счётчиком-наверное его используют.Скажем 80Мгц делят на 2 затем на 80000 тогда частота сравнения должна 500гц.По другому не додумал
Если есть два прескалера, с различающимся на 1-цу коэффициентом деления, возможна организация счетчиков как, например, с нашими м/с 193ИЕ3. Там деление или 10 или 11. В описании этой микросхемы, также в журнале Радиолюбитель была статья о синтезаторе с применением такой микросхемы. Смысл там такой. Берется определенный период счета. Часть периода прескалер делит на 10, оставшуюся на 11. Таким образом шаг остается равным единице. Кому надо, ссылку на статью дам. Прочитаешь, вроде все абсолютно ясно, потом постепенно забывается. Хотя и собирал такое.

labuda51
30.08.2012, 19:22
Если 2в 12 4096 тогда не хватает.Если только два прескалера.Но скорей всего один.Да микросхемы ХК вроде серии.Франт и ещё.

labuda51
30.08.2012, 21:15
Если считать прескалер 32/34 тогда хватает.

RXDX
30.08.2012, 21:23
В дегене ж как-то разработчики получили шаг перестройки в 1 кГц. Предлагаю разобраться как?!
В дегене сам синтез имеет шаг 2 кГц (в АМ), шаг приёмника 1 кГц получается за счет того, что частота 2-го гетеродина изменяется на 1 кГц от шага к шагу.

labuda51
30.08.2012, 21:34
На схеме IC6 смеситель и гетеродин на 55.3945.Ткните где подстройка.

RXDX
30.08.2012, 21:56
На схеме IC6 смеситель и гетеродин на 55.3945.Ткните где подстройка.

118850

Вывод, обведенный красным, идет к 13-й ноге LC72137. Вся схема основной платы дегена: http://www.radioscanner.ru/files/degen/file169/

ew6ml
30.08.2012, 22:42
В дегене сам синтез имеет шаг 2 кГц (в АМ), шаг приёмника 1 кГц получается за счет того, что частота 2-го гетеродина изменяется на 1 кГц от шага к шагу.
Ну конечно же! Как я так невнимательно отнёсся к схеме!
Поправляю себя невнимательного - вывод BO4 предназначен не для включения 2-го гетеродина, а для расстройки его на 1 кГц...

labuda51
30.08.2012, 22:46
Открывает диод и подключает параллельно 10 пикам 1000пик.Не знаю что и сказать.А ведь читал об зтом и диод на схеме вижу.Спасибо.

ew6ml
31.08.2012, 08:57
Ну конечно же! Как я так невнимательно отнёсся к схеме!
Поправляю себя невнимательного - вывод BO4 предназначен не для включения 2-го гетеродина, а для расстройки его на 1 кГц...
Понаблюдал за изменениями на 13-ом пине в режиме АМ приёмника.
Чётная частота: 0
Нечётная частота: +2.8

Получается, что синтезатор приёмника формирует сигнал только для нечётных частот приёма... А для чётной просто устанавливает 13-ый пин в ноль.

ew6ml
31.08.2012, 11:37
Пришло время попробовать всё сказанное выше (с исправлениями) на практике.

Попробуем своими силами установить на приёмнике частоту 20 МГц в SSB (20 МГц потому что можно будет принять биения генератора от МК на PIC-е).
Рассчитываем частоту ГУНа синтезатора: 20001 + 55845 = 75846 кГц.
Коэффициент деления в ДПКД синтезатора: 75846 кГц / 1 кГц / 2 = 37923 = 0x9423 = 1001 0100 0010 0011
118874
Приду с работы попробуем!


// Все три порта на выход
// RC0 => CE, RC1 => DI, RC2 => CLK

#define m_CE LATCbits.LATC0
#define m_DI LATCbits.LATC1
#define m_CLK LATCbits.LATC2

/////////////////////
setDataPLL(0x82); // address IN1
m_CE = 1; // включаем CE
setDataPLL(0x32); // данные 1-ый байт
setDataPLL(0x49); // данные 2-ой байт
setDataPLL(0x2B); // данные 3-ий байт
m_CE = 0; // выключаем CE

UsartFunc(0x92); // address IN2
m_CE = 1; // включаем CE
setDataPLL(0xE3); // данные 1-ый байт
setDataPLL(0x00); // данные 2-ой байт
setDataPLL(0x01); // данные 3-ий байт
m_CE = 0; // выключаем CE
/////////////////////

void setDataPLL(unsigned char dataByte) // dataByte - байт переданных данных
{
static byte i;
for(i = 0; i < 8; i++){
m_DI = UBit(dataByte, i); // перевести RC1 в состояние i-того бита байта переданных данных
m_CLK = 1; // сигнал CLK в "1" _-
m_CLK = 0; // сигнал CLK в "0" -_
}
}// end setDataPLL

BOOL UBit(unsigned char byteB, unsigned char bit0)
{
if(((byteB >> bit0) & 1) > 0)
{
return 1;
}else{
return 0;
}
}

ew6ml
31.08.2012, 13:14
Ребята, хелп! Пытаюсь управлять по приведённому коду - микросхема никак не реагирует :(
Даже выходы BO...
Что-то не так...

Luis
31.08.2012, 14:34
Необходимость задержки между тактами учли?

ew6ml
31.08.2012, 14:46
Необходимость задержки между тактами учли?
Упс.. забыл)
А сколько она должна составлять? Что-то пролистал даташит на глаза не попалось..

Luis
31.08.2012, 14:54
Период тактовых импульсов не менее 1.5 микросекунд ( примерно 660 КГЦ )118889

ew6ml
31.08.2012, 15:53
Период тактовых импульсов не менее 1.5 микросекунд ( примерно 660 КГЦ )118889
Ааа.. Нет.. У меня такт намного больше - около 1 милисекунды...
Попробовал сейчас сделать паузу между командами, т.е. сначала подал на адрес 0x82 данные, потом спустя какое-то время (несколько сек) на адрес 0x92 данные -- всё равно молчание(((

Добавлено через 33 минут(ы):

Приблизил сигнал CE как показано на рисунке в даташите:


///////////////////////
setDataPLL(0x92); // address IN2
m_CLK = 0; // добавил
m_CE = 1; // включаем CE
m_CLK = 0; // добавил
setDataPLL(0xE3); // данные
setDataPLL(0x00); // данные
setDataPLL(0x01); // данные
m_CE = 0; // выключаем CE

Всё равно молчание(

ew6ml
31.08.2012, 22:25
Получилось. Надо было поменять адреса: не 0x82 и 0x92, а 0x28 и 0x29 соответственно

labuda51
31.08.2012, 22:45
Отлично.С успехом!!!.