Jump to content

На чем писать  

560 members have voted

  1. 1. Что чаще используете в разработках?

    • Assembler
      156
    • C
      282
    • Что-то еще
      61


Recommended Posts

Лорд вот тут ты не прав!!

А асм пишутся аббалденные приложения. Ты просто не видел, это настоящии шедевры!

Share this post


Link to post
Share on other sites

Решил я на днях написать программку под attiny2313 (2 кбайта). Начал писать и отлаживать на C и с удивлением обнаружил, что не достигнув и половины первоначальной задумки, код превысил все 2 кбайта. Тогда я попробовал переписать её частично на ассемблере, и обнаружил, что переписанные функции "сдулись" по объёму в 10-15 раз! А чтобы не быть голословным, приведу пример:

C (244 байта):

void fillDisplay(unsigned char s) {
 int i;
 for(i = 0; i < 8; i++) {
display[i] = s;
 }
}

ASM (12 байтов):

.global	   fillDisplay
fillDisplay:  ldi r26,(display)
		  ldi r16, 8
loop1:		st X+, r24
		  dec r16
		  brne loop1
		  ret

Share this post


Link to post
Share on other sites

Конденсаторы Panasonic. Часть 4. Полимеры – номенклатура

В заключительной, четвертой статье из цикла «Конденсаторы Panasonic» рассматриваются основные достоинства и особенности использования конденсаторов этого японского производителя на основе полимерной технологии. Главной конструктивной особенностью таких конденсаторов является полимерный материал, используемый в качестве проводящего слоя. Полимер обеспечивает конденсаторам высокую электрическую проводимость и пониженное эквивалентное сопротивление (ESR). Номинальная емкость и ESR отличается в данном случае высокой стабильностью во всем рабочем диапазоне температур. А повышенная емкость при низком ESR идеальна для решения задач шумоподавления и ограничения токовых паразитных импульсов в широком частотном диапазоне.

Читать статью

Начал писать и отлаживать на C и с удивлением обнаружил, что не достигнув и половины первоначальной задумки, код превысил все 2 кбайта. Тогда я попробовал переписать её частично на ассемблере, и обнаружил, что переписанные функции "сдулись" по объёму в 10-15 раз!

а оптимизация на каком была уровне настроена?

Share this post


Link to post
Share on other sites

Обнаружил, что на -O0 :) Переставил на -Os, код уменьшился почти в два раза. Гораздо лучше, но до ассемблера всё равно далековато... Или можно ещё что-то сделать?

Кстати, как можно посмотреть ассемблерный код, получающийся после компиляции с C? (работаю в AVR Studio 4 + WinAVR)

Edited by Tesla

Share this post


Link to post
Share on other sites
                     

STM32G0 - средства противодействия угрозам безопасности

Результатом выполнения требований безопасности всегда является усложнение разрабатываемой системы. Особенно чувствительными эти расходы стали теперь, в процессе массового внедрения IoT. Обладая мощным набором инструментов информационной безопасности, микроконтроллеры STM32G0 производства STMicroelectronics, объединив в себе невысокую цену, энергоэффективность и расширенный арсенал встроенных аппаратных инструментов, способны обеспечить полную безопасность разрабатываемого устройства.

Подробнее...

Стеб насчет Билдера не уместен!!!Идея кстати сказать очень даже хорошая!А насчет "на русском писать"- было такое но очень давно...Попытка сделать язык не на инглише, а на русском.И кое какие предприятия тогда еще СССР Это даже реализовали...Правда не как ЯВУ а какой то интерфейс программный.Так что все новое - это хорошо забытое старое!

Билдер надо дорабатывать.Это очевидно.Но то, что по наглядности текста программы как такового он круче любого другого отладчика - это факт! Хотя бы потому-что практически приближен к принципиальным основам построения алгоритмов.А точнее это и есть по сути сам алгоритм!Можно конечно многое еще улучшить - и разработчики эти пожелания учитывают!Представляется мне что недалек тот день когда и Си и что нибудь еще будет о-о-о-чень похоже на Билдер...Только команды не Ассемблерные а от другого языка.Точнее их мнемоника...

Share this post


Link to post
Share on other sites

Я пишу на Асемблере. Прошивка намного меньшего размера. А С я терпеть не могу. Я считаю что на Асемблере писать намного проще. Также пробовал писать на Algoritm Builder немного легче чем на Асме. но я пишу всеравно на Асме.

Share this post


Link to post
Share on other sites

ASM преобладает (51, немного знаком и с AVR). Тому своя специфика - работаю в основном с "управлялками". Хотя для работы с текстовым интерфейсом (скажем, работа с модемами), не говоря уже о вычислениях - ЯВУ куда удобнее. Последний "проект выходного дня" пишу в Кейле ;)

Share this post


Link to post
Share on other sites

Хе-хеее... Господа! Вообще-то, рулит паскаль.. да нет его нормального для микроконтроллеров. Что же касается ассемблера - знать его необходимо. Знание камня приходит с изучения ассемблера.

Share this post


Link to post
Share on other sites

Доброго времени всем!!!

Лично я пишу на Си для PIC. Но втоже время знаю и АСМ для пиков, MCS-51, c языком для авр ознакомился. Если надо вставляю асемблерную ставку (но как правило этого я не делаю). По поводу того, что програмисты "зажрались" - ответ бред. Если мне надо перенести девайс на другой камень, то я просто меняю библиотеку для МК. Тем более, что в последствии по барабану для чего писать PIC или AVR или для еще чего-нить))).

Share this post


Link to post
Share on other sites
Обнаружил, что на -O0 :) Переставил на -Os, код уменьшился почти в два раза. Гораздо лучше, но до ассемблера всё равно далековато... Или можно ещё что-то сделать?

Кстати, как можно посмотреть ассемблерный код, получающийся после компиляции с C? (работаю в AVR Studio 4 + WinAVR)

Сначала по по последнему вопросу - в опциях проекта на страничке general есть галочки - generate hex file, generate map file, generate list file

list file ( projectname.lss ) - это дизассемблированная прошивка с вставленными строками исходного текста.

Теперь по основному вопросу

Вероятно, сравниватется что-то не то с чем-то не тем. Ну не может одна такая простая функция дасть сотни байт кода.

#include <stdint.h>

#define DISP_SIZE 8

uint8_t display[DISP_SIZE];

void fillDisplay(uint8_t s)
{
for( uint16_t i = 0; i < DISP_SIZE; i++)
	display[i] = s;
}

avr-gcc --version

avr-gcc (GCC) 4.1.2 (WinAVR 20070525)

avr-gcc -O2 -S -mmcu=attiny13 fill.c

получаем fill.s

fillDisplay:
ldi r30,lo8(display)
ldi r31,hi8(display)
.L2:
st Z+,r24
ldi r25,hi8(display+8)
cpi r30,lo8(display+8)
cpc r31,r25
brne .L2
ret

Да, длиннее, чем оптимальный асмовый вариант, но не в разы, 8 команд против 6. Да и то - потому, что gcc не учитывает "мелкоту" этой тини2313 и использует полный указатель r31:r30, т.е. если теперь на асме написать для какой-нибудь меги88, где нужен 16-битный указатель, то "перерасход" станет уже не 8 против 6, а 8 против 7, т.е. на уровне 15%. Где-то такой перерасход - меньше 20% - и будет на больших программах.

С временем выполнения хуже, это да.

А те сотни байт, вероятно, это заполненная таблица прерываний, очистка секции .bss (зануление неинициализированных переменных), инициализация секции .data (копирование значений инициализированных переменных из флеша в ОЗУ) и ещё всякие служебные вещи. С ростом программы они не увеличиваются.

Edited by ReAlAl

Share this post


Link to post
Share on other sites

Язык С/С++ это язык высокого уровня. Я программирую микроконтроллеры на С. Так как это очень просто и быстро. А на Асемблере программировать-это прошлый век.

Share this post


Link to post
Share on other sites

Доброго дня господа!(или ночи...) Вопросы объема кода вообще на данный момент считаю некорректными, ибо объмы памяти программ в кристаллах таковы,что использовать их полностью довольно трудно.Если конечно не ставится задача сделать "супер вупер колбасу" на каком нибудь 2313-ом.Каждая задача(сколько-нибудь серьезная) требует своего кристалла. А так при желании можно и "в трех местах сломать" :) Не надо пытаться сделать графический контроллер на ATTiny. Просто как пример читаем в даташите (фирменном конечно) ДЛЯ ЧЕГО сей кристалл проектировался. Там написано - игрушки. ВСЕ! Для графики берем что-нибудь из Мег, да и то с опаской...

И вообще рассуждать на тему откомпилированного кода нужно помятуя о том что есть разные конторы и разные компиляторы.Просто какие-то доступны радиолюбителям, а какие-то стоят много иностранных денег.Вторые пакуют код так, что разницу в плюс минус 20-30 слов между Си и Асм можно считать пренебрежимо малой. Первые как правило похуже...

Вопросы по математике так же можно решать разными способами. Тут считаю нет догмы что лучше. Да и разрядность ни при чем.Правило - чем больше точность(а соответственно разрядность)- тем меньше скорость выполнения вычисления в целом одинаково бьет по быстродействию что в Си что в Асме. С той лишь разницей что если вы в математике вообще ни бум-бум то тут конечно предпочтительнее Си.Да и то не всем помогает. А если представляете как все эти числа можно обработать, то Асм.Возможности по оптимизации процесса вычисления выше.Только и всего...:)

Share this post


Link to post
Share on other sites

Я предпочитаю Си...

1. Некогда не учил Ассемблер...

2. Учу в универе Си/С++...

3. Лень лишний раз напрягать голову...

Share this post


Link to post
Share on other sites

А напрасно. Отупеть можно, если не напрягать... Да и понятне с АСМа всё будет.

Share this post


Link to post
Share on other sites

Со времен i8080 пишу на asm.Потом 8085,mcs51,AVR.

Меняются времена, меняюся методы.

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

asm или ЯВУ.

Не понимаю категоричных товарищей, отвергающих то или иное.

Инструмента не бывает мало!!!

Edited by domowoj

Share this post


Link to post
Share on other sites

rw_1ware:

ldi _tmp1,8 ;bit data counter

rw_lab:

cli ;disabled interrupt

SBI _com_port-1,_ds18_line ;1_ware-->0 ,0mks

nop ;time for set log0

sbrc _tmp,0 ;if write log 0

CBI _com_port-1,_ds18_line ;1_ware-->1

ldi _tmp2,4 ;

dely_rw:

dec _tmp2

brne dely_rw

lsr _tmp ;next bit

andi _tmp,$7F

sbic _com_port-2,_ds18_line ;if 1_ware=0 skipe ,18mks

ori _tmp,$80

ldi _tmp2,$0D

dely_rw1:

dec _tmp2

brne dely_rw1

CBI _com_port-1,_ds18_line ;1_ware-->1

sei ;~60mks end slot

dec _tmp1

brne rw_lab ;next bit

ret

вот универсальная подпрограмма чтения записи байта по 1ware напишите мне на C чтонить подобное

Share this post


Link to post
Share on other sites

Странные "выпады" в сторону ЯВУ... Честно! Я уверен в том, что подобное могут сказать люди, которые не понимают РЕАЛЬНОЙ пользы от объектно ориентированной модели программирования!

Не вижу смысла в высказываниях что лучше, а что хуже - все зависит от поставленной задачи. Если можно решить ее эффективно на С, ее нужно решать на С, если однозначно необходим АСМ - тогда конечно!

А то вас тут, извините, читают начинающие, могут сделать выводы неправильные! Для профессионалов подобные споры, по-моему, вообще неуместны...

С уважением.

Share this post


Link to post
Share on other sites

TWIN

А то вас тут, извините, читают начинающие, могут сделать выводы неправильные! Для профессионалов подобные споры, по-моему, вообще неуместны...

правильные выводы нада делать, спор идёт о эффективности использования и оптимальности кода.

А на предыдуший пост так ни кто и не ответил.

Share this post


Link to post
Share on other sites

Здравствуйте, подскажите пжл как откомпилировать данные исходники для mega32, покуда я понял они написаны на CodeVisionAVR, но там вроде нужен еще prj'ект файл,может там какая-нить другая программа используется ..

ish.rar

Edited by Deus-ex

Share this post


Link to post
Share on other sites
НУ вот уж точно не ограничения!! Ассемблер как раз и раздвигает "граници дозволенного" .

А алгоритм билдер )).....

Ты б ещё на руском языке писал к примеру

А что, хорошая идея. Давайте напишем русский компилятор! Я думаю там будет около 5 слов :D и работать будет не хуже ASM. :wacko: Я пишу больше на АСМе. С - безусловно хороший компилятор. А мне АСМ больше нравится. Там все прозрачно. А тем кто не хочет парится с изучением Ассемблера, хочу сказать, что он намного проще любого языка высокого уровня. Единственный его недостаток - это что нужно сначала "выучить микроконтроллер" перед тем как писать для него программу. Но это скорее конечно достоинство, чем недостаток. На С тоже если не разобраться с архитектурой и регистрами ничего хорошего не получится.

Share this post


Link to post
Share on other sites

да какая вообще разница на чем писать, ГЛАВНОЕ- ЧТО Б УСТРОЙСТВО ПРАВИЛЬНО ВЫПОЛНЯЛО СВОИ ФУНКЦИИ, а если чтото будет работать не очень быстро, то все равно на асме надо будет писать. Короче все зависит от положеной задачи: ктото винду в контроллер пытается установить, а кто-то просто гирлянды делать :)

Share this post


Link to post
Share on other sites

Вообще если размер не волнует, то можно писать на Си... Я щитаю что надо знать и асм и Си, так как исходники можно переводить с одного на другой язык, а воще знаю только Си, и хочу выучить асм. Говрят пишут на Си под PIC, если не сложно пделитесь компилятором. :)

Edited by Krik99

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By Вячеслав_НС
      Здравствуйте ! подскажите , какую лучше библиотеку использовать (и где ее взять) для управления i2c atmega8 в atmel studio 7  .  задача - управлять atmega8 по i2c ,  цап  PCF8591T .
      понимаю , в интернете много примеров и библиотек , но хотелось бы пример максимально простой и точно рабочий . т.к. пока что все мои попытки не привели к успеху ... то Atmel Studio 7 при компиляции ругается на несуществующий файл ( к примеру - "stream.h") при использовании библиотеки i2c , то еще какие то грабли .
    • By Антон Плюшкин
      В общем есть небольшая тривиальная задача - сделать свитюльку. Контроллер управляет светодиодиками, цвета меняются, людишки довольны.
      Схема проста: Attiny44a -> 2n3904 x3 -> RGB-светодиод.
      Собрал, протестил, всё норм, но!
      Как только в коде я использую функцию задержки - _delay_ms (util/delay.h) - контроллер повисает!
      #define F_CPU 16000000UL #include <avr/io.h> #include <util/delay.h> int main(void) { // Input/Output Ports initialization // Port A initialization // Function: Bit7=Out Bit6=Out Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRA=(1<<DDA7) | (1<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0); // State: Bit7=0 Bit6=0 Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0); // Port B initialization // Function: Bit3=In Bit2=Out Bit1=In Bit0=In DDRB=(0<<DDB3) | (1<<DDB2) | (0<<DDB1) | (0<<DDB0); // State: Bit3=T Bit2=0 Bit1=T Bit0=T PORTB=(0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 16000,000 kHz // Mode: Phase correct PWM top=0xFF // OC0A output: Non-Inverted PWM // OC0B output: Non-Inverted PWM // Timer Period: 0,031875 ms // Output Pulse(s): // OC0A Period: 0,031875 ms Width: 0 us // OC0B Period: 0,031875 ms Width: 0 us TCCR0A=(1<<COM0A1) | (0<<COM0A0) | (1<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (1<<WGM00); TCCR0B=(0<<WGM02) | (0<<CS02) | (0<<CS01) | (1<<CS00); TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 16000,000 kHz // Mode: Ph. correct PWM top=0x00FF // OC1A output: Non-Inverted PWM // OC1B output: Disconnected // Noise Canceler: Off // Input Capture on Falling Edge // Timer Period: 0,031875 ms // Output Pulse(s): // OC1A Period: 0,031875 ms Width: 0 us // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=(1<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (1<<WGM10); TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10); TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 0 Interrupt(s) initialization TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (0<<TOIE0); // Timer/Counter 1 Interrupt(s) initialization TIMSK1=(0<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (0<<TOIE1); // External Interrupt(s) initialization // INT0: Off // Interrupt on any change on pins PCINT0-7: Off // Interrupt on any change on pins PCINT8-11: Off MCUCR=(0<<ISC01) | (0<<ISC00); GIMSK=(0<<INT0) | (0<<PCIE1) | (0<<PCIE0); // USI initialization // Mode: Disabled // Clock source: Register & Counter=no clk. // USI Counter Overflow Interrupt: Off USICR=(0<<USISIE) | (0<<USIOIE) | (0<<USIWM1) | (0<<USIWM0) | (0<<USICS1) | (0<<USICS0) | (0<<USICLK) | (0<<USITC); // Analog Comparator initialization // Analog Comparator: Off // The Analog Comparator's positive input is // connected to the AIN0 pin // The Analog Comparator's negative input is // connected to the AIN1 pin ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0); ADCSRB=(0<<ACME); // Digital input buffer on AIN0: On // Digital input buffer on AIN1: On DIDR0=(0<<ADC1D) | (0<<ADC2D); // ADC initialization // ADC disabled ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0); unsigned char VL_OCR0A = 0, VL_OCR0B = 0, VL_OCR1A = 0; OCR0A = 0; OCR0B = 0; OCR1A = 0; while(1) { _delay_ms( 100 ); VL_OCR0A = VL_OCR0A + 1; VL_OCR0B = VL_OCR0B + 1; VL_OCR1A = VL_OCR1A + 1; if( VL_OCR0A >= 250 ){ VL_OCR0A = 0; } if( VL_OCR0B >= 250 ){ VL_OCR0B = 0; } if( VL_OCR1A >= 250 ){ VL_OCR1A = 0; } OCR0A = VL_OCR0A; OCR0B = VL_OCR0B; OCR1A = VL_OCR1A; } } Т.е. если указать задержку в начале цикла, то светодиод не светится вообще.
      Если задержку убрать - светодиод немного подсвечивает всеми цветами.
      while(1) { _delay_ms( 100 ); // <--- ЗАДЕРЖКА --- VL_OCR0A = VL_OCR0A + 1; VL_OCR0B = VL_OCR0B + 1; VL_OCR1A = VL_OCR1A + 1; if( VL_OCR0A >= 250 ){ VL_OCR0A = 0; } if( VL_OCR0B >= 250 ){ VL_OCR0B = 0; } if( VL_OCR1A >= 250 ){ VL_OCR1A = 0; } OCR0A = VL_OCR0A; OCR0B = VL_OCR0B; OCR1A = VL_OCR1A; } Где я накосячил?
      З.Ы.: Замечаний по поводу оптимизации кода, излишних переменных и п.р. прошу не писать - изощряюсь как могу ибо не пойму почему не работает
    • By LegionKC
      Добрый день.
      Экспериментирую с платой TP4056 и MK ATmega8, конкретнее - пытаюсь собрать простенькое зарядное устройство с выводом параметров при зарядке/разрядке на АЦП МК. Для измерения тока нашел ACS712. Думаю, что получится выводить ток при зарядке (т.е. когда идет питание на TP4056 и нагрузка отключена) и при разрядке (питание выключено, нагрузка подключена). Нагрузка - резистор. Возникла проблема с измерением напряжения на АКБ. Вернее, проблема с отсутствием идей как это сделать. Может какую-нибудь схему делителя напряжения нужно сделать? Прошу помочь советом. Схему из пэинта прилагаю.
      Спасибо.
       

    • By Cheshire Cat
      Здравствуйте, только начинаю изучать программирование мк. Я уже задавал этот вопрос в моих прошлых схемах мне отвечали что-то типа "любой стабилизрованый источник постоянного напряжения", или кидали схему такого источника. Можно назвать мне конкретное устройство? В общем то что я смогу забить в гугл и приписать купить. 

      Я уже больше двух месяцев жду пока мне придут с aliexpress детали для маленького лабараторного блока, но этот вариант может разбиться о кривизну моих рук.  Хочу просто купить такой источник и наконец заняться непосредственно МК. 
    • By Cheshire Cat
      Здравствуйте, только начал изучать программирование микроконтроллеров. В учебнике есть схема, но она не учитывает питание и землю. Скажите правильно ли я её дополнил.
      И еще дополнительный вопрос. Что можно использовать как источник постоянного питания на 5В? Из не дорогого и того, что можно купить в Казани. Знаю, что лучший вариант - лабораторный БП, но они дорогие.

  • Сообщения

    • @rocker60 Да тут ещё и годики берут своё ,а не только разница с макияжем или без. Хотя нисколько они не ухудшили картинку без макияжа.  К стати на первом фото она похожа на другую нашу актрису ,чуть помоложе. 
    • Да она на первой странице под спойлером была.
    • недавно был красивый дефект в Минвеле с корректором - принесли с убитыми ключами - ККМ и основного .... поставил новые, поставил лампу - через несколько секунд - лампа горит в полный накал .... баночка сетевая - начала греться .... ЕСР и т.п. ОК - под напряжением - какая-то херня творилась с ней .... Заменил - все ОК ... Ток научись ОГРАНИЧИВАТЬ при ремонте .... Да, характерно, что и напряжение на ККМ не поднималось до положенных 390 ....
    • Нет, избавляемся от всего и от ЦАП и от УНЧ, OTG это равносильно USB :). Устройства подключенные по OTG это внешние звуковые карты, например  E-MU 0404  работает только через  USB Audio Player PRO, всё остальное драйверов просто ни имеет, вернее играет, а звука нету, видно нужно посылать ещё что-то для управление процессором  E-MU 0404, и это может  USB Audio Player PRO, впрочем он специально и разработал для такого использование. Не верите что OTG это USB, подключите клавиатуру и мышку они тоже будут работать :).
    • При подключении по отг всего лишь избавляемся от встроенного умзч. Воспроизведите тот же файл с внешнего цапа и звуковухи тогда разница в качестве и будет реальной а не мнимой.
    • ASUS даёт 600 мВ RMS, это я проверил сейчас, но это всё равно меньше чем у ПК 2В RMS. Если есть OTG в телефоне, подключить можно. Если нету OTG то нельзя, Android умеет работать с USB звуком.  Bluetooth работает со всеми, но нужен кодек aptx, что-бы прилично звучало, но всё равно качество будет хуже прямого подключение.
  • Покупай!

×
×
  • Create New...