Официальный сайт компании Arduino по адресу arduino.cc
Ассемблер и среда разработки Arduino
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Вс, 30/12/2012 - 16:45
Господа, возник такой ламерский вопрос. можно ли в скетч вставлять куски ассемблерного кода? к примеру, если есть желание поковыряться с АЦП или еще каким узлом контроллера. если возможноть работы с регистрами напрямую есть в скетчах, то где покурить подробный мануал?
если возможноть работы с регистрами напрямую есть в скетчах, то где покурить подробный мануал?
http://www.atmel.com/Images/doc8161.pdf
спасибо, даташитом на мою мегу 1280 владею, и кое-какой опыт работы в avr studio тоже есть. Вопрос заключается в том, можно ли в теле С/С++ скетча вставлять куски ассемблерного кода? собсно, мануал нужен на более подробное описание языка ардуино, так как список функций, представленный на сайте неполон. к примеру, обратные тригонометрические функции здесь не описаны.
Можно
спасибо, надо попробовать
а как ассемблеру передать ссылку на массив?
писать можно на чистом асме без всяких извращений с кавычками и подчёркиваниями,просто код..
http://robocraft.ru/blog/981.html
ответ не заставил себя ждать многим более 2-х лет )))
ответ не заставил себя ждать многим более 2-х лет )))
Медаль нашла своего героя )))
Помогите сделать ассемблерную вставку: определить блок 512байт, затем на ассемблере байт АЦП в 1ю и так 512 раз, выскочить. Можно так? Это для пультоскопа.
Курсовики тут не делают.
Помогите сделать ассемблерную вставку: определить блок 512байт, затем на ассемблере байт АЦП в 1ю и так 512 раз, выскочить. Можно так? Это для пультоскопа.
Можно, я разрешаю.
значит сделаешь!
значит сделаешь!
Странная логика. Он разрешает.
Вот ты у учителя спрашиваешь: "Можно выйти?", и он разрешает. Ты думаешь, что курить в сортире он тоже сам будет или ты? ;))
Как вариант... Напиши это на ардуино, посмотри код ассемблера и отдай преподу . Google подскажет как посмотреть листинг кода ардуиновского в асме.
Нету препода...
Могли бы деду и помочь, а не хихикать...
Вставка на ассемблере для родного АЦП не даёт преимущества ...
Как без боли писать на ассемблере в arduino IDE
http://robocraft.ru/blog/981.html
https://embedderslife.wordpress.com/2012/02/19/avr-gcc-asm-and-c/
Нисмотря на то что автор по первой ссылке в названии написал какую-то дичь, статья именно про лучший способ писать на ассемблере в этой среде. Смысл в том что надо создать отдельный файл и писать в нем и затем вызывать по мере надобности.
Могли бы деду и помочь, а не хихикать...
Если ты знаешь ассемблер AVR, то вот, пользуйся без головняков
http://arduino.ru/forum/otvlechennye-temy/znaete-li-vy-shto-assembler-arduino-ide
Помогите сделать ассемблерную вставку: определить блок 512байт, затем на ассемблере байт АЦП в 1ю и так 512 раз, выскочить. Можно так? Это для пультоскопа.
Для ускорения пультоскопа нужно менять МК на 32-битный :). Ассемблер иногда конечно нужен, но не в данном случае. Смотрим:
Опрос АЦП из скетча пультоскопа на СИ:
Дизассемблируем этот код с помощью avr-objdump, справа мои комментарии
Получаем ассемблерный код практически без излишеств. Т.е. если переписать тот фрагмент на голом ассемблере то выигрыша не будет совсем.
А если 512 раз написать: читать АЦП, писать в ячейку буфера, модифицировать адрес - так моно? Интересно, ск тактов надо АЦП для преобразования?
АЦП медленный (даже на самой высокой скорости) и нет разницы на каком языке писать программу !
uldin@mail.ru, как уже сказал командир - слабое звено тут АЦП, а не алгоритм. Пока АЦП тужится что-б выдать свой очередной семпл -МК за это время успевает отстрочить полсотни тактов. Алгоритм любой медлительности успеет положить взятый ранее байт в буфер, вернуться, и крутиться дальше в цикле ожидая флага готовности. Так что если хочется быстрее - вперёд осваивать ARM :)
Внук помог - написал расчет в массив и загрузка на комп. Осталось быстро-быстро заполнить массив из АЦП в 8266, передать по WiFi на Андроид и получить пультоскоп))
uldin@mail.ru http://arduino.ru/forum/proekty/virtualnyi-ostsillograf
float привести к int, а потом запихать во write()? За какой ассемблер тут речь вообще?
Подпрограмма AddMeasuring() не нужна, Короче и проще
а кто проверит, поддерживает ли компилятор, RAW формат ввода ?
с11 уже включена была такая возможность.
а кто проверит, поддерживает ли компилятор, RAW формат ввода ?
А сам? Если компилятор не заругался- значит поддерживает.
у меня небыло возможности
Проверил, работает.
но имена портов не понимает PORTB PINB и т.д. . Такие конструкции: ldi r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0) - тоже не понимает возможно еще потому что формат assembler'a стоит по умолчанию AT&T а не intel. Надо как-то ключ компилятору отправить и попробовать.
Но это уже лучше чем через запятую все писать. Однако отдельным файлом еще лучше подключать.
Но это уже лучше чем через запятую все писать.
Это о чем Вы ?
Чем это лучше, чем:
asm volatile(
"ldi r16,0x03 \n\t"
"out 0x05,r16 \n\t"
"out 0x04,r17 \n\t"
)
Это о чем Вы ?
Чем это лучше, чем:
asm volatile(
"ldi r16,0x03 \n\t"
"out 0x05,r16 \n\t"
"out 0x04,r17 \n\t"
)
Ты дурак или прикидываешся ? По-моему даже дарак видит разницу,а ты не увидел...
Между твоим венегретом с какой-то левой х-той
asm
volatile(
"ldi r16,0x03 \n\t"
"out 0x05,r16 \n\t"
"ldi r16,0x03 \n\t"
)
и предложенным RAW форматом, безо всякой твоей х.еты с лишними символами в коде в каждой строчке.
Дурака вы каждое утро видите в зеркале !!!
Значит хуже дурака...
Только дураки не знают как пользоваться именами портов и пинов !
difine сделаны только для того что бы быстро переназначить порты/выводы
\n\t вставляются только для того, что бы в листинге было красиво.
Круто! Вот только ардуины не вижу в последнем сообщении. Может быть можно хоть один ардуиновский оператор вставить? А то как то совсем не по теме форума получается. В отвлечённые темы больше просится.
Могу весь скетч вставить, если интересно ... (Пишем в два i2c девайса на любых пинах под камень 16Мгц с полностью выдержанными интервалами в посылках). В качестве i2c - дисплей SSD1306 128x64.
Только дураки не знают как пользоваться именами портов и пинов !
Так это же Серёжа Селево! Хочет всё и сразу.) Он безобидный парень, только ругается иногда.)))
и предложенным RAW форматом, безо всякой твоей х.еты с лишними символами в коде в каждой строчке.
Ну так покажите нам как в вашей не х.ете (и она не моя, а разработана GCC для не скудоумных) обращаться к переменным, константам, ..., ... ?
Ты оказывается не только глуп но еще и ленив, тут два раза давали ссылки на статьи в которых описано как происходит взаимодействие Си-ассемблер в функциях и переменных
Ну вы же подняли тему RAW формата, а он про inline вставки на ассемблере. Чего завиляли то сразу ??? Нет сил/ума освоить несколько страниц - https://web.stanford.edu/class/ee281/projects/aut2002/yingzong-mouse/media/GCCAVRInlAsmCB.pdf