С Новым годом! Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
35 / 28 / 10
Регистрация: 11.04.2022
Сообщений: 197
1

Конфигурация регистров для использования внешнего clock для таймера

07.02.2023, 13:16. Показов 595. Ответов 8

Author24 — интернет-сервис помощи студентам
Добрый день. N-ое количество дней уже не могу правильно сконфигурировать схему с подсчетом импульсов. Имеется мастер таймер, каждую секунду генерирует прерывания и в прерывании считывает со счетчика слейв таймера (он 32 битный поэтому 3 таймер не добавляю) количество импульсов. Пытаюсь сконфигурировать так, чтобы с РА8 поступала частота, в данном случае выбран сам HSI 8 МГЦ (наличие проверено) на пин ETR таймера, в данном случае я выбрал PA5. Через gdb-serser-st и gdb-st-util смотрю значения val, также выдавал на экран, чтобы проверить что без отладчика тоже все ок будет. В общем val == 0. Где-то криво настраиваю, скорее всего в слейв таймера регистры.
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
#include "core/stm32f0xx.h"
#include "periph/stm32f0xx_ll_rcc.h"
#include "periph/stm32f0xx_ll_system.h"
#include "periph/stm32f0xx_ll_bus.h"
#include "periph/stm32f0xx_ll_gpio.h"
#include "periph/stm32f0xx_ll_tim.h"
 
 
static void rcc_config()
{
    LL_FLASH_SetLatency(LL_FLASH_LATENCY_1);
 
    LL_RCC_HSI_Enable();
    while(LL_RCC_HSI_IsReady() != 1);
    
    /* Main PLL configuration and activation */
    LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSI_DIV_2,LL_RCC_PLL_MUL_12);
 
    LL_RCC_PLL_Enable();
    while(LL_RCC_PLL_IsReady() != 1);
 
    /* Sysclk activation on the main PLL */
    LL_RCC_SetAHBPrescaler(LL_RCC_SYSCLK_DIV_1);
    LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_PLL);
    while (LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_PLL);
 
    /* Set APB1 prescaler */
    LL_RCC_SetAPB1Prescaler(LL_RCC_APB1_DIV_1);
 
    SystemCoreClock = 48000000;
 
    //------------------------------------------------
    // config MCO on PA8
    LL_RCC_ConfigMCO(LL_RCC_MCO1SOURCE_HSI);        // get on PA8 8 MHz
 
}
 
static void gpio_config()
{
    LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOC);
 
    LL_GPIO_SetPinMode(GPIOC,LL_GPIO_PIN_8,LL_GPIO_MODE_OUTPUT);
    LL_GPIO_SetPinMode(GPIOC,LL_GPIO_PIN_9,LL_GPIO_MODE_OUTPUT);
 
    //-- on MCO  for MCO PA8 GPIO
    LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOA);
 
    LL_GPIO_SetPinMode(GPIOA,LL_GPIO_PIN_8,LL_GPIO_MODE_ALTERNATE);
    LL_GPIO_SetAFPin_8_15(GPIOA,LL_GPIO_PIN_8,LL_GPIO_AF_0);
    LL_GPIO_SetPinSpeed(GPIOA,LL_GPIO_PIN_8,LL_GPIO_SPEED_FREQ_HIGH);
 
    // -- on ETR for TIM2 PA5 
    LL_GPIO_SetPinMode(GPIOA,LL_GPIO_PIN_5,LL_GPIO_MODE_ALTERNATE);
    LL_GPIO_SetAFPin_0_7(GPIOA,LL_GPIO_PIN_5,LL_GPIO_AF_2);
    LL_GPIO_SetPinSpeed(GPIOA,LL_GPIO_PIN_5,LL_GPIO_SPEED_FREQ_HIGH);
    
}
 
static void timers_config()
{
 
    //config master timer (TIM3)
    LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM3);
 
    LL_TIM_SetPrescaler(TIM3,48000-1);      // F=48 MHz, prescaller = 48000, T = 1 ms
    LL_TIM_SetAutoReload(TIM3,1000-1);      // 1000*T = 1 s, period interruptus
    LL_TIM_SetTriggerOutput(TIM3,LL_TIM_TRGO_RESET);
    LL_TIM_SetCounterMode(TIM3,LL_TIM_COUNTERDIRECTION_UP);
    LL_TIM_SetOnePulseMode(TIM3,LL_TIM_ONEPULSEMODE_SINGLE);
 
    LL_TIM_EnableIT_UPDATE(TIM3);
 
    NVIC_EnableIRQ(TIM3_IRQn);
    NVIC_SetPriority(TIM3_IRQn,1);
 
    //config slave timer (TIM2)
    LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM2);
 
    LL_TIM_SetPrescaler(TIM2,0);
    LL_TIM_SetCounterMode(TIM2,LL_TIM_COUNTERDIRECTION_UP);
    LL_TIM_ConfigETR(TIM2,LL_TIM_ETR_POLARITY_NONINVERTED,LL_TIM_ETR_PRESCALER_DIV1,LL_TIM_ETR_FILTER_FDIV1);
    LL_TIM_EnableExternalClock(TIM2);
 
    LL_TIM_SetTriggerInput(TIM2,LL_TIM_TS_ITR2);
    TIM2->SMCR |= TIM_SMCR_SMS_0|TIM_SMCR_SMS_2;
 
 
    //enable timers
    LL_TIM_EnableCounter(TIM2);
    LL_TIM_EnableCounter(TIM3);
 
}
void TIM3_IRQHandler()
{
    LL_TIM_ClearFlag_UPDATE(TIM3);
    val = LL_TIM_GetCounter(TIM2);
    LL_TIM_EnableCounter(TIM3);
    LL_GPIO_TogglePin(GPIOC,LL_GPIO_PIN_8);
}
 
 
int main()
{
    rcc_config();
    gpio_config();
    timers_config();
 
    while(1)
    {
 
    }
    return 0;
}
Миниатюры
Конфигурация регистров для использования внешнего clock для таймера  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.02.2023, 13:16
Ответы с готовыми решениями:

Конфигурация для работы от внешнего кварца (PIC16F1824)
Здравствуйте! У меня этот микроконтроллер не настраивается на внешний кварц (20МГц) и работает на...

Подключение внешнего класса к XAML для использования в привязке данных
Здравствуйте. У меня возник вопрос - каким образом можно подключить класс из .cs файла к XAML...

Чтение регистров таймера через DMA, stm32F103C8.
Здравствуйте. Решил попробовать организовать чтение регистров таймера в режиме энкодера, через...

Резкое падение частоты (GPU Clock, Memory Clock) - gpu(135.0 MHz) memory clock(202.5MHz)
Незнаю из-за чего такое падение частоты и частота падает (я еду на машине просто или иду и тут...

Конфигурация ПК для игр подходит для тяжелых вычислительных операций?
Необходимо составить конфигурацию ПК, которая бы предоставляла достаточную мощность для тяжелых...

8
101 / 95 / 10
Регистрация: 31.08.2022
Сообщений: 1,014
07.02.2023, 13:34 2
прикольный код...
или это кусок ?
val где то определить надо...
он вообще компилится ?
0
35 / 28 / 10
Регистрация: 11.04.2022
Сообщений: 197
07.02.2023, 13:49  [ТС] 3
кусок, немного обрезанный, val сверху есть, удалил случайно, когда от ненужного чистил. Компилится, зашивается, в прерывание каждую секунду заходит (ну через gdb видно и через светодиод, который моргает).

C
1
volatile uint32_t val = 0;
после дефайнов
0
35 / 28 / 10
Регистрация: 11.04.2022
Сообщений: 197
07.02.2023, 13:59  [ТС] 4
Информация на скрине - это почему такая конфигурация sms и почему itr2 был выбран
Миниатюры
Конфигурация регистров для использования внешнего clock для таймера  
0
101 / 95 / 10
Регистрация: 31.08.2022
Сообщений: 1,014
07.02.2023, 14:08 5
вы в прерывание попадаете ?
сделайте там val++ и смотрите настройки второго таймера.... чего то вы там накрутили...

Добавлено через 1 минуту
может там его в прерывании сбрасывать надо
0
35 / 28 / 10
Регистрация: 11.04.2022
Сообщений: 197
07.02.2023, 14:18  [ТС] 6
Цитата Сообщение от SergP01 Посмотреть сообщение
вы в прерывание попадаете ?
об этом вам уже написал, что да. Исправил регистр cr2_mms с reset на enable. Теперь в прерывании вижу значения таймера + дельта. Из косяков то, что не обнуляю слевовый таймер.
C
1
LL_TIM_SetTriggerOutput(TIM3,LL_TIM_TRGO_ENABLE);
Так а зачем мне val ++ ? и снова вы пишите про проверку попадания в прерывание, если я через бряку попадаю в прерывание, то это уже значит, что я туда попал, без val++ (для вас скрин)
Миниатюры
Конфигурация регистров для использования внешнего clock для таймера  
0
35 / 28 / 10
Регистрация: 11.04.2022
Сообщений: 197
07.02.2023, 14:21  [ТС] 7
повторюсь еще раз, что теперь нужно лишь поправить сброс значений таймера.
Миниатюры
Конфигурация регистров для использования внешнего clock для таймера  
0
101 / 95 / 10
Регистрация: 31.08.2022
Сообщений: 1,014
07.02.2023, 14:40 8
Цитата Сообщение от Enyt Посмотреть сообщение
Так а зачем мне val ++ ?
чтобы убедится, что вы раз в секунду туда попадаете....
0
35 / 28 / 10
Регистрация: 11.04.2022
Сообщений: 197
07.02.2023, 22:46  [ТС] 9
Если кому будет интересно, то могу выложить весь проект. "Проект" был сделан на STM32F051, прикручен дисплей через i2c sd1306 (драйвер для общения с дисплеем писал не я)
Кликните здесь для просмотра всего текста
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
#include "core/stm32f0xx.h"
#include "periph/stm32f0xx_ll_rcc.h"
#include "periph/stm32f0xx_ll_system.h"
#include "periph/stm32f0xx_ll_bus.h"
#include "periph/stm32f0xx_ll_gpio.h"
#include "periph/stm32f0xx_ll_tim.h"
 
#include "periph/stm32f0xx_ll_utils.h"      // for systick
#include "periph/stm32f0xx_ll_cortex.h"     // for systick
 
#include "lib/oled_driver.h"
#include "lib/xprintf.h"
 
#define LED_GREEN   LL_GPIO_PIN_9
#define LED_BLUE    LL_GPIO_PIN_8
 
// startap stm32f051xx.s stm32f051xx.h have name IRQnHandlers periph
volatile uint32_t val = 0;
volatile char intToChar[12];
volatile uint8_t pressedButtom   = 0;
 
void intToCh(volatile char* mas, int val)
{
    for (int i = 0;i < 11;++i)
        intToChar[i] = ' ';
    mas[8] = ' ';
    mas[9] = 'H';
    mas[10] = 'z';
    mas[11] = '\0';
    int i = 7;
    do
    {
        mas[i--] = val % 10 + '0';
        val /= 10;
    } while (val / 10);
    mas[i--] = val + '0';
}
 
 
static void rcc_config()
{
    LL_FLASH_SetLatency(LL_FLASH_LATENCY_1);
 
    LL_RCC_HSI_Enable();
    while(LL_RCC_HSI_IsReady() != 1);
    
    /* Main PLL configuration and activation */
    LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSI_DIV_2,LL_RCC_PLL_MUL_12);
 
    LL_RCC_PLL_Enable();
    while(LL_RCC_PLL_IsReady() != 1);
 
    /* Sysclk activation on the main PLL */
    LL_RCC_SetAHBPrescaler(LL_RCC_SYSCLK_DIV_1);
    LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_PLL);
    while (LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_PLL);
 
    /* Set APB1 prescaler */
    LL_RCC_SetAPB1Prescaler(LL_RCC_APB1_DIV_1);
 
    SystemCoreClock = 48000000;
 
    //------------------------------------------------ config MCO in Systick Handler
    // config MCO on PA8
    LL_RCC_ConfigMCO(LL_RCC_MCO1SOURCE_HSI);        // get on PA8 8 MHz - my default value
 
}
 
static void systick_config()
{
    LL_InitTick(SystemCoreClock,1000);      // T = 1 ms
    LL_SYSTICK_EnableIT();
    
    NVIC_SetPriority(SysTick_IRQn,0);
}
 
void SysTick_Handler()
{
    static uint16_t counter = 0; 
    if (LL_GPIO_IsInputPinSet(GPIOA,LL_GPIO_PIN_0))
        {
            counter++;
            if (counter >=500)
                {
                    pressedButtom++;
                    switch (pressedButtom)
                    {
                    case 1:
                        LL_RCC_ConfigMCO(LL_RCC_MCO1SOURCE_HSI14);      // not work
                        break;
                    case 2:
                        LL_RCC_ConfigMCO(LL_RCC_MCO1SOURCE_LSI);        // not work
                        break;
                    case 3:
                        LL_RCC_ConfigMCO(LL_RCC_MCO1SOURCE_PLLCLK_DIV_2);
                        break;
                    case 4:
                        LL_RCC_ConfigMCO(LL_RCC_MCO1SOURCE_SYSCLK);     // 48 MHz >= systemcoreclock 
                        break;
                    default:
                        LL_RCC_ConfigMCO(LL_RCC_MCO1SOURCE_HSI);
                        pressedButtom =0;
                        break;
                    }
                    counter =0;
                }
        }
}
 
static void printf_config(void)
{
    xdev_out(oled_putc);
    return;
}
 
static void gpio_config()
{
    LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOC);
 
    LL_GPIO_SetPinMode(GPIOC,LL_GPIO_PIN_8,LL_GPIO_MODE_OUTPUT);
    LL_GPIO_SetPinMode(GPIOC,LL_GPIO_PIN_9,LL_GPIO_MODE_OUTPUT);
 
    //-- on MCO  for MCO PA8 GPIO
    LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOA);
 
    LL_GPIO_SetPinMode(GPIOA,LL_GPIO_PIN_8,LL_GPIO_MODE_ALTERNATE);
    LL_GPIO_SetAFPin_8_15(GPIOA,LL_GPIO_PIN_8,LL_GPIO_AF_0);
    LL_GPIO_SetPinSpeed(GPIOA,LL_GPIO_PIN_8,LL_GPIO_SPEED_FREQ_HIGH);
 
    //-- on ETR - external trigger input on PA5
    LL_GPIO_SetPinMode(GPIOA,LL_GPIO_PIN_5,LL_GPIO_MODE_ALTERNATE);
    LL_GPIO_SetAFPin_0_7(GPIOA,LL_GPIO_PIN_5,LL_GPIO_AF_2);
    LL_GPIO_SetPinSpeed(GPIOA,LL_GPIO_PIN_5,LL_GPIO_SPEED_FREQ_HIGH);
 
    //-- on Buttom PA0, click buttom set out on MCO pin(PLL, PLCLK, HSI...) 
    LL_GPIO_SetPinMode(GPIOA,LL_GPIO_PIN_0,LL_GPIO_MODE_INPUT);
 
}
 
