Необходима схема генератора на NE555, то есть у меня есть МК с выходом ШИМ далее стоит резистор и конденсатор, на выходе я получаю напряжение от 0 до 5 вольт и никак не могу привинтить к NE555, пробовал в этой схеме убрать резистор R1 и к точке соединения R2 c 7 лапой подать это напряжение, но генерации не происходит, сама схема изначально рабочая, единственное разнится скважность импульсов
да как бы это не то, тут резисторы нужно крутить, а мне нужно управлять частотой на этом генераторе, подавая шим сигнал с микроконтроллера или напряжение от 0 до 5 вольт
Александр999, Сделать из шима микроконтроллера постоянное напряжение, которое на внешнем генераторе опять превратить в частоту? В чём смысл то, может всё таки сразу выводить регулируемую частоту с мк?
хотелось бы с МК подавать PWM сигнал так как он не грузит процессор и дает нормально выполняться остальной программе, а на выходе нужно получить разную частоту (не скважность), для вращения шагового двигателя
думал поркатило, а нет, все таймеры задействованы в программе, а эта функция использует как раз таймер, поэтому без внешки не обойтись, так что пока вопрос не решен
и даже в случае когда основной программы не было, если сработало внешнее прерывание то идет остановка генерации на осциллографе видно, в слечае шим такого нет, поэтому и хотелось бы использовать метод который я описывал выше
и даже в случае когда основной программы не было, если сработало внешнее прерывание то идет остановка генерации на осциллографе видно, в слечае шим такого нет, поэтому и хотелось бы использовать метод который я описывал выше
все равно непонятно, нафига тут внешний генератор. Хотите генерить ШИМ на МК - так и генерите его сразу нужной частоты да и все.
И кстати, если у вас "все таймеры заняты" - то PWM вы откуда возьмете, вы разве не в курсе, что PWM тоже на таймере работает? :)
Странно вот что, если убираю программу и делаю tone(), то отлично работает, если возвращаю программу то ни на одной ноге tone() не работает. Плюс добавлю, если остается часть программы с внешним прерыванием от часов, то tone на момент прерывания все же прекращается (то есть использует ресурсы проца (видно осфиллографом). Далее, при этом и с полной программой ШИМ генерируется на любой ноге PWM без проблем просто с определенной частотой с которой работает таймер при этом при сработке прерывания ШИМ сигнал не пропадает. Поэтому вижу единственное решение превратить ШИМ в напряжение а им управлять внешним таймером
Странно вот что, если убираю программу и делаю tone(), то отлично работает, если возвращаю программу то ни на одной ноге tone() не работает. Плюс добавлю, если остается часть программы с внешним прерыванием от часов, то tone на момент прерывания все же прекращается (то есть использует ресурсы проца (видно осфиллографом). Далее, при этом и с полной программой ШИМ генерируется на любой ноге PWM без проблем просто с определенной частотой с которой работает таймер при этом при сработке прерывания ШИМ сигнал не пропадает. Поэтому вижу единственное решение превратить ШИМ в напряжение а им управлять внешним таймером
А программа секретная? Оно конечно забавно. Таймеру всё равно что выдавать шим или частоту. Это два разных режима определяемых настройками. Они работают одинаково. Посмотрите c:\Users\user\Documents\ArduinoData\packages\arduino\hardware\avr\1.8.4\cores\arduino\Tone.cpp там всё про то как заряжается tone(). В принципе можно зарядить таймер самому, без всяких прерываний и он будет выдавать частоту непрерывно. Всё упирается в правильное проектирование программы. Грамотное распределение ресурсов. Сколько надо выходов ШИМов и сколько частоты? А мы до сих пор не знаем какой МК.
Atmega128. но я вижу осликом что в момент прерывания (внешнего), происходит прерывание сигнала tone (на время выполнения подпрограммы в прерывании), если полная программа то tone() совсем не работает ни на одной ноге, которых в 128 меге 7 штук, а шим отлично работает
Atmega128. но я вижу осликом что в момент прерывания (внешнего), происходит прерывание сигнала tone (на время выполнения подпрограммы в прерывании), если полная программа то tone() совсем не работает ни на одной ноге, которых в 128 меге 7 штук, а шим отлично работает
Александр, не надоело повторять одно и тоже? оставьте уже tone() - вам уже давно не про tone() советуют, а про то, что можно с помощью ШИМ генерить нужную частоту прямо на МК, без всякого внешнего генератора.
И поскольку это ШИМ - он не будет зависеть от внешних прерываний.
Необходима схема генератора на NE555, то есть у меня есть МК с выходом ШИМ далее стоит резистор и конденсатор, на выходе я получаю напряжение от 0 до 5 вольт и никак не могу привинтить к NE555, пробовал в этой схеме убрать резистор R1 и к точке соединения R2 c 7 лапой подать это напряжение, но генерации не происходит, сама схема изначально рабочая, единственное разнится скважность импульсов
понимаю что нужно регулировать ток заряда конденсатора C1, но не пойму как это можно просто реализовать
Первая ссылка гугля. Не благодари.
да как бы это не то, тут резисторы нужно крутить, а мне нужно управлять частотой на этом генераторе, подавая шим сигнал с микроконтроллера или напряжение от 0 до 5 вольт
ссылку видимо заменили на ютуб, но это то же не то
Тогда тут. Последняя схема, на которой показано куда подавать 0-5 вольт.
там написано про изменение скважности, но не частоты, перерыл кучу страниц и схем, если бы все было так просто я бы не задавал вопросы на форуме
А надо то что? В первой ссылке частота, во второй скважность.
Александр999, Сделать из шима микроконтроллера постоянное напряжение, которое на внешнем генераторе опять превратить в частоту? В чём смысл то, может всё таки сразу выводить регулируемую частоту с мк?
хотелось бы с МК подавать PWM сигнал так как он не грузит процессор и дает нормально выполняться остальной программе, а на выходе нужно получить разную частоту (не скважность), для вращения шагового двигателя
Разную частоту не загружая процессор даёт tone()
Александр999, Какая проблема вместо скважности частоту регулировать?
сейчас попробовал, вроде подходит, спасибо
думал поркатило, а нет, все таймеры задействованы в программе, а эта функция использует как раз таймер, поэтому без внешки не обойтись, так что пока вопрос не решен
и даже в случае когда основной программы не было, если сработало внешнее прерывание то идет остановка генерации на осциллографе видно, в слечае шим такого нет, поэтому и хотелось бы использовать метод который я описывал выше
и даже в случае когда основной программы не было, если сработало внешнее прерывание то идет остановка генерации на осциллографе видно, в слечае шим такого нет, поэтому и хотелось бы использовать метод который я описывал выше
все равно непонятно, нафига тут внешний генератор. Хотите генерить ШИМ на МК - так и генерите его сразу нужной частоты да и все.
И кстати, если у вас "все таймеры заняты" - то PWM вы откуда возьмете, вы разве не в курсе, что PWM тоже на таймере работает? :)
Опять проблема натягивания совы на глобус. Возьмите другой МК, где больше таймеров. Или задачу урезайте под имеющийся.
Странно вот что, если убираю программу и делаю tone(), то отлично работает, если возвращаю программу то ни на одной ноге tone() не работает. Плюс добавлю, если остается часть программы с внешним прерыванием от часов, то tone на момент прерывания все же прекращается (то есть использует ресурсы проца (видно осфиллографом). Далее, при этом и с полной программой ШИМ генерируется на любой ноге PWM без проблем просто с определенной частотой с которой работает таймер при этом при сработке прерывания ШИМ сигнал не пропадает. Поэтому вижу единственное решение превратить ШИМ в напряжение а им управлять внешним таймером
ну раз не умеете по другому - делайте как умеете
Странно вот что, если убираю программу и делаю tone(), то отлично работает, если возвращаю программу то ни на одной ноге tone() не работает. Плюс добавлю, если остается часть программы с внешним прерыванием от часов, то tone на момент прерывания все же прекращается (то есть использует ресурсы проца (видно осфиллографом). Далее, при этом и с полной программой ШИМ генерируется на любой ноге PWM без проблем просто с определенной частотой с которой работает таймер при этом при сработке прерывания ШИМ сигнал не пропадает. Поэтому вижу единственное решение превратить ШИМ в напряжение а им управлять внешним таймером
А программа секретная? Оно конечно забавно. Таймеру всё равно что выдавать шим или частоту. Это два разных режима определяемых настройками. Они работают одинаково. Посмотрите c:\Users\user\Documents\ArduinoData\packages\arduino\hardware\avr\1.8.4\cores\arduino\Tone.cpp там всё про то как заряжается tone(). В принципе можно зарядить таймер самому, без всяких прерываний и он будет выдавать частоту непрерывно. Всё упирается в правильное проектирование программы. Грамотное распределение ресурсов. Сколько надо выходов ШИМов и сколько частоты? А мы до сих пор не знаем какой МК.
Atmega128. но я вижу осликом что в момент прерывания (внешнего), происходит прерывание сигнала tone (на время выполнения подпрограммы в прерывании), если полная программа то tone() совсем не работает ни на одной ноге, которых в 128 меге 7 штук, а шим отлично работает
Заливайте неполную.
Atmega128. но я вижу осликом что в момент прерывания (внешнего), происходит прерывание сигнала tone (на время выполнения подпрограммы в прерывании), если полная программа то tone() совсем не работает ни на одной ноге, которых в 128 меге 7 штук, а шим отлично работает
Александр, не надоело повторять одно и тоже? оставьте уже tone() - вам уже давно не про tone() советуют, а про то, что можно с помощью ШИМ генерить нужную частоту прямо на МК, без всякого внешнего генератора.
И поскольку это ШИМ - он не будет зависеть от внешних прерываний.