Только ЗАСАДА - она и осталась Куча переключений банков ОЗУ, из-за которых, если нужно написать ЧЁТКИЙ-ТОЧНЫЙ тайминг - то не получиться нужны вставки на АСМ.
"Чёткий-точный" тайминг на Си и без банков не получится. А писать тогда лучше всё на АСМе.
Да ладно вставки, память читать всё равно нет возможности, да и как она появится, если прямой доступ к памяти - это регистры TBLPTRx и TABLAT, а это уже серия пик18.
Чушь изволите писать, милейший... В не самых старых PIC16 и PIC12 с адреса 0x2000 отображено ЛИНЕЙНОЕ пространство ОЗУ, а с адреса 0x8000 младшие байты флеша. Табличный доступ к флешу имеется во всех не самых старых PIC12/PIC16.
Да и 14-ти битный адрес к памяти флешь - это тоже "энтузязизма" не добавляет ... когда старший адрес может быть только до 0x3F ... Вот поэтому, и нет смысла читать старший адрес программной памяти
Это тупой бред. Ты бездарно путаешь РАЗРЯДНОСТЬ флеша, с размером флеша. Разрядность адреса определяется размером флеша. И только. Так происходит во всех без исключениях контроллерах и процессорах любой разрядности и любого производителя. Возьми любой ARM - там тоже самое. Более того, 32-разрядный адрес перекрывает все пространство ФРАГМЕНТАМИ. То есть доступная память находится на определенных участках полного диапазона адресов. Читать старший неполный байт флеша есть прямой резон тогда, когда табличные значения требуются выше 8 разрядов, но ниже 15. Под размерность 14 разрядов всегда можно подогнать коэффициенты фильтров, например.
В моём понятии - мелкий, это частота не более 8-ми МИпс, памячти почти НОЛЬ, но есть несколько аппаратных модулей, которые можно использовать, к примеру, для связи с иммо от WV Ну можно ещё взять м/с типа DS1307, DS1338, MCP7941x и сделать добротные часики - прицепить ещё солнечную панель, аккум типа 16850, и можно сказать - почти на всю жизнь Главное - правильно программу написать, чтобы аккум не всё время заряжался, а по мере необходимости.
Есть куча внешне простых задач, которые используют ресурсы МК на 100%. Например, DDS в программной реализации для МК в котором нет модуля NCO. Таким образом, можно на 8-ногом МК генерировать синус-ШИМ с линейной сеткой частот в 0,1 Гц.
А что? здесь есть файлообменник, который вкурит от 700 МГбайт и выше ? Чёт я сумневаюсь А кто хочет, тот и нерасшаренный скачает
Что такого ты хочешь поведать миру с объемом в 700 метров? Кому нахер сдались твои поделия? Научись излагать свои мысли лаконично и сопровождать их примерами УЧАСТКОВ кода в тегах code. Твои программные портянки тут никому не нужны.
Только ЗАСАДА - она и осталась :) Куча переключений банков ОЗУ, из-за которых, если нужно написать ЧЁТКИЙ-ТОЧНЫЙ тайминг - то не получиться :( нужны вставки на АСМ.
"Чёткий-точный" тайминг на Си и без банков не получится. А писать тогда лучше всё на АСМе.
Да ладно вставки, память читать всё равно нет возможности, да и как она появится, если прямой доступ к памяти - это регистры TBLPTRx и TABLAT, а это уже серия пик18.
Чушь изволите писать, милейший... В не самых старых PIC16 и PIC12 с адреса 0x2000 отображено ЛИНЕЙНОЕ пространство ОЗУ, а с адреса 0x8000 младшие байты флеша. Табличный доступ к флешу имеется во всех не самых старых PIC12/PIC16.
Да и 14-ти битный адрес к памяти флешь - это тоже "энтузязизма" не добавляет ... когда старший адрес может быть только до 0x3F ... Вот поэтому, и нет смысла читать старший адрес программной памяти
:facepalm: Это тупой бред. Ты бездарно путаешь РАЗРЯДНОСТЬ флеша, с размером флеша. Разрядность адреса определяется размером флеша. И только. Так происходит во всех без исключениях контроллерах и процессорах любой разрядности и любого производителя. Возьми любой ARM - там тоже самое. Более того, 32-разрядный адрес перекрывает все пространство ФРАГМЕНТАМИ. То есть доступная память находится на определенных участках полного диапазона адресов. Читать старший неполный байт флеша есть прямой резон тогда, когда табличные значения требуются выше 8 разрядов, но ниже 15. Под размерность 14 разрядов всегда можно подогнать коэффициенты фильтров, например.
В моём понятии - мелкий, это частота не более 8-ми МИпс, памячти почти НОЛЬ, но есть несколько аппаратных модулей, которые можно использовать, к примеру, для связи с иммо от WV :) Ну можно ещё взять м/с типа DS1307, DS1338, MCP7941x и сделать добротные часики - прицепить ещё солнечную панель, аккум типа 16850, и можно сказать - почти на всю жизнь Главное - правильно программу написать, чтобы аккум не всё время заряжался, а по мере необходимости.
Есть куча внешне простых задач, которые используют ресурсы МК на 100%. Например, DDS в программной реализации для МК в котором нет модуля NCO. Таким образом, можно на 8-ногом МК генерировать синус-ШИМ с линейной сеткой частот в 0,1 Гц.
А что? здесь есть файлообменник, который вкурит от 700 МГбайт и выше ? Чёт я сумневаюсь А кто хочет, тот и нерасшаренный скачает
Что такого ты хочешь поведать миру с объемом в 700 метров? :))) :))) :))) Кому нахер сдались твои поделия? Научись излагать свои мысли лаконично и сопровождать их примерами УЧАСТКОВ кода в тегах code. Твои программные портянки тут никому не нужны.
Завтра кину Вам файл, где будет работа с тем-же простым 1602, где разница в работе между асм и си будет ЯВНО очевидна. И вы её не сможете исправить, кроме как через АСМ :)
Добавлено after 29 minutes 4 seconds: Знаете ребята ... :) Есть такое понятие - кто-то что-то делает, а кто-то отсасыв*ет и плывёт как гов*о по течению форума :) Так вот когда вы меня минусуете ( :) ), то не забывайте - что ВЫ себя минусуете :) Вы же ЛОХИ, а вами ведуют ДВА так-сяк знающих .... но они для вас ЭТАЛОН - типа ведущие для быдло :) А не пытались своё мнение и прошивки писать, и возразить этим ? А в идеале - просто не посещать этот форум - он через год сам загнётся :)
Завтра кину Вам файл, где будет работа с тем-же простым 1602, где разница в работе между асм и си будет ЯВНО очевидна. И вы её не сможете исправить, кроме как через АСМ
Твое "эпохальное" достижение состоит в том, что ты отказался от установки банка в функции и сделал ее использование зависимым от контекста. Ничего более тупого ты не мог изобразить?
Тут ни одного "заведующего'" этим форумом не появлялось. Все, кто тут тебе отвечал, реагировали лишь на содержание твоих сообщений. Измени содержание ( и форму, кстати, тоже) и все будет пучком. Твои глупости универсальны и не зависят от коллектива. Поэтому на любом форуме тебя постигнет идентичная судьба.
Тут ни одного "заведующего'" этим форумом не появлялось. Все, кто тут тебе отвечал, реагировали лишь на содержание твоих сообщений. Измени содержание ( и форму, кстати, тоже) и все будет пучком. Твои глупости универсальны и не зависят от коллектива. Поэтому на любом форуме тебя постигнет идентичная судьба.
Ну тогда ответь на свои-же цитаты от "Чт сен 28, 2023 22:10:38", только не голословно, а с примерами, желательно и на СИ и на АСМ Можно ЧИСТЫМ исходником, а можно и скринами
По поводу "постигнет идентичная судьба" ну если попадутся аналогичные тебе, то да А если люди умеют оценивать - то, что написано, и соответствует или нет реальному коду, то вопросов не должно возникнуть
А я не любитель сидеть на форумах, и кому-то что-то доказывать Достаточно скрина, чтобы чел аналогичное проверил у себя в прошивке, и сказал - правда или пиз*ёж Кстати, жду -когда покажешь - можно чисто на СИ работать без лишних команд (пик16, пик18), или это ЧИСТО ВЫПЁНДРЁЖЬ перед участниками форума ? А я пишу от пик10 до пик32, сейчас в наличии лежит модуль "PIC32-HMZ144", купленный может года два-три назад в официальном chipdip.by .. ну поморгал светодиодом (не тем, который в оригинальном комплекте идёт в качестве примера, а совим), ну пока больше применить негде, а вот PIC32MX120F032B-I/ML, которые купил до СВО в том-же chipdip.by по доллару за штуку (больше 20-ти) - уже использовал в поворотниках для авто (для линейки WS281х) - вот те работают
Ну тогда ответь на свои-же цитаты от "Чт сен 28, 2023 22:10:38", только не голословно, а с примерами, желательно и на СИ и на АСМ Можно ЧИСТЫМ исходником, а можно и скринами
Ты предлагаешь мне показать ТВОИ скрины? Душевный ты наш, ты сам в состоянии посмотреть на собственный код и убедиться в том, что в твоих ASM-вставках отсутствует выбор банка при ногодрыге стробом. Что ты еще желаешь увидеть? Ты тупо сделал детскую ошибку. Причем тут мой код и мои скрины? То есть, если перед вызовом функции строба по каким либо причинам банк будет отличен от нулевого, то твой код будет фуфлом и никакого строба на выходе не будет. Однако, я канешна понимаю, что ты вызываешь строб исключительно после вывода в линии данных и банк по любому будет нулевым. Но тогда ответь мне на простой вопрос. Напуркуа ты вообще выделил строб в отдельную функцию? Если ты такой "экономист" в машинных циклах и негодуешь по поводу двух лишних инструкций сгенерированных компилятором, то нахера ты, такой весь умный и шоколадный, создал ЧЕТЫРЕ машинных цикла вызова функции и выхода из нее (по две на каждую инструкцию), вместо того, что бы логично написать этот строб прямо в функции вывода данных? И что мы имеем в результате? А имеем мы только твою пустопорожнюю болтовню и бахвальство. И это я не упомянул, что все твои извращения с циклами нах ни кому не облокотились, ибо в инициализации не бывает критического кода. Ну и если ты любишь минимализм, - пиши на чистом АСМе. У меня, например, почти все проекты на продукции Микрочипа написаны на АСМе. Без Си. Включая проекты на dsPIC33, включая двухядерные dsPIC33. Вот тогда ты будешь истинным пацаком в красных штанах...
Достаточно скрина, чтобы чел аналогичное проверил у себя в прошивке, и сказал - .... это ЧИСТО ВЫПЁНДРЁЖЬ перед участниками форума ?
И это чистая правда. Единственной причиной твоей местной болтовни является ТВОЙ ВЫПЕНДРЕЖ. Причем безграмотный. И к этому список твоих "достижений" в ПИКах никакого отношения не имеет. Ибо есть все основания полагать, что в них понатыканы аналогичные глупости. И не важно работает твой быдлокод или нет. Его проблема в том, что в нем разбросаны ошибки, которые всплывут, как только потребуется отклониться от твоего кода, взяв лишь фрагмент.
Последний раз редактировалось КРАМ Пт сен 29, 2023 12:17:39, всего редактировалось 1 раз.
Лень искать видео, где есть все режимы для авто: повороты, габариты, тормоза, проблесковые маячки, несколько сигналов "Police". В проект я их не вложил, а в Россию точно отправлял как наглядное пособие. В архиве, пару вариантов видео, и первая плата https://disk.yandex.ru/d/mGWBbRtD2oFL-w
PS: я никогда не говорю о том, что не проверил лично
Ещё раз повторюсь - на пик16 НИЧЕГО вменяемого не напишешь под современные нужды. А вот как КРАМ может обходить уловки от СИ и писать практически как на АСМ - мы скоро узнаем ... ну он же не бросает слов на ветер ?!? он покажет ....
я тебе предлагаю показать СВОЙ СИ код, и потом его дизассемблировать
С какой целью? Ты вообще отдаешь себе отчет в том, что ты предлагаешь незнакомому тебе ВЕСЬМА ЗАНЯТОМУ человеку проделать ряд действий, смысл которых ему не ясен? Но если ты жаждешь что либо увидеть, то я не жадный:
удивительно, а я вот не могу Си сразу дизассемблировать странно, пациент всех обозвал, но продолжает тут быть и что-то ещё требует с обещанием бесед капслоком... осень - она такая.
... а вот PIC32MX120F032B-I/ML, которые купил до СВО в том-же chipdip.by по доллару за штуку (больше 20-ти) - уже использовал в поворотниках для авто (для линейки WS281х) - вот те работают
Я конечно дико извиняюсь, а в чём сакральный смысл применения 32-х разрядного процессора в реле поворотов ? Спрашиваю так, с интереса.
я тебе предлагаю показать СВОЙ СИ код, и потом его дизассемблировать
С какой целью? Ты вообще отдаешь себе отчет в том, что ты предлагаешь незнакомому тебе ВЕСЬМА ЗАНЯТОМУ человеку проделать ряд действий, смысл которых ему не ясен? Но если ты жаждешь что либо увидеть, то я не жадный:
// ну будем считать, что "resADC" перевёл в значение "uint24_t" - ну добавил 8 нулевых бит, и что???? "gainTempSens" я во первых - не вижу - какого "разрешения" :) ну и дальше - некие непонятные: деления/умножения/прибавления/ и т.д....
Ты хотя-бы приведи значения того говна, которое используешь :)
т.е. ты произвёл КУЧУ бесполезных ПОДВЫПЕНДРОСОВ, чтобы в конце запустить ОДНОКРАТНОЕ измерение :) :) :) и даже не проверить - прочитал ты АЦП или НЕТ????
// некрасиво написал, так даже двоечники не пишут: resADC=(uint16_t)(ADRESL + ADRESH<<8);
:facepalm: представляю, что же за говно в тех огромных портянках на нерасшареных ресурсах....
Я так понимаю - у Вас есть более красивый код :) А иначе - Вы бы тут не светились :) дык покажите :) А я посмотрю ...
Добавлено after 18 minutes 52 seconds: Для тех, ктоне знает пик и его файл "C:\Program Files\Microchip\xc8\ и т.д. - там есть описание - что и за чем .... А вот что там у тебя нерасшарено - это нужно смотреть :)
if(!flag.tempSensReady) return; // ну тут понятно - некие флаги, которые ты назначил flag.tempSensReady=0;
Код рассчитан на людей, которые хотя бы чуть-чуть знают английский язык. Ну и не совсем нубов в программировании. Абисняю. АЦП работает с прерываниями. И в обработчике прерываний от АЦП взводится флаг готовности данных. А представленная функция вызывается в главном цикле в порядке очередности. И первое что она делает, проверяет оный флаг. Если он не взведен, то немедленно выходит из функции. Из кода очевидно, что есть глобально объявленная структура flag, у которой есть элемент tempSensReady. Имя этого элемента как бы намекает на то, что он отражает готовность данных температурного сенсора, который имеется в применяемом контроллере. Бесплатный попутный совет. Не нужно писать комментарии там, где сам код может рассказать о себе достаточно для его понимания. Для этого код должен быть правильно написан, конечно...
resADC=(uint16_t)ADRESL+((uint16_t)ADRESH<<8); // некрасиво написал, так даже двоечники не пишут: resADC=(uint16_t)(ADRESL + ADRESH<<8);
То, что ты не знаком с Си от слова совсем уже давно всем очевидно. Но разберем все таки твои глупости. Предложенный тобою код:
Цитата:
resADC=(uint16_t)(ADRESL + ADRESH<<8);
дословно будет выполнять следующее. Содержимое восьмибитного регистра ADRESH будет сдвинуто влево на восемь бит и результат этого сдвига будет очевидно равен НУЛЮ. То есть ты присвоил 16-битной локальной resADC значение только восьми младших бит 12-разрядного АЦП. 4 старших разряда пошли лесом.
// ну будем считать, что "resADC" перевёл в значение "uint24_t" - ну добавил 8 нулевых бит, и что???? "gainTempSens" я во первых - не вижу - какого "разрешения" ну и дальше - некие непонятные: деления/умножения/прибавления/ и т.д....
Ты хотя-бы приведи значения того говна, которое используешь
Ты просил привести не полный код, а фрагмент некоего кода с его дизасмом, чтобы что то там продемонстрировать. И для этого совершенно не требуется знать смысл приведенных арифметических выражений и значения используемых в них глобальных переменных. Хотя из названия этих неизвестных тебе переменных очевидно их назначение. gainTempSens - это множитель к результату преобразования температурного сенсора. offsetTempSens - это смещение результата преобразования температурного сенсора. Обе этих переменных получают свои значения при инициализации МК посредством чтения из специальной нестираемой области флеша, куда производителем МК занесены калибровочные параметры температурного сенсора. Кстати, эти калибровочные параметры имеют созвучные применяемым переменным названия в даташите. Оба этих значения однобайтные для целочисленных вычислений. Непонятая тобой формула так же приведена в даташите. Правда в традиционной алгебраической форме без учета разрядности применяемых величин. Но пользователь должен уметь программировать на Си, чтобы результат вычислений был достоверен. Совершенно очевидно, что произведение 16-битной переменной с 8-битной В ОБЩЕМ СЛУЧАЕ даст 24-бита результата. Если явно не привести один из сомножителей к 24 битам, то результатом будет переполнение. Но у тебя очевидно отсутствуют даже начальные знания Си, поэтому ты продолжаешь нас смешить своими глупостями.
т.е. ты произвёл КУЧУ бесполезных ПОДВЫПЕНДРОСОВ, чтобы в конце запустить ОДНОКРАТНОЕ измерение и даже не проверить - прочитал ты АЦП или НЕТ????
Вообще то ADRESH и ADRESL и есть регистры результата АЦП. Что мне надо проверять в функции, если я беру из них значения в самом начале? ЗЫ. Дурачок, тебе не надоел твой позор? И что ты там хотел сказать про ASM на основе моего дизасма? Или ты уже об этом забыл?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения