может я где-то пропустил твой АСМ, но если честно, то я его не видел
"Мой ASM" в приведенном коде не требуется. Ты просил не "мой ASM", а дизасм моего Си кода, чтобы продемонстрировать преимущество ASM вставок против чистого Cи.
Из чего следует, что компилятор поместил resADC по адресам 0x47 и 0x48. Далее следует:
Код:
resADC=(uint16_t)(ADRESL+ADRESH<<8);
bsf STATUS, RP0 movf ADRESH, W ; читаем в W старший байт АЦП bcf STATUS, RP0 addwf ADRESL, W ; суммируем с W младший байт АЦП movwf 0x45 ; выгружаем сумму в адрес 0x45 clrf 0x46 ; очищаем содержимое по адресу 0x46 rlf 0x46, F ; сдвигаем по кольцу влево на один бит это содержимое movwf 0x48 ; выгружаем результат в старший байт resADC clrf resADC ; очищаем младший байт resADC
Более идиотский код даже трудно себе представить... Результат всегда равен НУЛЮ.
ЗЫ. Как быстро и нативно загрузить в Си результат АЦП в пару регистров 16-битной переменной я знаю. Только в этом коде скорость такого рода вообще не нужна. Читается код - этого достаточно.
может я где-то пропустил твой АСМ, но если честно, то я его не видел :)
"Мой ASM" в приведенном коде не требуется. Ты просил не "мой ASM", а дизасм моего Си кода, чтобы продемонстрировать преимущество ASM вставок против чистого Cи.
Из чего следует, что компилятор поместил resADC по адресам 0x47 и 0x48. Далее следует:
Код:
resADC=(uint16_t)(ADRESL+ADRESH<<8);
bsf STATUS, RP0 movf ADRESH, W ; читаем в W старший байт АЦП bcf STATUS, RP0 addwf ADRESL, W ; суммируем с W младший байт АЦП movwf 0x45 ; выгружаем сумму в адрес 0x45 clrf 0x46 ; очищаем содержимое по адресу 0x46 rlf 0x46, F ; сдвигаем по кольцу влево на один бит это содержимое movwf 0x48 ; выгружаем результат в старший байт resADC clrf resADC ; очищаем младший байт resADC
Более идиотский код даже трудно себе представить... Результат всегда равен НУЛЮ. :music:
ЗЫ. Как быстро и нативно загрузить в Си результат АЦП в пару регистров 16-битной переменной я знаю. Только в этом коде скорость такого рода вообще не нужна. Читается код - этого достаточно. :tea:
А ты не путай ПИСЮ с пальцем :) Если хочешь результат в ХСхх, то нужно не просто значение (константу) ввести, а нужно - чтобы те файлы работали :) Я могу перевести любой свой ХСхх в режим "1" - ДЕМО, 30 процентов моего кода (прошивок) не влезет в проц, а то что влезет - будет КРУТО ТОРМОЗИТЬ ! (для пик 12/16/18) :)
Так что ты хочешь ? Ехать или шашечки ?
?? А ты сомневаешься в том, что МОЙ код не те данные выдаст :)?
Если хочешь результат в ХСхх, то нужно не просто значение (константу) ввести, а нужно - чтобы те файлы работали
У меня работают, а у тебя нет. Ты это чуть выше продемонстрировал. Кстати, у меня дизасм выше анализируемого присвоения resADC значения АЦП выглядит так (я ранее приводил, но ты не умеешь раскрывать спойлер):
Я могу перевести любой свой ХСхх в режим "1" - ДЕМО, 30 процентов моего кода (прошивок) не влезет в проц, а то что влезет - будет КРУТО ТОРМОЗИТЬ ! (для пик 12/16/18)
Поток сознания. Комментировать нечего. Если у тебя не влазит прошивка - пиши на чистом АСМе или смени чип.
[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4485914#p4485914"]Если хочешь результат в ХСхх, то нужно не просто значение (константу) ввести, а нужно - чтобы те файлы работали :)
У меня работают, а у тебя нет. Ты это чуть выше продемонстрировал. Кстати, у меня дизасм выше анализируемого присвоения resADC значения АЦП выглядит так (я ранее приводил, но ты не умеешь раскрывать спойлер): - ВОТ меня прикалывают дебилы, которые в бессознанке - чужие комменты правят как свои :) ЧТО? мама писю не давала пососать в детстве ? :)
Кстати, судя по твоему коду: 586E C54B MOVFF 0x54B, 0x5D2 ты работаешь на пик18, а разговор то был -> идёт про пик16 :) Что? Опять "дурочка повисла, и не даёт думать" :)
ты работаешь на пик18, а разговор то был -> идёт про пик16
Разговор идет про ЛЮБОЙ восьмиразрядный ПИК. Патамушта тут обсуждается Си код, которому по барабану какой контроллер. Я, например, месяц назад перевел изделие, в котором используется приведенный мною код, на AT32F421. Изменились только драйверы периферии. Остальной код я просто скопипастил в новый проект. На всё про всё ушло три рабочих дня. А все потому, что код переносим и не использует всякую заточенную под платформу хрень. Что касается PIC10...PIC16, то для них код на Си писать практически бессмысленно. Поэтому для них я пишу на чистом АСМе. Получается компактно и быстро. И не требует ломанного XC8. Но всё это не имеет значения против той лютой пурги, которую ты тут несешь. С тобой обсуждать что либо серьезное не имеет смысла. Ты тотально безграмотен. А еще есть ощущение, что и тотально туп. Патамушта не в состоянии осилить движок форума в части тегов кода. Зачем то цитируешь полную портянку предыдущего сообщения, вместо того, чтобы вырезать и фрагментировать текст по существу своих сообщений. Вот и предыдущий свой эпистолок переврал по полной...
ты работаешь на пик18, а разговор то был -> идёт про пик16
Разговор идет про ЛЮБОЙ восьмиразрядный ПИК. Патамушта тут обсуждается Си код, которому по барабану какой контроллер. Я, например, месяц назад перевел изделие, в котором используется приведенный мною код, на AT32F421. Изменились только драйверы периферии. Остальной код я просто скопипастил в новый проект. На всё про всё ушло три рабочих дня. А все потому, что код переносим и не использует всякую заточенную под платформу хрень. Что касается PIC10...PIC16, то для них код на Си писать практически бессмысленно. Поэтому для них я пишу на чистом АСМе. Получается компактно и быстро. И не требует ломанного XC8.
А вот тут ты ошибаешься, "патамушта" пик16 даже рядом не стоял с пик18 А если прыгнуть ещё выше, то понимаешь - что это совсем не пик18 А если ещё выше ... то отстой, типа стм32 - вообще - не имеет не своей нормальной оболочки для разработки, не имеет ВМЕМЯЕМЫХ даташитов, да и вообще - на него прыгают люди - у которых просто нет денег на нормальный проц
Но это так ... показалось Я не собираюсь очередную войну развязывать по поводу - какой проц круче
/* Разговор идет про ЛЮБОЙ восьмиразрядный ПИК. Патамушта тут обсуждается Си код, которому по барабану какой контроллер. Я, например, месяц назад перевел изделие, в котором используется приведенный мною код, на AT32F421. Изменились только драйверы периферии. Остальной код я просто скопипастил в новый проект. На всё про всё ушло три рабочих дня. А все потому, что код переносим и не использует всякую заточенную под платформу хрень. */
Да ну!!!! ? Правда? Т.е, таймеры, осциллятор, ШИМ - - одинаковый? А ты просто перенёс проект ? Знаешь, ты тут конечно на форуме можешь пиздунца влево-вправо/по кругу погонять, но мне-то не пиз*ди
А если ещё выше ... то отстой, типа стм32 - вообще - не имеет не своей нормальной оболочки для разработки, не имеет ВМЕМЯЕМЫХ даташитов, да и вообще - на него прыгают люди - у которых просто нет денег на нормальный проц
Ты реально идиот. Среди STM32 есть чипы с ценой в пару десятков баксов в опте. "Оболочек для разработки" любых ARM-ов вагон и маленькая тележка. Я, например, работаю в Keil. Меня все устраивает. А более всего устраивает то, что при переходе с STM32 на AT32 мне вообще не пришлось ничего менять. Та же среда разработки, только немного другой комплект файлов периферии. По поводу даташитов STM32. А ты в курсе, что документация на STM32 состоит из ТРЕХ документов? Даташит, рефмануал и эррата. Так же точно, как и у PIC24/dsPIC33, PIC32. Но я практически уверен, что ты просто не в состоянии осилить большие объемы англоязычной документации, поэтому жалуешься на нее.
Да ну!!!! ? Правда? Т.е, таймеры, осциллятор, ШИМ - - одинаковый? А ты просто перенёс проект ?
А ты в курсе что такое "драйверы периферии"? Драйверы периферии - это прослойка кода, которая делает НЕЗАВИСИМЫМ основной код от периферии. В этом случае переписать нужно только те самые таймеры-ШИМы-УАРТы и т.п., а обработка данных не изменяется вообще. Но для этого код должен быть правильно структурирован и не содержать всякой лютой пурги, которую ты тут нам демонстрируешь.
А если ещё выше ... то отстой, типа стм32 - вообще - не имеет не своей нормальной оболочки для разработки, не имеет ВМЕМЯЕМЫХ даташитов, да и вообще - на него прыгают люди - у которых просто нет денег на нормальный проц
Ты реально идиот. Среди STM32 есть чипы с ценой в пару десятков баксов в опте. "Оболочек для разработки" любых ARM-ов вагон и маленькая тележка. Я, например, работаю в Keil. Меня все устраивает. А более всего устраивает то, что при переходе с STM32 на AT32 мне вообще не пришлось ничего менять. Та же среда разработки, только немного другой комплект файлов периферии. По поводу даташитов STM32. А ты в курсе, что документация на STM32 состоит из ТРЕХ документов? Даташит, рефмануал и эррата. Так же точно, как и у PIC24/dsPIC33, PIC32. Но я практически уверен, что ты просто не в состоянии осилить большие объемы англоязычной документации, поэтому жалуешься на нее.
Аааа . . я понял, это у меня практически пожизненная гарантия, а у тебя как трусы у бабы - недельки
Одно, да не одно ЯДРО У первых нет прямого доступа к памяти (с чего и начался этот разговор), второе ядро уже полноценное в плане доступа к FLASH.
А выше прыгнуть - это пик24/dsPIC33 - там камни, что твой стм нервно курит в сторонке А вообще - много у тебя проектов на стм? Я просто интересуюсь, никаких войн И на сколько ДОЛГО они работают? Не те, что дома тикают как часики А те, которые потом просто в мусор, и меняешь на пики ?
Одно, да не одно ЯДРО У первых нет прямого доступа к памяти (с чего и начался этот разговор), второе ядро уже полноценное в плане доступа к FLASH.
Может стоит применять не самые древние ПИКи? 1. DMA не относится к ядру. Это периферийный контроллер управления шиной памяти. 2. Доступ к флешу тоже не относится к ядру. 3. Ядро - это АЛУ и сверхоперативная память. АЛУ у PIC18 и PIC16 практически идентично. Открой даташиты в разделе CPU и сам сравни.
А выше прыгнуть - это пик24/dsPIC33 - там камни, что твой стм нервно курит в сторонке А вообще - много у тебя проектов на стм?
1. У меня проектов СЕРИЙНЫХ изделий на СТМ32 - три штуки. Зато проектов на AT32 - восемь. 2. Проектов на dsPIC33 примерно полсотни (точно считать лень), на PIC24 - примерно пару десятков, на PIC18 - десятка три. 3. На PIC10...PIC16 я затруднюсь сказать. Наверное тоже около полусотни. И все это только серийные изделия, либо малосерийные для технологических нужд производства и сервисного обслуживания серийных изделий в эксплуатации. Для дома у меня почти нет времени что либо делать. Года три назад переделал сыну бьюти-холодильник на Пельтье. Там работает PIC16F1614. Сейчас переделываю проект HF RFID ридера с ATmega165 на AT32F421. Но только что начал. Прежде всего требуется переписать код на АСМе для ATmega165 в удобоваримый вид, чтобы его скормить MPLABX без ошибок. А то автор кода писал его в AVR studio с кучей варнингов. Мне удобнее работать с PICkit4 и потому атмеловская студия мне неудобна.
Ты реально больной на всю голову. Я не модератор и у меня нет прав менять твои сообщения. Все свои сообщения ты меняешь сам. Если бы это сделал модератор, то ты бы уже давно сидел в бане. Тебя уже сажали туда за избыточное цитирование.
НЕ, я всё понимаю Я только не понимаю - зачем ты тут так выёживаешься - меняя мои сообщения
Ты реально больной на всю голову. Я не модератор и у меня нет прав менять твои сообщения. Все твои сообщения ты меняешь сам. Если бы это сделал модератор, то ты бы уже давно сидел в бане. Тебя уже сажали туда за избыточное цитирование.
Знаешь ... есть такая старая русская пословица:
два брата акробата
Окончание сами найдёте в нете А я прошу "безмозглых" просто вернуть назад (в первоначальном виде) мои сообщения
Одно, да не одно ЯДРО :) У первых нет прямого доступа к памяти (с чего и начался этот разговор), второе ядро уже полноценное в плане доступа к FLASH.
Может стоит применять не самые древние ПИКи? 1. DMA не относится к ядру. Это периферийный контроллер управления шиной памяти. 2. Доступ к флешу тоже не относится к ядру. 3. Ядро - это АЛУ и сверхоперативная память. АЛУ у PIC18 и PIC16 практически идентично. Открой даташиты в разделе CPU и сам сравни.
А выше прыгнуть - это пик24/dsPIC33 - там камни, что твой стм нервно курит в сторонке :) А вообще - много у тебя проектов на стм?
1. У меня проектов СЕРИЙНЫХ изделий на СТМ32 - три штуки. Зато проектов на AT32 - восемь. 2. Проектов на dsPIC33 примерно полсотни (точно считать лень), на PIC24 - примерно пару десятков, на PIC18 - десятка три. 3. На PIC10...PIC16 я затруднюсь сказать. Наверное тоже около полусотни. И все это только серийные изделия, либо малосерийные для технологических нужд производства и сервисного обслуживания серийных изделий в эксплуатации. Для дома у меня почти нет времени что либо делать. Года три назад переделал сыну бьюти-холодильник на Пельтье. Там работает PIC16F1614. Сейчас переделываю проект HF RFID ридера с ATmega165 на AT32F421. Но только что начал. Прежде всего требуется переписать код на АСМе для ATmega165 в удобоваримый вид, чтобы его скормить MPLABX без ошибок. А то автор кода писал его в AVR studio с кучей варнингов. Мне удобнее работать с PICkit4 и потому атмеловская студия мне неудобна.
Написал много и красиво :) Особенно понравилось про Пельтье :) Звучит красиво, выглядит как обычный нвагреватель :) Ну разве что четыре транзистора, и один ШИМ :) Можно пик12 использовать, но у БМВ - аж целый техас инструментс пинов на 140 - может больше :) А работает - через ЖО.. ну короче - ОЧЕНЬ херово (в седалищах и спинках кресел ) :) По поводу: resADC=(uint16_t)ADRESL+((uint16_t)ADRESH<<8); https://disk.yandex.ru/d/LyHl-w0dXYWwQg Извините, не тот архив первоначально кинул....
я трохи пиздунца заправил (забыл поставить скобки, признаю), но зато по поводу разницы между пик16 и 18 - могу честно заявить - хоть компилятор и один (хс8), но работает по разному :) И пик18 точно выходит на заявленные 16 МИПС, пик16 на свои 5 МИПС не выходит. А кто не верит, пусть в майне ногодрыг устроит. Я правда пик16 никогда и не разгонял, пик18 разгонял до 25 МИПС, остальные пики (выше) ВСЕГДА разгоняю - чтобы знать - что могут :)
я трохи пиздунца заправил (забыл поставить скобки, признаю)
Со скобками тоже фуфло. Старший байт равен нулю. Собственно и разбирать АСМ не требуется. На Си написано фуфло. Компилятор просто его отработал. Учи Си и пребудет с тобой Сила... ЗЫ. Еще раз для туго соображающих. Код должен быть переносим. Поэтому форма чтения регистров должна быть универсальна.
зато по поводу разницы между пик16 и 18 - могу честно заявить - хоть компилятор и один (хс8), но работает по разному
Ну и что? Ясен перец, что если система команд отличается, то результат компиляции будет другим. Общность архитектуры не означает идентичность системы команд. Однако бОльшая часть набора инструкций идентична. Отличается лишь способ адресации.
И пик18 точно выходит на заявленные 16 МИПС, пик16 на свои 5 МИПС не выходит. А кто не верит, пусть в майне ногодрыг устроит.
Очередная эпичная глупость. Какое отношение ногодрыг имеет к МИПСам? Есть куча архитектур, включая новейшие dsPIC33E и dsPIC33C (я уже не говорю про ARM-ы), где скорость портов ниже скорости ядра. В (М)ИПСах измеряют скорость исполнения инструкций (IPS - instructions per second), а не скорость портов. Впрочем, у 10-х...16-х скорость вывода равна МИПСам. Просто нужно уметь программировать. Напиши две инструкции подряд bsf-bcf и получишь импульс длительностью в 1 инструкцию.
Особенно понравилось про Пельтье Звучит красиво, выглядит как обычный нвагреватель Ну разве что четыре транзистора, и один ШИМ
Вот китайцы изначально так и сделали. В результате получился релейный режим и Пельтье приказал долго жить через три дня после первого включения холодильника. Ты что нибудь слышал о PID-регуляторах?
я трохи пиздунца заправил (забыл поставить скобки, признаю)
Со скобками тоже фуфло. Старший байт равен нулю. Собственно и разбирать АСМ не требуется. На Си написано фуфло. Компилятор просто его отработал. Учи Си и пребудет с тобой Сила... ЗЫ. Еще раз для туго соображающих. Код должен быть переносим. Поэтому форма чтения регистров должна быть универсальна.
зато по поводу разницы между пик16 и 18 - могу честно заявить - хоть компилятор и один (хс8), но работает по разному
Ну и что? Ясен перец, что если система команд отличается, то результат компиляции будет другим. Общность архитектуры не означает идентичность системы команд. Однако бОльшая часть набора инструкций идентична. Отличается лишь способ адресации.
И пик18 точно выходит на заявленные 16 МИПС, пик16 на свои 5 МИПС не выходит. А кто не верит, пусть в майне ногодрыг устроит.
Очередная эпичная глупость. Какое отношение ногодрыг имеет к МИПСам? Есть куча архитектур, включая новейшие dsPIC33E и dsPIC33C (я уже не говорю про ARM-ы), где скорость портов ниже скорости ядра. В (М)ИПСах измеряют скорость исполнения инструкций (IPS - instructions per second), а не скорость портов. Впрочем, у 10-х...16-х скорость вывода равна МИПСам. Просто нужно уметь программировать. Напиши две инструкции подряд bsf-bcf и получишь импульс длительностью в 1 инструкцию.
Особенно понравилось про Пельтье Звучит красиво, выглядит как обычный нвагреватель Ну разве что четыре транзистора, и один ШИМ
Вот китайцы изначально так и сделали. В результате получился релейный режим и Пельтье приказал долго жить через три дня после первого включения холодильника. Ты что нибудь слышал о PID-регуляторах?
Добавлено after 3 minutes 39 seconds: Вот интересно Я писал .... А то что ты писал, и только что я видел - это ЧТО БЫЛО?
Сучка ты наёмная Вместо того, чтобы людям показывать - что работает, а что нет - ты бегаешь, и подгавкиваешь. Ты САМ -то СВОЁ мнение имеешь, или как та БЫБЫЗЯНА ????
Я работаю на частоте 5 МИПС, каждая команда - это 200 нс, в первом случае - я хочу задержку 200 нс, во втором - не хочу ВООБЩЕ задержки. Напиши код, и выложи АСМ!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения