Форум программистов, компьютерный форум, киберфорум
Телефония, офисные АТС
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536

Прошивка на ОКАПИ-202

01.02.2019, 17:53. Показов 6368. Ответов 50
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У кого есть схема и прошивка на телефон для сети С32 ОКАПИ-202 ? Какой там микроконтроллер (кажется, PIC16F628 )?
Часто воруют кабели , может замыкать на аналоговые линии и сгорать , а сама фирма ПИК ЛТД Игоря Клопова уже отсутствует или закрыта .
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.02.2019, 17:53
Ответы с готовыми решениями:

Ошибка 202
Ребят, начал писать прогу, разбил ее на кучу процедур. Прога недоделанная. При компиляции выбивает ощибку 202. Незнаю, в чем проблема. Файл...

Заголовок «202 Accepted»
Как на ASP ответить заголовком «202 Accepted» то есть аналог PHP: header('Status: 202 Accepted');

Маркировка IT IT - 202 94 V0 5207
Подскажите что это за контроллер? Маркировка IT IT - 202 94 V0 5207

50
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
28.03.2019, 21:16  [ТС]
Студворк — интернет-сервис помощи студентам
Коды набора номера
Котенко, Л.Я. Электронные телефонные аппараты / Л.Я. Котенко / Под ред.С.Л.Корякина-Черняка. – 3-е изд.,перераб.и доп. – СПб. : Наука и Техника, 2003. – 272с
см. ЦТА Полисся 201 (стр. 138)
Вложения
Тип файла: zip epdf.tips_-.zip (5.46 Мб, 7 просмотров)
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
28.03.2019, 22:46  [ТС]
Эскиз схемы ЦТА Окапи -202Р (по плате, возможны ошибки в схеме матрицы и неточности ).
Вложения
Тип файла: zip scan 1.zip (1.30 Мб, 5 просмотров)
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
29.03.2019, 01:58  [ТС]
Подходит ли кодек из Окапи-202Р для для работы с ЦТА Полисся -201 (Котенко, Л.Я. Электронные телефонные аппараты / Л.Я. Котенко / Под ред.С.Л.Корякина-Черняка. – 3-е изд.,перераб.и доп. – СПб. : Наука и Техника, 2003. – 272с, стр. 138-141) ?
Сколько на самом деле в стандартной ЭА ЦАТС ступеней изменения шага квантования, по какой формуле они выбираются (в Полисся-201 не 4 а 8 битов ЦАП в ИПр ( "умножающий", но не R2R-ЦАП ) ) ?
Остальное в Фолкенберри и Радио 8/1977.
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
31.03.2019, 06:41  [ТС]
Похожа ли структура кодека АДМ для сети С-32 (ЭА ЦАТС "Дніпро") (после преобразования в нули и единицы импульсов 4 мкс и 2 мкс или в токовые и бестоковые посылки ) на структурную схему микросхемы MC3218, но тактирование 32 кГц (вывод 14 ) , совпадают ли разрядности алгоритма управления шагом квантования с разрядностью, как в MC3218 ?
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
01.04.2019, 19:19  [ТС]
Сведения про ШИМ и некоторые архитектуры кодеков есть в :
1) Нефедов В.И. Основы радиоэлектроники и связи. – М.: Высшая школа, 2005. 510 с.
2) К.И. Торяник, П.И. Лысов, М.А. Карпов, С.В. Есин, Е.А. Попов, Ю.О. Захаров
Сигналы с широтно-импульсной модуляцией в системах связи – М.: МИРЭА, 2008 г.
3) Стил Р. Принципы дельта-модуляции : Пер. с англ./ Под ред . В.В. Макарова . Маркова . М.:Радио и связь , 1979-368 с.
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
13.04.2019, 12:34  [ТС]
Схема ЦТА ОКАПИ-202Р .
Вложения
Тип файла: zip DTA.zip (22.3 Кб, 4 просмотров)
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
13.04.2019, 12:52  [ТС]
В качестве подпрограммы управления шагом ШИМ приема может использоваться подпрограмма

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
 parsesteprx           
                                 movf  RX_Bits, 0; 
                                 andlw 0x0F; 
                                 addwf      PC,F    ; W + PC -> PC
                                 goto  incsteprx       //0                                         
                                 goto decsteprx       //1                                                
                                 goto decsteprx       //2                                        
                                 goto decsteprx       //3
                                 goto decsteprx       //4                                         
                                 goto decsteprx       //5                                                
                                 goto decsteprx       //6                                       
                                 goto decsteprx       //7
                                 goto decsteprx       //8
                                 goto decsteprx       //9                                                
                                 goto decsteprx       //10                                        
                                 goto decsteprx       //11
                                 goto decsteprx       //12                                         
                                 goto decsteprx       //13                                                
                                 goto decsteprx       //14                                      
                                 goto incsteprx        //15
                            
                                  goto decsteprx        //   
                                  
 
 incsteprx 
                             incf  Step, 1;    //Step++
                             movf  Step, 0;  //Step->W
                             sublw 0x03;    //0x03-W->W
                             btfsc  STATUS,C   //if Step>3 ,  skip next line      
                             goto selectcoefsrx    //if step=<3
                             movlw 0x03          // step=3 (maxstep)
                             movwf Step           //W->Step;
                             goto selectcoefsrx   
 
 decsteprx             
                              decfsz Step,0;
                              goto selectcoefsrx  
                              clrf    Step
                              goto selectcoefsrx 
 
  selectcoefsrx        
                               btfss TX_Bits, 0
                               goto coefstable0rx
                               goto coefstable1rx
                         
 
 coefstable0rx 
                                  
                              movf       Step, 0;
                              addwf      PC,F    ;  W + PC -> PC
                              retlw pwm_coef00;
                              retlw pwm_coef01;
                              retlw pwm_coef02;  
                              retlw pwm_coef03;   
 
 coefstable1rx       
                              movf  Step, 0;                              
                              addwf      PC,F    ;  W + PC -> PC
                              retlw pwm_coef10;
                              retlw pwm_coef11;
                              retlw pwm_coef12;  
                              retlw pwm_coef13;
Добавлено через 2 минуты
Возможно использование следующих подпрограмм или их аналогов по прерываниям от таймера(совпадение или переполнение, выбрать )

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
AppendBitTX
                    
                    IORWF Bit, 0  //bit0
                    RLF Byte_RX,0 //shift left
                    MOVWF  Byte_RX
                    retlw 0;
               
 
 AppendBitRX
                    
                    IORWF BitRX, 0  //bit0  
                    RLF Byte_TX,0 //shift left
                    MOVWF  Byte_RX
                    retlw 0;
 
IncBitCountRX
                    INCF  BitCntRX, 1;
                    MOVLW 0x09 
                    SUBWF BitCntRX,0;  //f-w->w
                    BTFSC  STATUS,Z       
                    CLRF  BitCntRX;
IncBitCountTX 
                    INCF  BitCntTX, 1;
                    MOVLW 0x09 
                    SUBWF BitCntTX,0;  //f-w->w
                    BTFSC  STATUS,Z       
                    CLRF  BitCntRX;
                    retlw 0;
Добавлено через 1 минуту
Assembler
1
2
3
4
5
6
7
8
9
10
11
Decode 
            call  wait_1us
            btfsc PORTA,4
            bsf  BitRX,0
            bcf  BitRX,0
            call  wait_1us
            call  wait_1us
            btfsc PORTA,4
            call eqtest  //-> call Append Rx
            call error   
...
Добавлено через 50 секунд
Assembler
1
2
3
4
5
6
7
 coefstable0tx          
                              MOVF  Step, 0;
                              addwf      PC,F    ; W + PC -> PC
                              retlw 0b00000001; //RB0
                              retlw 0b00000100; //RB2
                              retlw 0b00010000; //RB4 
                              retlw 0b01000000; //RB6
Добавлено через 1 минуту
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 parsesteptx            MOVF  TX_Bits, 0; 
 checksteptx       
                          //if W=0 , test Z     
                          BTFSC   STATUS,Z
                          GOTO incsteptx;      //if W=0x00, if   equal bits, 0
                                                         //if Byte<>0
                           ANDLW 0x0F;      // use  mask
                           SUBLW 0x0F;       // 0x0f -w->w
                           BTFSC   STATUS,Z  //check Z  ,if W<>0 then  bits b0-b4 are not  equal  ,=1
                           GOTO incsteptx;     // if equal bits 
                           GOTO  decsteptx;    //  if bits are  not equal 
 
 
 
 
 parsesteptx            MOVF  TX_Bits, 0; 
 checksteptx       
                          //if W=0 , test Z     
                          BTFSC   STATUS,Z
                          GOTO incstep;      //if W=0x00, if   equal bits, 0
                                                         //if Byte<>0
                           ANDLW 0x0F;      // use  mask
                           SUBLW 0x0F;       // 0x0f -w->w
                           BTFSC   STATUS,Z  //check Z  ,if W<>0 then  bits b0-b4 are not  equal  ,=1
                           GOTO incstep;     // if equal bits 
                           GOTO  decstep;    //  if bits are  not equal 
 
 
 
 incsteptx 
                             INCF  Step, 1;    //Step++
                             MOVF  Step, 0;  //Step->W
                             SUBLW 0x03;    //0x03-W->W
                             BTFSC  STATUS,C   //if Step>3 ,  skip next line      
                             GOTO selectcoefs    //if step=<3
                             MOVLW 0x03          // step=3 (maxstep)
                             MOVWF Step           //W->Step;
                             GOTO selectcoefs   
 
 decsteptx 
                              DECFSZ Step,0;
                              GOTO selectcoefs  
                              CLRF    Step
                              GOTO selectcoefs   
 
selectcoefstx          
                             //ошибки 
                             GOTO  coefstable1 
  
                                
                             GOTO  outbitdac
Добавлено через 7 минут
В компараторе
Code
1
CM<2:0> = 101
,
VIN- RA1/AN1 (pin 18)- инв вход сигнала ( -1*Uвх, -x)
VIN+ RA2/ AN2/VREF (pin 1) -с выхода ИПд (xp в
Code
1
  comp:=Compare (   xp , -x  ) ;
),
C2VOUT -выход компаратора ( comp ).

Добавлено через 3 минуты
По кодам coefstable0tx в режиме кодека выбирают резистор(через TRISB , маску ), а в соответствующий порт выводят данные с компаратора после ячейки памяти (проверка текущего бита , управляет уровнем на пине "ЦАП" ).
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
14.04.2019, 01:06  [ТС]
https://alex-exe.ru/radio/micr... rator628a/
Пример использования компаратора .Но нам не подходят некоторые биты и конфигурация, для нас:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 CMCON = 0b11000101;   //Выход 2 не инвертирован, используется только второй компаратор           
 VRCON = 0b00000000;   //внешний 
 TRISA |= 0b00000110;   //TRISA =00110111   RA1 и RA2 - выводы компаратора
//( но у нас еще и  TRISA =00110111 из-за портов  ввода-вывода
// и фьюз отключает сброс, включая его как порт  )     
// используем C2OUT  прямым в программе   )
 PORTA = 0b00000000;
 
//у нас состояние  компаратора нужно читать скорее всего по
// прерываниям от таймера ,а не компаратора
 
if(CMIF){   //fix
 
//используется
if(C2OUT)
{
 
; действия для 1
}
 
else {
 
; действия для 2 
}
 
  
CMIF=0; //fix
 
}
Добавлено через 9 минут
Немного не по теме, но c примерами некоторых приемов использования ассемблера (процессор не стой буквой и схема другая) http://www.bowdenshobbycircuits.info/pic_ck.htm

Добавлено через 1 минуту
Пример про ШИМ http://embedded-lab.com/blog/l... ation-pwm/

Добавлено через 7 минут
Вместо управления светодиодом здесь программа звонка ( другая программа управления периодом, длительностью , другие параметры прескалеров) и ШИМ преобразователь шага потока приема (нужно ли переключать его в "ногодрыгалковый" режим с зависимостью от данных по прерыванию вместо выхода с ШИМ напрямую в режиме кодека с интеллектуальным табличным выбором DutyCycle в зависимости от 0 или 1 на выходе подпрограммы потока приема и счетчика step (0x00...0x03) ?).

Добавлено через 4 минуты
Информация про таймеры (некоторые примеры использования языка программирования, перевести на ассемблер и поменять конфигурацию ) :

http://narodstream.ru/pic-urok-5-tajmery/
https://alex-exe.ru/radio/micr... timer-pic/

Добавлено через 46 секунд
https://alex-exe.ru/radio/micr... ic16f628a/

Добавлено через 2 минуты
http://saeedsolutions.blogspot... ation.html

Добавлено через 59 секунд
http://narodstream.ru/pic-urok... ezhim-pwm/

Добавлено через 2 минуты
http://www.radioradar.net/hand... _shim.html

Добавлено через 5 минут
У нас ,предположительно, FPWM=n*32kHz, ( 32kHz (прерывания , частота выборки ),64kHz ,128kHz, больше-плохо работает ОУ, оптимизировать с помощью программы моделирования ), Fosc=18,432MHz, у нас уточнить формулу с учетом особенностей подключения ОУ(биполярное в терминах ОУ, половинной амплитуды , относительно искусственной средней точки).

Добавлено через 7 минут
Ремарка: правильно использовать " ;" в комментариях , если мы на ассемблере , 0-w,1-f (в parsesteprx и других подпрограммах, исправив ошибки и адаптировав, написано было на концептуальном ассемблере для этого процессора , а не дословно ).

Добавлено через 29 минут
http://ww1.microchip.com/downl... 33023a.pdf PIC® Mid-Range Reference Manual
(DS33023).

Добавлено через 1 час 18 минут
Вариант инициализации ресурсов ШИМ -модуля из архива PIC16F628A PWM Code в редакции под наши частоты, похожий на используемый у нас:

Includes.h

C
1
2
3
4
5
6
7
8
9
10
11
12
13
#ifndef __INCLUDES_H
#define __INCLUDES_H
 
// Define CPU Frequency
// This must be defined, if __delay_ms() or 
// __delay_us() functions are used in the code
//#define _XTAL_FREQ   20000000
   #define _XTAL_FREQ   18432000
 
#include <htc.h>
#include "PWM.h"
 
#endif
PWM.h


C
1
2
3
4
5
6
7
8
9
10
11
 
#ifndef __PWM_H
#define __PWM_H
 
 
void InitPWM(void);
void SetPWMDutyCycle(unsigned int);
 
 
 
#endif
PWM.c


C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
//#include "Includes.h"
 
 
// CCP1 module is used here to generate the required PWM
// Timer2 module is used to generate the PWM
// //This PWM has 10bit resolution
 
 
/*
 
 
SET-UP FOR PWM OPERATION
The following steps should be taken when configuring
the CCP module for PWM operation:
1. Set the PWM period by writing to the PR2
register.
2. Set the PWM duty cycle by writing to the
CCPR1L register and CCP1CON<5:4> bits.
3. Make the CCP1 pin an output by clearing the
TRISB<3> bit.
4. Set the TMR2 prescale value and enable Timer2
by writing to T2CON.
 
 
 
 
 
for 20МГц
 
T2CKPS<1:0>=0:1  1:4 for 4,88kHz
T2CKPS<1:0>=0:0  1:1 for   > ~20 kHz
 
//20/4=5 МГц
 
if PR2=255 TMR2 prescale value=4
PWM period = [(PR2) + 1] ⋅ 4 ⋅ Tosc ⋅ TMR2 prescale value
 
PWM period=(255+1)*(4*4*1/20000000)=0,0002048 s , f=4882,8125 Hz
PWM period=(143+1)*4*1*(1/18432000)=0,00003125 s
 
    PR2  =((PWM period)*Fosc/(4 *TMR2_prescale_value))-1;
 
  T2CON = 0x00, TMR2_prescale_value=1
 
    PR2 =((31.25e-6*18432000)/ (4 *1)) -1=143 PR2=0x8F    32kHz
    PR2 =((15.625e-6*18432000)/ (4 *1)) -1=71 PR2=0x47    64kHz
    
    PR2 =((7.8125e-6*18432000)/ (4 *1)) -1=35 PR2=0x23  128kHz
 
    PWM duty cycle =(CCPR1L:CCP1CON<5:4>) ⋅ Tosc ⋅ TMR2_prescale_value
 
 
T2CON = 0x01, TMR2_prescale_value=4
 
//PR2 =0xff  for 4,88  kHz for 20 kHz
 
//for 4,5kHz
T2CON = 0x01, TMR2_prescale_value=4
PR2 =(( 18432000/4.5e3)/ (4 *4)) -1=255   PR2=0xFF
 
 
 
 
   //for 2 kHz
T2CON = 0x02, TMR2_prescale_value=16
PR2 =(( 18432000/2e3)/ (4 *16)) -1=143   PR2=0x8F
 
 
*/
 
 
void InitPWM(void)
{
    //for 18,432 MHz
 
                TRISB3  = 0;            // Make CCP1 pin as output    
                                                  //rebuilt this 
 
 
 
 
    CCP1CON = 0x0C;         // Configure CCP1 module in PWM mode   //check
 
                     //for  ring     
       //PR2   = 0xFF;           // Configure the Timer2 period, PWM frequency is set to 4.5KHz.
       // T2CON = 0x01;           // Set Prescaler to be 4  
                     
                     //PR2=0x8F   // 2kHz   
                     //T2CON = 0x02, TMR2_prescale_value=16
                     //SetPWMDutyCycle(0); 
 
 
                 //for codec PWM  RX  stream 
                      PR2   = 0x47;           // Configure the Timer2 period ,  PWM frequency is set to 64 KHz.
                                                     // PR2   = 0x47, PR2=0x8F  for 32kHz
        T2CON = 0x00;       // Set Prescaler to be 1 
 
 
           //SetPWMDutyCycle(0);     // Intialize the PWM to 0 duty cycle   (for ring ,standby mode ) 
                  SetPWMDutyCycle(512);
                               // fix for  DutyCycle=50% for  Uaverage =U/2 (for codec mode , may be changed in the program )
 
    T2CON |= 0x04;          // Enable the Timer2, hence enable the PWM.
                                      //rebuilt this line , using flags (for ring,for codec mode )
}
 
 
 
void SetPWMDutyCycle(unsigned int DutyCycle) // Give a value in between 0 and 1024 for DutyCycle
{
    CCPR1L   = DutyCycle>>2;            // Put MSB 8 bits in CCPR1L   //fix
    CCP1CON &= 0xCF;                    // Make bit4 and 5 zero
    CCP1CON |= (0x30&(DutyCycle<<4));   // Assign Last 2 LSBs to CCP1CON
}
Добавлено через 1 минуту
Includes.h и PWM.h, а также процедуры приведены для примера (у нас их переделывают и встраивают в программу).


]
Добавлено через 2 часа 32 минуты
В статье А. Попеля в РА1/03-2/03 не написали про частоту ШИМ-импульсов на выходе RB3/CCP1 (PB3/OC1R для ATTiny2313A/AT90S2313) и коэффициенты ШИМ . В какой кратности он к 32 кГц (ШИМ-заполнение частотой 32 кГц может и не давать необходимое усреднение, может там 64...128 кГц заполнение в период между отсчетами , приуроченное к отсчетам с частотой 32 кГц )? У ОУ LM324 не очень высокая fmax ( Unity Gain = 1 MHz, свыше 80...100 кГц работает недостаточно эффективно, со сложной ФЧХ и завалом АЧХ , http://www.ti.com/lit/ds/snosc16d/snosc16d.pdf ).
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
15.04.2019, 18:11  [ТС]
Некоторые соображения про моделирование элементов кодека и фильтров в MicroCAP 12 Evaluation (не хватило єлементов, не хочу крэкать MicroCAP 12, у меня правила работы в сети не разрешают ).
Миниатюры
Прошивка на ОКАПИ-202  
Вложения
Тип файла: zip pwm.zip (117.0 Кб, 4 просмотров)
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
15.04.2019, 18:43  [ТС]
Комментарии к функциональной схеме замещения программных модулей
Миниатюры
Прошивка на ОКАПИ-202  
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
18.04.2019, 06:32  [ТС]
Пробовали писать Клопову (ящик еще отвечает ):


Добрый день, ********.
Я схему вам могу выслать, но без прошивки. Если нужны прошитые процессоры, то проблем нет.
По цене Ворона/Космодрома сделаем нужное количество.
В офисе я бываю редко. В воскресенье уеду до конца месяца и украинский номер не будет работать.
Мой номер 050-486-66-67.
С уважением, Клопов Игорь


17.03.2019 02:42, ********
-- реклама -----------------------------------------------------------
Поторопись зарегистрировать самый короткий почтовый адрес @i.ua
https://mail.i.ua/reg - и получи 1Gb для хранения писем

Добавлено через 27 минут
Нужно ли в ОКАПИ-202Р с топологией версии 1.1 включать обратносмещенный защитный диод 1N4148 с вывода 1 на вывод 14 (плюс питания , +5В) катодом к выводу 14 ? Питание ОУ больше 5 В . Правильно ли ? Или в доработанных иначе ?
Может еще и диодный мостик на входе с ЦАЛ поставить (после фьюзорезистора 5,1 Ом) , хотя это не по правилам работы с ЦАЛ ? Но это может превращать его в стробоскопический смеситель и увеличивать уровень помех от ЦАЛ (см. регламент радиосвязи ) . Правильная схема симметричнее и содержит трансформатор с двумя обмотками на входе (как в Полесье и Мителовском АПД-12 ) .
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
18.04.2019, 06:35  [ТС]
Даташит на PIC16F628A
Вложения
Тип файла: zip 16f628.zip (1.56 Мб, 4 просмотров)
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
18.04.2019, 10:01  [ТС]
http://gea.nmu.org.ua/docs/2014/2/93_072-076.pdf

Добавлено через 4 минуты
Уточненная информация про шаг квантования : см. КНД 45-203-2002. Апарати телефонні цифрові для електронної автоматичної телефонної станції системи С-32. Загальні технічні вимоги , http://gea.nmu.org.ua/docs/2014/2/93_072-076.pdf

Добавлено через 10 минут
Совместимы ли кодеки и алгоритмы передачи набираемого номера в ЦТА Полисся-201 с сетями , где используются ЦТА ОКАПИ-202Р (а то библиотекарь не разбирается, когда спрашивают книги по системе С-32 , книги плохо подходят )?

Добавлено через 16 минут
Уточнить вопрос по скремблированию (формулы 5 и 6 ) .

Кодированный сигнал [1, 2]:
Code
1
qn = sign(Xn – Xqn),
где Xn – сигнал на входе, Xqn – восстановленный сигнал, {Hn} – шаг квантования.

Соотношение для обновления шага квантования:
Code
1
 Hn = Hn-1[{Hn-1}*2^-k] + dHn

где {.} – 8 старших разрядов, k – показатель затухания, равный k= 8, dHn – приращение шага, равное:
Code
1
2
   2, if qn=qn-1=qn-2=qn-3
   dHn = 0, в других случаях
Величина Hn представлена 16-ти разрядным двоичным числом (уточнить в нашей программе ).

Восстанавливающий фильтр кодера представляет собой звено 2-го порядка с полюсами на частотах
0.314 и 2.5 кГц и нулем на частоте 4.4 кГц.
Восстанавливающий фильтр декодера имеет два полюса на частотах 0.314 и 2.0 кГц и нуль на 4.4
кГц. Восстановленный сигнал имеет вид:
Code
1
Xqn = [{Hn(qn,qn-1,qn-2,qn-3)}]* P(z),
где * - обозначает операцию свертки, { } – старшие 8 разрядов, P(z) – передаточная функция восстанавливающего фильтра.
В системе С-32 преобразованные в АДМ сигналы подвергаются скремблированию в соответствии с
полиномом:

Code
1
y[0]=x[0] xor y[-6] xor y[-7]
скремблирование производится в телефонных аппаратах, адаптерах, транскодерах.

На выходе из системы при преобразовании из АДМ , а также в телефонных аппаратах осуществляется дескремблирование в соответствии с:
Code
1
y[0]=x[0] xor x[-6] xor x[-7]

Вычислитель
шага представляет собой 16-ти разрядный аккумулятор, и 4-х разрядное окно (регистр сдвига) для входных значений qn. Обновление значения шага происходит при вычислении по схеме:


Code
1
H(n,h).H(n,l)=H(h,n-1)-0.H(h,n-1)+dH(h,n).0
«.» отделена целая (старшая) 8-ми разрядная от дробной (младшей) 8-ми разрядной части, 16-ти разрядный аккумулятор ограничен сверху, значение dH(h,n) зависит от комбинации разрядов окна и равно 2.0 для комбинации «0000» или «1111» и 0.0 в других случаях. В качестве результата берется 8-ми разрядное значение H (n,h) .

(к вопросу могут ли ключи включаться одновременно, до какого step считать , как менять напряжение и постоянную времени в схеме ).

Добавлено через 21 секунду
Модули можно доработать .

Добавлено через 4 минуты
http://www.standart-service.co... s/N408.pdf

Добавлено через 45 минут
https://www.avrfreaks.net/foru... nt-avr-gcc к вычислителю шага квантования (разбивка 16-разрядного числа на байты с макросом , на Си++ ).
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
18.04.2019, 16:23  [ТС]
Моделирование шага квантования по http://gea.nmu.org.ua/docs/2014/2/93_072-076.pdf


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
#include <stdio.h>
#include <iostream>
#include <stdint.h>
#include <math.h>
 
#define test16bit  0xffaa
 
 
//varA8bit = test16bit & 0xFF;
//varB8bit = test16bit >> 8;
 
 
#define low(x)   ((x) & 0xFF)
#define high(x)   (((x)>>8) & 0xFF)
 
#define GetX16bit(x2, x1)     ( ( (x2) << 8) |   (x1)    )
#define AppendBit(x, b )      ( ( (x ) << 1) |   ( (b) &0x01)   )
 
 
 
 
#define BYTE_TO_BINARY_PATTERN "%c%c%c%c%c%c%c%c"
#define BYTE_TO_BINARY(byte)  \
  (byte & 0x80 ? '1' : '0'), \
  (byte & 0x40 ? '1' : '0'), \
  (byte & 0x20 ? '1' : '0'), \
  (byte & 0x10 ? '1' : '0'), \
  (byte & 0x08 ? '1' : '0'), \
  (byte & 0x04 ? '1' : '0'), \
  (byte & 0x02 ? '1' : '0'), \
  (byte & 0x01 ? '1' : '0') 
 
 
 
 
/*
printf("Leading text "BYTE_TO_BINARY_PATTERN, BYTE_TO_BINARY(byte));
 
printf("m: "BYTE_TO_BINARY_PATTERN" "BYTE_TO_BINARY_PATTERN"\n",
  BYTE_TO_BINARY(m>>8), BYTE_TO_BINARY(m));
 
 
 
*/
 
 
//#define str  1110101010101010 
 
#define str  0101010101100111 
  
bool IsBitSet(uint16_t num, int bit)
{
    return 1 == ( (num >> bit) & 1);
}
 
 
 
uint8_t getBitNFromStream( uint16_t x, uint8_t n)
{
    
return (uint8_t ) ( (x >> n) & 1);  
}
 
 
 
static uint16_t H=0<<8 ;
uint8_t  sub_getHres(uint8_t Inbyte )
{
    
// H=256;
 static uint16_t dH=0 ; 
 
 //uint8_t Hh,Hl,Hhprev,Hlprev;
 
 //2, if qn=qn-1=qn-2=qn-3
 //dHn = 0, else 
 
 uint8_t mask=0x0f;
 
 
    //4bit window
 
if (  (( Inbyte&mask)==0x00)  ||(  ( Inbyte&mask)==0x0f)) { dH=2<<8; } else { dH=0; } 
 
printf("\n dH=%d  Hprev=%d  ",  high(dH)  , high(H)  );
 
 
 if(H>0) 
 {
  if(H<0xffff )
   {    H =H-GetX16bit(0, high(H) )+  GetX16bit( high( dH ), 0 ); }
  
  else 
   {    H =H-GetX16bit(0, high(H) ) ; }
}
  
 else  
 {
    
 H =H + GetX16bit( high( dH ), 0 ); 
 }
 
 
/*
Hlprev=low(Hprev);
Hhprev=high(Hprev);
 
 
 
Hh=Hhprev-0+high( dH );
 
Hl=Hlprev-Hhprev+0;
 
H=GetX16bit(Hh,Hl );
*/
 
printf("  , H=%d ",   dH  , H );
 
 
/*
Hh=Hhprev-0+dHh
Hl=Hlprev-Hhprev+0
 
*/
  return   high (H) ; 
    
 //return    (H) ;
}
 
 
uint8_t OutScrByte=0;
uint8_t InScrByte=0;
 
uint8_t InScrBit=0;
 
 
uint8_t ScrembleCurrentBit ( uint8_t byte)
{
static uint8_t  y_tmp;
 
uint8_t y0;
 
    
y0=(byte&0x01);  //x[n]
y0^=( y_tmp&0x40  >>6); //y[n-6]
y0^=( y_tmp&0x80  >>7); //y[n-7]
    
    
y_tmp=AppendBit(y_tmp, y0 );
    
//y0=(y_tmp&0x11111110)| y0;    
 //return y_tmp ;   
 return y_tmp &0x01;    
 
}
 
 
 
uint8_t DescrembleCurrentBit ( uint8_t byte)
{
 
uint8_t y0;
static uint8_t byte1;
 byte1=AppendBit(byte1, byte );
 
  y0 =(byte1&0x01) ;     //x[n]
  y0 =y0^(byte1&0x40>>6); //x[n-6]
  y0 =y0^(byte1&0x80>>7); //x[n-6]
 
    printf(   "\n " BYTE_TO_BINARY_PATTERN , BYTE_TO_BINARY(y0)  );
    
    
    
//return y0;    
 return y0 &0x01;
 
}
 
 
 
 
 
 
 
int main()
{
    
    
    
    
 
 
uint8_t Hbyte=0 ;
 
uint16_t InByte=0;
uint8_t InBit=0;
 
 
               //  decrement step test
 //0xAA 10101010  forst 0 in this program
 //0x55 01010101  firsf 1 in this program
               //increment  step test
 //0x00 00000000  
 //0xff 11111111
 
uint16_t x  ; 
/*
 
for (int i = 0; i < 16; ++i)
{
    InBit =getBitNFromStream(   x,  i) ;
    InByte=AppendBit(InByte, InBit ); 
    Hbyte= sub_getHres(  InByte );
 
    
    
    
       printf(" i=%d  , inBit=%d ,    InByte=" BYTE_TO_BINARY_PATTERN ""  BYTE_TO_BINARY_PATTERN"    , Hbyte=%d \n", i,InBit,  
       
       BYTE_TO_BINARY(InByte>>8) ,  BYTE_TO_BINARY(InByte) , Hbyte  );
       
      
}
 
std::cin.get();
*/
x = 0x555f; 
 
H=0;
 
for  ( int j=0;j<32;j++) {
 std::cout<<"j="<<j<<"\n" ;
 
 switch (j){
    
    
    case 0:
           x = 0x5555; break;
        
    case 1: 
            x = 0x55af; break;  
    
    case 2:
        
            x = 0x5555; break;
    case 3:
             x = 0x555f; break;
             
    case 4:
           x = 0x5555; break;
        
    case 5: 
            x = 0x5555; break;  
    
    case 6:
        
            x = 0x5555; break;
    case 7:
             x = 0x5555; break;
             
             
    case 8:
           x = 0x5555; break;
        
    case 9: 
            x = 0x5555; break;  
    
    case 10:
        
            x = 0x5555; break;
    case 11:
             x = 0x5555; break;
             
    case 12:
           x = 0x5555; break;
        
    case 13: 
            x = 0x5555; break;  
    
    case 14:
        
            x = 0x5555; break;
    case 15:
             x = 0x5555; break; 
             
             
             
        
    case 16:
           x = 0x5555; break;
        
    case 17: 
            x = 0x5555; break;  
    
    case 18:
        
            x = 0x5555; break;
    case 19:
             x = 0x5555; break;
             
    case 20:
           x = 0x5555; break;
        
    case 21: 
            x = 0x5555; break;  
    
    case 22:
        
            x = 0x5555; break;
    case 23:
             x = 0x5555; break;
             
             
    case 24:
           x = 0x5555; break;
        
    case 25: 
            x = 0x5555; break;  
    
    case 26:
        
            x = 0x5555; break;
    case 27:
             x = 0x5555; break;
             
    case 28:
           x = 0x5555; break;
        
    case 29: 
            x = 0x5555; break;  
    
    case 30:
        
            x = 0x5555; break;
    case 31:
             x = 0x5555; break; 
                     
             
             
                      
    
 }
  
 
 
 std::cin.get();
 
 
 
for (int i = 0; i < 16; ++i)
  {
    InBit =getBitNFromStream(   x,  i) ;
    InByte=AppendBit(InByte, InBit ); 
    Hbyte= sub_getHres(  InByte );
    
    
    OutScrByte= ScrembleCurrentBit ( InByte);
    
     
    InScrBit=    DescrembleCurrentBit (  OutScrByte);
    InScrByte=AppendBit(InScrByte, InScrBit); 
    
       printf(" i=%d  , inBit=%d , "  
       " InBits= "  BYTE_TO_BINARY_PATTERN
       "    , Hbyte=%d"
       "   ScrBit =%d "  
       " DescrBit =%d " 
        " DescrBits=   "  BYTE_TO_BINARY_PATTERN                     
       "\n"      , i,InBit,  
       
      /* BYTE_TO_BINARY(InByte>>8) , */
         BYTE_TO_BINARY(InByte) , Hbyte  ,   
         OutScrByte , InScrBit,  BYTE_TO_BINARY(InScrByte)    
              );
       
      
  }
 
}
std::cin.get();
return 0;
 
}
Добавлено через 2 минуты
Возможные коэффициенты усиления усилителя-интегратора (для НЧ, но у нас это не используется , возможно не так включаются резисторы и не такое количество ступеней ):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
#include <iostream>
#include <stdint.h>
#include <math.h>
 
 
int main ( )
{
 
 
double R,K;
int k1,k2,k3,k4;
 
 
 
 
for(int i=1;i<16;i++)
{
 
k1= (i & 0x01 ? (int)1 : (int)0); 
k2= (i & 0x02 ? (int)1 : (int)0); 
k3= (i & 0x04 ? (int)1 : (int)0); 
k4= (i & 0x08 ? (int)1 : (int)0); 
 
 R=1/ (  (   k1/820000.0 )+ (k2*1/200000.0 )+(k3*1/51000.0 ) +(k4*1/13000.0 ) ) ;
 
 
K=-15000/R;
std::cout<<i<<" "<<R<<" "<<K <<"\n";
    
}
 
 std::cin.get();
return 0;
 
}
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
01.05.2019, 12:46  [ТС]
В статье http://gea.nmu.org.ua/docs/2014/2/93_072-076.pdf , очевидно, прошибли с коэффициентом b0 ,ГВЗ и ФЧХ фильтра (в частности зависимость сдвига по фазе от отсчета входного сигнала и его номера особенно на 0,1,2,3,4,... отсчетах , если b0=0 (ГВЗ на один такт , фильтр -интегратор "расходится")) . Эксперимент с подстановкой 1 в качестве коэффициента b0 дает c учетом инверсии знаков при a1...an для архитектуры фильтра в SciLab :
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
ha=[ 1  -1.544282  0.567961];
hb=[ 1 0.603896 -0.396104];
 
[xm,fr]=frmag(hb,ha,512);
subplot(6,1,5);
plot2d(fr',xm') ; xtitle ('AFR')
 
n=0:255;
 
x =[0 1 zeros(1,255)  ];
res =filter(hb,ha,x);
subplot (6,1,1);
plot2d(n,  x(n+1)      )      ;  xtitle (' Input signal ')
subplot (6,1,2);
plot2d(n,  res(n+1)      )      ;  xtitle (' Impulse response ')
 
x=[1 ones(1,255)  ];
res =filter(hb,ha,x);
subplot (6,1,3);
plot2d(n,  x(n+1)      )      ;  xtitle (' Input signal ')
subplot (6,1,4);
plot2d(n, res(n+1)     ) ; xtitle ('Step  response ')
 
 
 
 
 
 
 
 ha=[1 -1.611942  0.631574];
 hb=[1 0.603896 -0.396104];
 
 
[xm,fr]=frmag(hb,ha,512);
subplot(6,1,5);
plot2d(fr',xm'  ) ; xtitle ('AFR')
 
n=0:255;
 
x =[  1 zeros(1,255)  ];
res =filter(hb,ha,x);
subplot (6,1,1);
plot2d(n,  x(n+1)       )      ;  xtitle (' Input signal ')
subplot (6,1,2);
plot2d(n,  res(n+1)       )      ;  xtitle (' Impulse response ')
 
x=[  1 ones(1,255)  ];
res =filter(hb,ha,x);
subplot (6,1,3 );
plot2d(n,  x(n+1)    )      ;  xtitle (' Input signal ')
subplot (6,1,4);
plot2d(n, res(n+1)     )  ; xtitle ('Step  response ')
Миниатюры
Прошивка на ОКАПИ-202  
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
01.05.2019, 13:17  [ТС]
Какой же был правильный коэффициент b0 в http://gea.nmu.org.ua/docs/2014/2/93_072-076.pdf ?

Добавлено через 18 минут
Как вывести ФЧХ IIR в сайлабе с помощью Боде-плоттера для IIR с коэффициентами
Code
1
2
ha=[ 1  -1.544282  0.567961];
hb=[ 1 0.603896 -0.396104];
? Как вывести ГВЗ (кроме прогонки с функцией Дирака для ИХ или Хевисайда для ПХ и сравнением осциллограмм ) в Сайлабе (МАТЛАБе) ?
Нужно ли вводить
Code
1
sign_deltafi=sign(res(n+1)/x(n+1))
, нестандартно характеризующий для вычисления зависимости знака ОС от номера отсчета, чтобы избежать смены знака коэффициента передачи интегратора передачи на определенных отсчетах (особенно первых) в кодеке, а также предотвращать ГВЗ на время больше одного такта (как если b0=0) в фильтре, что сложно рассчитать обычными методами в Матлабе (если рассчитывать интегратор передачи как ФНЧ с определенной частотой среза , ниже 32кГц/(2*n) ) без специальных формул ? Иначе кодек "расходится" .

Добавлено через 8 минут
Учитывать требуемый знак при компараторе и интеграторе, не повторять ошибки Чернобыльской катастрофы при работе с IIR в качестве модели заменителя интегратора , особенно при некоторых коэффициентах .

Добавлено через 31 секунду
Знак ОС по уровню должен сохраняться .
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
03.05.2019, 10:11  [ТС]
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
//SciLab
 
 
  function yd=getdigital( xa)
if xa>0 then 
 yd=1 
else yd=0
end
endfunction
 
function ya=getanalog( xd)
if xd>0 then 
 ya=2.5  //fix
else ya=-2.5   //fix for 0V/5V
end
endfunction
 
 
 
 
global qtmp;
qtmp(4)=0;
qtmp(3)=0;
qtmp(2)=0;
qtmp(1)=0; 
 
function  d__h=Get_dH (q)
 global qtmp;
 
qtmp(4)=qtmp(3);
qtmp(3)=qtmp(2);
qtmp(2)=qtmp(1);
qtmp(1)=q  ;
   if   (qtmp (4)==qtmp(3))&& (qtmp(3)==qtmp(2))&&(qtmp(2)==qtmp(1))   
                          then    d__h=1   //fix
                           //d__h=2  
                          else  d__h=0  
            end    
  
  
 
endfunction
 
 
global Hprevh;
global Hprevl;
 Hprevh=0;
 Hprevl=0;
 
function st =Get_Step ( q  )
 
global Hprevh;
global Hprevl;
 dh1=  Get_dH (q  )  ;
Hmin=1;  //fix
Hmax=3;  //fix
 if(Hprevh>=Hmax   )  then dh1=0 end   
if (Hprevh < Hmin)  then   
                                            
                                           
                                            Hprevh =Hmin;  
                                            Hprevl =0 
                                            
else 
 
Hprevh=Hprevh+dh1;
Hprevl=Hprevl-Hprevh;
  
end
 
st  =  Hprevh ;
endfunction
 
 
 
global qtmp1;
qtmp1(4)=0;
qtmp1(3)=0;
qtmp1(2)=0;
qtmp1(1)=0; 
 
function  dh1=Get_dH1 (q1)
 global qtmp1;
 
qtmp1(4)=qtmp1(3);
qtmp1(3)=qtmp1(2);
qtmp1(2)=qtmp1(1);
qtmp1(1)=q1  ;
   if   (qtmp1 (4)==qtmp1(3))&& (qtmp1(3)==qtmp1(2))&&(qtmp1(2)==qtmp1(1))   
                          then      dh1=1  //fix
                      //   dh1=2  
                          else  dh1=0 
                        end    
  
 
 
endfunction
 
 
 
global Hprev1h;
global Hprev1l;
Hprev1h=0;
 Hprev1l=0;
 
function st1 =Get_Step1 (q  )
 
global Hprev1h;
global Hprev1l;
dh2=  Get_dH1 ( q  ) ;
Hmin1=1;   //fix
Hmax1=3;  //fix
 
if(Hprev1h> Hmax1 )  then dh2=0 end 
if (Hprev1h <Hmin1)  then   
                                              
                                           
                                            Hprev1h =Hmin1;  
                                            Hprev1l =0 
                                          else 
 
Hprev1h=Hprev1h+dh2;
Hprev1l=Hprev1l-Hprev1h;
end         
 
st1 =  Hprev1h ;
endfunction
 
 
function y=Uin_int(t, Uin)  
y=Uin   
endfunction
 
 
function y=sign1(x1)   
if (x1>0 ) y= 1 else y=-1 end  
endfunction
 
function q=Compare(x1,x2 )   
q = getdigital( sign1( (x1 - x2)   )  )
endfunction 
 
 
 
hb=[ 1  0.603896 -0.396104 ];
ha=[  1 -1.544282  -0.567961   ];
 
 
 
 
 
 
global U0 ;
U0=0;
 
function Uint=IntegrTx( Uinp  , R1   )
global U0 ;
//R1=15e3;
C=4.7e-9;
  U0=U0- (1/(R1*C))*integrate('Uin_int(t, Uinp)','t',0, 31.25e-6);  
  Uint =U0
// Uint=filter(hb,ha, Uinp );  
endfunction 
 
 
 
 hb1=[1 0.603896 -0.396104]; 
 ha1=[1 -1.611942  0.631574];
 
global U01 ;
U01 =0;
function Uint1=IntegrRx( Uinp1, R2 )
global U01 ;
//R1=15e3;
C=4.7e-9;
 U01=U01-  (1/(R2*C))*integrate('Uin_int(t, Uinp1)','t',0, 31.25e-6);
 Uint1=U01
   //Uint1=filter(hb1,ha1, Uinp );  
   
endfunction 
 
 
 
//x=[0  0  0  -2 5 1 1 1 -2  0  0  0  0  0 2  1  1  0  0  0 ];
x=[0  0  0  0 0.25 0 -1 0 0  0  2  2  2  0 0  0  0  0  0  0 ];
 
 
t=0;
 
 
 
function R1TX=SelectR1_TX ( step_tx) 
//fix
if         step_tx==1 then 
                                 R1TX =820000
 
elseif step_tx==2  then 
                                 R1TX =200000
 
elseif step_tx==3  then 
                                 R1TX =51000
 
elseif step_tx==4  then 
                                 R1TX =13000
 
else
                                R1TX =13000
end
endfunction 
 
 
 
 
//Modulator
 
U_mid=0;
 
xq = U_mid;
scale_tx=1;
 
for n = 1:20
 
xsig=U_mid+x(n);
q =Compare( xq  ,   -xsig     );     
 
  q_out(n)=q; 
  
 
  st_1=   Get_Step ( q   )  ;   // for ADM 
  
  TX_R1=SelectR1_TX ( st_1) ;
 
st2(n)=st_1;
 
 
//Uin_tx=scale_tx*( q*st_1);
Uin_tx=getanalog( q ) ;
 
 
xq=IntegrTx(  Uin_tx  , TX_R1      );
 
Uxp(n)=xq;
 
end
 
n=1:20;
subplot(8,1,1) 
plot2d2( n-1, q_out(n) ); xtitle ('q')
subplot(8,1,2) 
plot2d2  ( n-1,  x(n))  ; xtitle ('x_n')
 
subplot(8,1,3)
 plot2d2  ( n-1,  -Uxp(n))  ; xtitle ('Uxp')
 
subplot(8,1,4)
plot2d2 (n-1, st2(n) )  ; xtitle ('st2')
//****************************************************
 
 
 
 
global y_scr  ;
global x_scr  ; 
  y_scr=0;
  x_scr=0;
 
 
 
 
 
function  yn=Scremble( xn  )
//ys(0)=xn(0) xor ys(0-6) xor ys(0-7)
global y_scr 
 
 w=uint8(y_scr); 
 y_scr =uint8(w+y_scr); //shift left y 1 bit , zero in the bit 0
 
 w= uint8 (bitand( uint8(xn) , 1))  ;
 temp_bit= uint8(bitget(y_scr, 8));
 w= uint8(bitxor(   w  ,  temp_bit) );
 temp_bit= uint8(bitget(y_scr, 7)); 
 w= uint8(bitxor(   w  ,  temp_bit  ) ) ;
 y_scr= uint8(bitor( uint8(y_scr) , uint8(w)  ) )   ; //append  
 
// disp('y_scr='+string(dec2bin(y_scr)))
yn=uint8(bitand( y_scr, 1));
 
 
 
endfunction 
 
 
 
 
function  y_nd=Descremble( xn  )
 
//yd(0)=xn(0) xor xn(0-6) xor xn(0-7)
global x_scr  
 
w=uint8( x_scr );
x_scr=uint8(w+x_scr );   //shift left xn
w= uint8(bitand(uint8(xn), 1));
x_scr=uint8(bitor( w,   x_scr  )); // append bit x
 //disp('x_scr='+string(dec2bin(x_scr)))
 
w =uint8(bitget(x_scr,1));
tmp_bit=uint8( bitget(x_scr, 8 )); //bit 7 
w=uint8(bitxor( w ,    tmp_bit ));
tmp_bit=uint8( bitget(x_scr, 7 )); //bit 6
w=uint8(bitxor(w  ,   tmp_bit )); 
 
y_nd=uint8(bitand( w, 1)); 
endfunction 
//**************************
 
//q_out =[ 1 0  1  1  0  0 1   1       1  0  0    1  1  1  0 ]; 
 
   y_scr=0;
    x_scr=0;
for n=1:20
 
    if   modulo(n-1,8)==0 then 
 
      y_scr=0;
       x_scr=0;
     end
x_d1=getdigital( q_out(n));
x =uint8( x_d1)  ;
 
  ys =Scremble(  x );
 
//ys--->--tau_code--line--tau_decode->-ATS->- tau_decode-->line--> decode_tau-->ys
 
 
  yd =Descremble( ys  );
 yd1(n)=yd;
q_outrx(n)= yd1(n)  ; 
 disp('n='+string(n)+' x='+string(x)+' yscr='+string(ys) +' ydes='+string(yd1(n)) )
end 
 
 
 
 
 
//*****************************************************
 
 
function R1RX=SelectR1_RX ( step_rx) 
//fix
if         step_rx==1 then 
                                 R1RX =820000
 
elseif step_rx==2  then 
                                 R1RX =200000
 
elseif step_rx==3  then 
                                 R1RX =51000
 
elseif step_rx==4  then 
                                 R1RX =13000
 
else                           
                                 R1RX =13000
end
 
endfunction 
 
 
 
 
 scale_rx=1;
 
//Demodulator
for n = 1:20
 
   //qrx=q_out(n);
    
    qrx=getanalog( q_outrx(n)) ;                                  
 
     st_3=  Get_Step1 ( qrx  )  ;    //   for ADM 
     st4(n)=st_3;
 
 
//  Uin_rx= scale_rx*(qrx*st_3);
   Uin_rx=qrx;
   R1_RX=SelectR1_RX (st_3) ;
 
  yrx=IntegrRx( Uin_rx ,  R1_RX);
  Uxout(n)=double(-yrx);
 
 
 
end
 
 
n = 1:20; 
 
 subplot(8,1,5) 
 
plot2d2(  n-1,   double(q_outrx(n))  ); xtitle ('qout rx')
subplot(8,1,6)
 plot2d2  ( n-1,  Uxout(n))  ; xtitle ('Uxout')
 
subplot(8,1,7)
plot2d2 (n-1, st4(n) )  ; xtitle ('st4')
Добавлено через 25 минут
Забыл , как в Сайлабе plot2d ( n-1, Uxout(n)) выводить, чтобы между точками была кусочно-линейная интерполяция , зависящая не от n-2 отсчета а просто между двумя отсчетами ( как cо stem и plot2d ( n-1, Uxout(n)), но не ступенчато , а линейно , если просто подставить в plot2d ( n-1, Uxout(n)) без аргумента , и от n-2 отсчета зависит ) . Какой обычно аргумент подставлять после Uxout(n) , чтобы с поинтерами проблем не было ?

Добавлено через 31 секунду
Иногда несоответствие типов появляется.
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
03.05.2019, 10:39  [ТС]
Несмотря на информацию из Корнышева в ЦТА 15В , а не 16 В , но в допуск вписывается ( Дельта–207ТМ ,кажется, совместимый с той же линией , но ближе к идее фирмы по ЭА-ЦАТС ).
Вложения
Тип файла: zip M_CTA-207TM.zip (250.7 Кб, 7 просмотров)
Тип файла: zip M_APD-12.zip (301.8 Кб, 6 просмотров)
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
09.05.2019, 01:53  [ТС]
Режимы в аттаче
Вложения
Тип файла: zip 0001.zip (7.44 Мб, 7 просмотров)
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
09.05.2019, 02:05  [ТС]
Правда ли , что офис ПИК ЛТД в Запорожье на ул . Победы 50 , где когда-то продавали эти телефоны по документам от Укртелекома , отсутствует ? https://misto.zp.ua/business/firm_short_2635.html А на Независимости Украины 43 а обычно закрыто .
Вложения
Тип файла: zip Новый точечный рисунок.zip (325.8 Кб, 3 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.05.2019, 02:05

Скачать 1С 8.2.13.202 бесплатно
Где скачать 8.2.13.202 бесплатно? Не нашёл.

Ошибка компиляции (202)
type btree=^btree_; btree_=record name:string; phonenumber:string; adress:string; left:btree; ...

Как избавиться от ошибки 202?
Массив m(3,3) задается случайным образом из интервала от -2 до 2. Решить уравнение: y = \frac{k_1^4 + k_2^{\left|m...

Как избавиться от ошибки 202.
uses crt; function vich(n:integer):real; begin if n=1 then vich:=1 else vich:=vich(n-1)+vich(n-2); end; var n:integer; begin...

Точка доступа ZyXEL G-202
привет всем помогите настроить wifi (точку доступа) на Win 7. адаптер ZyXEL G-202 ничего не получается очено нужно пасиб!!!!!!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru