ilya_orel00 Опубликовано 8 сентября, 2021 Поделиться Опубликовано 8 сентября, 2021 (изменено) Стоит задача спроектировать частотный преобразователь, частота которого будет меняться с помощью ПО на компьютере. Также должна быть возможность включить-выключить реверс, измерять напряжение в разных точках, выводя на экран. Проблема в том, что когда я ввожу в монитор порта с клавиатуры значения от 15 до 350 (соответствует изменению частоты от 10 до 100 Гц) на монитор порта выводится всякая ерунда, и на экране осциллографа ничего не меняется. Откуда-то берется 128, а e обращается в 0, хотя должна принимать значение, которое ей вводят с клавиатуры. Сам генератор, если им управлять переменным резистором, работает великолепно без нареканий. Он по сути генерирует синус на 3 выходах, фаза которого отличается на 120 градусов. Также вопрос. Если я ничего не ввожу, то переменная, которая считывает значение из порта автоматически в 0 обращается? void setup() { pinMode(11, OUTPUT); pinMode(6, OUTPUT); pinMode(9, OUTPUT); TCCR2B = 0b00000010; TCCR2A = 0b00000001; TCCR0B = 0b00000010; TCCR0A = 0b00000001; TCCR1A = 0b00000001; TCCR1B = 0b00000010; Serial.begin(115200); } void loop() { int i; int b; int c; int e; int inInt; int sine[]={127,130,133,136,139,143,146,149,152,155,158,161,164,167,170,173,176,178,181,184,187,190,192,195,198,200,203,205,208,210,212,215,217,219,221,223,225,227,229,231,233,234,236,238,239,240,242,243,244,245,247,248,249,249,250,251,252,252,253,253,253,254,254,254,254,254,254,254,253,253,253,252,252,251,250,249,249,248,247,245,244,243,242,240,239,238,236,234,233,231,229,227,225,223,221,219,217,215,212,210,208,205,203,200,198,195,192,190,187,184,181,178,176,173,170,167,164,161,158,155,152,149,146,143,139,136,133,130,127,124,121,118,115,111,108,105,102,99,96,93,90,87,84,81,78,76,73,70,67,64,62,59,56,54,51,49,46,44,42,39,37,35,33,31,29,27,25,23,21,20,18,16,15,14,12,11,10,9,7,6,5,5,4,3,2,2,1,1,1,0,0,0,0,0,0,0,1,1,1,2,2,3,4,5,5,6,7,9,10,11,12,14,15,16,18,20,21,23,25,27,29,31,33,35,37,39,42,44,46,49,51,54,56,59,62,64,67,70,73,76,78,81,84,87,90,93,96,99,102,105,108,111,115,118,121,124}; if (Serial.available()) { inInt = Serial.parseInt(); Serial.print(inInt); Serial.print("\n"); if(inInt!=0) { e=inInt; } Serial.print(e); Serial.print("\n"); } while(i<256) { int a=sine[i]; analogWrite(11, a); if(i<=85) { b=sine[i+170]; analogWrite(6, b); } else { b=sine[i-86]; analogWrite(6, b); } if(i<=170) { c=sine[i+85]; analogWrite(9, c); } else { c=sine[i-171]; analogWrite(9, c); } delayMicroseconds(e); i++; } } Изменено 8 сентября, 2021 пользователем ilya_orel00 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Yuriy.pv Опубликовано 8 сентября, 2021 Поделиться Опубликовано 8 сентября, 2021 Вы для начала инициализацию переменных поправьте. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
ilya_orel00 Опубликовано 9 сентября, 2021 Автор Поделиться Опубликовано 9 сентября, 2021 @Yuriy.pv что именно не так с инициализацией? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
w5277c Опубликовано 9 сентября, 2021 Поделиться Опубликовано 9 сентября, 2021 (изменено) О боже, у нас действительно мультивселенная! Потому что для меня, создающего прошивки для AVR на асме, данный пост выглядит как магия, и никак сказать иначе, так как здравого смысла я там не вижу Зачем там что-то типа инициализация таймеров? Что такое pinmode 11? Это какой порт? A,B,C,D...? А вообще это какой МК? И что, на форумах Ардуино некому помочь, надо лезть в песочницу к взрослым дядькам со своими кубиками? Я в принципе не могу описать что здесь не так, пытался, здесь все не так, от и до. И это явное влияние торговой марки Ардуино. Модуляцию лучше всего вешать на таймер, здесь я вижу только loop. Время, затраченное на выполнение цикла, учитывать не нужно? И да, а что такое вообще analogwrite? Это только ардуинщикам понятно? Исправлять косяки в своем коде никакой специалист не просит - вы его написали и значит сами в силах разобраться. Но, всегда можно задать частный, конкретный вопрос, например, почему МК перезагружается спустя некоторое время после старта, почему оказался включен WD и как его отключать при старте МК и может быт причиной включенного МК случайная однократная запись по адресам в районе 0x00xx и ресет с перепрошивкой не помогает. Или, почему ассемблеровская мнемоника SBI PINB,(1<<PB1) не меняет состояние пина PB1 на ATmega16. Нет частных вопросов - значит этот уровень не для Вас, тогда нужно смотреть уровнем ниже и задавать правильные вопросы. Например - для чего мне Ардуино, и даст ли оно мне верное понимание железки? P.S. Я не пишу на Си, и тем более для Ардуино, 'int i;' чему равно i? В Java = 0, а здесь? while(i<256), ну стало оно равно 256, что дальше? ждем 0xffffffff? Изменено 9 сентября, 2021 пользователем w5277c Добавил вопрос 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
BARS_ Опубликовано 9 сентября, 2021 Поделиться Опубликовано 9 сентября, 2021 22 часа назад, ilya_orel00 сказал: работает великолепно без нареканий С таким кодом это вряд ли. Заодно вопрос, на кой все переменные типа int, когда значение не превышает 255? 9 минут назад, ilya_orel00 сказал: е так с инициализацией Наверно то, что на каждом старте цикла они затираются потому что кто-то додумался пихнуть их в тело цикла, не сделав даже статическими. 22 часа назад, ilya_orel00 сказал: ввожу в монитор порта с клавиатуры значения от 15 до 350 Как минимум надо какой-нибудь протокол прикрутить и обязательно с проверкой CRC. 22 часа назад, ilya_orel00 сказал: Если я ничего не ввожу, то переменная, которая считывает значение из порта автоматически в 0 обращается? Если ты ничего не вводишь, то и условие чтения из порта не выполняется. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
ilya_orel00 Опубликовано 9 сентября, 2021 Автор Поделиться Опубликовано 9 сентября, 2021 @w5277c Ардуино придумали специально для того, чтобы начинающие программисты не копались в эльфийском языке ассемблере, а могли максимально легко формализовать свои желания в виде кода. Analogwrite это команда вывода шим с определенной скважностью на выходе определенного пина. Значения изменяются от 0 до 255. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
w5277c Опубликовано 9 сентября, 2021 Поделиться Опубликовано 9 сентября, 2021 (изменено) 5 минут назад, ilya_orel00 сказал: @w5277c Ардуино придумали специально для того, чтобы начинающие программисты не копались в эльфийском языке ассемблере, а могли максимально легко формализовать свои желания в виде кода. Analogwrite это команда вывода шим с определенной скважностью на выходе определенного пина. Значения изменяются от 0 до 255. Ну так и формализуйте легко свои желания. Здесь Вы что забыли? Не получается легко? Может быть потому, что не может быть легко там, где не может быть легко и нужно много знать и уметь? А Аурдино это всего лишь торговая марка паразитирующая на продуктах Atmel и прочих. Проще говоря получающая с хавающего пипла выгоду за счет чужих трудов. Так это все-таки ШИМ а не DAC, который зависит от таймеров, которые должны быть правильно настроены, и их настройка может отличаться от камня к камню. Что соответсвенно может очень сильно повлиять на результат. Изменено 9 сентября, 2021 пользователем w5277c 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
LiVit Опубликовано 9 сентября, 2021 Поделиться Опубликовано 9 сентября, 2021 2 часа назад, w5277c сказал: while(i<256), ну стало оно равно 256, что дальше? ждем 0xffffffff? Нет, выход из функции loop. А потом (предполагаю, т.к. код не весь и не понятно, где эта функция вызывается) опять вход в эту функцию и.... непонятно что там в этих переменных содержится. В чистом Си - там будет мусор, в плюсах - я не знаю. Поэтому ТСу и рекомендовали разобраться с переменными. Ардуина - зло. Т.к. не заставляет людей тщательно разбираться в коде и железке. По слухам у ардуины нет отладчика. Я сам не пробовал эту штуку, сказать не могу, правда это или нет. Но если правда, то как начинающий сможет понять без отладчика, что у него там происходит? Зло в чистом виде. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Yuriy.pv Опубликовано 9 сентября, 2021 Поделиться Опубликовано 9 сентября, 2021 (изменено) 21 минуту назад, LiVit сказал: Зло в чистом виде. Они этого не понимают "начинающие программисты")) все позаворачивали им, а что.. как.. да пофик.. ща быренько програмку наклепаю))) Они ШИМ от ЦАП отличить не могут..беда.. Это явно не к программистам относится... Изменено 9 сентября, 2021 пользователем Yuriy.pv 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Starichok Опубликовано 9 сентября, 2021 Поделиться Опубликовано 9 сентября, 2021 какие они, на хрен, программисты. так, программописатели ... 1 Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду. Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 9 сентября, 2021 Поделиться Опубликовано 9 сентября, 2021 08.09.2021 в 19:10, ilya_orel00 сказал: Стоит задача спроектировать частотный преобразователь, частота которого будет меняться с помощью ПО на компьютере. Отдайте выполнение этой задачи специалисту(ам). У Вас ничего не выйдет, зря время потеряете. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
BARS_ Опубликовано 10 сентября, 2021 Поделиться Опубликовано 10 сентября, 2021 15 часов назад, ilya_orel00 сказал: тобы начинающие программисты не копались На ардуйне нет программистов, так, хомячки в тупую копирующие библиотеки без малейшего понимания их работы. Программистами они никогда не становятся. Да и на асме никто не заставляет писать, есть С. 15 часов назад, ilya_orel00 сказал: могли максимально легко формализовать свои желания в виде кода. Поэтому даже не утруждают себя изучением языка, на котором пишут? Не понимают, что такое переменные, как с ними работает железо/программист/компилятор. Не понимают элементарных основ программирования. В принципе не понимают работу того железа, которое держат в руках. А без понимания железа невозможно написать правильно работающий софт. 13 часов назад, LiVit сказал: По слухам у ардуины нет отладчика. Более того, у нее нет даже нормальной IDE. Та, что зовется ArduiniIDE по функционалу на порядок хуже обычного Notepad++. Ну а с отладчиком в AVR в принципе все сложно. Там JTAG, занимает кучу выводов, плюс программатор под него стоит недешево. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
LiVit Опубликовано 10 сентября, 2021 Поделиться Опубликовано 10 сентября, 2021 3 часа назад, BARS_ сказал: Более того, у нее нет даже нормальной IDE. Та, что зовется ArduiniIDE по функционалу на порядок хуже обычного Notepad++. Ну а с отладчиком в AVR в принципе все сложно. Там JTAG, занимает кучу выводов, плюс программатор под него стоит недешево. О боже.... Про AVR не знал. Никогда с ними не работал. Когда пытались заставить - пригрозил что уволюсь ))) 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Vlad_17 Опубликовано 10 сентября, 2021 Поделиться Опубликовано 10 сентября, 2021 Не могу сказать что Arduino страшное чудовище, сделано криво и просто чтобы склепать что нибудь на быстро не углубляясь в программный язык. С того что вижу проблема вероятно в том что переменные int вписаны в loop, на "i", "b" и "c" это особо не влияет и так понятно, а вот "int e" и "int inInt" каждый цикл будут приписаны к нулю (если не вписали "int e = 0;" Arduino и так автоматически вписывает ноль если мне память не изменяет). Следует их перенести на самый верх перед "setup()", ну и вообще стараться не описывать переменные в "loop", потом разобраться тяжело. Немного криво сделано считывание с Serial'a ну да ладно, работать вроде будет пусть хоть и коряво. Ну и массив не обязательно писать в одну линию в километр, можно после запятой перейти в следующую строку и т.д. Я сам самоучка и не программист но и то вижу что коряво понаписано, и почему так тяжело писать комментарии, ведь самому потом легче разобраться 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
dasZebra Опубликовано 10 сентября, 2021 Поделиться Опубликовано 10 сентября, 2021 (изменено) Друзья, имхо вы несправедливы к ардуино. Ардуино это игрушки для детей младшего школьного возраста. Это как кукла барби или паровозик от игрушечной железной дороги. Назначение игрушки - пробудить у ребенка интерес - а что же там у игрушки внутри, что заставляет куклу открывать глаза и говорить "мама", а паровозик - крутить колесики? Под действием пробудившегося интереса ребенек переходит к следующей стадии и разламывает игрушку - совершает акт познания истины. Игрушки нужны именно для этого - вызвать акты познания. Точно так же и ардуина - она сделана быть разломанной. Другой вопрос, почему её хватают взрослые люди и как есть тянут в "продaкшн"? Думаю что это вопрос к общему уровню грамотности. Изменено 10 сентября, 2021 пользователем dasZebra 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
LiVit Опубликовано 10 сентября, 2021 Поделиться Опубликовано 10 сентября, 2021 (изменено) 1 час назад, dasZebra сказал: ... Под действием пробудившегося интереса ребенек переходит к следующей стадии... Другой вопрос, почему её хватают взрослые люди и как есть тянут в "продaкшн"? Думаю что это вопрос к общему уровню грамотности. Чтобы пробудить интерес, я дал ребенку задание развести плату "новогодней елочки" с разноцветными светодиодами, подстроечным резистором, кнопками и STM32F030. Потом научил его в кейле писать проги на си и отлаживать. Он был доволен как слон, когда это всё заработало. Одну оставил себе, другую подарил. А взрослых дядей, которые тянут буратину в продакшн, надо расстреливать. Изменено 10 сентября, 2021 пользователем LiVit 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
dasZebra Опубликовано 10 сентября, 2021 Поделиться Опубликовано 10 сентября, 2021 3 минуты назад, LiVit сказал: Чтобы пробудить интерес, я дал ребенку задание развести плату "новогодней елочки" с разноцветными светодиодами, подстроечным резистором, кнопками и STM32F030. Потом научил его в кейле писать проги на си и отлаживать. Он был доволен как слон, когда это всё заработало. Насколько Вы молодой Папа, сколько сейчас вашему лет? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
LiVit Опубликовано 10 сентября, 2021 Поделиться Опубликовано 10 сентября, 2021 4 часа назад, dasZebra сказал: Насколько Вы молодой Папа, сколько сейчас вашему лет? Вам зачем? Сыну 16, мне 43. В результате он пошел в техникум, учиться на программиста 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
w5277c Опубликовано 10 сентября, 2021 Поделиться Опубликовано 10 сентября, 2021 Я смотрю, в целом тема получилась позитивной. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
dasZebra Опубликовано 10 сентября, 2021 Поделиться Опубликовано 10 сентября, 2021 2 часа назад, LiVit сказал: Вам зачем? Заинтересовало. Я своего то же привлекал. И пока он был школьником, то в авто мог тормозные колодки поменять, прогал для веба (я даже домен ему выделял собственный), паял всякие несложности типа металоискателей и стендикамов. Но не зашло. Совсем. Как отрезало. Даже отказался на Водительское разрешение учиться. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.