Другие языки программирования и технологии
Как получить 1 МГц на ШИМ порту arduino?
Искал информацию, но дельного или рабочего так и не нашел, так что прошу помочь кому не сложно. Заранее спасибо
нет делителя на 16, только 8 и 32, вряд ли получится
ШИМ на ардуино устроен примерно так
На выходе формируется сигнал с частью времени установленной "единицей", остальное время - 0
Имеем "разрешение" 8 бит - получаем, что для сигнала с соотношением единицы к нулю 50/50 - частота будет равна частоте сигнала ШИМ-генератора (один период "синусоиды")
Но в ардуино максимальная частота генератора ШИМ = 62 500 Гц (для кварца 16МГц)
void setup() {
// ШИМ 8 разрядов, 62,5 кГц
TCCR1A = TCCR1A & 0xe0 | 1;
TCCR1B = TCCR1B & 0xe0 | 0x09;
analogWrite(9, 128); // на выводе 9 ШИМ=50%
}
void loop() {
}
На выходе формируется сигнал с частью времени установленной "единицей", остальное время - 0
Имеем "разрешение" 8 бит - получаем, что для сигнала с соотношением единицы к нулю 50/50 - частота будет равна частоте сигнала ШИМ-генератора (один период "синусоиды")
Но в ардуино максимальная частота генератора ШИМ = 62 500 Гц (для кварца 16МГц)
void setup() {
// ШИМ 8 разрядов, 62,5 кГц
TCCR1A = TCCR1A & 0xe0 | 1;
TCCR1B = TCCR1B & 0xe0 | 0x09;
analogWrite(9, 128); // на выводе 9 ШИМ=50%
}
void loop() {
}
Никак. Ардуинка не тянет такие частоты.
Нормально я с ШИМ не разбирался. Но юзал вот такую функцию, скопипащенную с форума:
https://pastebin.com/Rfg1Xrj7
Пин 9 ставишь в OUTPUT, вызываешь функцию с параметром 1000000, получаешь меандр 1 МГц на 9 пине.
И логический анализатор купи для подобных задач. Бери так называемый "клон Saleae Logic", который китайский и стоит 700-1500 руб. Именно л\а нужен, а не осциллограф.
https://pastebin.com/Rfg1Xrj7
Пин 9 ставишь в OUTPUT, вызываешь функцию с параметром 1000000, получаешь меандр 1 МГц на 9 пине.
И логический анализатор купи для подобных задач. Бери так называемый "клон Saleae Logic", который китайский и стоит 700-1500 руб. Именно л\а нужен, а не осциллограф.
Изучайте датащит на AVR Atmega328, а именно тактирование. Теоретически есть два способа получения 1 МГц на ноге.
1 - Работа микроконтроллера от внутренней RC цепочки (8 МГц), во фьюзах выставляете делитель тактовой частоты на 8 вот вам и 1 МГц.
2 - Работа от кварца 16 Мгц. Запускаете таймер в режиме СТС и через него уже получаете заветные 1 МГц
1 - Работа микроконтроллера от внутренней RC цепочки (8 МГц), во фьюзах выставляете делитель тактовой частоты на 8 вот вам и 1 МГц.
2 - Работа от кварца 16 Мгц. Запускаете таймер в режиме СТС и через него уже получаете заветные 1 МГц
Похожие вопросы
- Вопрос о программирование Arduino.
- Язык Arduino(C, C++) Нужна помощь: в изучении arduino встретил знак "&" помогите, пожалуйста, что он означает!
- Arduino или Iskra JS? Что выбрать? Что лучше взять: arduino или iskra?
- Как написать ШИМ для pic16f628a
- Инициализация COM-порта! (delphi)
- Как открыть порт, как сделать облако
- Что такое COM порт?
- Как определить каким процессом занят 80ый порт ?
- как называется такое в математике: цифру 3можно получить методом суммирования чисел1+2 или2+1 или1+1+1?
- Arduino это сложно?