Помогите новичку найти ошибку в скетче!?
- Войдите на сайт для отправки комментариев
Вс, 19/01/2020 - 16:54
Помогите новичку найдти ошибку в скетче!? не читаются данные из sounddata_data [ ].
К порту D Arduino Nano подключен ЦАП типа R-2R
Moderator : пожалуйста, вставьте код правильно (возможно, новым сообщением в тему),
Выше твоей темы, в "Песочнице" есть прикреплённая тема, о том, что и как нужно делать.
В том числе КАК, МашуВашу, вставлять код в сообщение.
Какого черта?! Как можно постить, не читая? Потому что хочется?
Да, и массив такой классный, прям AC/DC только в DC версии.
Ребята а можно как то не гневаясь!
из выше прочитанного кода я понят что у коллеги длина массива большая. В моём случае длинна массива точно помещается в Ардуинку!
Направте пожалуйста где почитать об организации чтения массивов из PROGMEM?
Направте пожалуйста где почитать об организации чтения массивов из PROGMEM?
Ты не поверишь!
Спасибо Ребята ПОМОГЛИ!!!
Не за что! Заходите ещё!
из выше прочитанного кода я понят что у коллеги длина массива большая.
хотел посмотреть скетч но его уже нет ? (
может это у меня не отображается только
Это что? Вставьте нормально, Вы половину символов куда-то потеряли. И заодно дайте ссылку на библиотеку.
Это не библиотека а прикреплённый файл с воспроизводимом звуком. Выложил не весь код!
Круто. Много много -1 и одна штука int8_tmax.
Даже на белый шум не похоже.
что ты там такое изобретаешь?
Блин! ребята Я же просил о простом одолжении найдти ошибку!
Для спецов она же очевидна ! Выкладываю рабочий пример!
если конкретнее! то нужно изучить работу с указателями! для чтения по указателю sounddata_data необходима функция -pgm_read_byte_near() ! Вот и всё!!!
К порту D Arduino Nano подключен ЦАП типа R-2R
Читаю из sounddata_data[] PROGMEM данные и остылаю их в порт D.
И на выходе получаю звук длинною несколько секунд.
текст такой:
Внимание пожарная тревога
Всем покинуть здание!
Блин! ребята Я же просил о простом одолжении найдти ошибку!
Вы, пожалуйста, не ругайтесь. Я еще несколько постов выше просил Вас выложить код нормально, а не так, как было, в #7. Вы его выложили только сейчас. Вот и посмотрим теперь. А то до сих пор Вы выкладывали что-то невразумительное и некомпилируемое, а виноваты - мы. Не надо ругаться. Сейчас посмотрим, что тут у Вас.
Ну, вот, блин, опять! Вы издеваетесь?
Нахрена Вы сократили массив? Закройте его спойлером и выложите полностью. Ну, поймите, Вы , я хочу скопировать Ваш код к себе, запустить и посмотреть, что там и как, но как я это сделаю, если настоящего кода Вы не выкладываете? То половину скобок потеряли, то массив сократили. Ну, вот как мне помочь Вам, даже если я хочу это сделать?
Давайте, так - ещё одна попытка - Вы выкладываете реально то, что у Вас есть - то, что неверно работает. Я беру к себе и разбираюсь. Если Вы и сейчас выложите что-то несуразное, то извините, у меня есть другие дела - разбирайтесь сами.
а в чем выражается, что данные не читаются? Они там в массиве есть вообще? - судя по приведенному куску - их там нет
Если вам нужно проигрывать звук - возьмите МП3 под управлением ардуино...
Весь файл очень большой! Я выложил его начало и конец.
Весь файл очень большой! Я выложил его начало и конец.
И я считаю это издевательством над нами, см. мой поправленный пост #15
Извиняусь! я об этом не подумал.
Окей, щас гляну.
Но такой большой код лучше прятать под спойлер (Вы и сейчас можете это сделать). Надо при вводе (или редактировании) кода переключться на "Дополнительно" и выбрать "Сворачитьвать код по умолчанию"
Ну, значит, так, всё у Вас нормально читается, а вот насколько нормально пишется в порт D - вопрос. Вы используете порт D целиком, что на Нано весьма чревато. PD0 и PD1 соединены с другой микросхемой, и если поставить их оба в OUTPUT, да ещё дать им разные значение, то между ними начнётся соревнование "кто вперёд сгорит". Нормально при этом они работать не будут. На голом контроллере такие фокусы можно делать, но не на Нано.
В чём проявляется, что у Вас ничего не работает?
Я же писал в #13 (может быть немного гневно за что извиняюсь) что все заработало!
Но они же к другой микросхеме подключены через сопротивление в 1 кОм и практически не мешают!
ЕвгенийП если можно еще один вопрос!
Дело в том что аналогичный код на Bascom AVR, задержка между циклами загрузки порта составляет 160 микро секунд а в Arduino IDE 53 микросекунды. Я всегда считал что язык Cp выдаёт более оптимизированный код, а тут получается наоборот. Может быть есть возможность для оптимизации?
а если делэй в 53 микросекунды убрать?
звук будет очень высокий и не разборчивый! то есть не соответствовать 8 килобитному потоку.
Не понимаю - оптимизацией чего добиться-то надо, если и так уже втрое быстрее положенного работает?
по всей видимости ТС ищет источник кражи вычислительного ресурса, перейдя с Баском на С ожидалось его увеличение...
53 микросекунда при программировании в Arduino IDE и 160 микросекунд в Bascom AVR.
Получается что Bascom AVR даёт в три раза более короткий код чем Arduino IDE. Ну или по крайней мере более оптимизированный по времени!
53 микросекунда при программировании в Arduino IDE и 160 микросекунд в Bascom AVR.
Получается что Bascom AVR даёт в три раза более короткий код чем Arduino IDE. Ну или по крайней мере более оптимизированный по времени!
ну так в баскоме никаких иных функций, кроме реализованных нет, а тут и millis() и micros() и, serial()...
Сейчас подтянется Онкель и предложит делать на честном С и, по сути будет прав...
Только это будет уже немножко не Ардуино...
Вы немного не поняли! Вопрос в оптимизации кода! Почемуто код Bascom AVR работает в три раза быстрей. Наверняка в Arduino IDE есть более совершенная конструкция данного кода, особенно чтения данных их PROGMEM?
Вы немного не поняли! Вопрос в оптимизации кода! Почемуто код Bascom AVR работает в три раза быстрей. Наверняка в Arduino IDE есть более совершенная конструкция данного кода, особенно чтения данных их PROGMEM?
нет, это Вы не поняли, быстрее скорее всего не получится (сейчас старожилы подскажут), откомпилируйте пустой скетч и удивитесь...
В бытность у меня контроллер на PIC управлял вязальной машиной и имел всего под 500 байт кода, дальше программисты соревновались лишь в количестве счётчиков...
Это же не С, это среда Ардуино основанная на С... точнее wiring
53 микросекунда при программировании в Arduino IDE и 160 микросекунд в Bascom AVR.
Получается что Bascom AVR даёт в три раза более короткий код
обьясните, как это у вас "получаетеся", что код, который исполняется в три раза дольше - "оказывается в 3 раза быстрее" ? - кто из нас в арифметике путается, вы или я?
Вы немного не поняли! Вопрос в оптимизации кода! Почемуто код Bascom AVR работает в три раза быстрей. Наверняка в Arduino IDE есть более совершенная конструкция данного кода, особенно чтения данных их PROGMEM?
53 микросекунда при программировании в Arduino IDE и 160 микросекунд в Bascom AVR.
Получается что Bascom AVR даёт в три раза более короткий код
обьясните, как это у вас "получаетеся", что код, который исполняется в три раза дольше - "оказывается в 3 раза быстрее" ? - кто из нас в арифметике путается, вы или я?
ТС о необходимой задержке для релизации 8 килобитного кодека говорил, но иносказательно, ...кто кому злобный буратино не уточняю...
Чем совершенней код, тем медленнее работает. И надо покупать еще продвинутее железо.
Смешно!
Чем совершенней код, тем медленнее работает. И надо покупать еще продвинутее железо.
Смешно!
это вы просто в олимпиадах по программированию не участвовали...убедились бы
Ребята у меня больше вопросов нет! Всем большое спасибо за помощь!!!
Тему можно закрыть!