AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
11.10.2021, 15:45
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,257
Сказал спасибо: 11,170
Сказали Спасибо 3,858 раз(а) в 2,928 сообщении(ях)
|
Re: ШИМ в Ардуино
Таки Arduino и с STM32F103 на борту за почти те же деньги существует.
А дальше уже от автора прошивки все зависит.
Можно и до TMS320 дойти - там все будет еще веселее
Arduino имеет право на жизнь, но с хорошими знаниями и с трезвым подходом к решаемой задаче.
Faworit, Вы бы подробнее написали про свою хотелку. На Arduino вполне можно поднять каналов PWM по числу выводов на портах МК, но вот частота будет не сильно высокой.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
Последний раз редактировалось mike-y-k; 13.10.2021 в 01:43.
|
|
|
|
11.10.2021, 22:23
|
|
Почётный гражданин KAZUS.RU
Регистрация: 21.03.2007
Адрес: М.(осква)
Сообщений: 4,311
Сказал спасибо: 2,132
Сказали Спасибо 1,732 раз(а) в 984 сообщении(ях)
|
Re: ШИМ в Ардуино
Сообщение от Faworit
|
На макетке собрал простенькую схемку для эксперимента. Даже на резисторах(переменниках) скорость реакции меня не воодушевила. А мне еще необходимо тратить время на вывод инфы на дисплейчик. А по поводу ардуинки, так моя жаба душит ставить стм-ку, но увы, прийдется! Всем спасибо за информацию, тема закрыта.
|
https://codius.ru/articles/Arduino_%...%B8_analogRead
А не пробовали на аппаратный последовательный порт дисплей посадить?
__________________
+ 7 903 641 87 25// 1. Иногда отвечаю "по памяти" 2. Часто заблуждаюсь >> Критикуйте, не обижусь.
|
|
|
|
12.10.2021, 09:09
|
|
Гражданин KAZUS.RU
Регистрация: 22.07.2007
Адрес: Владивосток
Сообщений: 984
Сказал спасибо: 435
Сказали Спасибо 375 раз(а) в 197 сообщении(ях)
|
Re: ШИМ на Ардуино
Может разориться на
16 Channel 12-bit PWM/Servo Driver-I2C interface PCA9685 module for arduino or Raspberry pi shield module servo shield
? Ардуинщики же богатеи.
|
|
|
|
13.06.2023, 07:26
|
|
Прохожий
Регистрация: 13.06.2023
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: ШИМ на Ардуино
Доброго времени суток!
У меня возникла некоторая проблемка:
Настроил ШИМ на atmega328a (плата Arduino-Nano) с кварцем на 16 МГц на максимум и когда посмотрел осциллографом, оказалось, что ШИМ колбасит всего то на 2 кГц, хотя эта же программа опробована в Протеусе, а там частота ШИМа что то около 50 кГц
Стал разбираться и оказалось, что заводские фьюзы настроены на 8 МГц внутреннего генератора и плюс делитель на 8, в окошке программатора (TL866A) убрал галочку делителя на 8 и контроллер совсем перестал программироваться, взял другой atmega328a (плата Mini Pro) заведомо рабочий и установил галочки на внешний кварцевый генератор и опять та же картина (контроллер совсем перестал программироваться).
Подскажите, где я не прав и что с этим делать, т.к. 2 кГц это ни о чем, нужно хотя бы 20 кГц?
|
|
|
|
13.06.2023, 08:36
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,531
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
Re: ШИМ на Ардуино
Если вы хотите получить ШИМ чисто аруиновскими средствами, т.е. посредством analogWrite(), ничего не выйдет.
Цитата:
|
Uno, Nano, Mini 490 Hz (pins 5 and 6: 980 Hz)
|
Можно посмотреть у Гайвера
Код:
|
void analogWriteFast(uint8_t pin, uint16_t duty) {
if (!duty) { // If duty = 0
digitalWrite(pin, LOW); // Disable PWM and set pin to LOW
return; // Skip next code
}
switch (pin) {
case 5:
bitSet(TCCR0A, COM0B1); // Enable hardware timer output
OCR0B = duty; // Load duty to compare register
return;
case 6:
bitSet(TCCR0A, COM0A1);
OCR0A = duty;
return;
case 10:
bitSet(TCCR1A, COM1B1);
OCR1B = duty;
return;
case 9:
bitSet(TCCR1A, COM1A1);
OCR1A = duty;
return;
case 3:
bitSet(TCCR2A, COM2B1);
OCR2B = duty;
return;
case 11:
bitSet(TCCR2A, COM2A1);
OCR2A = duty;
return;
}
} |
Можно еще быстрее ногами рулить через регистры.
А по поводу фьюзов - лучше не трогать. Неизвестно, что за контроллер туда китайцы впаяли. Не оригинал, однозначно.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
13.06.2023, 09:14
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,058
Сказал спасибо: 2,563
Сказали Спасибо 11,890 раз(а) в 5,964 сообщении(ях)
|
Re: ШИМ на Ардуино
Сообщение от DK
|
А по поводу фьюзов
|
Что программатор туда шьет (по галке) - "0" или "1"? Да и паршивка шьется через УАРТ, а значит - фьюзы на кварц собьют скорость и, ожидаемо, шиться средствами Абдурины перестанет.
Осваивайте нормальное программирование в Студии (там, кстати, очень дружественно организована работа с фьюзами, правда, при совместимом программаторе) или CV, он проще, начинать лучше с него.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
13.06.2023, 09:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 21.03.2007
Адрес: М.(осква)
Сообщений: 4,311
Сказал спасибо: 2,132
Сказали Спасибо 1,732 раз(а) в 984 сообщении(ях)
|
Re: ШИМ на Ардуино
Сообщение от lnee
|
плата Arduino-Nano) с кварцем на 16 МГц
|
Сообщение от lnee
|
Стал разбираться и оказалось, что заводские фьюзы настроены на 8 МГц внутреннего генератора и плюс делитель на 8, в окошке программатора (TL866A)
|
Сообщение от akegor
|
Что программатор туда шьет (по галке) - "0" или "1"?
|
Что-то странное Вы пишите. Я не настоящий Ардуинщик. Но не встречал того, чтобы при запаяном кварце тактирование было от внутреннего генератора.
Как правильно сказал akegor - перепроверьте "что" имеется виду под галочками в интерфейсе программатора. Или Вы путаете модель МК, для разных МК - разные наборы фьюзов отвечают за разные параметры.
Оффтоп:
Сообщение от lnee
|
программатора (TL866A)
|
Нестандартный выбор, обычно обходятся боле дешёвыми вариантами.
__________________
+ 7 903 641 87 25// 1. Иногда отвечаю "по памяти" 2. Часто заблуждаюсь >> Критикуйте, не обижусь.
Последний раз редактировалось mtit; 13.06.2023 в 09:42.
|
|
|
|
13.06.2023, 21:46
|
|
Прохожий
Регистрация: 13.06.2023
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: ШИМ на Ардуино
в любом случае спасибо вам за ответы, постараюсь ответить на ваши:
DK - "А по поводу фьюзов - лучше не трогать. Неизвестно, что за контроллер туда китайцы впаяли. Не оригинал, однозначно. "
с этим пожалуй уже соласен
mtit -"программатора (TL866A) Нестандартный выбор, обычно обходятся боле дешёвыми вариантами. "
согласен что для ардуино лучше что то другое, но этот аппарат у меня уже давно и шью им разные микрухи.
Вот есть картинка окна программатора, таким образом фьюзы сами становятся на любой ардуинке
а вот тут, уже и не вспомню из какой книги откапал этот калькулятор
там в окошке все прописывается как будет настроен контроллер.
Еще раньше заметил, когда пытался подружить ардуино с компьютером по протоколу RS-232, на терминале в компьютере приходилось скорость ставить не 9600 бод как в коде ардуино, а 4800, только на таких условиях происходил нормальный обмен информацией
Код для ШИМа писал в программе Bascom-AVR а потом еще и в программе Atmel Studio 7 на Си, разницы ни какой
Последний раз редактировалось lnee; 13.06.2023 в 22:01.
|
|
|
|
14.06.2023, 01:42
|
|
Почётный гражданин KAZUS.RU
Регистрация: 21.03.2007
Адрес: М.(осква)
Сообщений: 4,311
Сказал спасибо: 2,132
Сказали Спасибо 1,732 раз(а) в 984 сообщении(ях)
|
Re: ШИМ на Ардуино
Сообщение от lnee
|
в окошке программатора (TL866A) убрал галочку делителя на 8 и контроллер совсем перестал программироваться, взял другой atmega328a (плата Mini Pro) заведомо рабочий и установил галочки на внешний кварцевый генератор и опять та же картина (контроллер совсем перестал программироваться).
|
Сообщение от lnee
|
Еще раньше заметил, когда пытался подружить ардуино с компьютером по протоколу RS-232, на терминале в компьютере приходилось скорость ставить не 9600 бод как в коде ардуино, а 4800, только на таких условиях происходил нормальный обмен информацией
|
Окей, 4800 вместо 9600 - это частота вдвое меньше.
Но у Вас теоретически выходит, что частота в 16 раз меньше должна быть. Загадка.
Нескромный вопрос: фьюзы Вы читали из МК? Или что программатор подсунул - тому и поверили?
Просто стоит набор фьюз - по умолчанию. Так они с конвейера сходят. В таком состоянии - наиболее безопасно, любой программатор запрограммирует, нет необходимости внешнее тактирование подавать, или кварц припаивать.
Я думаю, изначально стояли фьюзы на внешний кварц 16 МГц, Вы в результате экспериментов переключили на внутренний генератор. Сперва получили тактовую 1 МГц, потом убрали делитель, и получили 8 МГц. Но уже от внутреннего генератора.
Т.е. - это объяснение разницы частоты в 2 раза. Плохо то, что внутренний генератор недостаточно стабилен, даже для обмена с компьютером.
А вот почему перестали программироваться МК - вопрос. Т.е. теоретически если с 16 на 8 (или 1 МГц) перешли - могли перестать. А вот наоборот - ???
https://www.radiokot.ru/forum/viewto...f27oa451499232
Третья снизу картинка - стандартный набор, как на Ардуинках и стоит обычно. Прошейте так - должно работать, если кварц припаян.
__________________
+ 7 903 641 87 25// 1. Иногда отвечаю "по памяти" 2. Часто заблуждаюсь >> Критикуйте, не обижусь.
|
|
|
|
16.06.2023, 11:05
|
|
Гражданин KAZUS.RU
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 842
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
|
Re: ШИМ на Ардуино
Сообщение от lnee
|
Стал разбираться и оказалось, что заводские фьюзы настроены на 8 МГц внутреннего генератора и плюс делитель на 8, в окошке программатора (TL866A) убрал галочку делителя на 8 и контроллер совсем перестал программироваться, взял другой atmega328a (плата Mini Pro) заведомо рабочий и установил галочки на внешний кварцевый генератор и опять та же картина (контроллер совсем перестал программироваться).
|
Вообще-то фьюз CKDIV8 на программирование МК не должен влиять.
Большинство, не могу ручаться за все, программаторов при записи нуля во фьюз его программируют, а при записи 1 сбрасывают.
Программироваться МК перестает, если записать 1 в SPIEN (Это если программируешь по SPI, как это происходит в ардуино - не знаю.)
Для примера, на скриншоте, показан запрограммированный фьюз
PS. Совет. Если не трогал фьюз SPIEN - возьми дешевый программатор USBASP или любой другой, который шьет по SPI. и вернешь все фьюзы на место.
Последний раз редактировалось МВА; 16.06.2023 в 11:38.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:00.
|
|