static void timers_config()
{
 
    //config master timer (TIM3)
    LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM3);
 
    LL_TIM_SetPrescaler(TIM3,48000-1);      // F=48 MHz, prescaller = 48000, T = 1 ms
    LL_TIM_SetAutoReload(TIM3,1000-1);      // 1000*T = 1 s, period interruptus
    LL_TIM_SetTriggerOutput(TIM3,LL_TIM_TRGO_ENABLE);
    LL_TIM_SetCounterMode(TIM3,LL_TIM_COUNTERDIRECTION_UP);
    LL_TIM_SetOnePulseMode(TIM3,LL_TIM_ONEPULSEMODE_SINGLE);
 
    LL_TIM_EnableIT_UPDATE(TIM3);
 
    NVIC_EnableIRQ(TIM3_IRQn);
    NVIC_SetPriority(TIM3_IRQn,1);
 
    //config slave timer (TIM2)
    LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM2);
 
    LL_TIM_SetPrescaler(TIM2,0);
    LL_TIM_SetCounterMode(TIM2,LL_TIM_COUNTERDIRECTION_UP);
    LL_TIM_ConfigETR(TIM2,LL_TIM_ETR_POLARITY_NONINVERTED,LL_TIM_ETR_PRESCALER_DIV1,LL_TIM_ETR_FILTER_FDIV1);
    LL_TIM_EnableExternalClock(TIM2);
 
    LL_TIM_SetTriggerInput(TIM2,LL_TIM_TS_ITR2);
    LL_TIM_SetSlaveMode(TIM2,LL_TIM_SLAVEMODE_GATED);
 
    //enable timers
    LL_TIM_EnableCounter(TIM2);
    LL_TIM_EnableCounter(TIM3);
 
}
void TIM3_IRQHandler()
{
    LL_TIM_ClearFlag_UPDATE(TIM3);
    val = LL_TIM_GetCounter(TIM2);
    oled_clr(clBlack);
    intToCh(intToChar,val);
    oled_set_cursor(2,3);
    xprintf(intToChar);
    oled_set_cursor(2,2);
    switch (pressedButtom)
    {
    case 0:
        xprintf("HSI");
        break;
    case 1:
        xprintf("HSI14");
        break;
    case 2:
        xprintf("LSI");
        break;
    case 3:
        xprintf("PLLCLK/2");
        break;
    case 4:
        xprintf("Sysclk");
        break;
    
    default:
        xprintf("HSI");
        break;
    }
    oled_update();
    LL_TIM_SetCounter(TIM2,0);
    LL_TIM_EnableCounter(TIM3);
    LL_GPIO_TogglePin(GPIOC,LED_BLUE);
}
 
int main()
{
    rcc_config();
    gpio_config();
    oled_config();
    printf_config();
    timers_config();
    systick_config();
 
    while(1)
    {
 
    }
    return 0;
}
0
07.02.2023, 22:46
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.02.2023, 22:46
Помогаю со студенческими работами здесь

Конфигурация сайта для Magento 2. Cache TTL для картинок
Сайт на Magento 2.3 На сайте имеются картинки продуктов хранящиеся в...

Конфигурация для для скринкастинга, бюджет 20 000 рублей
Всем привет. Хочу заказать сборку нового компа, работать будет на семерке, использоваться очень...

Подключение внешнего таймера к ПЛК
Всем доброго времени суток. Вопрос заключается в следующем: можно ли к ПЛК, подключить внешний...

Тактирования таймера 2 от внешнего источника
Добрый день. Уже неделю пытаюсь решить проблему по тактированию таймера 2 от внешнего источника....

Конфигурация ПК для записи игр для Youtube
Здравствуйте! Хочу начать записывать видео с играми и выгружать на Youtube, подскажите какой...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­­­­­­­­­­­­­х­р­о­н­­н­­­ы­­й счётчик с управляющим сигналом зад
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru