Форум программистов, компьютерный форум, киберфорум
Наши страницы
Измерительная техника
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
USERPC01
-33 / 0 / 0
Регистрация: 29.06.2018
Сообщений: 611
1

Замена микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК

31.08.2019, 07:43. Просмотров 1228. Ответов 12
Метки нет (Все метки)

Как заменить 1827ВЕ1-0000000 (аналог 586ВЕ1, система команд в книжке Гамкрелидзе, кажется, отрицательная логика на мультиплексированной шине адреса-данных , нестандартный UART ) в Г4-164 на AVR -МК ATMEGA8A, ATMEGA48, ATMEGA8535, используя , например, маскированные прерывания от одного из портов, битвайсовую эмуляцию пинов (шину ПЗУ можно не использовать ), подпрограммы задержки , используя С++, ассемблерные вставки ? Предусмотреть частоты , а которых переключаются фильтры, увеличение девиации в n раз в коэффициентах АЦП при включении делителей на n, таблицу коэффициентов в ЦАП в децибелах (с учетом , например, того , что 31,7-100 мВ , на 31,6 переключается аттенюатор и включается верх напряжения ЦАП ОН ), обработку прерывания от КОП и другие функции , как по инструкции (https://www.astena.ru/teh_3.html ) ?
0
Миниатюры
Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК  
Вложения
Тип файла: zip img012.zip (1.35 Мб, 0 просмотров)
Тип файла: zip g4-164_shems.zip (5.48 Мб, 0 просмотров)
Тип файла: zip g4-164_teh.zip (5.28 Мб, 0 просмотров)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2019, 07:43
Ответы с готовыми решениями:

замена микросхемы
Нужно заменить микросхему драйвер двигателя на HDD Smooth 100369972 . На али есть такие схемки но...

Замена микросхемы AT49F002NT
Господа! Если кто знает ,какая микросхема может заменить AT49F002NT?

Замена микросхемы на аналоговую
Привет всем. Какой микросхемой можно заменить микросхему FBBHAQ DM0265RB ? Она с платы...

Hp pavilion g6 замена микросхемы видео-чипа
Здравствуйте, может кто-то есть из сервисного центра? Какой срок гарантии дается при замене...

Acer aspire 5602wlmi замена сгоревшей микросхемы PG1AY 6900AS
помогите пожалуйста в ноутбуке Acer aspire 5602wlmi сгорела микросхема "PG1AY 6900AS" найти такую...

12
USERPC01
-33 / 0 / 0
Регистрация: 29.06.2018
Сообщений: 611
31.08.2019, 07:50  [ТС] 2
Пины 42, 41 (см. опечатку), 40 прерывания (при подключении к нашему мк вызывают маскированные прерывания от пинов ), 23 вкл +6 дБ, 39,38,37, 36 , 33,34, 32,31,30, 29 задействовать, подключив к прошитому МК на переходной плате , работающему от внутреннего RC-осциллятора , сэмулировав коды на них "ногодрыгалкой" и чтением бита или сигнатуры , обрабатывая прерывания , анализируя сигнатуру от пинов прерывания в ISR-процедуре.
0
USERPC01
-33 / 0 / 0
Регистрация: 29.06.2018
Сообщений: 611
31.08.2019, 07:55  [ТС] 3
Архитектура и система команд 586ВЕ1 (прототипа 1827ВЕ1-0000000 работающего только с внешним ПЗУ, с особенностью использования вывода 7 , который у нас не используется ) в аттаче
0
Миниатюры
Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК   Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК   Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК  

Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК  
USERPC01
-33 / 0 / 0
Регистрация: 29.06.2018
Сообщений: 611
31.08.2019, 08:55  [ТС] 4
Глушение можно сделать командой sleep программно (можно ли , или нет, просто не имплементовывать ) , не используя ключ и логику понижения тактовой , используя ее только для дешифрации команд .

Добавлено через 13 минут
А с Н1830-й микросхемой платы ЭВМ (аналог AVR-ок , более простой , но многовыводной , ставился в новых сериях после реформы ) ТЭЗы , кажется, не подходят (другая организация шин управления внутренними блоками ). Правда ли ?

Добавлено через 4 минуты
Реакцию на принятые "сериализованные" биты байта заголовка данных , тела данных и ограничителя данных в режиме СПАК (прием приборных сообщений, УП=0 ОЛ,ДУ=1 ОЛ , не адресных (СПАД, которые, кажется, обрабатываются платой связи с КОП ), когда УП=1 ОЛ, ДУ=1 ОЛ) при прерывании от КОП предусмотреть под коды из инструкции (кодирование КОИ-7 , русский код , см. книжку Кузнецова, Строителева 1993 г. про приборно-модульные системы ).

Добавлено через 35 минут
Хватит ли регистров ОЗУ (если типы uint8_t, uint16_t, с организацией подпрограмм переноса в сосоедние блоки байтов, выделение регистров флагов uint8_t с упакованными в них битами признаков или отдельные регистры, использование ключевого слова volatile при некоторых подпрограммах с временными переменными для оптимизации использования стека, который и так мал ) в AVR? Может, PIC16F876A ,PIC18F2550 использовать, там дофига ОЗУ, но неудобно писать на платном C18, требуется
"банксельная" процедура для управления направлением , слабовата система команд.
0
31.08.2019, 08:55
USERPC01
-33 / 0 / 0
Регистрация: 29.06.2018
Сообщений: 611
28.09.2019, 14:04  [ТС] 5
Алгоритм управления из инструкции в аттаче (взято с jais.ru , в РГ4-14-17-01 такой же блок процессора и коды).
0
Миниатюры
Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК   Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК   Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК  

Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК   Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК   Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК  

Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК   Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК   Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК  

Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК   Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК   Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК  

Вложения
Тип файла: zip rg4-1701to.zip (1.88 Мб, 0 просмотров)
USERPC01
-33 / 0 / 0
Регистрация: 29.06.2018
Сообщений: 611
29.09.2019, 04:19  [ТС] 6
В кодах КОП (для приборных сообщений) используется КОИ-7 набор 0 (буквы английские, с учетом особенности старой печатной машинки без латиницы ) .

Добавлено через 28 минут
Код
A -0x41
B- 0x42
C- 0x43
D- 0x44
 
NB 0x4E 0x42
NC 0x4E 0x43
BE 0x42  0x45
ND 0x4E 0x44
CE 0x43 0x45
E   0x45
F   0x46
K   0x4B
L   0x4C
M 0x4D
I 0x49
O 0x4F
H 0x48
',' 0x2C
'.' 0x2E

0 0x30
1 0x31
2 0x32
3 0x33
4 0x34
5 0x35
6 0x36
7 0x37
8 0x38
9 0x39

REN(ДУ)=1 (ОЛ)
IFC(ОИ)=1 (ОЛ)
IFC(ОИ)=0 (ОЛ)
МАП Addr 0 ATN(УП)=1(ОЛ) 0x20+Addr
ATN(УП)=0 (ОЛ),  передавать приборные сообщения (например   A520.1,B80,F1,M15.  )   
байты:
0x41 0x35 0x32 0x30 0x2E 0x31 0x2C 0x42 0x38 0x30 0x2С 0x46 0x31 0x2С 0x4D 0x31 0x35 0x2E 
ПНМ  ATN(УП)=1 0x01
НПМ ATN(УП)=1 0x3F

МАП ATN(УП)=1 0x20+Addr
Добавлено через 2 часа 49 минут
Байты передавать с учетом алгоритма "рукопожатия" (см. пост про прибор 814 и его GPIB NI488.1 аналоги ,книгу Кузнецова,Строителева,Тимофеева 1993 года ).

Добавлено через 4 часа 52 минуты
С AT89C xx +регистры-защелки(с ALE) и внешнее ОЗУ (537РУ10 или аналог ) больше памяти под параметры режимов, но она уже непопулярна, написание программы для нее менее удобно (на ассемблере , а не на C тулчейне, хотя это возможно ).

Добавлено через 35 минут
https://hangcafe.wordpress.com/tag/at89c52/ пример с C на MCS-51 compatible MCU .

Добавлено через 1 минуту
https://hangcafe.wordpress.com/2018/...otyping-board/

Добавлено через 28 секунд
https://www.qsl.net/yo5ofh/pic/atmel...programmer.htm

Добавлено через 2 минуты
http://www.8051projects.info/datamem.php

Добавлено через 50 секунд
https://gzalo.com/ram8052_en/

Добавлено через 1 минуту
http://www.nomad.ee/micros/8052bas.shtml

Добавлено через 5 минут
https://www.edaboard.com/showthread....m-written-in-C

Добавлено через 4 минуты
https://www.edsim51.com/

Добавлено через 6 минут
https://sourceforge.net/p/sdcc/mailm...me.domainname/

Добавлено через 5 минут
У кого есть шаблон программы на Си (ассемблере) для обмена данными (чтение , запись переменных типа uint8_t, uint16_t, возможно, uint32_t с заданного стартового адреса или работая с поинтерами ) с внешним ОЗУ (например, 537РУ10 с записью в них требуемых флажков и данных про параметры )? Пойдет ли такой ассемблер (компилятор ) в Windows 10 (x32,x64) ?

Добавлено через 1 минуту
http://www.8052mcu.com/codelib/

Добавлено через 20 минут
https://www.instructables.com/id/Get...ro-controller/

Добавлено через 19 минут
https://www.edsim51.com/8051Notes/8051/parallelInputOuput.html проблема с чтением портов для MCS-51

Добавлено через 2 минуты
https://www.edsim51.com/examples.html#prog1

Добавлено через 4 минуты
SDCC тоже был

Добавлено через 2 минуты
https://opticsedu.files.wordpress.co...nterfacing.pdf

Добавлено через 12 минут
https://www.csee.umbc.edu/~alnel1/cm...erBeginner.pdf

Добавлено через 4 минуты
http://www.kjit.bme.hu/images/storie...128_manual.pdf

Добавлено через 1 минуту
http://www.avr-asm-tutorial.net/avr_en/beginner/SRAM.html в простых, компактных и диповских (дешевых, не выше Атмега 8А) может быть мало СОЗУ

Добавлено через 1 минуту
https://www.avrfreaks.net/forum/internal-sram-avr

Добавлено через 5 минут
https://ww1.microchip.com/downloads/...040001974A.pdf

Добавлено через 32 секунды
стр 36,37

Добавлено через 1 минуту
https://ph0en1x.net/79-avr-asm-first-program-for-microcontroller.html

Добавлено через 1 минуту
https://www.avrfreaks.net/forum/atmega-20mhz-external-ram

Добавлено через 38 секунд
http://microsin.net/programming/avr/avr-gcc-memories-and-malloc.html

Добавлено через 4 минуты
https://www.avrfreaks.net/forum/transferring-data-sram-atmega

Добавлено через 3 минуты
https://www.youtube.com/watch?v=dXZaoTV_C7o

Добавлено через 8 минут
https://www.radiokot.ru/start/mcu_fpga/avr/14/

Добавлено через 1 минуту
Про
Assembler
1
2
3
4
5
.dseg
 
Digit:   .byte 4
Input:    .byte 2
Status:   .byte 1
и аналогичную в Си- тулчейне

Добавлено через 10 минут
Хватит ли на частоту (6 знаков (байтов или иначе, с программой декодера ) частоты или сохранять в двоичном виде, потом преобразовывать , 3 знака на ЧМ (или uint16_t хватит, там до 995 кГц, а не до 255 + бит признака делителя ), 2 знака на АМ (uint8_t хватит) , 3...4 знака на выход (или uint16_t , преобразовывать через большой лукап-табличный декодер в пределах 10,0 дБ и переключать аттенюаторы, ), регистры флажков и признаков (можно упаковывать в байт и потом работать битвайсово с битами по маске ), регистры статических команд (можно тоже упаковывать биты в байт , потом работать по маске)? Просто с РОН r0-r31 может быть тесновато , хотя начиная с с ATMEGA8A-ATMEGA48 ( в них еще не менее 1 К СОЗУ) бывает, но для лукап-табличного декодера децибельного шага маловато памяти программ .

Добавлено через 1 минуту
https://www.radiokot.ru/start/mcu_fpga/avr/15/ с другими кодами

Добавлено через 6 минут
Забыл, как на Си для ATMEGA8A обращаться к СОЗУ 1К для записи и чтения (с типами uint8_t, uint 16_t , псевдо -uint32_t , с программной организацией переноса при необходимости , например на случай частоты 639.999 МГц, вычитания и сложения в соответствующем разряде, хранить ли в двоично-десятичном-виде, в начале можно в двоичном )? На ассемблере это иногда лучше понятно.

Добавлено через 13 минут
Можно и по цифрам, много байтов жрет в СОЗУ и регистрах, может медленно работать .

Прерывания от порта сортировать по маске при поступлении прерывания от пинов, организовав аналог прерывания прер1 (от валкодера), прер2(от клавиатуры) и прер3(от платы интерфейса КОП) по схеме , организовав
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
ISR(...) //указать правильный вектор прерывания от пинов порта ,
           // такое мы в статье  про Маяк-232 рассматривали на примере    ATTiny 2313A
 
{
PORT_INT=GetPortSignature(); // ввести сигнатуру состояния  пинов прерываний, эмулируя маскированные  прерывания 
                                              // заменяющие прерывания прер1 , прер2, прер3  в схеме ЭВМ
switch (PORT_INT)
{
cli();
 
case INT_3_signatire :
       //add INT_3_alt signatures 
                   subroutine_int3();
                    break;
case INT_2_signatire :
       //add INT_2_alt signatures 
                   subroutine_int2();
                     break;
case  INT_1_signatire : 
           //add INT_1_alt signatures 
                   subroutine_int1();
                     break;
  }
 
return ;
}
Добавлено через 1 минуту
При необходимости ввести маску битов на конъюнкции с маской и правильный приоритет прерываний (см. Гамкрелидзе ).

Добавлено через 5 минут
В примере тетриса из https://habr.com/ru/post/161951/ все же в ATMEGA16 помещаются несколько достаточно больших массивов байтов

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
/*****************************************************
Chip type               : ATmega16
Program type            : Application
AVR Core Clock frequency: 8,000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*****************************************************/
 
#include <mega16.h>
#include <delay.h>
#include <math.h>
#include <stdlib.h> 
#include <stdio.h>
 
int cnt = 0;
char src = 0, start = 0, tmp = 0, cx = 3, cy = 14, mx = 2, my = 15, ex = 3, ey = 0, dx = 1, dy = 1, fld[16][8], speed = 200;
char flds[16][8] = {{0,1,1,1,1,1,1,0},   // 0
                   {1,0,0,0,0,0,0,1},   // 1
                   {1,0,1,0,0,1,0,1},   // 2
                   {1,0,0,0,0,0,0,1},   // 3
                   {1,0,1,0,0,1,0,1},   // 4
                   {1,0,0,1,1,0,0,1},   // 5
                   {0,1,0,0,0,0,1,0},   // 6
                   {0,0,1,1,1,1,0,0},   // 7
                   
                   {0,0,0,0,0,0,0,0},   // 8
                   {0,0,0,0,0,0,0,0},   // 9
                   {0,0,0,0,0,0,0,0},   // 10
                   {0,0,0,0,0,0,0,0},   // 11
                   {0,0,0,0,0,0,0,0},   // 12
                   {0,0,0,0,0,0,0,0},   // 13
                   {0,0,0,0,0,0,0,0},   // 14
                   {0,0,0,0,0,0,0,0}};  // 15   
                   
void showsrc(void) {
char x = 0, y = 0;
    src = 0, start = 0, tmp = 0, cx = 3, cy = 14, mx = 2, my = 15, ex = 3, ey = 0, dx = 1, dy = 1, speed = 200;
    while (y < 16) { 
        x = 0;
        while (x < 8) {
            fld[y][x] = flds[y][x];
            x++;
        }
        y++;
    }
}
                              
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here
    if (cnt >= speed) {
        if (start == 0) 
        {       
            fld[9][5]  = 0; fld[10][5] = 0;
            fld[11][5] = 0; fld[12][5] = 0; 
            fld[12][3] = 0; fld[12][7] = 0;
            fld[13][3] = 0; fld[13][5] = 0;
            fld[13][7] = 0; fld[13][4] = 0;
            fld[13][6] = 0; fld[14][4] = 0;
            fld[14][5] = 0; fld[14][6] = 0;
            fld[15][5] = 0;
            if (tmp == 0) { 
                fld[10][5] = 1; fld[11][5] = 1;
                fld[12][5] = 1; fld[13][3] = 1;
                fld[13][5] = 1; fld[13][7] = 1;
                fld[14][4] = 1; fld[14][5] = 1;
                fld[14][6] = 1; fld[15][5] = 1;           
            }
            else {
                fld[9][5]  = 1; fld[10][5] = 1;
                fld[11][5] = 1; fld[12][3] = 1;
                fld[12][5] = 1; fld[12][7] = 1;
                fld[13][4] = 1; fld[13][5] = 1;
                fld[13][6] = 1; fld[14][5] = 1;      
            };
            tmp++;
            if (tmp == 2) tmp = 0; 
        }
        else //game cycle
        {   
            fld[cy][cx] = 0;
            if (dy == 1) {
                if (cy > 0) cy--; 
                else {tmp = 0; start = 0; showsrc();}
            }
            else {
                if (cy < 15) cy ++;
                else {tmp = 0; start = 0; showsrc();}
            }      
            if ((cy == 1) && (fld[0][cx] == 1)) dy = 2;
            if ((cy == 1) && (fld[0][cx] == 0)) {tmp = 0; start = 0; showsrc();}  
            if ((cy == 14) && (fld[15][cx] == 1)) dy = 1;
            if ((cy == 14) && (fld[0][cx] == 0)) {tmp = 0; start = 0; showsrc();} 
            if (start == 1) {           
                if (dx == 1) {
                    cx--;
                    if (cx == 0) {dx = 2;} 
                }
                else {
                    cx++;
                    if (cx == 7) {dx = 1;}
                }
                fld[cy][cx] = 1;      
                if (PINC.7 == 0) {
                    delay_ms(1);
                    if (PINC.7 == 0) {
                        if ((mx > 0) && (mx != 0)) {mx--; fld[my][mx+3] = 0;}
                    }
                }    
                if (PINC.6 == 0) {
                    delay_ms(1);
                    if (PINC.6 == 0){ 
                        if ((mx < 5) && (mx != 5)) {mx++; fld[my][mx-1] = 0;}
                    }  
                } 
                ex = cx;
                if (cx > 5) ex = 5; 
                if (ex > 0) fld[ey][ex-1] = 0; 
                if (ex < 5) fld[ey][ex+3] = 0;
                fld[my][mx] = 1; fld[my][mx+1] = 1; fld[my][mx+2] = 1; 
                fld[ey][ex] = 1; fld[ey][ex+1] = 1; fld[ey][ex+2] = 1;
            }                     
        } 
    cnt = 0;    
    }
    cnt++;
}
 
void paint(void)
{
char x = 0;
    while (x <= 7) {
        PORTA = 0b00000000;
        PORTB = 0b00000000;
        PORTD = 0b11111111;
        if (src == 0) {
            PORTA.0 = fld[0][x];  PORTA.1 = fld[1][x];
            PORTA.2 = fld[2][x];  PORTA.3 = fld[3][x];
            PORTA.4 = fld[4][x];  PORTA.5 = fld[5][x];
            PORTA.6 = fld[6][x];  PORTA.7 = fld[7][x];
        } else {    
            PORTB.0 = fld[8][x];  PORTB.1 = fld[9][x];
            PORTB.2 = fld[10][x]; PORTB.3 = fld[11][x];
            PORTB.4 = fld[12][x]; PORTB.5 = fld[13][x];
            PORTB.6 = fld[14][x]; PORTB.7 = fld[15][x];
        }    
        switch (x) {
            case 0: {PORTD = 0b11111110; break;} case 1: {PORTD = 0b11111101; break;}
            case 2: {PORTD = 0b11111011; break;} case 3: {PORTD = 0b11110111; break;}
            case 4: {PORTD = 0b11101111; break;} case 5: {PORTD = 0b11011111; break;}
            case 6: {PORTD = 0b10111111; break;} case 7: {PORTD = 0b01111111; break;}
        }    
        delay_us(50);
        x++;
    }
    src++;
    if (src == 2) src = 0; 
}
 
void initgame(void) {
char x = 0, y = 0;
    #asm("cli")
    while (y < 16) { 
        x = 0;
        while (x < 8) {
            fld[y][x] = 0;
            x++;
        }
        y++;
    } 
    tmp = 1; 
    speed = 50;
    #asm("sei")
}
 
void inkey(void){
char key = 0;
    if (PINC.1 == 0) {
        delay_ms(1);
        if (PINC.1 == 0) key = 3;
    } 
    if (PINC.0 == 0) {
        delay_ms(1);
        if (PINC.0 == 0) key = 4;
    }   
    switch (key) {
    case 1: {
    
        break;}
    case 2: {
 
        break;}
    case 3: {
 
        break;}
    case 4: {
        if (start == 0) {
            start = 1;
            initgame();
        }    
        break;} 
    default: {
    }
    };         
} 
 
void main(void)
{
PORTA=0x00;
DDRA=0xFF;
PORTB=0x00;
DDRB=0xFF;
PORTC=0xFF;
DDRC=0x00;
PORTD=0x00;
DDRD=0xFF;
TCCR0=0x02;
TCNT0=0x00;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x01;
UCSRB=0x00;
ACSR=0x80;
SFIOR=0x00;
ADCSRA=0x00;
SPCR=0x00;
TWCR=0x00;
showsrc();
#asm("sei")
while (1)
      {
      paint();
      inkey();         
      }
}
Добавлено через 7 минут
Важно не путать размещение данных в флэшке данных с ОЗУ ($0x0060...$0x45F для ATMEGA8A , т.е. может и хватить , но медленно) и РОН r0-r31 ($0x0000...$0x001F), эффективно использовать их и учитывать их X,Y,Z -функции (некоторых из них ). Таблицу декодера децибельного шага можно и в флешке программ как группы байтов (массив ) с помощью PROGMEM размещать .

Добавлено через 1 минуту
Цитатаиз даташита :

SRAM Data Memory
Figure 8-2 shows how the Atmel®AVR®ATmega8A SRAM Memory is organized.
The lower 1120 Data memory locations address the Register File, the I/O Memory, and the internal data SRAM.
The first 96 locations address the Register File and I/O Memory, and the next 1024 locations address the internal
data SRAM.
The five different addressing modes for the Data memory cover: Direct, Indirect with Displacement, Indirect, Indirect
with Pre-decrement, and Indirect with Post-increment. In the Register File, registers R26 to R31 feature the
indirect addressing pointer registers.
The direct addressing reaches the entire data space.
The Indirect with Displacement mode reaches 63 address locations from the base address given by the Y- or Zregister.
When using register indirect addressing modes with automatic pre-decrement and post-increment, the address
registers X, Y and Z are decremented or incremented.
The 32 general purpose working registers, 64 I/O Registers, and the 1024 bytes of internal data SRAM in the
ATmega8A are all accessible through all these addressing modes. The Register File is described in “General Purpose
Register File” on page 9.

Добавлено через 1 минуту
Обычно это делает компилятор Си, но иногда с этим возникают проблемы.

Добавлено через 1 минуту
может ключевое слово volatile понадобиться на некоторые уничтожаемые временные переменные и функции с ними для экономии стека и ресурсов РОН .

Добавлено через 2 часа 17 минут
Код
напряжение                          ослабление ступенчатого аттенюатора
1000 mV	  верх.знач.  шкалы ЦАП ОН      0.0 dB
317   mV     ниж.знач.   шкалы ЦАП ОН
316   mV	  верх.знач шкалы ЦАП      	10.0 dB
101   mV     ниж.знач.   шкалы ЦАП
100  mV	  верх.знач шкалы ЦАП	20.0  dB
31.7 mV       ниж.знач.   шкалы ЦАП
31.6 mV	  верх.знач шкалы ЦАП	30.0 dB
10.1 mV      ниж.знач.   шкалы ЦАП
10.0 mV	  верх.знач шкалы ЦАП	40.0 dB
3.17 mV      ниж.знач.   шкалы ЦАП
3.16 mV	  верх.знач шкалы ЦАП	50.0 dB
1.01 mV      ниж.знач.   шкалы ЦАП
1000 uV	 верх.знач шкалы ЦАП	60.0 dB
317   uV     ниж.знач.   шкалы ЦАП
316   uV	верх.знач шкалы ЦАП	70.0 dB
101   uV     ниж.знач.   шкалы ЦАП
100  uV	верх.знач шкалы ЦАП	80.0  dB
31.7 uV     ниж.знач.   шкалы ЦАП
31.6 uV	верх.знач шкалы ЦАП	90.0 dB
10.1 uV      ниж.знач.   шкалы ЦАП
10.0 uV	верх.знач шкалы ЦАП	100.0 dB
3.17 uV      ниж.знач.   шкалы ЦАП
3.16 uV	верх.знач. шкалы ЦАП	110.0 dB
1.01 uV      ниж.знач.   шкалы ЦАП
1.000 uV	верх.знач. шкалы ЦАП	120.0 dB
0.317 uV    ниж.знач.   шкалы ЦАП
0.316 uV	верх.знач шкалы ЦАП	130.0  dB
0.101 uV    ниж.знач.   шкалы ЦАП
0.100 uV	верх.знач шкалы ЦАП	140.0  dB
0.032 uV     
                		                        149.9 dB


A=20* lg(1V/Uout)
U=20* lg(Uout/1V) (dBV), минус написан перед цифрами на табло
U0/1V=10^(-A/20)
10^(-9.9/20)=0,31989 
20*lg(317/1000)=-9.98 dB
Добавлено через 4 минуты
Лукап-таблицу генерировать от 0,0 до -9,9 дБВ с шагом через 0,1 дБВ , при -10,0 дБВ выставлять те же коэффициенты ЦАП ОН, что и для 0,0 дБВ, но включать секцию аттенюатора 10 дБ, и так далее через 10 дБ

Добавлено через 5 минут
Ориентировочные значения , вычисленные в Экселе (по теории , в прошивке немного отличаются, уточнить коды)
U,-dBV U,V ( выставляется с помощью ЦАП ОН на входе аттенюатора , как в линейном масштабе, округлить )
0 1
0,1 0,988553095
0,2 0,977237221
0,3 0,966050879
0,4 0,954992586
0,5 0,944060876
0,6 0,933254301
0,7 0,922571427
0,8 0,912010839
0,9 0,901571138
1 0,891250938
1,1 0,881048873
1,2 0,87096359
1,3 0,860993752
1,4 0,851138038
1,5 0,841395142
1,6 0,831763771
1,7 0,82224265
1,8 0,812830516
1,9 0,803526122
2 0,794328235
2,1 0,785235635
2,2 0,776247117
2,3 0,767361489
2,4 0,758577575
2,5 0,749894209
2,6 0,741310241
2,7 0,732824533
2,8 0,72443596
2,9 0,71614341
3 0,707945784
3,1 0,699841996
3,2 0,691830971
3,3 0,683911647
3,4 0,676082975
3,5 0,668343918
3,6 0,660693448
3,7 0,653130553
3,8 0,645654229
3,9 0,638263486
4 0,630957344
4,1 0,623734835
4,2 0,616595002
4,3 0,609536897
4,4 0,602559586
4,5 0,595662144
4,6 0,588843655
4,7 0,582103218
4,8 0,575439937
4,9 0,568852931
5 0,562341325
5,1 0,555904257
5,2 0,549540874
5,3 0,543250331
5,4 0,537031796
5,5 0,530884444
5,6 0,52480746
5,7 0,518800039
5,8 0,512861384
5,9 0,506990708
6 0,501187234
6,1 0,495450191
6,2 0,489778819
6,3 0,484172368
6,4 0,478630092
6,5 0,473151259
6,6 0,467735141
6,7 0,462381021
6,8 0,45708819
6,9 0,451855944
7 0,446683592
7,1 0,441570447
7,2 0,436515832
7,3 0,431519077
7,4 0,426579519
7,5 0,421696503
7,6 0,416869383
7,7 0,412097519
7,8 0,407380278
7,9 0,402717034
8 0,398107171
8,1 0,393550075
8,2 0,389045145
8,3 0,384591782
8,4 0,380189396
8,5 0,375837404
8,6 0,371535229
8,7 0,3672823
8,8 0,363078055
8,9 0,358921935
9 0,354813389
9,1 0,350751874
9,2 0,34673685
9,3 0,342767787
9,4 0,338844156
9,5 0,334965439
9,6 0,331131121
9,7 0,327340695
9,8 0,323593657
9,9 0,319889511
0
USERPC01
-33 / 0 / 0
Регистрация: 29.06.2018
Сообщений: 611
30.09.2019, 17:36  [ТС] 7
Частоты переключения фильтров программируемого делителя генератора (лог. 1 на резисторе, прямосмещающая по постоянному току p-i-n- диоды):

0.1-11.9999 MHz R47
12.0000-13.9999 MHz R48
14.0000-19.9999 MHz R42
20.0000-27.9999 MHz R43
28.0000-39.9999 MHz R44
40.0000-55.9999 MHz R45
56.0000-79.9999 MHz R46
80.0000-111.9999 MHz R47
112.0000-159.9999 MHz R48

160.000-223.999 MHz R49
224.000-319.999 MHz R50
320.000-447.999 MHz R51
448.000-639.999 MHz R52

Аппроксимации АЧХ диапазонных полосовых фильтров обычно близкие к аппроксимациям Баттерворта и Чебышева (иногда Кауэра или эмпирическая ) с малой амплитудой осцилляции (до 0,3...0,4 дБ ) в полосе пропускания .
Генераторы после 320 МГц переключаются через 40 МГц (номера в инструкции) с помощью КПЧК - кодов :

320,000-359,999 МГц
360,000-399,999 МГц
400,000-439,999 МГц
440,000-479,999 МГц
480,000-519,999 МГц
520,000-559,999 МГц
560,000-599,999 МГц
600,000-639,999 МГц

На частотах выше 14 МГц, но ниже 320.000 МГц включаются делители и соответствующие генераторы (число в ДДПКД при этом рассчитывается под соответствующие коэффициенты деления линейки делителей ), на частотах 0,1-13,9999 МГц используется преобразование в преобразователе ,выделяющее разностную частоту из 100 МГц и 100,1 ... 113,9999 МГц .
Ниже 160.000 МГц включается еще один знак индикации , меняется частота сравнения (1 кГц, смотри ТО ) .
0
USERPC01
-33 / 0 / 0
Регистрация: 29.06.2018
Сообщений: 611
03.10.2019, 18:25  [ТС] 8
 
2^2…2^9 12bit word
dBV K=10^(-A/20) round(K) N_DAC/4 N_DAC/4 N_DAC N_DAC N_DAC_EEPROM
0 1 1 1000 03E8 4000 0FA0 0x0FA0
0,1 0,988553095 0,989 989 03DD 3956 0F74 0x0F74
0,2 0,977237221 0,977 977 03D1 3908 0F44 0x0F44
0,3 0,966050879 0,966 966 03C6 3864 0F18 0x0F18
0,4 0,954992586 0,955 955 03BB 3820 0EEC 0x0EEC
0,5 0,944060876 0,944 944 03B0 3776 0EC0 0x0EC4
0,6 0,933254301 0,933 933 03A5 3732 0E94 0x0E94
0,7 0,922571427 0,923 923 039B 3692 0E6C 0x0E6C
0,8 0,912010839 0,912 912 0390 3648 0E40 0x0E40
0,9 0,901571138 0,902 902 0386 3608 0E18 0x0E18
1 0,891250938 0,891 891 037B 3564 0DEC 0x0DEC
1,1 0,881048873 0,881 881 0371 3524 0DC4 0x0DC4
1,2 0,87096359 0,871 871 0367 3484 0D9C 0x0D9C
1,3 0,860993752 0,861 861 035D 3444 0D74 0x0D74
1,4 0,851138038 0,851 851 0353 3404 0D4C 0x0D4C
1,5 0,841395142 0,841 841 0349 3364 0D24 0x0D24
1,6 0,831763771 0,832 832 0340 3328 0D00 0x0D00
1,7 0,82224265 0,822 822 0336 3288 0CD8 0x0CD8
1,8 0,812830516 0,813 813 032D 3252 0CB4 0x0CB4
1,9 0,803526122 0,804 804 0324 3216 0C90 0x0C8C
2 0,794328235 0,794 794 031A 3176 0C68 0x0C68
2,1 0,785235635 0,785 785 0311 3140 0C44 0x0C44
2,2 0,776247117 0,776 776 0308 3104 0C20 0x0C24
2,3 0,767361489 0,767 767 02FF 3068 0BFC 0x0BFC
2,4 0,758577575 0,759 759 02F7 3036 0BDC 0x0BDC
2,5 0,749894209 0,75 750 02EE 3000 0BB8 0x0BB8
2,6 0,741310241 0,741 741 02E5 2964 0B94 0x0B98
2,7 0,732824533 0,733 733 02DD 2932 0B74 0x0B74
2,8 0,72443596 0,724 724 02D4 2896 0B50 0x0B54
2,9 0,71614341 0,716 716 02CC 2864 0B30 0x0B30
3 0,707945784 0,708 708 02C4 2832 0B10 0x0B10
3,1 0,699841996 0,7 700 02BC 2800 0AF0 0x0AF0
3,2 0,691830971 0,692 692 02B4 2768 0AD0 0x0AD0
3,3 0,683911647 0,684 684 02AC 2736 0AB0 0x0AB0
3,4 0,676082975 0,676 676 02A4 2704 0A90 0x0A94
3,5 0,668343918 0,668 668 029C 2672 0A70 0x0A70
3,6 0,660693448 0,661 661 0295 2644 0A54 0x0A54
3,7 0,653130553 0,653 653 028D 2612 0A34 0x0A34
3,8 0,645654229 0,646 646 0286 2584 0A18 0x0A18
3,9 0,638263486 0,638 638 027E 2552 09F8 0x09F8
4 0,630957344 0,631 631 0277 2524 09DC 0x09DC
4,1 0,623734835 0,624 624 0270 2496 09C0 0x09C0
4,2 0,616595002 0,617 617 0269 2468 09A4 0x09A4
4,3 0,609536897 0,61 610 0262 2440 0988 0x0988
4,4 0,602559586 0,603 603 025B 2412 096C 0x0968
4,5 0,595662144 0,596 596 0254 2384 0950 0x0950
4,6 0,588843655 0,589 589 024D 2356 0934 0x0934
4,7 0,582103218 0,582 582 0246 2328 0918 0x0918
4,8 0,575439937 0,575 575 023F 2300 08FC 0x08FC
4,9 0,568852931 0,569 569 0239 2276 08E4 0x08E4
5 0,562341325 0,562 562 0232 2248 08C8 0x08CC
5,1 0,555904257 0,556 556 022C 2224 08B0 0x08B4
5,2 0,549540874 0,55 550 0226 2200 0898 0x0898
5,3 0,543250331 0,543 543 021F 2172 087C 0x0880
5,4 0,537031796 0,537 537 0219 2148 0864 0x0864
5,5 0,530884444 0,531 531 0213 2124 084C 0x080C
5,6 0,52480746 0,525 525 020D 2100 0834 0x0834
5,7 0,518800039 0,519 519 0207 2076 081C 0x081C
5,8 0,512861384 0,513 513 0201 2052 0804 0x0804
5,9 0,506990708 0,507 507 01FB 2028 07EC 0x07F4
6 0,501187234 0,501 501 01F5 2004 07D4 0x07D4
6,1 0,495450191 0,495 495 01EF 1980 07BC 0x07C0
6,2 0,489778819 0,49 490 01EA 1960 07A8 0x07A8
6,3 0,484172368 0,484 484 01E4 1936 0790 0x0794
6,4 0,478630092 0,479 479 01DF 1916 077C 0x077C
6,5 0,473151259 0,473 473 01D9 1892 0764 0x0764
6,6 0,467735141 0,468 468 01D4 1872 0750 0x0750
6,7 0,462381021 0,462 462 01CE 1848 0738 0x073C
6,8 0,45708819 0,457 457 01C9 1828 0724 0x0728
6,9 0,451855944 0,452 452 01C4 1808 0710 0x0710
7 0,446683592 0,447 447 01BF 1788 06FC 0x06FC
7,1 0,441570447 0,442 442 01BA 1768 06E8 0x06E8
7,2 0,436515832 0,437 437 01B5 1748 06D4 0x06D4
7,3 0,431519077 0,432 432 01B0 1728 06C0 0x06BC
7,4 0,426579519 0,427 427 01AB 1708 06AC 0x06AC
7,5 0,421696503 0,422 422 01A6 1688 0698 0x0698
7,6 0,416869383 0,417 417 01A1 1668 0684 0x0688
7,7 0,412097519 0,412 412 019C 1648 0670 0x0674
7,8 0,407380278 0,407 407 0197 1628 065C 0x0660
7,9 0,402717034 0,403 403 0193 1612 064C 0x064C
8 0,398107171 0,398 398 018E 1592 0638 0x0638
8,1 0,393550075 0,394 394 018A 1576 0628 0x0628
8,2 0,389045145 0,389 389 0185 1556 0614 0x0614
8,3 0,384591782 0,385 385 0181 1540 0604 0x0604
8,4 0,380189396 0,380 380 017C 1520 05F0 0x05F4
8,5 0,375837404 0,376 376 0178 1504 05E0 0x05E0
8,6 0,371535229 0,372 372 0174 1488 05D0 0x05D0
8,7 0,3672823 0,367 367 016F 1468 05BC 0x05C0
8,8 0,363078055 0,363 363 016B 1452 05AC 0x05B0
8,9 0,358921935 0,359 359 0167 1436 059C 0x059C
9 0,354813389 0,355 355 0163 1420 058C 0x058C
9,1 0,350751874 0,351 351 015F 1404 057C 0x057C
9,2 0,34673685 0,347 347 015B 1388 056C 0x056C
9,3 0,342767787 0,343 343 0157 1372 055C 0x0560
9,4 0,338844156 0,339 339 0153 1356 054C 0x054C
9,5 0,334965439 0,335 335 014F 1340 053C 0x053C
9,6 0,331131121 0,331 331 014B 1324 052C 0x0530
0
Вложения
Тип файла: xls Книга1.xls (52.0 Кб, 1 просмотров)
USERPC01
-33 / 0 / 0
Регистрация: 29.06.2018
Сообщений: 611
03.10.2019, 23:08  [ТС] 9
Таблица логарифмического преобразователя (2^9...2^2 и дополненная двумя нулями 2^9...2^0 таблица комбинаций ) , правая колонка - практическое значение на выводах с учетом нулей в двух младших разрядах после импульса ИЗП . после 10 Дб повторяется через 10 дБ
В линейном :
316 mV -0xFA0
317 mV -0x4F4
318 mV -0x4F8
319 mV -0x4FC
320 mV (-9.9dBV) 0x500
600 mV 0x960
601 mV 0x964
999 mV 0xF9C
1000. mV 0xFA0

Добавлено через 51 секунду
Некоторые младшие биты могут незначительно отличаться .

Добавлено через 2 минуты
Судя по таблице 1К ПЗУ программ для него маловато , а с ОЗУ и стеком подумать (в ATMEGA48 больше возможностей).

Добавлено через 2 часа 39 минут
Возможный вариант размещения подпрограмм (по диаграмме, без статических и глобальных массивов переменных и атомарных процедур ) :
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
... //default  "includes" for selected  MCU 
#include "defines.h"
#include "iosubs.h"
#include "atomic.h"
#include "macrosubs.h"
 
...
Init();
InitPorts();
//fix  flags organization and incapsulations, use apropriate args for some subs , redefine some global variables
//fix problem with stack and RAM I/O conception and organization 
//rename some subs and use switch -case and #define   for some signatures of the bytes 
 
//1
label1:
 
if(DutyRegZero()==1; ) {
                  SendMEMWR(); 
                  label_int:
                  if(CheckIsrFlag()==1) { goto label2; }  else  { goto label_int ; }
//fix and rebuild, using ISR
} 
 
SetSelectFlagZero(arg);
 
if(CheckFMParseFlagTrue()==1  )  {   GetFM_Codes(); GetOSCCodes() ;  goto label1;  }
if( CheckAMParseFlagTrue()==1 )   {  GetAM_Codes();  goto label1; }
if( CheckOutputParseFlagTrue() ==1) {  GetAM_Codes(); GetOut_Codes(); GetStaticMode_Codes();    goto label1;   }
if(CheckFreqParseFlagTrue()==1 ) {  GetFreqDividerCodes(); GetOSCCodes() ;  GetStaticMode_Codes();  CheckFM_Limits(); goto label1;  }
if(CheckIncStepFlagTrue() ==1) { IncStep(); goto label1; }
 
//3
 
if(CheckDecStepFlagTrue() ==1) { DecStep(); goto label1; }
if(CheckTurnOffModeFlagTrue()==1) { TurnOffNotUsedMode(); goto label1;}
if(CheckErrorFlagTrue()==1)  { SendErrFM();  goto label1; }
if(CheckFMIndFlagTrue()==1) { SendFM_Value() ; goto label1; }
if(CheckAMIndFlagTrue()==1) { SendAM_Value() ; goto label1; }
if(CheckOutIndFlagTrue()==1) { SendOutLevel_Value() ; goto label1; }
if(CheckFreqIndFlagTrue()==1) { SendFreq_Value() ; goto label1; }
 
//4
 
if(CheckBlinkOffFlagTrue()==1) {  SendBlinkOff() ; goto label1; }
if(CheckBlinkCodeFlagTrue(arg)==1) { SendBlinkDigitCode() ; goto label1; }
if(CheckModeCodeFlagTrue()==1) { SendModesCodeFP() ; goto label1; }
if(CheckStaicCommandCodeFlagTrue()==1) { SendStaticCmdCode() ; goto label1; }
if(CheckLFOCodeFlagTrue()==1) { SendLFONumCode() ; goto label1; }
if(CheckFMCodeFlagTrue()==1) { Send_FMCode() ; goto label1; }
if(CheckAMCodeFlagTrue()==1) { Send_AMCode() ; goto label1; }
//5
if (CheckAttCodeFlagTrue()==1) { GetOut_AttCodes(); goto label1; }
if (CheckHF_OscCodeFlagTrue()==1) { GetHFOscFilterCodes(); goto label1; }
if (CheckDividerCodeFlagTrue()==1) { GetDividerCodes(); goto label1; }
//6
goto label_6;
 
 
/************************************/
//fix using ISR and ISR pin mask switch(PORT_INT)  - case  
label2:
 
ParseInterrupts_Input();
 
if ( IsInt3() ==1) { goto label7 ; }
if ( IsInt2() ==1) { goto label8 ; }
SetFunctionParam ();
 
if(IsFreq()==1) {          goto label12 ;   }
if(IsFM()==1)   {          goto label13 ; }
if(IsAM()==1)   {          goto label14 ; }
 
label15: 
 NormaliseUout();
goto label1;
 
label12:
 NormaliseFout();
goto label1;
 
label13:
 NormaliseDeltaf();
goto label1;
 
label14:
 NormaliseM();
goto label1;
 
/**************************************/
 
 
 
 
//7
//fix  method 
label7:
InputByteLACS_send_dp();
 
if(IsReceivedByte()==1) { goto label6; }  else   {PushByteInoStack() ; goto label1 ;}
 
label6: 
if(IsStackClear()==1)  { goto label1 ; } else  {GetByteFromStack(); goto label8;  }
 
//8
label8:
if(IsNumKeypadPressed()==1) {
 
if(IsMemWritePressed()==1) { WriteDeviceSateIntoMemory(); goto label1; }
else {
   if(IsMemReadCalled()==1) { GetDeviceSateFromMemory(); goto label1; }
                                         else {   InputNumericValue();  goto label1; }   
        }
 
}
else {
 
if(IsFreqButton()==1) {    SetDutyReg();  goto label1;   }
if(IsFMButton()==1) {  TurnOnFM();     SetDutyReg();  goto label1;   }
if(IsAMButton()==1) {  TurnOnAM();    SetDutyReg();  goto label1;     }
if(IsPMButton()==1) {  TurnOnPM();     SetDutyReg();  goto label1;    }
if(IsModOffButton()==1) {  SetModOffByReg();  SetDutyReg();  goto label1;      }
 
//9
 
if(IsExtButton()==1) {  PrepareExtMod();    goto label1;    }
if(IsStepButton()==1) {  SetStepMode();    goto label1;    }
if(IsOutButton()==1) { TutrnOnOut();   SetDutyReg();   goto label1;    }
if(IsLFOscButton()==1) { ChangeLFOScCode();    goto label1;    }
if(IsSharpButton()==1) { TurnOnWriteMem();    goto label1;    }
if(IsCallButton()==1) { TurnOnReadMem();    goto label1;    }
 
//10
if(IsMHzButton()==1) { goto label12 ; }
if(IskHzButton()==1) {  if(IsStepMode()==1) { NormalizeStep() ; goto label1  ;} else { goto label13; }  }
if(IsPercentButton()==1) { goto label14 ; }
 
if(Is_mv_Button()==1) {   SetValueParam(  );   goto label15 ; }
if(Is_uv_Button()==1)  {   SetValueParam(  );   goto label15 ; }
if(Is_dB_Button()==1)  {   SetValueParam(  );   goto label15 ; }
 
//11
if(Is_6dB_Button()==1)  {   if(IsAMMode()==1) {   goto label15 ;} else { TurnOn6dB(); goto label11;  }   }
if(Is_Step_Mode()==1) { ChangeFreqOneStep(); goto label12 ; }
ChangeDiscretStepParam(); 
goto  label1;
Добавлено через 25 минут
Флаги "упаковать" в биты байтов (uint8_t , uint16_t, ...) , сбрасывать, устанавливать и проверять с помощью атомарных функций с масками
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
if(CheckFMParseFlagTrue() ...
if(CheckAMParseFlagTrue()...
if(CheckOutputParseFlagTrue()
if(CheckFreqParseFlagTrue()...
if(CheckIncStepFlagTrue()...
if(CheckDecStepFlagTrue()...
if(CheckTurnOffModeFlagTrue()...
if(CheckErrorFlagTrue()... 
//3
if(CheckFMIndFlagTrue()...
if(CheckAMIndFlagTrue()...
if(CheckOutIndFlagTrue()...
if(CheckFreqIndFlagTrue()...
 
//
if(CheckBlinkOffFlagTrue()...
if(CheckBlinkCodeFlagTrue(arg) ?
if(CheckModeCodeFlagTrue()...
if(CheckStaicCommandCodeFlagTrue()...
if(CheckLFOCodeFlagTrue()...
if(CheckFMCodeFlagTrue() ...
if(CheckAMCodeFlagTrue()  ...
//5
if (CheckAttCodeFlagTrue()   ...
if (CheckHF_OscCodeFlagTrue() 
if (CheckDividerCodeFlagTrue()
Добавлено через 43 секунды
Названия подпрограмм немного исправить

Добавлено через 3 минуты
Кажется, маловато ОЗУ в АТМеге 48 (может, плохо смотрел ).

Добавлено через 2 минуты
В фирменной ЭВМ ОЗУ 2048 бит (128 ячеек для типа uint16_t ), и 16 бит .

Добавлено через 20 минут
Биты флагов могут быть, например :
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
//uint8_t flag0;
//define bits
#define  FMParseFlag  0
#define  AMParseFlag  1
 #define OutputParseFlag 2
#define   FreqParseFlag     3
#define   IncStepFlag         4 
#define   DecStepFlag        5
#define    TurnOffModeFlag  6  
#define     ErrorFlag        7
 
//uint8_t flag1;
//define bits
#define FMIndFlag  0
#define AMIndFlag  1
#define OutIndFlag   2
#define FreqIndFlag  3
#define BlinkOffFlag  4
#define ModeCodeFlag       5
#define StaticCommandCodeFlag 6
 
//uint8_t flag2;
//define bits
#define LFOCodeFlag  0 
#define FMCodeFlag    1
#define AMCodeFlag   2
#define AttCodeFlag    3
#define HF_OscCodeFlag  4
#define DividerCodeFlag   5
Добавлено через 5 минут
например ,
C++
1
2
3
4
5
/*volatile */
uint8_t CheckFMParseFlagTrue() {
 
if (   (flag0 & (1<<FMParseFlag))!=0   ) {    return 1 ; }  else {return 0 ; } 
}
Добавлено через 53 минуты
А для ЦАП он там делить на 4 , там с 2^0 по 2^9, (а не с 2^2 ) это в правом столбике поделить на 4

Добавлено через 17 секунд
В ЦАП ЧМ такой формат бывает.

Добавлено через 57 секунд
03E8 ,а не 0FA0 и так дальше.
0
USERPC01
-33 / 0 / 0
Регистрация: 29.06.2018
Сообщений: 611
03.10.2019, 23:36  [ТС] 10
Правильная таблица:

0 1 1 1000 03E8 1000 03E8
0,1 0,988553095 0,989 989 03DD 989 03DD
0,2 0,977237221 0,977 977 03D1 977 03D1
0,3 0,966050879 0,966 966 03C6 966 03C6
0,4 0,954992586 0,955 955 03BB 955 03BB
0,5 0,944060876 0,944 944 03B0 945 03B1
0,6 0,933254301 0,933 933 03A5 933 03A5
0,7 0,922571427 0,923 923 039B 923 039B
0,8 0,912010839 0,912 912 0390 912 0390
0,9 0,901571138 0,902 902 0386 902 0386
1 0,891250938 0,891 891 037B 891 037B
1,1 0,881048873 0,881 881 0371 881 0371
1,2 0,87096359 0,871 871 0367 871 0367
1,3 0,860993752 0,861 861 035D 861 035D
1,4 0,851138038 0,851 851 0353 851 0353
1,5 0,841395142 0,841 841 0349 841 0349
1,6 0,831763771 0,832 832 0340 832 0340
1,7 0,82224265 0,822 822 0336 822 0336
1,8 0,812830516 0,813 813 032D 813 032D
1,9 0,803526122 0,804 804 0324 803 0323
2 0,794328235 0,794 794 031A 794 031A
2,1 0,785235635 0,785 785 0311 785 0311
2,2 0,776247117 0,776 776 0308 777 0309
2,3 0,767361489 0,767 767 02FF 767 02FF
2,4 0,758577575 0,759 759 02F7 759 02F7
2,5 0,749894209 0,75 750 02EE 750 02EE
2,6 0,741310241 0,741 741 02E5 742 02E6
2,7 0,732824533 0,733 733 02DD 733 02DD
2,8 0,72443596 0,724 724 02D4 725 02D5
2,9 0,71614341 0,716 716 02CC 716 02CC
3 0,707945784 0,708 708 02C4 708 02C4
3,1 0,699841996 0,7 700 02BC 700 02BC
3,2 0,691830971 0,692 692 02B4 692 02B4
3,3 0,683911647 0,684 684 02AC 684 02AC
3,4 0,676082975 0,676 676 02A4 677 02A5
3,5 0,668343918 0,668 668 029C 668 029C
3,6 0,660693448 0,661 661 0295 661 0295
3,7 0,653130553 0,653 653 028D 653 028D
3,8 0,645654229 0,646 646 0286 646 0286
3,9 0,638263486 0,638 638 027E 638 027E
4 0,630957344 0,631 631 0277 631 0277
4,1 0,623734835 0,624 624 0270 624 0270
4,2 0,616595002 0,617 617 0269 617 0269
4,3 0,609536897 0,61 610 0262 610 0262
4,4 0,602559586 0,603 603 025B 602 025A
4,5 0,595662144 0,596 596 0254 596 0254
4,6 0,588843655 0,589 589 024D 589 024D
4,7 0,582103218 0,582 582 0246 582 0246
4,8 0,575439937 0,575 575 023F 575 023F
4,9 0,568852931 0,569 569 0239 569 0239
5 0,562341325 0,562 562 0232 563 0233
5,1 0,555904257 0,556 556 022C 557 022D
5,2 0,549540874 0,55 550 0226 550 0226
5,3 0,543250331 0,543 543 021F 544 0220
5,4 0,537031796 0,537 537 0219 537 0219
5,5 0,530884444 0,531 531 0213 515 0203
5,6 0,52480746 0,525 525 020D 525 020D
5,7 0,518800039 0,519 519 0207 519 0207
5,8 0,512861384 0,513 513 0201 513 0201
5,9 0,506990708 0,507 507 01FB 509 01FD
6 0,501187234 0,501 501 01F5 501 01F5
6,1 0,495450191 0,495 495 01EF 496 01F0
6,2 0,489778819 0,49 490 01EA 490 01EA
6,3 0,484172368 0,484 484 01E4 485 01E5
6,4 0,478630092 0,479 479 01DF 479 01DF
6,5 0,473151259 0,473 473 01D9 473 01D9
6,6 0,467735141 0,468 468 01D4 468 01D4
6,7 0,462381021 0,462 462 01CE 463 01CF
6,8 0,45708819 0,457 457 01C9 458 01CA
6,9 0,451855944 0,452 452 01C4 452 01C4
7 0,446683592 0,447 447 01BF 447 01BF
7,1 0,441570447 0,442 442 01BA 442 01BA
7,2 0,436515832 0,437 437 01B5 437 01B5
7,3 0,431519077 0,432 432 01B0 431 01AF
7,4 0,426579519 0,427 427 01AB 427 01AB
7,5 0,421696503 0,422 422 01A6 422 01A6
7,6 0,416869383 0,417 417 01A1 418 01A2
7,7 0,412097519 0,412 412 019C 413 019D
7,8 0,407380278 0,407 407 0197 408 0198
7,9 0,402717034 0,403 403 0193 403 0193
8 0,398107171 0,398 398 018E 398 018E
8,1 0,393550075 0,394 394 018A 394 018A
8,2 0,389045145 0,389 389 0185 389 0185
8,3 0,384591782 0,385 385 0181 385 0181
8,4 0,380189396 0,38 380 017C 381 017D
8,5 0,375837404 0,376 376 0178 376 0178
8,6 0,371535229 0,372 372 0174 372 0174
8,7 0,3672823 0,367 367 016F 368 0170
8,8 0,363078055 0,363 363 016B 364 016C
8,9 0,358921935 0,359 359 0167 359 0167
9 0,354813389 0,355 355 0163 355 0163
9,1 0,350751874 0,351 351 015F 351 015F
9,2 0,34673685 0,347 347 015B 347 015B
9,3 0,342767787 0,343 343 0157 344 0158
9,4 0,338844156 0,339 339 0153 339 0153
9,5 0,334965439 0,335 335 014F 335 014F
9,6 0,331131121 0,331 331 014B 332 014C
9,7 0,327340695 0,327 327 0147 328 0148
9,8 0,323593657 0,324 324 0144 323 0143
9,9 0,319889511 0,32 320 0140 320 0140

316 013C
317 013D
318 013E
319 013F
320 0140
601 0258
999 03E7
1000 03E8
0
Вложения
Тип файла: xls Книга2.xls (47.0 Кб, 0 просмотров)
USERPC01
-33 / 0 / 0
Регистрация: 29.06.2018
Сообщений: 611
04.10.2019, 00:57  [ТС] 11
формат данных (20 бит )
1-10 -ЦАП ОН
11-20 ЦАП АМ
СИ АМ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Информ 2^0|2^1|2^2|2^3|2^4|2^5|2^6|2^7|2^8|2^9 || 2^0|2^1|2^2|2^3|2^4|2^5|2^6|2^7|2^8|2^9 |
ИЗП импульс переписи после 20-го строб-импульса

Добавлено через 1 минуту
Младший бит первый (раньше посылается)

Добавлено через 1 минуту
(с учетом схемы )

Добавлено через 6 минут
В ГЗЧ:

СИ ГЗЧ 1 2 3 4
Выбор частоты:
Информ nE | 1 | 2| 4 |
ИЗП: импульс, после 4 строб-импульса СИ ГЗЧ, перепись



ЦАП ЧМ (5-12) и делители (2-4):

СИ ЧМ 1 2 3 4 5 6 7 8 9 10 11 12
Информ x |4|2|1 || 2^2|2^3|2^4|2^5|2^6|2^7|2^8|2^9
ИЗП: импульс, после 12-го строб-импульса СИ ЧМ, перепись

Добавлено через 13 минут
ДДПКД : 24 бита Информ , сопровождаемые импульсами на СИ ДПКД и импульс параллельной переписи на шине ИЗП после 24 бита


1 D24.D4
2 D24.D3
3 D24.D2
4 D24.D1

5 D26.D4
6 D26.D3
7 D26.D2
8 D26.D1

9 D7.D4
10 D7.D3
11 D7.D2
12 D7.D1

13 D10.D4
14 D10.D3
15 D10.D2
16 D10.D1

17 D16.D4
18 D16.D3
19 D16.D2
20 D16.D1

21 D20.D4
22 D20.D3
23 D20.D2
24 D20.D1

Добавлено через 6 минут
f1/N1=F2/Kдел,
Кдел=N+(m/10)?
N 5 разрядов,
m/10- дробный разряд (один)

частота сравнения до 160 МГц 1 кГц(низкий уровень ), от 160,000 до 639,999МГц 1,25 кГц (лог. 1 на X1:19 ЧФД).

Добавлено через 6 минут
В делителе частоты :
8 бит на шине Информ , сопровождаемые стробом СИ ГенВЧ и импульс переписи ИЗП

1 Кдел
2 КПЧК"1"
3 КПЧК"2"
4 КПЧК"4"
5 верх/низ фильтра
6 1 дешифр. поддиап. фильтров
7 2 дешифр. поддиап. фильтров
8 4 дешифр. поддиап. фильтров

Добавлено через 42 секунды
Частоты переключения фильтров программируемого делителя генератора (лог. 1 на резисторе, прямосмещающая по постоянному току p-i-n- диоды):

0.1-11.9999 MHz R47
12.0000-13.9999 MHz R48
14.0000-19.9999 MHz R42
20.0000-27.9999 MHz R43
28.0000-39.9999 MHz R44
40.0000-55.9999 MHz R45
56.0000-79.9999 MHz R46
80.0000-111.9999 MHz R47
112.0000-159.9999 MHz R48

160.000-223.999 MHz R49
224.000-319.999 MHz R50
320.000-447.999 MHz R51
448.000-639.999 MHz R52

Добавлено через 6 минут
Аттенюатор:
8 бит Информ , сопровождаемые строб-импульсом СИ Ат , перепись по импульсу (импульс лог.1)
на ИЗП после 8 импульса пакета битов

1 10дБ вкл
2 20 дБ вкл
3 40 дБ вкл
4 80 дБ вкл

5 10 дБ откл
6 20 дБ откл
7 40 дБ откл
8 80 дБ откл (последний в посылке)

Добавлено через 57 секунд
Откл. включает напрямую без секции ослабления, вкл. включает аттенюаторную секцию .

Добавлено через 9 минут
В генераторе
600,000-639,999 МГц К1 КПЧК4=0 КПЧК2=0 КПЧК1=0 0
560,000-599,999 МГц К2 КПЧК4=0 КПЧК2=0 КПЧК1=1 1
520,000-559,999 МГц К3 КПЧК4=0 КПЧК2=1 КПЧК1=0 2
480,000-519,999 МГц К4 КПЧК4=0 КПЧК2=1 КПЧК1=1 3
440,000-479,999 МГц К5 КПЧК4=1 КПЧК2=0 КПЧК1=0 4
400,000-439,999 МГц К6 КПЧК4=1 КПЧК2=0 КПЧК1=1 5
360,000-399,999 МГц К7 КПЧК4=1 КПЧК2=1 КПЧК1=0 6
320,000-359,999 МГц К8 КПЧК4=1 КПЧК2=1 КПЧК1=1 7


300,000 ... 319,999 МГц К1 КПЧК4=0 КПЧК2=0 КПЧК1=0 0
и т.д.

Добавлено через 22 минуты
1 2 4
320МГц ЧМ 995 кГц 0 0 0 кдел=1 кцап=796
320МГц ЧМ 800 кГц 0 0 0 кдел=1 кцап=640
320МГц ЧМ 400 кГц 0 0 0 кдел=1 кцап=320
320МГц ЧМ 200 кГц 0 0 0 кдел=1 кцап=160
320МГц ЧМ 100 кГц 0 0 0 кдел=1 кцап=80

320МГц ЧМ 99,5 кГц 0 1 1 кдел=0,1 кцап=796
320МГц ЧМ 50,0 кГц 0 1 1 кдел=0,1 кцап=400
320МГц ЧМ 10,0 кГц 0 1 1 кдел=0,1 кцап=80

320МГц ЧМ 9,95 кГц 0 1 1 кдел=0,1 кцап=796 вкл дел 1/10
320МГц ЧМ 8,00 кГц 0 1 1 кдел=0,1 кцап=640
320МГц ЧМ 4,00 кГц 0 1 1 кдел=0,1 кцап=320
320МГц ЧМ 2,00 кГц 0 1 1 кдел=0,1 кцап=160
320МГц ЧМ 1,00 кГц 0 1 1 кдел=0,1 кцап=80
320МГц ЧМ 0,05 кГц 0 1 1 кдел=0,1 кцап=4

160МГц ЧМ 500 кГц 0 0 0 кдел=1 кцап=800
160МГц ЧМ 100 кГц 0 0 0 кдел=1 кцап=160
160МГц ЧМ 99,5 кГц 0 0 1 кдел=0,2 кцап=796
80МГц ЧМ 250 кГц 0 0 0 кдел=1 кцап=800
80МГц ЧМ 100 кГц 0 0 0 кдел=1 кцап=320
80МГц ЧМ 99,5 кГц 0 1 0 кдел=0,4 кцап=796
80МГц ЧМ 0,05 кГц 0 1 0 кдел=0,4 кцап=4


40МГц ЧМ 125 кГц 0 0 0 кдел=1 кцап=800
40МГц ЧМ 100 кГц 0 0 0 кдел=1 кцап=640
40МГц ЧМ 99,5 кГц 1 0 0 кдел=0,8 кцап=796
40МГц ЧМ 9,95 кГц 1 0 0 кдел=0,8 кцап=796, вкл дел 1/10
40МГц ЧМ 0,05 кГц 1 0 0 кдел=0,8 кцап=4 , вкл дел 1/10

20МГц ЧМ 50,0 кГц 1 0 0 кдел=0,8 кцап=800
20МГц ЧМ 10,0 кГц 1 0 0 кдел=0,8 кцап=160

20МГц ЧМ 9,95 кГц 1 0 1 кдел=0,16 кцап=796 , дел.
20МГц ЧМ 1,00 кГц 1 0 1 кдел=0,16 кцап=80 , дел.
20МГц ЧМ 0,05 кГц 1 0 1 кдел=0,16 кцап=4 , дел.


14,0МГц ЧМ 25,0 кГц 1 0 0 кдел=0,8 кцап=800
14,0МГц ЧМ 10,0 кГц 1 0 0 кдел=0,8 кцап=320
14,0МГц ЧМ 9,95 кГц 1 1 0 кдел=0,32 кцап=796
14,0МГц ЧМ 0,10 кГц 1 1 0 кдел=0,32 кцап=8

14,0МГц ЧМ 0,05 кГц U11=1 U10=1 U9=0 кдел=0,32 кцап=4
19.9999 9.95 010 0.16 кцап=796
0
USERPC01
-33 / 0 / 0
Регистрация: 29.06.2018
Сообщений: 611
05.10.2019, 22:38  [ТС] 12
В ДДПКД учитывать коэффициент деления входного деления на 4 (D1,D2) при подстановке частоты в уравнение работы схемы ФАПЧ (320-640 MHz-> 80...166 MHz, см. ТО, с дальнейшей работой с ними в ДДПКД ) и переключение частот сравнения 1,25 кГц от 160.000МГц/1 кГц (ниже 160 МГц).
0
Миниатюры
Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК   Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК  
USERPC01
-33 / 0 / 0
Регистрация: 29.06.2018
Сообщений: 611
05.10.2019, 23:31  [ТС] 13
Напряжение СУ1 в ЗГ изменяется от +3,8...4,1 В до +16,8...17,5В .

На выходе делителя на 4 сигнала ЗГ 320...639,999 МГц :

320,000MHz, 320,001 MHz...359,999 МГц / 4 = 80.00000, 80,00025‬...89,99975 MHz
360,000MHz, 360,001 MHz...399,999 МГц / 4 = 90.00000, 90,00025‬ ...99,99975 MHz
400,000MHz, 400,001 MHz...439,999 МГц /4 = 100.00000 MHz, 100,00025 ... 109,99975 MHz
440,000MHz, 440,001 MHz...479,999 МГц /4 = 110.00000 MHz, 110,00025 ... 119,99975‬ MHz
480,000MHz, 480,001 MHz...519,999 МГц /4 = 120.00000 MHz, 120,00025‬ MHz... 129,99975 MHz
520,000MHz, 520.001 MHz...559,999 МГц /4 = 130.00000 MHz, 130,00025‬ MHz... 139,99975 MHz
560,000MHz, 560.001 MHz...599,999 МГц /4 = 140.00000 MHz, 140,00025‬ MHz... 149,99975 MHz
600,000MHz, 600,001 MHz...639,999 МГц /4 = 150.00000 MHz, 150,00025‬ MHz... 159,99975 MHz

для других частот с учетом делителя программируемого частота ЗГ будет равна
160.000MHz *2=320.000MHz , 320.000/4 =80.00000
160.001MHz *2=320,002 MHz , 320.002/4 =80,00050

319.999MНz *2=639,998‬ MHz, 639,998/4= 159,99950 MHz

159.9999MHz*4=639,9996 MHz , 639,9996/4=159.9999 MHz
100.0000 MHz*4=400.000 MHz, 400.000/4=100.0000 MHz
80.0000 MHz*4=320,000 MHz, 320,000/4=80.0000MHz

79,9999MHz*8=639,9992 MHz, 639,9992/4=159,9998MHz
40,0000MHz*8=320,0000 MHz, 320,0000/4=80.00000MHz

39,9999MHz*16=639,9984‬MHz, 639,9984/4=159,9996‬ MHz
20,0001MHz*16=320,0016MHz, 320,0016/4=80,0004 MHz
20,0000MHz*16=320,000MHz, 320,000/ 4 = 80.00000 MHz

19,9999MHz*32=639,9968‬ MHz , 639,9968/4=159,9992MHz
14.0000MHz*32=448,0000 MHz , 448,0000/4=112.0000MHz

Добавлено через 4 минуты
13.9999+100.000=113.9999 MHz, 113.9999MHz*4=455,9996‬ MHz, 455,9996/4=113.9999MHz


0.1000+100.000=100.1000MHz, 100.1000*4=400,4‬ MHz, 400,4‬/4=100.1 MHz

Добавлено через 2 минуты
Значения битов для кода ДДПКД и переключателя частоты сравнения вычисляются исходя из схемы и описания в ТО (уточню потом ) .
0
05.10.2019, 23:31
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.10.2019, 23:31

СМА Samsung Q1235, Замена микросхемы STK621-015. Есть аналог!!!
Здравствуйте! Подскажите возможна ли замена Микросхемы STK621-015 на STK621-140 трёхфазный инвертор...

Нужно печатать число П(Пи) почему всегда печатает 4.0000000
#include &lt;stdio.h&gt; #include &lt;Windows.h&gt; int main() { int n,i; float a,PI=0; printf(&quot;n=&quot;);...

Модуль Whirlpool домино, замена микросхемы lnk 304 pn на lnk 305 pn
Всем прывет в модуле сгарела микросхема lnk 304 pn под рукой аказалась lnk 305 pn она падходит.


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.