• Объявления

    • admin

      Просьба всем принять участие!   24.11.2017

      На форуме разыгрывается спектроанализатор Arinst SSA-TG LC (цена 18500 руб). Просьба всем перейти по ссылке ниже и принять участие!
alvikagal

2-Х Канальный Коммутатор На Pic12F675

458 сообщений в этой теме

alvikagal    37

Сразу скажу, что собирать это устройство нельзя, т.к. нет для него рабочей прошивки. Она в разработке.

Если когда-то появится рабочий вариант, то он будет добавлен в это сообщение с подписью "ПРОШИВКА" и первое предложение будет удалено.

Так, что, если видите красный текст выше, пока не нужно задавать вопросы - "А где рабочая прошивка"?

Решил в целях познания ассемблера написать (громко сказано) программу для 2-х канального коммутатора.

Когда решил перейти на статическую раздачи искры, то сталкнулся с проблемой выбора коммутатора.

Был куплен 133.3774-03 и в дальнейшем переделан на 133.3774-02, но не понравилась его работа и нагрев.

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

Со временем возможно всё в корне поменяется.

Требования к проекту:

1. Коммутатор должен работать как одноканальный и двухканальный.

2. Схема с минимальным кол-вом деталей и проста к повторению.

3. Есть 2 варианта работы программы. 1 - с обратной связью по току; 2 - зависимость накопления от напряжения борт.сети.

1-ый вариант мне нравится больше.

Алгоритм:
1. Настройка МК.
2. П/п ПУСК. Ждём сигнал на входах каналов.
3. Начинаем отсчёт периода и таймер накопления 6мс. и затем искрим в том же канале.
(будет задержка искры при пуске на 30об. - 0,5гр. на 370 - 6,6гр.)
4. Каждый цикл проверяем какие обороты, если больше 370, то переходим подпрограмму 370.
5. П/п работа. Начинаем считать длительность периода для следующей искры.
6. Включаем таймер накопления 4,5мс. (чтобы не было пропуска искры) и искрим в том же канале.
7. Вычитаем из предидущего периода длительность накопления которое было 4,5мс. и длительность накопления 4,5мс, которое будет
8. Включаем таймер перед накоплением.
9. Включаем таймер накопление 4,5мс. и с каждым отсчётом таймера ждём сигнал на входах каналов.
10. Искрим когда пришёл сигнал.
Когда начал писать программу, то делал её с фиксированым накоплением и сталкнулся с проблеммой при ускорении.
За полуоборот коленвала скорость вращения меняется и время накопления становится не 4,5мс. а меньше или даже не успевает включаться накопление.
Поэтому решил, что с обратной связью по току, можно будет внести поправку на ускорение.
Алгоритм с 5 пункта тогда должен быть таким:
5. П/п 370. Начинаем считать длительность периода для следующей искры.
6. Включаем таймер накопления 4,5мс. (чтобы не было пропуска искры) и искрим в том же канале.
7. Вычитаем из предидущего периода длительность накопления которое было 4,5мс. и длительность накопления 4,5мс, которое будет.
8. Включаем таймер перед накоплением.
9. Включаем накопления и включаем 2-ой счётчик "длителность накопления" ждём сигнал на входах каналов и контролируем ток.
10. Искрим когда пришёл сигнал или ток поднялся до 8А.
11. Если входной сигнал пришёл раньше чем ток поднялся, то включаем 2-ой счётчик "ускорение/замедление" и выставляем флаг "ускорение/замедление".
12. В следующем периоде проверяем флаг "ускорение/замедление" вычитаем 2-ой счётчик "ускорение/замедление".
13. Переходим в п/п РАБОТА.
11. Если ток поднялся раньше чем пришёл сигнал, то искрим и включаем 2-ой счётчик (счётчик поправки на ускорение/замедление) и убираем флаг.
12. В следующем периоде проверяем флаг ускорение/замедление и прибавляем 2-ой счётчик.
13. Переходим в п/п РАБОТА.
14. П/п РАБОТА. Начинаем считать длительность периода для следующей искры.
15. Вычитаем из предидущего периода "длителность накопления".
16. Включаем таймер перед накоплением.
17. Включаем таймер "длителность накопления" и с каждым отсчётом таймера ждём сигнал на входах каналов и контролируем ток.
18. Искрим когда пришёл сигнал или ток поднялся до 8А.
19. Если входной сигнал пришёл раньше чем ток поднялся, то включаем 2-ой счётчик "ускорение/замедление" и выставляем флаг "ускорение/замедление".
20. В следующем периоде проверяем флаг ускорение/замедление вычитаем 2-ой счётчик "ускорение/замедление".
19. Если ток поднялся раньше чем пришёл сигнал, то искрим и включаем 2-ой счётчик "ускорение/замедление" и убираем флаг "ускорение/замедление".
20. В следующем периоде проверяем флаг "ускорение/замедление" и прибавляем 2-ой счётчик "ускорение/замедление".

За отправную точку в схеме, хочу повторить схему знаменитого всем автора Шкильменского Владимира.

Это его разработка натолкнула меня на создание коммутатора.

Владимиру огромное спасибо за труд вложенный в области зажигания на МК.

В дальнейшем буду выкладывать куски подпрограмм для обозрения и критики.

Потом с этих подпрограм будет сложена программа.

Надеюсь, что этот проект будет доведён до конца, если не мной, то кем нибудь.

Напомню ещё раз, что этот проект в целях познания программирования на ассемблере, поэтому буду рад любой Вашей помощи.

Схема:

post-149732-0-45599800-1369058125_thumb.gif

Модель:

675U_Kom.rar

Даташит на русском к PIC12F675:

PIC12F629_675.pdf

Расположение выводов:

Проект для MPLAB IDE:

675U_proekt.rar

Вот пару ссылок для ознакомления с подобным.

Т.к. автор молчит по поводу работы этого устройства, то желания проверять его нет.

http://mpsz.ru/forum...?do=file&id=680

обсуждение тут: http://mpsz.ru/forum...p?t=643&page=26

Ну что, поехали (не на этом коммутаторе пока)???!!! ;)

Изменено пользователем alvikagal

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
alvikagal    37

Начало программы:

list p=12f675
#include <p12f675.inc>

__CONFIG _CP_OFF & _CPD_OFF & _WDT_ON & _PWRTE_ON & _BODEN_ON & _INTRC_OSC_NOCLKOUT
;====================================================
#DEFINE OUT_1 GPIO,0 ;ВЫХОД 1.4
#DEFINE OUT_2 GPIO,1 ;ВЫХОД 2.3
#DEFINE IN_1 GPIO,5 ;ВХОД _1
#DEFINE IN_2 GPIO,4 ; ВХОД _2
#DEFINE BANK0 BCF STATUS,RP0 ;ВКЛЮЧЕНИЕ БАНКА 0
#DEFINE BANK1 BSF STATUS,RP0 ;ВКЛЮЧЕНИЕ БАНКА 1
#DEFINE TMR1_ON BSF T1CON,0 ;
#DEFINE TMR1_OF BCF T1CON,0 ;
;================================================
;Определение блока констант.
CBLOCK 0X20
;================================================
Period_Lo ;Текущий период
Period_Hi
PPeriod_Lo_ ;Предидущий период
PPeriod_Hi_
ZADER_Lo ;Таймер перед накоплением
ZADER_Hi
FLAG_
T_NAK_Lo ;Время накопления
T_NAK_Hi
; FLG ;вспом флаги "1/0"
;0 -;ожидание искры/искра была
;1 - пром/самодел ДАД
;2 - рабочие/пусковые обороты
;3 - цикл искрения закончился/нет
;4 - +/- термокоррекция
;5 - +/- октанкоррекция
;6 - замедление/ускорение
;7 - оборот чётный/нечётный
;===============================================
ENDC
;================================================
; Program
Org 0x0000
GOTO START
GOTO START
GOTO START
GOTO START
; INterrupt-Vector
Org 0x0004
RETURN
;========================================================
;ПЕРВОНАЧАЛЬНАЯ НАСТРОЙКА
START
BANK0
CLRF GPIO ;сброс порта
MOVLW B'00000111'
MOVWF CMCON
MOVLW b'00000001' ;такт ТМР1 - 1мксек
MOVWF T1CON
BANK1
MOVLW B'00111100' ;GP2 ,GP4 - ВХОД; GP0,GP1- ВЫХОД
MOVWF TRISIO
MOVLW B'00000100' ;GP0, GP1, GP5, GP4 - ЦИФРОВОЙ IN / OUT
MOVWF ANSEL
CLRWDT ;ОЧИСТКА ПРЕДДЕЛИТЕЛЯ И WDT
CLRF TMR0 ;ОЧИСТКА TMR0
MOVLW B'11101010' ;КОЭФ. ДЕЛЕНИЯ ПРЕДДЕЛИТЕЛЯ 1:4 (Тwdt =18мс*4)
MOVWF OPTION_REG ;ПРЕДДЕЛИТЕЛЬ ПОДКЛЮЧЕН К WDT
CALL 3FF ;КАЛИБРОВКА ТАКТОВОГО ГЕНЕРАТОРА
MOVWF OSCCAL
GOTO Poisk

Настройку МК и переменные немного позже нужно будет подправить.

Оставил TMR0 его планиру использовать для счётчика "ускорение/замедление", но нужно будет с ним разобраться.

П/программа пуска.

Ждём спад в общем канале:

Poisk
CLRWDT
BTFSC IN_1
GOTO $-1
BANK0
CLRF TMR1H;сброс счётчика периода
CLRF TMR1L
CLRWDT
BTFSC IN_2
GOTO Channel_1
GOTO Channel_2

Я так думаю, что лучше для подсчёта периода использовать TMR1?

Изменено пользователем alvikagal

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
sachma2009    58

Че то пока одни непонятки. Нужно бы хоть вкратце: назначение. Что хотим заполучить?

Для чего на входе сигналы складываем, чтобы на выходе их опять разделить?

Изменено пользователем sachma2009

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IGO61    155

Здравствуйте все!

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

Есть пару предложений по схеме.

А именно, сделать раздельные входы для каждого из каналов, раз уж коммут позиционируется как двухканальный.

Второе предложение: уменьшить сопротивление датчика тока катухи хотя бы вдвое. Что благотворно скажется на холодном зимнем пуске при слабом аккуме, когда каждый вольт батареи на счету. А на ДТ при 7...8А тока завалится 0,7...0,8В - многовато, как с моей колокольни. Мысль и предложение, в принципе, не моё. Но я ёё поддерживаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
alvikagal    37

При пуске не планировал вообще контролировать ток. Просто нормированное накопление 6мс. до 370 оборотов. Ток будет даже немного меньше, чем 8А раза в 2 наверно.

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

Насчёт каналов, просто у меня эта схема собрана и на ней смогу проверять на авто.

Общий канал, может работать как один канал коммутатора. Объединил каналы потому, что проще считать по одному каналу полупериоды, а на втором ловить спад и переключатся по нему.

Сообщении №2 подправил.

А именно, сделать раздельные входы для каждого из каналов, раз уж коммут позиционируется как двухканальный.

Я думал над таким вариантом и пришёл к выводу, что код программы будет короче, если объединить каналы и считать только в одном.

Второе предложение: уменьшить сопротивление датчика тока катухи хотя бы вдвое. Что благотворно скажется на холодном зимнем пуске при слабом аккуме, когда каждый вольт батареи на счету. А на ДТ при 7...8А тока завалится 0,7...0,8В - многовато, как с моей колокольни. Мысль и предложение, в принципе, не моё. Но я ёё поддерживаю.

До какого сопротивления уменьшить? 0,01Ом.?

Изменено пользователем alvikagal

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
sachma2009    58
До какого сопротивления уменьшить? 0,01Ом.?

А почему не применять (и в подобных схемах) стандартные шунты?

На измерительных выводах падение U при номинальном токе всегда будет 75 mv.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
alvikagal    37

На мой взгляд схема очень проста, можно собрать даже навесом, лишь бы МК был жёстко закреплён.

Не хотелось бы усложнять.

Нужно сначала попробовать отточить программу, посмотреть, что из этого выйдет, если будет стоять преграда схемотехники, то тогда уже изменять схему.

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

Нужны мысли по самой программе и алгоритму.

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

Изменено пользователем alvikagal

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IGO61    155

До какого сопротивления уменьшить? 0,01Ом.?

Не-е, я ж писал " вдвое", то есть до 0,05ом. При таком сопротивлении падение на ДТ будет не таким уж большим. И в то же время эту напругу можно будет отследить то ли АЦП, то ли компаратором.

Кстати, ещё одно замечание. Я его нигде не высказывал, но раз уж открылась тема целевая - высскажу здесь. Формировать нормированное время накопления не совсем айс, особенно для низкоомных катух и контролировать напругу на ДТ посредством АЦП (относительно низкоскоростное устройство в среднем семействе ПИК) тоже не внушает недоверия - нужно угадать с моментом замера.

Насчёт стандартных шунтов. Падение на нём совсем уж маловато. При 10-амперном шунте на нём завалится 75мВ, так? Дискретность АЦП при 8-битном замере = 0, 0195В. Таким образом, при 10А тока АЦП покажет 3...4 единицы/дискреты. Плюс/минус ошибки при замере - в результате выходная длительность может значительно исказиться. Конечно, можно использовать все 10-бит АЦП, тогда прога "растянется".

В общем, надо анализировать и размышлять.

Изменено пользователем IGO61

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
sachma2009    58

Насчёт стандартных шунтов. Падение на нём совсем уж маловато. При 10-амперном шунте на нём завалится 75мВ, так?

В общем, надо анализировать и размышлять.

Так. Это если размышлять в привычном (для шунта) применении. У нас все во много (по времени) раз короче,

поэтому и шунты нужно применять с перегрузом в два, а то и в четыре раза и больше. Не (допустим) 100А, а только 10А.

Соответственно и падение на нем получится в два, в четыре или в десять раз больше .

Изменено пользователем sachma2009

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
alvikagal    37

Вот в принципе программа пуска:

list	 p=12f675		
#include <p12f675.inc>	

__CONFIG _CP_OFF & _CPD_OFF & _WDT_ON & _PWRTE_ON & _BODEN_ON & _INTRC_OSC_NOCLKOUT
;====================================================
#DEFINE OUT_1 GPIO,0 ;ВЫХОД 1.4
#DEFINE OUT_2 GPIO,1 ;ВЫХОД 2.3
#DEFINE IN_1 GPIO,5 ;ВХОД _1
#DEFINE IN_2 GPIO,4 ; ВХОД _2
#DEFINE BANK0 BCF STATUS,RP0 ;ВКЛЮЧЕНИЕ БАНКА 0
#DEFINE BANK1 BSF STATUS,RP0 ;ВКЛЮЧЕНИЕ БАНКА 1
#DEFINE TMR1_ON BSF T1CON,0 ;
#DEFINE TMR1_OF BCF T1CON,0 ;
;================================================
;Определение блока констант.
CBLOCK 0X20
;================================================
Period_Lo ;Текущий период
Period_Hi
PPeriod_Lo_ ;Предидущий период
PPeriod_Hi_
ZADER_Lo ;Таймер перед накоплением
ZADER_Hi	
FLAG_
T_NAK_Lo ;Время накопления
T_NAK_Hi
; FLG ;вспом флаги "1/0"
;0 -;ожидание искры/искра была
;1 - пром/самодел ДАД
;2 - рабочие/пусковые обороты
;3 - цикл искрения закончился/нет
;4 - +/- термокоррекция
;5 - +/- октанкоррекция
;6 - замедление/ускорение
;7 - оборот чётный/нечётный
;===============================================
ENDC
;================================================
; Program
Org 0x0000
GOTO START
GOTO START
GOTO START
GOTO START
; INterrupt-Vector
Org 0x0004
RETURN
;========================================================
;ПЕРВОНАЧАЛЬНАЯ НАСТРОЙКА
START
BANK0
CLRF GPIO	 ;сброс порта
MOVLW B'00000111'
MOVWF CMCON
MOVLW b'00000001' ;такт ТМР1 - 1мксек
MOVWF T1CON
BANK1
MOVLW B'00111100' ;GP2 ,GP4 - ВХОД; GP0,GP1- ВЫХОД
MOVWF TRISIO
MOVLW B'00000100' ;GP0, GP1, GP5, GP4 - ЦИФРОВОЙ IN / OUT
MOVWF ANSEL
CLRWDT	 ;ОЧИСТКА ПРЕДДЕЛИТЕЛЯ И WDT
CLRF	 TMR0				 ;ОЧИСТКА TMR0
MOVLW B'11101010'	 ;КОЭФ. ДЕЛЕНИЯ ПРЕДДЕЛИТЕЛЯ 1:4 (Тwdt =18мс*4)
MOVWF OPTION_REG ;ПРЕДДЕЛИТЕЛЬ ПОДКЛЮЧЕН К WDT
CALL	 3FF					 ;КАЛИБРОВКА ТАКТОВОГО ГЕНЕРАТОРА
MOVWF OSCCAL
GOTO Poisk
;*************************************************************************
;настройка после всех видов сброса контроллера			
; режим запуска двигателя и выход двигателя в режим менее 450 об/мин
;*************************************************************************	
Poisk
CLRWDT
BANK0
CLRF TMR1H;сброс счётчика периода
CLRF TMR1L
BTFSC IN_1
GOTO $-1
BTFSC IN_2
GOTO Channel_1
GOTO Channel_2
Channel_2
BSF OUT_2
BANK0
CLRF TMR1H;сброс счётчика периода
CLRF TMR1L
TMR1_ON
CLRWDT
MOVLW 0x09
MOVWF T_NAK_Hi
MOVWF T_NAK_Lo ; время накопления 4,5мс
DECFSZ T_NAK_Lo
GOTO $-1
DECFSZ T_NAK_Hi
GOTO $-3
BCF OUT_2
GOTO Poisk
Channel_1
BSF OUT_1
BANK0
CLRF TMR1H;сброс счётчика периода
CLRF TMR1L
TMR1_ON
CLRWDT
MOVLW 0x09
MOVWF T_NAK_Hi
MOVWF T_NAK_Lo ; время накопления 4,5мс
DECFSZ T_NAK_Lo
GOTO $-1
DECFSZ T_NAK_Hi
GOTO $-3
BCF OUT_1
GOTO Poisk
;++++++++++++++++++++++++
ORG H'03FF'
retlw H'C0'
ORG H'2100'
	 DE "2-х канальный коммутатор на PIC12F675 20.05.13 alvikagal с регулировкой тока "
	 END

Добавил в первый пост проект для MPLAB IDE.

Пока работает накопление 6мс. по спаду, т.е. задержка искры при пуске.

Игорь и все кто помогает советом, я Вас внимательно слушаю, просто пока направлен на внедрение алгоритма, который описал (он крутится в голове и его нужно реализовать, т.к. понимаю его) и не могу пока переключится на детальный разговор.

Теперь нужно написать п/программу работы.

Изменено пользователем alvikagal

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IGO61    155

Возможно я не прав, но я не встречал НШ меньше 10А. В случае 10-амперного стандартного шунта на нём и завалится 75мВ при 10 амперах.

Можно сделать "ход конём" - использовать НШ 10А, а АЦП перенастроить на "правое выравнивание", после замера считывать младший байт результата из МК, тогда дискретность будет в 4 раза выше. Не 0,0195В, а 0,004875мВ. А это уже кое-что. И точность не пострадает - ну это так мысли вслух, такого я ещё не пробовал с АЦП.

Изменено пользователем IGO61

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
sachma2009    58

Есть и меньше 10А, но это не важно. Просто, в принципе, их можно применять даже с перегрузом.

Мощности рассеивания хватит выше крыши.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IGO61    155

По П/П пуска в №10.

Для перехода в рабочий режим нужно как-то сохранять измеренный период для его дальнейшей обработки. Пока таймер крутится "сам на себя", периодически сбрасываясь. Команда "GOTO Channel_2" - пустая, не несёт никакой смысловой и физической нагрузки, так как следом за ней и следует П/П "Channel_2".

Ещё одна "пустая команда" в настройках МК - "CLRF TMR0". Так как мы работаем в "Банке 1", то произойдёт очистка не таймера, а регистра "OPTION_REG". И сразу за этой командой следует процедура загрузки в тот же регистр "OPTION_REG" настроечной константы.

Пока как-то так. Не много критики с моей стороны?

Для компенсации выкладываю архив со своими наработками одноканального коммутатора из темы "ФУОЗ+ДПКВ". Там не всё, но кое-что.

675_kom.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
alvikagal    37

По П/П пуска в №10.

Для перехода в рабочий режим нужно как-то сохранять измеренный период для его дальнейшей обработки. Пока таймер крутится "сам на себя", периодически сбрасываясь. Команда "GOTO Channel_2" - пустая, не несёт никакой смысловой и физической нагрузки, так как следом за ней и следует П/П "Channel_2".

Да, я ещё добавлю команды сохранения счётчика TMR1 и проверку на обороты.

Просто пока проверял настройку МК и запуск программы.

Спасибо Игорь.

CLRF TMR0 можно удалить?

Я его в будущем хотел использовать как второй таймер, для ускорения/замедления.

Можно конечно и по одному таймеру считать вычитая разницу.

Посмотрел твой исходник, мне пока ещё сложно понимать не подписание команды.

Так что я долго вникать буду.

Изменено пользователем alvikagal

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
alvikagal    37

Пока в пуске будет так:

Channel_1
BSF OUT_1
MOVF TMR1L,W;длительность периода
MOVWF Period_Lo ;сохранить в переменную
MOVF TMR1H,W
MOVWF Period_Hi
BANK0
CLRF TMR1H;сброс счётчика периода
CLRF TMR1L
TMR1_ON
CLRWDT
MOVLW 0x09
MOVWF T_NAK_Hi
MOVWF T_NAK_Lo ; время накопления 4,5мс
DECFSZ T_NAK_Lo
GOTO $-1
DECFSZ T_NAK_Hi
GOTO $-3
BCF OUT_1
GOTO Poisk

Изменено пользователем alvikagal

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IGO61    155

Если планируешь в дальнейшем использовать "таймер 0", команда очистки всё равно пустая. Причин две.

1).Команда " CLRF TMR0" находится в банке 1, а должна быть в нулевом.

2).Если TMR0 тактируется внутренним генератором, то таймер нельзя остановить - он считает постоянно. А перед началом замера в нужное время его можно сбросить/очистить. Вот тогда-то и надо ставить в/у команду.

Да, в моём исходнике коментов почти нет - это был промежуточный этап для сбора наработок. Чтоб можно было двигаться дальше.

Изменено пользователем IGO61

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
alvikagal    37

Игорь, ты TMR1 сделал делитель 8

MOVLW B'00110100' ;ТАКТ ТМ1=Fcc/8

MOVWF T1CON

Я сделал 1:1

Счётчика TMR1 на малых оборотах не хватает. Если 1:1, то это 65535 мкс, а 30 оборотов - 1000мс.

Если брать делитель счётчика 1:8, то 524280 мкс.

Нужно флаг переполнения поднимать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
alvikagal    37

Вернее проверять переполнение BTFSS PIR1,TMR1IF;переполн?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IGO61    155

Если при делителе 1:1 переполняется счётчик - сделай делитель побольше (максимум для ПИКа - 1:8). Но на 30об/мин таймер всё равно переполнится.

Флаг переполнения TMR1 поднимется сам при медленном вращении и переполнении счётчика. Его нужно обработать по своему усмотрению и перед началом следующего замера сбросить програмно (он сам не сбрасывается). Не сильно упирайся в 30об/мин - это жесткАч. Легче будет строить программу от примерно 60об/мин и выше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
alvikagal    37

Пока только таким образом получилось сохранять таймер и проверять обороты:

START
   BANK0
CLRF GPIO	   ;сброс порта
MOVLW B'00000111'
MOVWF   CMCON
MOVLW B'00110100' ;ТАКТ ТМ1=Fcc/8=8мкс
MOVWF T1CON
BANK1 
MOVLW B'00111100'   ;GP2 ,GP4 -  ВХОД;  GP0,GP1-  ВЫХОД
MOVWF TRISIO
MOVLW B'00000100'    ;GP0, GP1, GP5, GP4 -  ЦИФРОВОЙ   IN / OUT
MOVWF    ANSEL
CLRWDT    ;ОЧИСТКА ПРЕДДЕЛИТЕЛЯ И WDT
MOVLW B'10000011'   ; 
MOVWF OPTION_REG  ;
CALL	   3FF					   ;КАЛИБРОВКА ТАКТОВОГО ГЕНЕРАТОРА
MOVWF   OSCCAL
   BANK0
CLRF TMR1H ;сброс счётчика периода
CLRF TMR1L
TMR1_ON
GOTO Pusk
;*************************************************************************		  
; режим запуска двигателя
;*************************************************************************	   
Pusk
CLRWDT
BTFSC  IN_1
GOTO $-2
BTFSC  IN_2
GOTO Channel_1
GOTO Channel_2
Channel_1
BSF  OUT_1
MOVF TMR1L,W  ;длительность периода
MOVWF Period_Lo ;сохранить в переменную
MOVF TMR1H,W
MOVWF Period_Hi
TMR1_OF
   BANK0
CLRF TMR1H ;сброс счётчика периода
CLRF TMR1L
BCF PIR1,TMR1IF;сброс флага переполн.
TMR1_ON
MOVLW 0x09
MOVWF T_NAK_Hi
MOVWF T_NAK_Lo   ;время накопления 6мс 
DECFSZ T_NAK_Lo
GOTO $-1
DECFSZ T_NAK_Hi
GOTO $-3
BCF  OUT_1
MOVF Period_Hi,W	   
SUBLW 0x25				  ;370 об/мин			  
BTFSC STATUS,C
GOTO Rabota
GOTO Pusk

Правильно ли сделал эту часть?

Теперь пока сделаю фиксированное накопление в рабочем режиме, а потом нужно будет его длительность заменить на длительность отключения по току.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
alvikagal    37

Делаю переход с пускового режима в работу.

По приходу спада накопление и искра, копирую счетчик накопления и из предыдущего периода вычитаю счетчик накопления 2 раза - получаю задержку. Ее умножаю на 2 и включаю таймер задержки перед накоплением.

Что-то не выходит правильно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
lukinov    51

Если по спаду накопление и искра. То будет задержка на время накопления. Мне кажется нужно как коммутатор по фронту накопление, по спаду искра. Но если длительность ВУ импульса будет больше времени накопления то будет греться транзистор и катушка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
alvikagal    37

Это просто переход. В работе будет искра по спаду.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сообщения

    • Вот еще, сама VS пишет:Exception thrown at 0x00000030 in ConsoleApplication3.exe: 0xC0000005: Access violation executing location 0x00000030. Вот стёк по этому сообщению. Там заместо дескрпторов знаки вопросов стоят:00000030  ?? ?? . И до и после данной строчки. Так-же по этой же строке:Unhandled exception at 0x779A0319 in ConsoleApplication3.exe: 0xC00001A5: Обнаружен недопустимый обработчик исключений (parameters: 0x00000003).
    • #include <cv.h> #include <highgui.h> #include <stdlib.h> #include <stdio.h> int main(int argc, char* argv[]) { // получаем любую подключённую камеру CvCapture* capture = cvCreateCameraCapture(CV_CAP_ANY); //cvCaptureFromCAM( 0 ); assert( capture ); //cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, 640);//1280); //cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, 480);//960); // узнаем ширину и высоту кадра double width = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH); double height = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT); printf("[i] %.0f x %.0f\n", width, height ); IplImage* frame=0; cvNamedWindow("capture", CV_WINDOW_AUTOSIZE); printf("[i] press Enter for capture image and Esc for quit!\n\n"); int counter=0; char filename[512]; while(true){ // получаем кадр frame = cvQueryFrame( capture ); // показываем cvShowImage("capture", frame); char c = cvWaitKey(33); if (c == 27) { // нажата ESC break; } else if(c == 13) { // Enter // сохраняем кадр в файл sprintf(filename, "Image%d.jpg", counter); printf("[i] capture... %s\n", filename); cvSaveImage(filename, frame); counter++; } } // освобождаем ресурсы cvReleaseCapture( &capture ); cvDestroyWindow("capture"); return 0; } Код взят отсюда:http://robocraft.ru/blog/computervision/275.html 77AAA918 call _NtFreeVirtualMemory@16 (77A8C4D0h) 77AAA91D mov ebx,eax 77AAA91F cmp ebx,0C0000045h 77AAA925 je string L"\\??\\%C:"+5843Eh (77AFC4AEh) 77AAA92B mov eax,ebx 77AAA92D pop edi 77AAA92E pop esi 77AAA92F pop ebx 77AAA930 pop ecx 77AAA931 pop ebp 77AAA932 ret 8 77AAA935 add eax,2 77AAA938 add ecx,2 77AAA93B mov dword ptr [ebp-8],eax 77AAA93E cmp eax,edx 77AAA940 jb RtlpScanEnvironment+31h (77AA5733h) 77AAA946 jmp RtlpScanEnvironment+5Dh (77AA575Fh) 77AAA94B nop 77AAA94C nop 77AAA94D nop 77AAA94E nop 77AAA94F nop _RtlQueryEnvironmentVariable_U@12: 77AAA950 mov edi,edi 77AAA952 push ebp 77AAA953 mov ebp,esp 77AAA955 push ecx 77AAA956 push ecx 77AAA957 mov ecx,dword ptr [ebp+0Ch] 77AAA95A lea eax,[ebp-4] 77AAA95D push esi 77AAA95E mov esi,dword ptr [ebp+10h] 77AAA961 push eax 77AAA962 movzx eax,word ptr [esi+2] 77AAA966 shr eax,1 77AAA968 push eax 77AAA969 push dword ptr [esi+4] 77AAA96C movzx eax,word ptr [ecx] 77AAA96F shr eax,1 77AAA971 push eax 77AAA972 push dword ptr [ecx+4] 77AAA975 push dword ptr [ebp+8] 77AAA978 call RtlQueryEnvironmentVariable (77A9A310h) 77AAA97D mov ecx,eax 77AAA97F mov eax,dword ptr [ebp-4] 77AAA982 cmp eax,7FFFh 77AAA987 ja _RtlQueryEnvironmentVariable_U@12+4Fh (77AAA99Fh) 77AAA989 cmp ecx,0C0000023h 77AAA98F je _RtlQueryEnvironmentVariable_U@12+56h (77AAA9A6h) 77AAA991 add eax,eax 77AAA993 mov word ptr [esi],ax 77AAA996 mov eax,ecx 77AAA998 pop esi 77AAA999 mov esp,ebp 77AAA99B pop ebp 77AAA99C ret 0Ch 77AAA99F mov ecx,0C0000017h 77AAA9A4 jmp _RtlQueryEnvironmentVariable_U@12+46h (77AAA996h) 77AAA9A6 lea eax,[eax*2-2] 77AAA9AD jmp _RtlQueryEnvironmentVariable_U@12+43h (77AAA993h) 77AAA9AF nop 77AAA9B0 nop 77AAA9B1 nop 77AAA9B2 nop 77AAA9B3 nop 77AAA9B4 nop 77AAA9B5 nop 77AAA9B6 nop 77AAA9B7 nop 77AAA9B8 nop 77AAA9B9 nop 77AAA9BA nop 77AAA9BB nop 77AAA9BC nop 77AAA9BD nop 77AAA9BE nop 77AAA9BF nop _LdrInitializeThunk@8: 77AAA9C0 mov edi,edi 77AAA9C2 push ebp 77AAA9C3 mov ebp,esp 77AAA9C5 mov edx,dword ptr [ebp+0Ch] 77AAA9C8 mov ecx,dword ptr [ebp+8] 77AAA9CB call _LdrpInitialize@8 (77AAAA89h) 77AAA9D0 push 1 77AAA9D2 push dword ptr [ebp+8] 77AAA9D5 call _NtContinue@8 (77A8C720h) 77AAA9DA push eax 77AAA9DB call _RtlRaiseStatus@4 (77A907A0h) 77AAA9E0 int 3 77AAA9E1 nop 77AAA9E2 nop 77AAA9E3 nop 77AAA9E4 nop 77AAA9E5 nop __LdrpInitialize@8: 77AAA9E6 push 28h 77AAA9E8 push 77AAAA68h 77AAA9ED call __SEH_prolog4 (77A94300h) 77AAA9F2 mov dword ptr [ebp-28h],edx 77AAA9F5 mov dword ptr [ebp-20h],ecx 77AAA9F8 mov ebx,dword ptr fs:[18h] 77AAA9FF and dword ptr [ebp-24h],0 77AAAA03 mov edx,offset _LdrpProcessInitialized (77B5074Ch) 77AAAA08 xor ecx,ecx 77AAAA0A inc ecx 77AAAA0B xor eax,eax 77AAAA0D lock cmpxchg dword ptr [edx],ecx 77AAAA11 cmp eax,1 77AAAA14 je string L"\\??\\%C:"+19E07h (77ABDE77h) 77AAAA1A mov edi,dword ptr [ebx+30h] 77AAAA1D mov dword ptr [ebp-30h],edi 77AAAA20 test eax,eax 77AAAA22 je string L"\\??\\%C:"+0B606h (77AAF676h) 77AAAA28 xor esi,esi 77AAAA2A mov dword ptr [ebp-1Ch],esi 77AAAA2D cmp byte ptr [edi],0 77AAAA30 jne string L"\\??\\%C:"+2CFB9h (77AD1029h) 77AAAA36 test byte ptr [ebx+0FCAh],40h 77AAAA3D jne _LdrpInitialize+6Eh (77AAAA54h) 77AAAA3F cmp byte ptr [_LdrpForkInProgress (77B5217Ch)],0 77AAAA46 jne string L"\\??\\%C:"+2D00Bh (77AD107Bh) 77AAAA4C mov ecx,dword ptr [ebp-20h] 77AAAA4F call LdrpInitializeThread (77AB5A0Dh) 77AAAA54 call _NtTestAlert@0 (77A8DCB0h) 77AAAA59 test esi,esi 77AAAA5B js string L"\\??\\%C:"+4942Fh (77AED49Fh) 77AAAA61 call __SEH_epilog4 (77A94345h) 77AAAA66 ret 77AAAA67 nop 77AAAA68 ?? ?? 77AAAA69 ?? ?? 77AAAA6A ?? ?? 77AAAA6B inc dword ptr [eax] 77AAAA6D add byte ptr [eax],al 77AAAA6F add byte ptr [eax+0FFFFFFh],bh 77AAAA75 add byte ptr [eax],al 77AAAA77 add dh,bh 77AAAA79 ?? ?? 77AAAA7A ?? ?? 77AAAA7B push dword ptr [esp+edx*8-52h] 77AAAA7F ja _LdrpInitialize+22h (77AAAA08h) 77AAAA81 aamb 0AEh 77AAAA83 ja _LdrpInitialize+2Fh (77AAAA15h) 77AAAA85 nop 77AAAA86 nop 77AAAA87 nop 77AAAA88 nop _LdrpInitialize@8: 77AAAA89 cmp byte ptr [_SecurityCookieInitialized (77B50002h)],0 77AAAA90 push esi 77AAAA91 push edi 77AAAA92 mov esi,edx 77AAAA94 mov edi,ecx 77AAAA96 je _LdrpInitialize@8+4A8Bh (77AAF514h) 77AAAA9C mov ecx,edi 77AAAA9E mov edx,esi 77AAAAA0 pop edi 77AAAAA1 pop esi 77AAAAA2 jmp _LdrpInitialize (77AAA9E6h) 77AAAAA7 nop 77AAAAA8 nop 77AAAAA9 nop 77AAAAAA nop 77AAAAAB nop _LdrpAllocateTls@0: 77AAAAAC push 38h 77AAAAAE push 77AAABB0h 77AAAAB3 call __SEH_prolog4 (77A94300h) 77AAAAB8 mov eax,dword ptr fs:[00000018h] 77AAAABE mov dword ptr [ebp-30h],eax 77AAAAC1 mov eax,dword ptr fs:[00000030h] 77AAAAC7 mov eax,dword ptr [eax+18h] 77AAAACA mov dword ptr [ebp-24h],eax 77AAAACD xor eax,eax 77AAAACF mov dword ptr [ebp-1Ch],eax 77AAAAD2 mov ebx,offset _LdrpTlsLock (77B50870h) 77AAAAD7 push ebx 77AAAAD8 call RtlAcquireSRWLockShared (77A97FA0h) 77AAAADD mov ecx,dword ptr [_LdrpTlsBitmap (77B52140h)] 77AAAAE3 mov dword ptr [ebp-2Ch],ecx 77AAAAE6 test ecx,ecx Вот, вторая ошибка из стека. 77AAA9D0  push        1 
    • Ну ты шутник! Камень хоть какой? Да и на плюсах исходник не помешал бы.
    • 77AED1A1 inc dword ptr [eax+eax*8-3B137AF1h] 77AED1A8 std 77AED1A9 inc dword ptr [ebx+ebx*8+67830F74h] 77AED1B0 sub al,0 77AED1B2 lea eax,[edi+24h] 77AED1B5 push eax 77AED1B6 call _RtlReleaseSRWLockExclusive@4 (77A94360h) 77AED1BB xor bl,bl 77AED1BD mov ecx,edi 77AED1BF call _EtwpGetNextRegistration@4 (77B3E419h) 77AED1C4 mov edi,eax 77AED1C6 lea ecx,[esi+28h] 77AED1C9 test edi,edi 77AED1CB je EtwDeliverDataBlock+76h (77AC9696h) 77AED1D1 jmp string L"\\??\\%C:"+490E4h (77AED154h) 77AED1D3 cmp byte ptr [_EtwpReplySend (77B50007h)],0 77AED1DA jne EtwDeliverDataBlock+85h (77AC96A5h) 77AED1E0 cmp dword ptr [ebp-8],0 77AED1E4 ?? ?? 77AED1E5 ?? ?? 77AED1E6 ?? ?? 77AED1E7 ?? ?? 77AED1E8 ?? ?? 77AED1E9 ?? ?? 77AED1EA ?? ?? 77AED1EB ?? ?? 77AED1EC ?? ?? 77AED1ED ?? ?? 77AED1EE ?? ?? 77AED1EF ?? ?? 77AED1F0 ?? ?? 77AED1F1 ?? ?? 77AED1F2 ?? ?? 77AED1F3 ?? ?? 77AED1F4 ?? ?? 77AED1F5 ?? ?? 77AED1F6 add ecx,dword ptr [ecx+458B0446h] 77AED1FC hlt 77AED1FD mov dword ptr [esi+10h],eax 77AED200 mov eax,dword ptr [ebp-18h] 77AED203 mov dword ptr [esi+18h],eax 77AED206 mov eax,dword ptr [ebp-14h] 77AED209 push esi 77AED20A mov byte ptr [esi+0Ch],0 77AED20E mov dword ptr [esi+1Ch],eax 77AED211 call _EtwReplyNotification@4 (77B42930h) 77AED216 mov esi,eax 77AED218 jmp EtwDeliverDataBlock+88h (77AC96A8h) 77AED21D mov ax,word ptr [edi+36h] 77AED221 mov ecx,3FFFh 77AED226 and ax,cx 77AED229 cmp ax,dx 77AED22C je string L"\\??\\%C:"+491C8h (77AED238h) 77AED22E cmp ax,2 77AED232 jne EtwpProcessNotification+70h (77AC9749h) 77AED238 mov ecx,dword ptr [ebp+8] 77AED23B mov eax,dword ptr [edi+30h] 77AED23E cdq 77AED23F push ebx 77AED240 mov dword ptr [ecx],eax 77AED242 mov dword ptr [ecx+4],edx 77AED245 call _EtwProcessPrivateLoggerRequest@4 (77B3FB50h) 77AED24A mov ecx,dword ptr [ebp+0Ch] 77AED24D mov dword ptr [ecx],eax 77AED24F mov eax,dword ptr [ebp+10h] 77AED252 mov byte ptr [eax],1 77AED255 mov al,1 77AED257 jmp EtwpProcessNotification+72h (77AC974Bh) 77AED25C and ecx,edx 77AED25E cmp cx,0Ah 77AED262 jne EtwpProcessNotification+70h (77AC9749h) 77AED268 cmp dword ptr [ebx],7 77AED26B ?? ?? 77AED26C ?? ?? 77AED26D ?? ?? 77AED26E ?? ?? 77AED26F ?? ?? 77AED270 ?? ?? 77AED271 ?? ?? 77AED272 ?? ?? 77AED273 ?? ?? 77AED274 ?? ?? 77AED275 ?? ?? 77AED276 ?? ?? 77AED277 ?? ?? 77AED278 ?? ?? 77AED279 inc ebx 77AED27A and al,3Bh 77AED27C inc ecx 77AED27D and byte ptr [edi],cl 77AED27F ?? ?? 77AED280 ?? ?? 77AED281 ?? ?? 77AED282 ?? ?? 77AED283 ?? ?? 77AED284 ?? ?? 77AED285 ?? ?? 77AED286 ?? ?? 77AED287 ?? ?? 77AED288 ?? ?? 77AED289 ?? ?? 77AED28A ?? ?? 77AED28B ?? ?? 77AED28C ?? ?? 77AED28D ?? ?? 77AED28E ?? ?? 77AED28F ?? ?? 77AED290 inc ecx 77AED291 ?? ?? 77AED292 ?? ?? 77AED293 ?? ?? 77AED294 ?? ?? 77AED295 ?? ?? 77AED296 ?? ?? 77AED297 ?? ?? 77AED298 ?? ?? 77AED299 ?? ?? 77AED29A ?? ?? 77AED29B ?? ?? 77AED29C ?? ?? 77AED29D ?? ?? 77AED29E ?? ?? 77AED29F ?? ?? 77AED2A0 ?? ?? 77AED2A1 ?? ?? 77AED2A2 ?? ?? 77AED2A3 std 77AED2A4 dec dword ptr [ebx-3174FBBAh] 77AED2AA test eax,eax 77AED2AC je string L"\\??\\%C:"+4924Eh (77AED2BEh) 77AED2AE mov esi,eax 77AED2B0 mov eax,dword ptr [esi] 77AED2B2 test eax,eax 77AED2B4 je string L"\\??\\%C:"+49256h (77AED2C6h) 77AED2B6 jmp string L"\\??\\%C:"+4923Eh (77AED2AEh) 77AED2B8 cmp dword ptr [esi],ecx 77AED2BA je string L"\\??\\%C:"+49256h (77AED2C6h) 77AED2BC mov ecx,esi 77AED2BE mov esi,dword ptr [esi+8] 77AED2C1 and esi,0FFFFFFFCh 77AED2C4 jne string L"\\??\\%C:"+49248h (77AED2B8h) 77AED2C6 test esi,esi 77AED2C8 je string L"\\??\\%C:"+49281h (77AED2F1h) 77AED2CA push 10h 77AED2CC ?? ?? 77AED2CD ?? ?? 77AED2CE ?? ?? 77AED2CF ?? ?? 77AED2D0 ?? ?? 77AED2D1 ?? ?? 77AED2D2 ?? ?? 77AED2D3 ?? ?? 77AED2D4 ?? ?? 77AED2D5 ?? ?? 77AED2D6 ?? ?? 77AED2D7 ?? ?? 77AED2D8 ?? ?? 77AED2D9 ?? ?? 77AED2DA ?? ?? 77AED2DB or al,85h 77AED2DD sal byte ptr [ebp+11h],0Fh 77AED2E1 mov bh,46h 77AED2E3 ?? ?? 77AED2E4 ?? ?? 77AED2E5 ?? ?? 77AED2E6 ?? ?? 77AED2E7 ?? ?? 77AED2E8 ?? ?? 77AED2E9 ?? ?? 77AED2EA ?? ?? 77AED2EB ?? ?? 77AED2EC ?? ?? 77AED2ED jne string L"\\??\\%C:"+49243h (77AED2B3h) 77AED2EF std 77AED2F0 push dword ptr [ebx] 77AED2F2 imul cl 77AED2F4 jg string L"\\??\\%C:"+4924Ah (77AED2BAh) 77AED2F6 std 77AED2F7 push esi 77AED2F9 rol dword ptr [ecx],74h 77AED2FC ?? ?? 77AED2FD ?? ?? 77AED2FE ?? ?? 77AED2FF ?? ?? 77AED300 ?? ?? 77AED301 ?? ?? 77AED302 ?? ?? 77AED303 ?? ?? 77AED304 ?? ?? 77AED305 ?? ?? 77AED306 ?? ?? 77AED307 ?? ?? 77AED308 ?? ?? 77AED309 ?? ?? 77AED30A ?? ?? 77AED30B ?? ?? 77AED30C ?? ?? 77AED30D retf 0F601h 77AED310 ?? ?? 77AED311 ?? ?? 77AED312 ?? ?? 77AED313 ?? ?? 77AED314 ?? ?? 77AED315 ?? ?? 77AED316 ?? ?? 77AED317 ?? ?? 77AED318 ?? ?? 77AED319 ?? ?? 77AED31A ?? ?? 77AED31B ?? ?? 77AED31C ?? ?? 77AED31D ?? ?? 77AED31E ?? ?? 77AED31F ?? ?? 77AED320 ?? ?? 77AED321 ?? ?? 77AED322 ?? ?? 77AED323 ?? ?? 77AED324 ?? ?? 77AED325 ?? ?? 77AED326 ?? ?? 77AED327 ?? ?? 77AED328 ?? ?? 77AED329 ?? ?? 77AED32A ?? ?? 77AED32B ?? ?? 77AED32C ?? ?? 77AED32D ?? ?? 77AED32E ?? ?? 77AED32F ?? ?? 77AED330 ?? ?? 77AED331 ?? ?? 77AED332 ?? ?? 77AED333 ?? ?? 77AED334 ?? ?? 77AED335 ?? ?? 77AED336 ?? ?? 77AED337 ?? ?? 77AED338 ?? ?? 77AED339 ?? ?? 77AED33A ?? ?? 77AED33B ?? ?? 77AED33C ?? ?? 77AED33D ?? ?? 77AED33E ?? ?? 77AED33F ?? ?? 77AED340 ?? ?? 77AED341 ?? ?? 77AED342 ?? ?? 77AED343 ?? ?? 77AED344 ?? ?? 77AED345 add byte ptr [eax],al 77AED347 add byte ptr [ebp+56102444h],cl 77AED34D push ebx 77AED34E push eax 77AED34F call _memset (77A78280h) 77AED354 add esp,0Ch 77AED357 mov dword ptr [esp+10h],esi 77AED35B mov dword ptr [esp+3Ch],20000h 77AED363 mov esi,ebx 77AED365 mov edx,esi 77AED367 and edx,0FFFF7FFFh 77AED36D cmp edx,40h 77AED370 jae string L"\\??\\%C:"+4936Ah (77AED3DAh) 77AED372 mov eax,dword ptr [_EtwpLoggerArray (77B500E8h)] 77AED377 test eax,eax 77AED379 je string L"\\??\\%C:"+4936Ah (77AED3DAh) 77AED37B lea eax,[eax+edx*8] 77AED37E xor ecx,ecx 77AED380 add eax,4 77AED383 ?? ?? 77AED384 ?? ?? 77AED385 ?? ?? 77AED386 ?? ?? 77AED387 ?? ?? 77AED388 ?? ?? 77AED389 ?? ?? 77AED38A ?? ?? 77AED38B ?? ?? 77AED38C ?? ?? 77AED38D ?? ?? 77AED38E ?? ?? 77AED38F ?? ?? 77AED390 ?? ?? 77AED391 call 6E268896 77AED396 rol dword ptr [ecx],74h 77AED399 jge 4132A3A3 77AED39F inc dword ptr [ebx+0FF004C0h] 77AED3A5 ror dword ptr [eax],0EBh 77AED3A8 xor dword ptr [ebx+0D891h],ecx 77AED3AE add byte ptr [ebx+48D1449h],cl 77AED3B4 enter 0C983h,0FFh 77AED3B8 add eax,4 77AED3BB lock xadd dword ptr [eax],ecx 77AED3BF test edx,400h 77AED3C5 jne string L"\\??\\%C:"+4936Ah (77AED3DAh) 77AED3C7 lea eax,[esp+10h] 77AED3CB mov dword ptr [esp+18h],esi 77AED3CF push eax 77AED3D0 push ecx 77AED3D1 mov dword ptr [esp+24h],ebx 77AED3D5 call _EtwpStopUmLogger@16 (77B41B6Eh) 77AED3DA inc esi 77AED3DB cmp esi,40h 77AED3DE jb string L"\\??\\%C:"+492F5h (77AED365h) 77AED3E0 call LdrpAcquireLoaderLock (77A995ECh) 77AED3E5 mov ebx,offset _FastPebLock (77B50820h) 77AED3EA push ebx 77AED3EB call _RtlEnterCriticalSection@4 (77A90E80h) 77AED3F0 mov eax,dword ptr fs:[00000030h] 77AED3F6 push dword ptr [eax+18h] 77AED3F9 call RtlLockHeap (77ABCB90h) 77AED3FE push edi 77AED3FF push 0 77AED401 call _NtTerminateProcess@8 (77A8C5B0h) 77AED406 mov ecx,dword ptr fs:[30h] 77AED40D mov esi,eax 77AED40F push dword ptr [ecx+18h] 77AED412 call RtlUnlockHeap (77ABCAF0h) 77AED417 push ebx 77AED418 call _RtlLeaveCriticalSection@4 (77A90EC0h) 77AED41D test esi,esi 77AED41F js string L"\\??\\%C:"+493C6h (77AED436h) 77AED421 push edi 77AED422 ?? ?? 77AED423 ?? ?? 77AED424 ?? ?? 77AED425 ?? ?? 77AED426 ?? ?? 77AED427 ?? ?? 77AED428 ?? ?? 77AED429 ?? ?? 77AED42A ?? ?? 77AED42B ?? ?? 77AED42C ?? ?? 77AED42D ?? ?? 77AED42E ?? ?? 77AED42F ?? ?? 77AED430 ?? ?? 77AED431 ?? ?? 77AED432 jp string L"\\??\\%C:"+493B5h (77AED425h) 77AED434 stc 77AED435 ?? ?? 77AED436 ?? ?? 77AED437 ?? ?? 77AED438 ?? ?? 77AED439 ?? ?? 77AED43A ?? ?? 77AED43B ?? ?? 77AED43C ?? ?? 77AED43D ?? ?? 77AED43E ?? ?? 77AED43F ?? ?? 77AED440 ?? ?? 77AED441 ?? ?? 77AED442 ?? ?? 77AED443 ?? ?? 77AED444 ?? ?? 77AED445 xlat byte ptr [ebx] 77AED446 rep stc 77AED448 dec esp 77AED44A mov eax,dword ptr [ebp-14h] 77AED44D mov dword ptr [ebp-78h],eax 77AED450 push 3 77AED452 mov eax,dword ptr [ebp-78h] 77AED455 push dword ptr [eax+4] 77AED458 mov eax,dword ptr [ebp-78h] 77AED45B push dword ptr [eax] 77AED45D call _RtlReportException@12 (77B0B970h) 77AED462 xor eax,eax 77AED464 ret 77AED465 mov esp,dword ptr [ebp-18h] 77AED468 mov dword ptr [ebp-4],0FFFFFFFEh 77AED46F jmp TpCheckTerminateWorker+44h (77ABD794h) 77AED474 mov ecx,dword ptr [ebp-14h] 77AED477 mov eax,dword ptr [ecx] 77AED479 mov eax,dword ptr [eax] 77AED47B mov dword ptr [ebp-2Ch],eax 77AED47E lea edx,[ebp-24h] 77AED481 call _LdrpInitializeProcessWrapperFilter@8 (77B0417Bh) 77AED486 ret 77AED487 mov esp,dword ptr [ebp-18h] 77AED48A mov esi,dword ptr [ebp-2Ch] 77AED48D mov dword ptr [ebp-1Ch],esi 77AED490 mov dword ptr [ebp-4],0FFFFFFFEh 77AED497 mov edi,dword ptr [ebp-30h] 77AED49A jmp _LdrpInitialize+24A1h (77AACE87h) 77AED49F mov ecx,esi 77AED4A1 call _LdrpInitializationFailure@4 (77B03F7Ch) 77AED4A6 cmp dword ptr [ebp-24h],0 77AED4AA jne string L"\\??\\%C:"+49444h (77AED4B4h) 77AED4AC cmp esi,0C0000017h 77AED4B2 jne string L"\\??\\%C:"+4944Ch (77AED4BCh) 77AED4B4 push esi 77AED4B5 push 0FFFFFFFFh 77AED4B7 call _NtTerminateProcess@8 (77A8C5B0h) 77AED4BC push esi 77AED4BD call _RtlRaiseStatus@4 (77A907A0h) 77AED4C2 mov eax,dword ptr fs:[00000018h] 77AED4C8 test byte ptr [eax+0FCAh],20h 77AED4CF jne LdrShutdownThread+0FFFFFC91h (77A72A01h) 77AED4D5 xor esi,esi 77AED4D7 jmp LdrShutdownThread+0FFFFFDA7h (77A72B17h) 77AED4DC xor esi,esi 77AED4DE mov ebx,dword ptr [ebp-20h] 77AED4E1 mov edi,dword ptr [ebp-1Ch] 77AED4E4 mov eax,dword ptr [ebp-34h] 77AED4E7 mov dword ptr [ebp-24h],eax 77AED4EA jmp LdrShutdownThread+0FFFFFCAAh (77A72A1Ah) 77AED4EF xor esi,esi 77AED4F1 mov ebx,dword ptr [ebp-20h] 77AED4F4 mov edi,dword ptr [ebp-1Ch] 77AED4F7 jmp LdrShutdownThread+4FBF6h (77AC2966h) 77AED4FC xor esi,esi 77AED4FE mov ebx,dword ptr [ebp-20h] 77AED501 mov edi,dword ptr [ebp-1Ch] 77AED504 jmp LdrShutdownThread+0FFFFFCB8h (77A72A28h) 77AED509 mov eax,dword ptr [ebx+10h] 77AED50C mov dword ptr [ebx+10h],esi 77AED50F push eax 77AED510 push esi 77AED511 mov eax,dword ptr fs:[00000030h] 77AED517 push dword ptr [eax+18h] 77AED51A call RtlFreeHeap (77A91BD0h) 77AED51F jmp LdrShutdownThread+0FFFFFDDCh (77A72B4Ch) 77AED524 mov edx,dword ptr ds:[7FFE0330h] 77AED52A mov eax,edx 77AED52C and eax,1Fh 77AED52F push 20h 77AED531 pop ecx 77AED532 sub ecx,eax 77AED534 mov eax,dword ptr [_LdrpCorExeMainRoutine (77B50154h)] 77AED539 ror eax,cl 77AED53B xor eax,edx 77AED53D mov dword ptr [edi+0B0h],eax 77AED543 jmp LdrpInitializeThread+28h (77AB5A35h) 77AED548 mov eax,dword ptr fs:[00000018h] 77AED54E test byte ptr [eax+0FCAh],20h 77AED555 jne LdrpInitializeThread+3Bh (77AB5A48h) 77AED55B jmp LdrpInitializeThread+191h (77AB5B9Eh) 77AED560 cmp esi,0C0000017h 77AED566 jne string L"\\??\\%C:"+49512h (77AED582h) 77AED568 mov dword ptr [ebp-34h],0FFD23940h 77AED56F or dword ptr [ebp-30h],0FFFFFFFFh 77AED573 lea eax,[ebp-34h] 77AED576 push eax 77AED577 push ebx 77AED578 call _NtDelayExecution@8 (77A8C630h) 77AED57D jmp LdrpInitializeThread+43h (77AB5A50h) 77AED582 test esi,esi 77AED584 jns LdrpInitializeThread+53h (77AB5A60h) 77AED58A push esi 77AED58B push 0FFFFFFFFh 77AED58D call _NtTerminateProcess@8 (77A8C5B0h) 77AED592 push esi 77AED593 call _RtlRaiseStatus@4 (77A907A0h) 77AED598 cmp esi,0C0000017h 77AED59E jne string L"\\??\\%C:"+4954Ah (77AED5BAh) 77AED5A0 mov dword ptr [ebp-34h],0FFD23940h 77AED5A7 or dword ptr [ebp-30h],0FFFFFFFFh 77AED5AB lea eax,[ebp-34h] 77AED5AE push eax 77AED5AF push ebx 77AED5B0 call _NtDelayExecution@8 (77A8C630h) 77AED5B5 jmp LdrpInitializeThread+53h (77AB5A60h) 77AED5BA test esi,esi 77AED5BC jns LdrpInitializeThread+62h (77AB5A6Fh) 77AED5C2 jmp string L"\\??\\%C:"+4951Ah (77AED58Ah) 77AED5C4 xor ebx,ebx 77AED5C6 mov esi,dword ptr [ebp-20h] 77AED5C9 jmp LdrpInitializeThread+168h (77AB5B75h) 77AED5CE xor ebx,ebx 77AED5D0 jmp LdrpInitializeThread+1710Ah (77ACCB17h) 77AED5D5 xor ebx,ebx 77AED5D7 jmp LdrpInitializeThread+19Ch (77AB5BA9h) 77AED5DC add esi,4 77AED5DF mov dword ptr [ebp-20h],esi 77AED5E2 test byte ptr [_LdrpDebugFlags (77B52100h)],5 77AED5E9 je string L"\\??\\%C:"+495A1h (77AED611h) 77AED5EB push dword ptr [ebx+18h] 77AED5EE lea eax,[ebx+24h] 77AED5F1 push eax 77AED5F2 push edi 77AED5F3 push offset string "Calling TLS callback %p for DLL "... (77A9C78Ah) 77AED5F8 push 2 77AED5FA push offset string "LdrpCallTlsInitializers" (77A9C7B8h) 77AED5FF push 426h 77AED604 push offset string "minkernel\\ntdll\\ldrtls.c" (77A9C728h) 77AED609 call _LdrpLogDbgPrint (77B01817h) 77AED60E add esp,20h 77AED611 xor al,al 77AED613 je string L"\\??\\%C:"+495A6h (77AED616h) 77AED615 int 3 77AED616 push 0 77AED618 push dword ptr [ebp-1Ch] 77AED61B mov edx,dword ptr [ebx+18h] 77AED61E mov ecx,edi 77AED620 call LdrpCallInitRoutine (77A99615h) 77AED625 jmp LdrpCallTlsInitializers+3Ah (77A6F82Ah) 77AED62A mov ecx,dword ptr [ebp-14h] 77AED62D call _LdrpCalloutExceptionFilter@4 (77B0442Dh) 77AED632 ret 77AED633 mov esp,dword ptr [ebp-18h] 77AED636 jmp LdrpCallTlsInitializers+44h (77A6F834h) 77AED63B mov ecx,dword ptr [eax+4] 77AED63E cmp dword ptr [eax],edx 77AED640 jne string L"\\??\\%C:"+495E9h (77AED659h) 77AED642 test ebx,ebx 77AED644 je string L"\\??\\%C:"+495DBh (77AED64Bh) 77AED646 mov dword ptr [ebx+4],ecx 77AED649 jmp string L"\\??\\%C:"+495E2h (77AED652h) 77AED64B mov dword ptr _LdrpDelayedTlsReclaimTable (77B51FA0h)[esi*8],ecx 77AED652 mov dword ptr [eax+4],edi 77AED655 mov edi,eax 77AED657 mov eax,ebx 77AED659 mov ebx,eax 77AED65B mov eax,ecx 77AED65D test ecx,ecx 77AED65F je LdrpCleanupThreadTlsData+4Eh (77A72CB6h) 77AED665 jmp string L"\\??\\%C:"+495CBh (77AED63Bh) 77AED667 mov esi,dword ptr [edi+4] 77AED66A push edi 77AED66B push 0 77AED66D push ebx 77AED66E call RtlFreeHeap (77A91BD0h) 77AED673 mov edi,esi 77AED675 test esi,esi 77AED677 je LdrpCleanupThreadTlsData+5Eh (77A72CC6h) 77AED67D jmp string L"\\??\\%C:"+495F7h (77AED667h) 77AED67F mov esi,dword ptr [ebp-1Ch] 77AED682 jmp TppPoolRemoveWorker+70h (77A543A1h) 77AED687 mov esi,dword ptr [ebp-1Ch] 77AED68A jmp TppIopFree+69h (77AC9D29h) 77AED68F cmp dword ptr [ebp+8],0 77AED693 jne string L"\\??\\%C:"+49634h (77AED6A4h) 77AED695 mov eax,dword ptr fs:[00000030h] 77AED69B mov eax,dword ptr [eax+0Ch] 77AED69E cmp byte ptr [eax+28h],0 77AED6A2 jne string L"\\??\\%C:"+49639h (77AED6A9h) 77AED6A4 call _TppRaiseInvalidParameter@0 (77B4592Dh) 77AED6A9 xor eax,eax 77AED6AB jmp TppIopValidateIo+40h (77AC9DF7h) 77AED6B0 push dword ptr [esi+8] 77AED6B3 mov eax,dword ptr fs:[00000030h] 77AED6B9 push 0 77AED6BB push dword ptr [eax+18h] 77AED6BE call RtlFreeHeap (77A91BD0h) 77AED6C3 jmp RtlpUninitializeAssemblyStorageMap+31h (77A73D7Dh) 77AED6C8 xor ebx,ebx 77AED6CA xor eax,eax 77AED6CC and dword ptr [ebp-0Ch],ebx 77AED6CF xor edi,edi 77AED6D1 and dword ptr [ebp-8],ebx 77AED6D4 xor esi,esi 77AED6D6 mov dword ptr [ebp-4],eax 77AED6D9 jmp RtlpWnfNotificationThread+3Eh (77A669BEh) 77AED6DE call _RtlpWnfCalculateAndSetNextTimer@0 (77B0FC50h) 77AED6E3 mov eax,dword ptr [ebp-4] 77AED6E6 xor esi,esi 77AED6E8 jmp RtlpWnfNotificationThread+3Eh (77A669BEh) 77AED6ED push 0 77AED6EF lea eax,[ebp-14h] 77AED6F2 push eax 77AED6F3 push dword ptr [ebp+0Ch] 77AED6F6 push dword ptr [ebp+10h] 77AED6F9 call TpSetWaitEx (77AB5F10h) 77AED6FE jmp RtlpWnfNotificationThread+88h (77A66A08h) 77AED703 cmp dword ptr [esp+10h],0 77AED708 jne string L"\\??\\%C:"+496BAh (77AED72Ah) 77AED70A push dword ptr [esi+58h] 77AED70D mov eax,dword ptr fs:[00000030h] 77AED713 push 0 77AED715 push dword ptr [eax+18h] 77AED718 call RtlFreeHeap (77A91BD0h) 77AED71D and dword ptr [esi+58h],0 77AED721 and dword ptr [esi+5Ch],0 77AED725 jmp RtlpWnfProcessCurrentDescriptor+95h (77A5E91Ch) 77AED72A push ebx 77AED72B call _RtlReleaseSRWLockExclusive@4 (77A94360h) 77AED730 mov ebx,80h 77AED735 mov eax,dword ptr ds:[77B5073Ch] 77AED73A add eax,4 77AED73D push eax 77AED73E call RtlReleaseSRWLockShared (77A97FE0h) 77AED743 jmp RtlpWnfProcessCurrentDescriptor+13Dh (77A5E9C4h) 77AED748 cmp dword ptr [esp+10h],0 77AED74D push ebx 77AED74E jne string L"\\??\\%C:"+496BBh (77AED72Bh) 77AED750 mov dword ptr [esi+58h],edi 77AED753 call _RtlReleaseSRWLockExclusive@4 (77A94360h) 77AED758 mov ebx,103h 77AED75D jmp string L"\\??\\%C:"+496C5h (77AED735h) 77AED75F mov edi,dword ptr [esi+58h] 77AED762 lea eax,[esi+28h] 77AED765 and dword ptr [esi+58h],0 77AED769 push eax 77AED76A call _RtlReleaseSRWLockExclusive@4 (77A94360h) 77AED76F jmp RtlpWnfProcessCurrentDescriptor+0BAh (77A5E941h) 77AED774 mov ecx,0C000022Dh 77AED779 cmp ebx,ecx 77AED77B jne RtlpWnfProcessCurrentDescriptor+12Dh (77A5E9B4h) 77AED781 mov ecx,esi 77AED783 mov dword ptr [esi+58h],edi 77AED786 mov dword ptr [esi+5Ch],2 77AED78D call _RtlpWnfCalculateRetryTime@4 (77B0FCF2h) 77AED792 jmp RtlpWnfProcessCurrentDescriptor+12Dh (77A5E9B4h) 77AED797 xor esi,esi 77AED799 lea eax,[edi+8] 77AED79C push esi 77AED79D push esi 77AED79E push ebx 77AED79F push dword ptr [edi+18h] 77AED7A2 push edi 77AED7A3 push eax 77AED7A4 call _NtGetCompleteWnfStateSubscription@24 (77A8D0F0h) 77AED7A9 test ebx,ebx 77AED7AB jne string L"\\??\\%C:"+4974Dh (77AED7BDh) 77AED7AD mov eax,dword ptr fs:[00000030h] 77AED7B3 push edi 77AED7B4 push esi 77AED7B5 push dword ptr [eax+18h] 77AED7B8 call RtlFreeHeap (77A91BD0h) 77AED7BD mov ebx,80h 77AED7C2 jmp RtlpWnfProcessCurrentDescriptor+148h (77A5E9CFh) 77AED7C7 mov eax,dword ptr [esp+0Ch] 77AED7CB push eax 77AED7CC call _RtlReleaseSRWLockExclusive@4 (77A94360h) 77AED7D1 mov eax,dword ptr ds:[77B5073Ch] 77AED7D6 add eax,4 77AED7D9 push eax 77AED7DA call _RtlReleaseSRWLockExclusive@4 (77A94360h) 77AED7DF mov eax,0C0000001h 77AED7E4 jmp RtlpRemoveUserSubFromNameSub+0EDh (77A7544Bh) 77AED7E9 push dword ptr [esi+14h] 77AED7EC mov edx,esi 77AED7EE mov ecx,ebx 77AED7F0 push dword ptr [esi+10h] 77AED7F3 push dword ptr [ebx+24h] 77AED7F6 push dword ptr [ebx+10h] 77AED7F9 push dword ptr [esi+50h] 77AED7FC call _RtlpWnfETWEventUnsubscribe@28 (77B0FF2Ah) 77AED801 jmp RtlpRemoveUserSubFromNameSub+4Ah (77A753A8h) 77AED806 cmp edi,0C0000034h 77AED80C je string L"\\??\\%C:"+497AAh (77AED81Ah) 77AED80E cmp edi,0C0000189h 77AED814 jne RtlpRemoveUserSubFromNameSub+0C6h (77A75424h) 77AED81A xor edi,edi 77AED81C jmp RtlpRemoveUserSubFromNameSub+0C6h (77A75424h) 77AED821 push dword ptr [esi+14h] 77AED824 mov ecx,esi 77AED826 push dword ptr [esi+10h] 77AED829 call _RtlpWnfETWEventNameSubRundown@12 (77B0FDF3h) 77AED82E jmp RtlpDecRefWnfNameSubscription+43h (77A75264h) 77AED833 push dword ptr [esi+58h] 77AED836 mov eax,dword ptr fs:[00000030h] 77AED83C push 0 77AED83E push dword ptr [eax+18h] 77AED841 call RtlFreeHeap (77A91BD0h) 77AED846 jmp RtlpDecRefWnfNameSubscription+7Ah (77A7529Bh) 77AED84B cmp dword ptr [esi+64h],edi 77AED84E jne RtlpWnfWalkUserSubscriptionList+0A3h (77A5E7D6h) 77AED854 jmp RtlpWnfWalkUserSubscriptionList+2B0h (77A5E9E3h) 77AED859 mov eax,dword ptr [ebp-4Ch] 77AED85C cmp eax,dword ptr [esi+4Ch] 77AED85F jg RtlpWnfWalkUserSubscriptionList+2B9h (77A5E9ECh) 77AED865 jl string L"\\??\\%C:"+49803h (77AED873h) 77AED867 mov eax,dword ptr [ebp-50h] 77AED86A cmp eax,dword ptr [esi+48h] 77AED86D jae RtlpWnfWalkUserSubscriptionList+2B9h (77A5E9ECh) 77AED873 mov eax,dword ptr [esi+5Ch] 77AED876 cmp eax,dword ptr [ebx+10h] 77AED879 jb RtlpWnfWalkUserSubscriptionList+2B9h (77A5E9ECh) 77AED87F jmp RtlpWnfWalkUserSubscriptionList+0ACh (77A5E7DFh) 77AED884 cmp dword ptr [esi+34h],edi 77AED887 jne RtlpWnfWalkUserSubscriptionList+393h (77A5EAC6h) 77AED88D cmp dword ptr [ebp-24h],0 77AED891 jge string L"\\??\\%C:"+4982Dh (77AED89Dh) 77AED893 test byte ptr [esi+20h],4 77AED897 jne RtlpWnfWalkUserSubscriptionList+393h (77A5EAC6h) 77AED89D push edi 77AED89E push edi 77AED89F push dword ptr [ebp-44h] 77AED8A2 push dword ptr [ebp-54h] 77AED8A5 push edi 77AED8A6 push dword ptr [ebp-30h] 77AED8A9 push dword ptr [ebp-34h] 77AED8AC mov ecx,dword ptr [ebp-20h] 77AED8AF call dword ptr [___guard_check_icall_fptr (77B541D0h)] 77AED8B5 call dword ptr [ebp-20h] 77AED8B8 mov dword ptr [ebp-24h],edi 77AED8BB mov eax,dword ptr [ebp-38h] 77AED8BE jmp RtlpWnfWalkUserSubscriptionList+393h (77A5EAC6h) 77AED8C3 mov dword ptr [ebp-24h],edi 77AED8C6 push eax 77AED8C7 push dword ptr [ebp-44h] 77AED8CA push dword ptr [ebp-30h] 77AED8CD push dword ptr [ebp-34h] 77AED8D0 mov ecx,dword ptr [ebp-20h] 77AED8D3 call dword ptr [___guard_check_icall_fptr (77B541D0h)] 77AED8D9 call dword ptr [ebp-20h] 77AED8DC mov eax,dword ptr [ebp-38h] 77AED8DF jmp RtlpWnfWalkUserSubscriptionList+39Eh (77A5EAD1h) 77AED8E4 push dword ptr [ebp-30h] 77AED8E7 push dword ptr [ebp-34h] 77AED8EA push dword ptr [ebp-24h] 77AED8ED push eax 77AED8EE push dword ptr [ebp-20h] 77AED8F1 push dword ptr [ebp-28h] 77AED8F4 mov edx,esi 77AED8F6 mov ecx,dword ptr [ebx+10h] 77AED8F9 call _RtlpWnfETWEventCallback@32 (77B0FD6Ah) 77AED8FE jmp RtlpWnfWalkUserSubscriptionList+3ABh (77A5EADEh) 77AED903 xor edi,edi 77AED905 mov ebx,dword ptr [ebp-70h] 77AED908 mov esi,dword ptr [ebp-78h] 77AED90B mov eax,dword ptr [ebp-6Ch] 77AED90E mov dword ptr [ebp-3Ch],eax 77AED911 mov eax,dword ptr [ebp-74h] 77AED914 mov dword ptr [ebp-48h],eax 77AED917 mov ecx,dword ptr [ebp-64h] 77AED91A jmp RtlpWnfWalkUserSubscriptionList+445h (77A5EB78h) 77AED91F mov eax,dword ptr [ebx+10h] 77AED922 sub eax,dword ptr [esi+1Ch] 77AED925 test eax,eax 77AED927 jg RtlpWnfWalkUserSubscriptionList+416h (77A5EB49h) 77AED92D jmp RtlpWnfWalkUserSubscriptionList+41Ch (77A5EB4Fh) 77AED932 mov dword ptr [esi+40h],edi 77AED935 mov dword ptr [esi+54h],edi 77AED938 mov dword ptr [esi+48h],edi 77AED93B mov dword ptr [esi+4Ch],edi 77AED93E mov dword ptr [esi+50h],edi 77AED941 mov dword ptr [esi+5Ch],edi 77AED944 jmp RtlpWnfWalkUserSubscriptionList+42Bh (77A5EB5Eh) 77AED949 test byte ptr [esi+20h],4 77AED94D je RtlpWnfWalkUserSubscriptionList+42Bh (77A5EB5Eh) 77AED953 mov dword ptr [ebp-58h],1 77AED95A push dword ptr [ebx+10h] 77AED95D mov ecx,esi 77AED95F call _RtlpWnfMarkFailure@12 (77B0FFAAh) 77AED964 jmp RtlpWnfWalkUserSubscriptionList+42Bh (77A5EB5Eh) 77AED969 push dword ptr [ebp-8] 77AED96C mov ecx,edi 77AED96E call dword ptr [___guard_check_icall_fptr (77B541D0h)] 77AED974 call edi 77AED976 jmp RtlpDecRefWnfUserSubscription+24h (77A752E9h) 77AED97B sub esi,4 77AED97E jne RtlWaitOnAddress+83h (77A75993h) 77AED984 mov esi,dword ptr [ebp+0Ch] 77AED987 mov ecx,dword ptr [esi+4] 77AED98A mov edx,ecx 77AED98C mov eax,dword ptr [esi] 77AED98E mov ebx,eax 77AED990 lock cmpxchg8b qword ptr [edi] 77AED994 cmp eax,dword ptr [esi] 77AED996 jne RtlWaitOnAddress+83h (77A75993h) 77AED99C cmp edx,dword ptr [esi+4] 77AED99F jmp RtlWaitOnAddress+7Dh (77A7598Dh) 77AED9A4 or ecx,ebx 77AED9A6 lock cmpxchg dword ptr [esi],ecx 77AED9AA cmp eax,edx 77AED9AC je string L"\\??\\%C:"+49948h (77AED9B8h) 77AED9AE mov edx,eax 77AED9B0 test eax,eax 77AED9B2 jne RtlpWaitOnAddressRemoveWaitBlock+2Fh (77A75AE2h) 77AED9B8 lea eax,[edi+14h] 77AED9BB xchg ebx,dword ptr [eax] 77AED9BD cmp ebx,2 77AED9C0 je RtlpWaitOnAddressRemoveWaitBlock+0A8h (77A75B5Bh) 77AED9C6 xor edx,edx 77AED9C8 mov ecx,edi 77AED9CA call RtlpWaitOnAddressWithTimeout (77A5476Bh) 77AED9CF jmp RtlpWaitOnAddressRemoveWaitBlock+0AAh (77A75B5Dh) 77AED9D4 mov dword ptr [esi+8],edi 77AED9D7 test edi,edi 77AED9D9 je string L"\\??\\%C:"+49970h (77AED9E0h) 77AED9DB mov dword ptr [edi+0Ch],esi 77AED9DE jmp string L"\\??\\%C:"+49973h (77AED9E3h) 77AED9E0 mov dword ptr [esi+10h],esi 77AED9E3 mov edx,edi 77AED9E5 mov edi,dword ptr [ebp-8] 77AED9E8 jmp string L"\\??\\%C:"+499A5h (77AEDA15h) 77AED9EA and dword ptr [edi+0Ch],0 77AED9EE mov eax,edi 77AED9F0 mov esi,dword ptr [ebp-14h] 77AED9F3 mov edx,edi 77AED9F5 mov edi,dword ptr [ebp-8] 77AED9F8 mov dword ptr [ebp-0Ch],eax 77AED9FB jmp string L"\\??\\%C:"+499A5h (77AEDA15h) 77AED9FD mov edi,dword ptr [ebp-8] 77AEDA00 mov edx,eax 77AEDA02 and edx,0FFFFFFFCh 77AEDA05 mov ecx,eax 77AEDA07 mov dword ptr [ebp-0Ch],edx 77AEDA0A mov eax,edx 77AEDA0C mov dword ptr [ebp-18h],ecx 77AEDA0F mov esi,dword ptr [edx+0Ch] 77AEDA12 mov dword ptr [ebp-14h],esi 77AEDA15 test edx,edx 77AEDA17 jne RtlpWaitOnAddressRemoveWaitBlock+6Ah (77A75B1Dh) 77AEDA1D cmp byte ptr [ebp-1],dl 77AEDA20 jne string L"\\??\\%C:"+499C5h (77AEDA35h) 77AEDA22 xor ecx,ecx 77AEDA24 lea eax,[edi+14h] 77AEDA27 xchg ecx,dword ptr [eax] 77AEDA29 cmp ecx,2 77AEDA2C je string L"\\??\\%C:"+499C5h (77AEDA35h) 77AEDA2E push edx 77AEDA2F push edi 77AEDA30 call _NtWaitForAlertByThreadId@8 (77A8DDB0h) 77AEDA35 mov ecx,dword ptr [ebp-0Ch] 77AEDA38 mov dword ptr [ecx+10h],esi 77AEDA3B mov ecx,dword ptr [ebp-18h] 77AEDA3E mov esi,dword ptr [ebp-10h] 77AEDA41 test cl,1 77AEDA44 je string L"\\??\\%C:"+499DDh (77AEDA4Dh) 77AEDA46 mov byte ptr [ebp-1],bl 77AEDA49 xor edx,edx 77AEDA4B jmp string L"\\??\\%C:"+499E6h (77AEDA56h) 77AEDA4D mov edx,ecx 77AEDA4F mov byte ptr [ebp-1],0 77AEDA53 and edx,0FFFFFFFCh 77AEDA56 mov eax,ecx 77AEDA58 lock cmpxchg dword ptr [esi],edx 77AEDA5C cmp eax,ecx 77AEDA5E je string L"\\??\\%C:"+499F4h (77AEDA64h) 77AEDA60 mov ecx,eax 77AEDA62 jmp string L"\\??\\%C:"+499D1h (77AEDA41h) 77AEDA64 cmp byte ptr [ebp-1],0 77AEDA68 je RtlpWaitOnAddressRemoveWaitBlock+0A8h (77A75B5Bh) 77AEDA6E push eax 77AEDA6F call _RtlpWaitOnAddressWakeEntireList@4 (77B334B4h) 77AEDA74 jmp RtlpWaitOnAddressRemoveWaitBlock+0A8h (77A75B5Bh) 77AEDA79 mov esi,dword ptr [ebp-1Ch] 77AEDA7C jmp TppAlpcpFree+69h (77ACA9A9h) 77AEDA81 cmp dword ptr [ebp+8],0 77AEDA85 jne string L"\\??\\%C:"+49A26h (77AEDA96h) 77AEDA87 mov eax,dword ptr fs:[00000030h] 77AEDA8D mov eax,dword ptr [eax+0Ch] 77AEDA90 cmp byte ptr [eax+28h],0 77AEDA94 jne string L"\\??\\%C:"+49A2Bh (77AEDA9Bh) 77AEDA96 call _TppRaiseInvalidParameter@0 (77B4592Dh) 77AEDA9B xor eax,eax 77AEDA9D jmp TppAlpcpValidateAlpc+43h (77ACAA82h) 77AEDAA2 mov esi,dword ptr [ebp-1Ch] 77AEDAA5 jmp TppPoolpFree+10Ah (77ACA279h) 77AEDAAA cmp eax,0FFFFFFFFh 77AEDAAD je LdrpUnloadNode+0F3h (77A6EEB4h) 77AEDAB3 cmp eax,0FFFFFFFCh 77AEDAB6 je LdrpUnloadNode+33h (77A6EDF4h) 77AEDABC cmp eax,6 77AEDABF je LdrpUnloadNode+33h (77A6EDF4h) 77AEDAC5 cmp eax,7 77AEDAC8 je LdrpUnloadNode+33h (77A6EDF4h) 77AEDACE jmp LdrpUnloadNode+0F3h (77A6EEB4h) 77AEDAD3 lea eax,[esi+24h] 77AEDAD6 push eax 77AEDAD7 push offset string "Unmapping DLL "%wZ"\n" (77A9C664h) 77AEDADC push 2 77AEDADE push offset string "LdrpUnloadNode" (77A9C67Ah) 77AEDAE3 push 0DB9h 77AEDAE8 push offset string "minkernel\\ntdll\\ldrsnap.c" (77A9C32Ch) 77AEDAED call _LdrpLogDbgPrint (77B01817h) 77AEDAF2 add esp,18h 77AEDAF5 jmp LdrpUnloadNode+0A1h (77A6EE62h) 77AEDAFA xor bl,bl Вот, стёк из программы на C++. Ошибка на строке 77AED4C2  mov         eax,dword ptr fs:[00000018h], просто скопируйте вставьте этот текст в поиск вашего браузера и увидите его в стёке. Как исправить, чтобы программа запустилась.
    • Проверяй генерацию гетеродина и остальные узлы.
    • Если на окладе бодаться можно. Еще и приколы снимать. Когда был магазин и работали барышни продавцами,столкнулся с неизвестным явлением. Заходит *умный* покупатель и начинает ипать моск девченке мол какая мощность у центра (или усилителя,не столь важно) пиковая-музыкальная и почему вы не знаете как продавец. Обяяяяязаны Ну научил девок меня звать. Далее поперли,уважаемый покупатель (мегамозг,он же писюн газированный ) Особо ужатым ставил условия объясню подробней если повторите что говорил полторы минуты назад. Ни один краш тест не прошел. Что самое характерное никто из этой категории убогих на память в жизни ничего не купил. А мозг пытались играть,категория людей такая существует,кайф испытывают
    • У меня сбоку на моторах стоят Д703.   • Параметры цепи постоянного тока:
         - напряжение, В ……… 15 …30
         - коммутируемый ток при при активной нагрузке, А ……… 0,2 ...10
         - коммутируемый ток при индуктивной нагрузке, А ……… 0,2 …5
      • Падение напряжения на выводах, мВ, не более ……… 260
      • Износостойкость, число переключений ……… 30000
      • Относительная влажность окружающей среды, % ……… до 98
      • Рабочая температура окружающей среды, оС ……… -60 …+60
      • Общий гарантийный срок, лет ……… 8
      • Масса, г, не более ……… 9