Перейти к содержанию

Фуоз-676 (Продолжение)


Рекомендуемые сообщения

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

Как это нету, пункт 2.3 этому посвящен.

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

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

только что посмотрел указанный пункт ничего там нет(говорится только о какомто документе АN556?(кстате слововыражение блок там тоже присутствует... Я не могу сам это просматреть пошагово-я не владею МПЛАБ(он у меня даже не установлен),а то бы наверное проверил,,,,,можно и в Протэусе поглядеть как будет,но и этого у меня нет(да и вряд ли он сможет понять эти специфические тонкости)

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

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Всем добрый вечер!!!

Я из рядов изучающих програмирование, предлагаю ещё рассматривать процесс получения и обработки данных для формирования УОЗ.

Думаю начинающим это поможет. Тоесть, при наборе п/п и складывании их в кучу, можно ничего не получить, поэтому при разборе обьяснять, почему при получении данных из таблиц

данные необходимо умножить, затем сложить или вычесть и т.е. перенос физических величин в коэфециенты. И ещё расположение подпрограмм по времени выполнения.

все эти умножить сложить или вычесть никак не относятся к способу получения данных из таблиц,это уже обработка полученных данных,т.е. это алгоритм,кратко это так:основное время(до 90%) программа нахотится в маленьком куске "измерения" --измеряется периуд вх.сигнала состоящий из времени" 0"и"1"уровней вх.сигнала .Померяли отдельными счётчиками длительности 1 и длительности 0 после этого суммируем их(вот вам и суммирование)и получаем что мы измерили полный ПЕРИУД-это то что нам надо так как он жестко связан с оборотами определённой формулой.ВСЁ основной цикл работы проги закончен и теперь наступает обработка всего этого хлама которая занимает мало времени(но занимает много кода в программе). Периуд который мы получили есть 2хбайтовое число -напрямую с ним мы работать не можем поэтому мы из 16ти разрядного числа делаем 8ми разрядное путём отброса старшего полубайта старшего разрядя и младшего полубайта младшего разряда(это всё умные слова .а на самом деле это есть деление 16ти разрядного числа на16!!!). поделив периуд на 16 мы получили число-называем его N_STROKI. теперь делается процедура которую мы сейчас разбираем (извлечения табл.значений)..........

для понятия всего этого надо представлять как делается УОЗ...На самом деле делается не опережение,а делается ЗАдержка(опережения сделать невозможно т.к. машина времени ещё не изобретена).ОПЕРЕЖЕНИЕ ТОЛЬКО ВЫЧИСЛЯЕТСЯ и вот согласно этим вычислениям в таблицах лежат некие 8миразрядные числа забитые туда... вот эти то числа -назовём их поправками и позволяют нам (после того как мы их оттуда вытащим согласно имеющимуся у нас номеру строки(или оборотам)сформировать такую задержку относительно момента ПРЕДЫДУЩИЙ искры которая относительно текущего периуда и будет являться опережением... В итоге имеем ЗАДЕРЖКА(а она косвенно и является опережением)=ДЛИТЕЛЬНОСТЬ ПЕРИУДА---ПОПРАВКА(из таблиц-вот вам и вычутание).... вот основной принцып проги,всё остальное(дад ,ОК и т. д.--это уже"ДОВЕСКИ"к основной программе......это я бегло описал(не знаю только понятно это или нет)1/10 часть того что надо...рекомендую тем кто хочет понять принцып заложенный в программе сначало почитать Архипова из Радиоежегодника-там принцып почти такойже,но другая элементная база(там используются микросхемы памяти где всё это забито)

Изменено пользователем syma1961
Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Как понял я:

В момент появления 1 запускается счетчик и меряет длительно до появления 0 - > 1 переменная

Далее измеряется длительность 0 - > 2 переменная

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

post-164574-0-55124600-1356628898.jpg

Поправляйте...

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

...я не владею МПЛАБ(он у меня даже не установлен),а то бы наверное проверил,,,,,можно и в Протэусе поглядеть как будет,но и этого у меня нет(да и вряд ли он сможет понять эти специфические тонкости)

Чесслово, настало время обзавестись этими програмными продуктами - даже не представляешь, на сколько облегчишь себе жизнь. Кстати, протеус в состоянии и эти тонкости показать и понять. Я по "проту" проверяю сколько времени РЕАЛЬНОГО занимают те или иные процедуры.

Чисто дружеский совет.


 

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

гдето так,только магниты здесь не обязательно,всё аналогично меряется хоть от прерывателя хоть от ДХ.. Сам понимаю что надо,но я как то привык уже работать чисто сХЕКСАМИ(уже в голове отложились коды команд и при этом хорошо "набивается рука"(остаётся только "морду набить ...и жизнь можно сказать удалась" ) :clapping:

Изменено пользователем syma1961
Ссылка на комментарий
Поделиться на другие сайты

Alexan, извиняюсь что не коментирую приведённый рисунок - процесс подсчёта периода чуть-чуть иной. Опишу его попозже.

Сейчас хочу ответить на вопрос по чтению таблиц и команд прямого перехода на большие адресА памяти программ.

Пораскинув мозгами, почитав доку на МК (676 - аглицкая, 675 - наша, свободночитаемая речь), в частности пункт 2.3 для 675-го МК. Имеем два вида адресации:

1). Прямая адресация, когда команды CALL или GOTO имеют либо метку перехода (как в моём тексте), либо прямой адрес формата GOTO 0х02Е4 (например). Так вот, по этой команде в PCL записывается мл/байт адреса перехода (Е4), а в ст/байт адреса (PCН) вписывается соответственно 02. И прога идёт туда, куда ей указали без дополнительных намёков.

Этот способ применён в основных подпрограммах замеров, расчётов, исполнения желаний.

2). Косвенная адресация или вычисляемый переход. Когда в PCН (посредством PCLATH) мы вставляем номер блока памяти (0, 1, 2, 3 и т/д), а в PCL посредством команды ADDWF PCL,F приращение к текущему значению PCL некоего "сдвига" (в нашем случае - "номер строки"). Следующая за ADDWF PCL,F операция будет выполнена не та что идёт за ней непосредственно, а с заданным "сдвигом".

Кстати, попробовал "заремировать" в проге команду INCF PCLATH,F и прога "пошла совсем не туда".

Есть мысль по поводу разширения области "охвата" УОЗ. Мысль не моя. Ею со мной поделился уважаемый CherepVM (Владимир) - мой Большой Друг и Учитель. Тогда я его советом не воспользовался, а сделал по-своему. В модернизации ФУОЗ можно попробовать применить его совет.

Как известно, УОЗ по оборотам описывается одним байтом - "верхний график". На малых оборотах максимального числа в 255 для одного байта маловато, Автором было применено дополнительное прибавление чисел 50 или 85 к основному опережению.

А что если взять за основу "нижний график" (нагрузочный,для которого УОЗ нужен поменьше), а к нему прибавлять поправку на вакуумкоррекцию? Естественно, изменив алгоритм расчёта. Тогда сначала считываем "нижний график", а к нему прибавляем ВК. Чем меньше нагрузка на пихло, тем больше прибавляем УОЗ(в соответствии со второй таблицей).

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


 

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

я давно уже рассматриваю такой вариант( вспомните о том что я писал тогда утверждая что проги Донека неверные) т.к. он есть подобие тому что есть в классической системе с трамблёром.нижний график основной.а верхний в зависимости от нагрузки...запас на повышение угла там большой и не надо никакого доп. вычетания(всё это только дополнительная погрешность).Для этого надо то только сначало опустить верхний график до нижнего и вместо вычетания из поправки по оборотам поправки по дад сделать сложение.ну и возможно придется менять код в программе обработки ДАДа,а по поводу PCLATH обьяснения так внятного так и нет-программа табличных вычислений не является косвееной-зто одна из разновидности условного перехода с задействованием стека для хранеия в нём адреса возврата после этой программы и нет разницы будет записана метка с названием XYZ или с адресом --при компиляции получится всё равно код вида 1820-где 18 это адрес 1ой таблицы,а 20 -это код команды САЛЛ для 1оц страницы (так ипридётся придерживаться такого варианта применения увеличения его...--видно тут есть какие то специфические особенности мало где описанные.)

Изменено пользователем syma1961
Ссылка на комментарий
Поделиться на другие сайты

IGO61

Все верно, если мы городим электронный аналог совершенного (идеального) трамблера, то и его прототипом должен быть ЦР+ВК.

Эта идея уже давно летает в воздухе ... (в головах у многих).

Но в данном случае вторая таблица должна описывать именно работу ВК/ДАДа (зависимость угла от разряжения).

P.S. А может все-таки начать с самого начала ..., например с блока-схемы, описывающего алгоритм работы всей проги,

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

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

2 магнита (S+N) на шкиве + 2 ДХ (SS449) + ФУОЗ_675 + ДАД (MPX5100AP) + 2-х кан. коммутатор от IGO61 + "голая" 4-х стволка (СТАТИКА)

Когда есть ЖЕЛАНИЕ, ищут ВОЗМОЖНОСТИ, когда его НЕТ, ищут ПРИЧИНЫ ...

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

по поводу PCLATH обьяснения внятного так и нет-программа табличных вычислений не является косвееной-зто одна из разновидности условного перехода с задействованием стека для хранеия в нём адреса возврата

Тогда я пасс в объяснении происходящего. Читаем доку до полного просветления. Обращение к таблицам есть самая наикосвенная адресация, самый что ни есть наивычисляемый переход. Стек используется только для возврата из подпрограммы. Есть некоторые програмные уловки чтоб надурить стек, но сдесь они не применяются.


 

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

в том то идело,что дока отправляет для обьяснения этого к некоему документу AN556 от МикроЧип(которого я например так и не нашёл-есть даже несколько форумов по аналогичному разъяснению сути этого хитрого замысла) вот выдержка из Самоучителя (стр30)принципе, при составлении программ, можно вообще не применять команду CALL, а

пользоваться только командой GOTO как по своему прямому назначению, так и заменяя ей

команду CALL.

Обе эти команды, "стратегически", осуществляют переход по одному и тому же принципу

(типа "куда захочу, туда и перейду"), но есть "тактические" отличия.

Команда GOTO "гуляет сама по себе" (стек не задействован), а команда CALL - только в

"связке" с командой возврата RETURN или RETLW.

Изменено пользователем syma1961
Ссылка на комментарий
Поделиться на другие сайты

А теперь гониво!!!

Пока перекуривал, в голову пришла аналогия с рогаткой.

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

AN556 - это апноут №0556 от "Микрочип" с более полным толкованием некоторых положений даташитов или каких-то иных функций. Поищите на оф. сайте Микрочипа.

У меня есть АN526, расписывающий математику - скачал с оф. сайта.

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


 

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

если там инглишь,то я пас(я арабский лучше знаю).Пусть лучше всё останется так(только принимать это надо при составлении аналогичных сценариях

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

IGO61

Все верно, если мы городим электронный аналог совершенного (идеального) трамблера, то и его прототипом должен быть ЦР+ВК.

Эта идея уже давно летает в воздухе ... (в головах у многих).

Но в данном случае вторая таблица должна описывать именно работу ВК/ДАДа (зависимость угла от разряжения).

P.S. А может все-таки начать с самого начала ..., например с блока-схемы, описывающего алгоритм работы всей проги,

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

Серёга, да я хочу внести поправки в уже имеющуюся программу с огромным желанием улучшить её работу. В проге останется ДВА графика, ориентированных на обороты и вакуумкоррекцию. Но блок-схем я составлять не буду. Мне структура проги и так понятна. С её работой я почти разобрался. Программа-оригинал довольно стабильная - не надо мешать ей работать. Нужно подправить лишь некоторые её участки. Для глобальных перемен нужно составлять прогу с нуля.

если там инглишь,то я пас(я арабский лучше знаю)

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

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


 

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

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

Изменено пользователем syma1961
Ссылка на комментарий
Поделиться на другие сайты

Всё это слова. Я тоже родился 1961 году и вырос в одной большой и сильной стране. Но жизнь заставила переучиваться. Жрать захочешь - ложку найдёшь. Так меня учили. И спасибо моим учителям, жёстким, но справедливым!


 

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

IGO61

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

Тут уже есть желающие, и досконально разобраться в ее работе, и переписать на СИ, и написать с НУЛЯ, и ...

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

2 магнита (S+N) на шкиве + 2 ДХ (SS449) + ФУОЗ_675 + ДАД (MPX5100AP) + 2-х кан. коммутатор от IGO61 + "голая" 4-х стволка (СТАТИКА)

Когда есть ЖЕЛАНИЕ, ищут ВОЗМОЖНОСТИ, когда его НЕТ, ищут ПРИЧИНЫ ...

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

IGO61

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

Тут уже есть желающие, и досконально разобраться в ее работе, и переписать на СИ, и написать с НУЛЯ, и ...

Да да и еще раз да!, хочу переписать на Си убив двух зайцев:

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

2)Изучить С - это даст освобождение памяти нашего мозга: Приведу пример. Выбор значения из таблицы УОЗ мы разбираем уже несколько строк а как бы это выглядело на Си (все образно):

const CON_R[4]={ //таблица по оборотам

0x00,

0x08, // b'00001000' d'008'

0x10, // b'00010000' d'016'

0x1D} // b'00011101' d'029'

const CON_W[5]={ //таблица по вакууму

0x00,

0x06, // b'00000110' d'006'

0x06, // b'00000110' d'006'

0x06, // b'00000110' d'006'

0x07} // b'00000111' d'007'

OPEREJENIE = CON_R[N_ST]; //читать в табл опер по оборотам

VAKUM = CON_W[N_ST]; //читать в табл опер по оборотам

UOZ = OPEREJENIE + VAKUM;

Сложность у меня именно в измерении периода и свободного времени? Вот объяснили бы хоть примерно как происходит измерение саму соль..... :help:

И еще процесс компиляции Си -> Асемблер ->Машинный код. Можно просмотреть файл Ассемлера...

Изменено пользователем Alexan
Ссылка на комментарий
Поделиться на другие сайты

Помогите здесь. В начале проги

...

CALL LADR_0x03FF

MOVWF OSCCAL

...

;================================================

Org 0x03FF

LADR_0x03FF

RETLW 0xC0 ;калибровка (условная)

;================================================

записываем значение 0xC0 в регистр OSCCAL(коррекция частоты МК)?

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

IGO61, хоть у меня миниФУОЗ и сделана по принципу b523pc, но теперь Я понял, что не совсем. Смысл в том, что у меня УОЗ можно задать без ограничения на любых оборотах. Распиши как производится отработка УОЗ (взяли значение из таблицы, и, что с ним делаем и далее делаем до момента искры), Я посмотрю, если мой алгоритм можно приспособить, то распишу его.

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

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

Alexan, donec, вот это уже предметный разговор, спасибо. К сожалению, сегодня довольно напряжённый день по работе. Появится свободное время ближе к вечеру. Основные положения программы я и хотел сегодня озвучить, Вы меня опередили. Буду догонять. :thank_you2:

Честно говоря, надоело флудить в теме, по нескольку раз объяснять так как понимаю происходящие процессы сам (мне их никто не разжёвывал) и выслушивать упрёки в непонятном обяснении или "прятании туза в рукаве".

Вечером попробую обрисовать структуру программы с картинками.


 

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

Помогите здесь. В начале проги

...

CALL LADR_0x03FF

MOVWF OSCCAL

...

;================================================

Org 0x03FF

LADR_0x03FF

RETLW 0xC0 ;калибровка (условная)

;================================================

записываем значение 0xC0 в регистр OSCCAL(коррекция частоты МК)?

процедура эта очень простая допустим она будет записана по другому(как выдаёт это ИСПРОГ приассемблировании :)

CALL lab_0003

BSF STATUS .RPO

MOVWF 0x10

ТАК вот это означает калибровку тактового генератора(по командам :1я--Делай метка 003.если вы глянете эту метку то это есть последняя ячейка памяти программ-где лежит коианда типа С034. мы перешли по САЛЛ сюда.эта команда С034 означает RETLW 0xC0----это есть возврат из подпрограммы с загрузкой в рабочий режим константы С0 которая является числом калибровки тактового генератора... И так мы взяли из последней ячейки калибровку и возвращаемся назад в программу на команду следующую за командой САЛЛ!!!! что мы делаем дальше--для нормальной работы нам надо записать константу которую мы "вытащили"из последней ячейки (сейчас она лежит в рабочем) в некий регистр 0х10(он же OSCCAL),а поскольку этот регистр находится в банке памяти программ 1,мы переходим сначало в этот банк(BSF STATUS ,RPO) и копируем содержимое рабочего регистра(или аккамулятора)в регистр калибровки OSCALL(MOVWF 0x10) .Таким макаром мы выполнили калибровку

Изменено пользователем syma1961
Ссылка на комментарий
Поделиться на другие сайты

Вот эта часть? Проверяем пришли ли мы с начало проги ?

F_load

MOVF PCLATH,W;проверка ст/б счётчика команд

SUBLW 0x03 ;макс значение (на больше 3)

BTFSS STATUS,C;если >3 - ошибка

GOTO START ;и переход в начало проги

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

это не что иное как защита программы от глюка и означает она следующее: производится сравнение ст.р. програмного счётчика(а он отбражается через регистр PCLATH),с константой 03. Если содержимое указанного регистра больше яисла 03.то мы идём на перезапуск МК,т.к. это сбой!!!! Почему именно 03? Дело в том что 13разрядный програмный счётчик способен нам обеспечить 8кбайт памяти,но у нас в этом МК физически реализовано только 1кбайт---это есть 4страницы или блока по 256 шт в каждом ...4 это будет 00,01,02и 03. То есть всего програмный счётчик должен принимать только эти 4 значения,а способен и больше----именно поэтому идёт сравнение с числом 03!!!!

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

Интересно для чего от этого защищаться? Если в PCLATH производится запись только программой, так не записывать значение выше 3. Или в PCLATH не только программа может запись производить?

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

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...