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

Re: Ардуино - запись звука

Пт июн 17, 2022 11:21:30

Интересно, пошто вы так долго и у-порно спорите? :))) Ардуинщики решили написать собственный скетч и не получается? :) Возьмите готовые на arduino.ru для АЦП и SD-флешки и не мучайтесь. Лучше бы конечно с внешнего аудио-ацп оцифровывать.
А для простого диктофона есть прикольные МЭМС-микрофоны с цифровым выходом.

Потому что нам надо обязательно из гамна и палок атмеги8 с родным ацп и оно с обычными библиотеками не влазит :)) без извратов на 328 вроде что надо заработало )

Re: Ардуино - запись звука

Пт июн 17, 2022 12:27:53

Вы такие радостные "профессианалы"... ТС не каждый день работает с мк. Вспомните себя некоторое время назад. Хотя не, вы же родились уже умными...

Re: Ардуино - запись звука

Пт июн 17, 2022 16:39:31

Код:
void loop() {

delay(1000);
   /* x = ((PINB&(1<<0))?(1<<0):0)       \
         | ((PINB&(1<<1))?(1<<1):0)    \
         | ((PINB&(1<<2))?(1<<2):0)    \
         | ((PINB&(1<<3))?(1<<3):0);*/
         
x = ((PINB&(1<<0))?(1<<3):0)       \
         | ((PINB&(1<<1))?(1<<1):0)    \
         | ((PINB&(1<<2))?(1<<2):0)    \
         | ((PINB&(1<<3))?(1<<0):0);
  // put your main code here, to run repeatedly:
  Serial.println("=======");
 Serial.println(digitalRead(8));
 Serial.println(digitalRead(9));
 Serial.println(digitalRead(10));
 Serial.println(digitalRead(11));
 Serial.println(x);
}


нормлаьно работает , но реальную шину пока не подкючал. Там единица получается по умолчанию. На массу сажу пины - десятичная цифра меняется.

Добавлено after 6 minutes 57 seconds:
это я в ардуине проверял на aTmega88 (16мгц),

Добавлено after 2 hours 34 minutes 6 seconds:
Martian,
Martian писал(а):ТС не каждый день работает с мк.



время от времени я обращаюсь к МК смотрю уроки,пытаюсь что-то делать, но как тока бросаю на полгода все очень быстро забывается.

Добавлено after 2 minutes 29 seconds:
Dimon456, Ваш код на контроле, в IDE без ошибок. Но пока нет возможности залить. Распечатал. Изучаю.

Добавлено after 3 minutes 40 seconds:
Dimon456 AudioRecorder code:

Re: Ардуино - запись звука

Пт июн 17, 2022 17:09:58

ты когда пишешь проверяешь что пишешь или как?

нееее... выше писал))
среду разработки ардуины я удалил... я этим больше не пользуюсь.
у меня есть всё... кроме ардуины))


roman.com писал(а):IN R22, PINC // -1 такт
LDI R21, 0b00000000 // -1 такт
SBRC R22, 0 // -1 такт
ORI R21, 0b00000001 // -1 такт
SBRC R22, 1 // -1 такт
ORI R21, 0b00000010 // -1 такт
SBRC R22, 2 // -1 такт
ORI R21, 0b00000100 // -1 такт
SBRC R22, 3 // -1 такт
ORI R21, 0b00001000 // -1 такт
OUT PORTD, R21 // -1 такт

итого: 11 тактов процессора
На, держи

что держи))

LDI R24, $88
OUT $05, R24
IN R24, $03
ANDI R24, $0F
STS 0149,R24

по нормальному пиши... с названиями регистров ))

LDI R24, $88
OUT PORTB, R24
IN R24, PINB
ANDI R24, $0F
STS 0149,R24

а вопрос какой был ?
Ivanoff-iv писал(а): нельзя зацепив провода к подряд идущим пинам одного порта сделать:

низя.
всё идёт в разнобой... как попало))

valA= DigitalRead(6);
valB=DigitalRead(7);
valC=DigitalRead(8);
valD=DigitalRead(9);

мы не ищем лёгких путей))

читаем пины с ПРОИЗВОЛЬНЫМ доступом

IN R22, PINC // -1 такт
LDI R21, 0b00000000 // -1 такт
SBRC R22, 0 // -1 такт
ORI R21, 0b00000001 // -1 такт
SBRC R22, 1 // -1 такт
ORI R21, 0b00000010 // -1 такт
SBRC R22, 2 // -1 такт
ORI R21, 0b00000100 // -1 такт
SBRC R22, 3 // -1 такт
ORI R21, 0b00001000 // -1 такт
OUT PORTD, R21 // -1 такт

для Ардуины принцип тот же ))
olegue писал(а):нормлаьно работает

а так работает ? ))

x = PINB;

или так

x = PINB & 0x0F;

как она у тебя вообще работает... )) :dont_know:

Re: Ардуино - запись звука

Пт июн 17, 2022 17:59:51

roman.com писал(а):для Ардуины принцип тот же ))
это asm вставку надо писать, не охота возится, лень.
roman.com писал(а):как она у тебя вообще работает... ))
Вот еще один пример, с произвольным доступом

Re: Ардуино - запись звука

Пт июн 17, 2022 18:02:57

roman.com, должен и сам догадаться, ошибка детская...

откуда roman.com знает как работает ваша ардуина)) :))

ну если у вас ардуина такая умная... значит... переходим на ООП... )) объёктно-ориентированное программирование ))

if ( (PIND & 0x08) == 0x08 ){x |= 0b00001000;}
else {x &= 0b11110111;};
if ( (PIND & 0x04) == 0x04 ){x |= 0b00000100;}
else {x &= 0b11111011;};
if ( (PIND & 0x02) == 0x02 ){x |= 0b00000010;}
else {x &= 0b11111101;};
if ( (PIND & 0x01) == 0x01 ){x |= 0b00000001;}
else {x &= 0b11111110;};

:tea:

Re: Ардуино - запись звука

Пт июн 17, 2022 18:09:04

roman.com, ты перед тем как :tea: попить, спросил бы, а надо ли модифицировать переменную?
Если надо, тогда if else, а если нет, и ты ее перед этим обнулил, то просто if.
roman.com писал(а):переходим на ООП
:facepalm:

Re: Ардуино - запись звука

Пт июн 17, 2022 19:17:34

значит... переходим на ООП... )) объёктно-ориентированное программирование ))

имелось ввиду... возьмём код из ПК... и переделаем под ардуину... ))

x = 0;
if ( (PIND & 0x08) == 0x08 ){x |= 0b00001000;}
if ( (PIND & 0x04) == 0x04 ){x |= 0b00000100;}
if ( (PIND & 0x02) == 0x02 ){x |= 0b00000010;}
if ( (PIND & 0x01) == 0x01 ){x |= 0b00000001;}
:tea:

Re: Ардуино - запись звука

Пт июн 17, 2022 19:26:40

roman.com, ты не как не угомонишься со своим кодом.
Смотри еще какой способ есть

Re: Ардуино - запись звука

Сб июн 18, 2022 06:56:56

f ( (PIND & 0x08) == 0x08 ){x |= 0b00001000;} - это не ООП :)
Возьмите уже готовый скетч на arduino.ru и не чешите задницу ногтями

Re: Ардуино - запись звука

Сб июн 18, 2022 09:21:54

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

а так ?
if ( (Sistema_1[28] & 0x80) == 0x80 ){label_Lampa_1L3.setIcon(JPEG_1);}
else {label_Lampa_1L3.setIcon(JPEG_0);};
if ( (Sistema_1[28] & 0x20) == 0x40 ){label_Lampa_1L2.setIcon(JPEG_1);}
else {label_Lampa_1L2.setIcon(JPEG_0);};
if ( (Sistema_1[28] & 0x08) == 0x20 ){label_Lampa_1L1.setIcon(JPEG_1);}
else {label_Lampa_1L1.setIcon(JPEG_0);};
if ( (Sistema_1[28] & 0x02) == 0x10 ){label_Lampa_1L0.setIcon(JPEG_1);}
else {label_Lampa_1L0.setIcon(JPEG_0);};

мы и так взяли готовый скетч на arduino.ru... а сейчас его переделываем)) см. выше

Re: Ардуино - запись звука

Сб июн 18, 2022 10:04:12

roman.com, да не переживай ты так, к каждому компилятору свой подход нужен.
Если вкратце, твой код вот в таком виде

Re: Ардуино - запись звука

Сб июн 18, 2022 10:12:12

... он не для записи флешек)) он для более серьёзных задаче

Ассемблер? Да ну не смешите :))) попробуйте на асме написать более серьёзные задачи с GUI или ЦОС - е##нетесь количество строчек текста считать.

И зачем переделывать то, что работает? Первое правило - работает - не лезь. А чтобы переделать, надо разбираться в этом хорошо

Re: Ардуино - запись звука

Сб июн 18, 2022 11:03:07

Dimon456 кто сказал что я переживаю ?)) флешки у меня и на простом cvavr читаются ...пишутся))

Up2805 зачем переделывать то, что работает? нам так захотелось))

а под словом "серьёзная задача" имелось ввиду другое... "необычная задача" ))

например какой-нибудь... "синтезатор сложного сигнала на синхронном фазовращателе" ))
сонхронный_фазовращатель.jpg
(95.09 KiB) Скачиваний: 40

несколько программа запущенных на разных AVR должны выполнять все инструкции синхронно.
причём не только с точностью до такта процессора... а с точностью до фазы ! ))
делали и такое... )) Ассемблер справляется с такими задачами.
но это уже совсем другая история))
:tea:

Re: Ардуино - запись звука

Сб июн 18, 2022 14:27:25

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

Re: Ардуино - запись звука

Сб июн 18, 2022 17:51:38

roman.com,

Re: Ардуино - запись звука

Пн июн 20, 2022 10:44:56

Up2805 писал(а):Потому что задержки распространения сигнала до выходных транзисторов строго синхронны только в эмуляторе типа протеуса.

на практике работает удовлетворительно))
Up2805 писал(а):А на деле иначе делается - ОДНИМ микроконтроллером считывается очередная строчка со всех таблиц форм сигналов...

у AVR на это нет времени)) все AVR и так работают на предельной частоте - 20 мгц
Up2805 писал(а):Это же можно сделать и на дискретной логике или ПЛИС.

на дискретной логике или ПЛИС любой дурак может))
задача была сделать на AVR.

Dimon456 в компиляторе есть ещё куча настроек...

например "оптимизация кода по максимальной скорости"...
при этом компилятор жрёт в два раза больше памяти... но зато код работает в два раза быстрей ))

или "оптимизация кода по минимальному занимаемому объёму памяти"...
при этом компилятор жрёт в два раза меньше памяти... но и код работает в два раза медленней ))
настройки_компилятора.jpg
(66.81 KiB) Скачиваний: 35

поэтому результаты одного и того же компилятора зависят ещё и от настройки самого компилятора...
:tea:

Re: Ардуино - запись звука

Пн июн 20, 2022 13:49:25

roman.com писал(а):в компиляторе есть ещё куча настроек...
:facepalm:

Давай так, рекорд принадлежит avr_gcc - 9 тактов, сможешь быстрее, приходи.

Re: Ардуино - запись звука

Пт июл 01, 2022 14:27:52

Как так получается что если я присваиваю переменной младшую тетраду шестнадцатиричного числа то получаю в переменной ее десятичное выражение и смогу вывести ее в lcd в десятичном виде.

Re: Ардуино - запись звука

Пт июл 01, 2022 15:00:23

Покажите хоть как так )
Ответить