10 сообщений в этой теме

Kudich    0

Всех приветствую!

Сам я программирую на стандартной среде ардуинки, и в одном проекте потребовалось увеличить частоту ШИМ на портах 5,6,9,10,11,13 Arduino Micro. На этой ардуино стоит Atmega32u4, есть тут знатоки avr? Как повысить частоту на этих пинах?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    560
12 часа назад, Kudich сказал:

стоит Atmega32u4
Как повысить частоту на этих пинах?

Хоть бы, ради интереса, открыли "книгу" на процессор и посмотрели, как формируется выходной сигнал ШИМ. Подобные вопросы отпали бы сразу ...
Или лень-Матушка вперёд родилась ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    841
13 часа назад, Kudich сказал:

Как повысить частоту на этих пинах?

Прочесть даташит

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    560

@BARS_ , а я не тоже самое посоветовал ? :)
Зачем повторяться ? :unknw:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Kudich    0
8 часов назад, Alex сказал:

Хоть бы, ради интереса, открыли "книгу" на процессор и посмотрели, как формируется выходной сигнал ШИМ. Подобные вопросы отпали бы сразу ...
Или лень-Матушка вперёд родилась ?

Как формируется ШИМ знаю, поэтому хочу повысить частоту. А вот как это сделать не знаю, с avr только начал знакомиться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Kudich    0
8 часов назад, BARS_ сказал:

Прочесть даташит

Походу придется

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    560
5 часов назад, Kudich сказал:

Походу придется

 

14 часа назад, Alex сказал:

Или лень-Матушка вперёд родилась ?

:vava:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
COKPOWEHEU    263
В 20.09.2018 в 02:47, Kudich сказал:
В 19.09.2018 в 18:24, BARS_ сказал:

Прочесть даташит

Походу придется

Вообще-то при разработке электроники с этого начинать надо, а не только когда воткнетесь носом в проблему. И уж точно до того, как спрашивать на форумах

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
snn_krs    47
On 9/19/2018 at 5:18 AM, Kudich said:

Как повысить частоту на этих пинах?

После прочтения даташита посмотрите файл d:\Program\arduino-1.8.3\hardware\arduino\avr\cores\arduino\wiring.c.

В нем есть функция init() в которой и задается частота шим. Но это может отразиться на других функциях типа измерения временных интервалов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: Денис Оробей
       Помогите написать простую задачку (для вас - простую, а я не шарю), на плате контроллера-конструнтора KIT-8515 нужно  сделать вот это: "Пусть движковыми переключателями задаются два четырехзначных операнда.  Напишите и протестируйте программу, при работе которой после нажатия кнопки 1 операнды складывались, а при нажатии кнопки 2 операнды вычитались, а результат операции выводился на светодиоды"
      Прикреплённый файл - начало задачки.
      Заранее благодарствую:)
      123.rar
    • Автор: AnKoMa
      Нужна помощь МАСТЕРА!
      Есть объем (утепленный, застекленный балкон).
      Нужно сделать систему управления периферийными устройствами  для подстраивания имеющихся климатических изменений к заданным годовым и суточным циклам растений другого климатического пояса.
      Периферия:
      Источники обогрева – вентилятор, подающий тёплый воздух из квартиры;  насос, прогоняющий горячую воду из системы отопления дома по водяному тёплому полу балкона; ИК потолок; электрообогреватель с вентилятором.
      Вентиляция (устраняет застой воздуха) - два сервопривода (открытия/закрытия форточек); два вентилятора, способные изменять угол наклона (подачи воздуха).
      Освещение  - три типа ламп разного спектра (УФ, холодный белый, фито лампы красно-синие).
      Охлаждение - упомянутые ранее форточки и вентиляторы; шторки притенение; туманообразующая установка.
      Увлажнение - тот же туманообразователь и он же, но через клапан гонит воду в поддоны.
      Принцип:
      Перед началом работы в память вносится почасовой диапазон допустимых температур.
      Работа - Производятся замеры внешних (уличных) условий (температура, влажность, изменение давления).  Производятся замеры внутренних  условий (температура, влажность воздуха и грунта, освещённость).  Календарь-часы (реального времени) выбирают из памяти соответствующий адрес, и выбранная  информация попадает на схему сравнения с показаниями, замеренными в управляемом объёме. В зависимости от полученной разности, система управления выбирает наименее энергозатратный периферийный орган для достижения заданных условий. Величина воздействия энерготратящих устройств должна равняться интегралу во времени от разницы заданного и замеренного параметра. При достижении полной мощности и не уменьшающейся разницы (невозможность компенсировать) подаётся сигнал тревоги.
      Температура в нутрии объёма прямо пропорциональна внешней освещенности в пределах указанных при внесении в память. Количество воды для полива или опрыскивания прямо пропорционально температуре предыдущего дня. Полив не должен проводиться при падении атмосферного давления и низкой внешней температуре. После полива температура не должна опускаться к нижнему пределу.  В сильные морозы шторы можно не поднимать (экономия тепла). Летом полив или проводить вечером, а весной и осенью - утром. Зимой полива НЕТ!!! Может быть опрыскивание ранней весной (утром  солнечного дня). С весны до осени на рассвете включать УФ подсветку, в период вегетации включать свет в пасмурную погоду, поддерживать световой день не менее 12 часов (в тёмное время суток при включении освещения закрывать шторки). При падении уровня воды, в баке опрыскивателя, ниже допустимого подаётся соответствующий сигнал.
      Предусмотреть ручную подачу той или иной команды.
      В случае невозможности выполнить поставленную задачу оповещать.
      Подскажите, если есть опыт, наиболее простой путь к решению.
       
    • Автор: Николай Зубий
      Как сделать  устройство, выводящие на индикатор время, прошедшее с момента последней перезагрузки контроллера?
    • Автор: forestdozor
      Здравствуйте!

      Мне нужно измерить длительность импульса. Для этого сначала применял внешнее прерывание, а теперь перешел на режим захвата таймера в Atmega 328.
      Однако сейчас происходит странное: Через определенное таймер просто останавливается. Гугл результатов не дает, ни у кого захват таймера 1 не останавливается.
      Подскажите пожалуйста, что делать?
      Среда разработки CodeVisionAVR v3.12. Сейчас попробовал версию 3.3, толку нет. Не работает. Код максимально упростил, но по прежнему толку ноль.
      Переполнение таймера 0 так же работает отлично, до тех пор, пока что-то не произойдет с прерыванием по захвату. Как только что-то произошло - мк останавливается...
      Может немножко подождать, и увеличить значение счетчика current_timp еще на пару значений... Совсем не знаю что делать.
       
       
      interrupt [TIM1_OVF] void timer1_ovf_isr(void)
      {
      TCNT1H = 0x00;
      TCNT1L = 0x00;
      }
      // Timer1 input capture interrupt service routine
      interrupt [TIM1_CAPT] void timer1_capt_isr(void)
      {
       
             TCNT1H = 0x00;
             TCNT1L = 0x00;           // Это уже уровень танцев с бубном "авось поможет" - не помогает.
         
              current_timp++;          // Все упрощено до максимума. Мне бы он хоть количество периодов для начала...
              
        //  }
      }
      // Прерывание по переполнению первого таймера
      interrupt [TIM0_OVF] void timer0_ovf_isr(void)
      {
      // Обнуление счетного регистра.
      TCNT0=0x00;

          
          counter ++;
          if (counter > 10)
          {
                  lcd_clear();
                  sprintf(buffer,"%d us", current_timp);
                  lcd_gotoxy(0,0);
                  lcd_puts(buffer);
                  counter = 0;
          }
          
          
      }

      // Главный цикл программы
      void main(void)
      {

      #pragma optsize-
      CLKPR=(1<<CLKPCE);
      CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
      #ifdef _OPTIMIZE_SIZE_
      #pragma optsize+
      #endif

      // Port B initialization
      // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
      DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
      // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
      PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
      // Port C initialization
      // Function: Bit6=In Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out
      DDRC=(0<<DDC6) | (1<<DDC5) | (1<<DDC4) | (1<<DDC3) | (1<<DDC2) | (1<<DDC1) | (1<<DDC0);
      // State: Bit6=T Bit5=1 Bit4=1 Bit3=1 Bit2=1 Bit1=1 Bit0=1
      PORTC=(0<<PORTC6) | (1<<PORTC5) | (1<<PORTC4) | (1<<PORTC3) | (1<<PORTC2) | (1<<PORTC1) | (1<<PORTC0);
      // Port D initialization
      // Function: Bit7=Out Bit6=Out Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
      DDRD=(1<<DDD7) | (1<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
      // State: Bit7=1 Bit6=1 Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
      PORTD=(1<<PORTD7) | (1<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
      // Делители таймера 0 рассчитаны таким образом , что его тактовая частота = 15,625 КГц. Расчет был на применение в схеме семисегментников, но с LCD индикатором будет информативнее.
      TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (0<<WGM00);
      TCCR0B=(0<<WGM02) | (1<<CS02) | (0<<CS01) | (1<<CS00);
      TCNT0=0x00;
      OCR0A=0x00;
      OCR0B=0x00;
       
      // Настройка таймера 1
      TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
      TCCR1B=(1<<ICNC1) | (1<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);
      TCNT1H=0x00;
      TCNT1L=0x00;
      ICR1H=0x00;
      ICR1L=0x00;
      OCR1AH=0x00;
      OCR1AL=0x00;
      OCR1BH=0x00;
      OCR1BL=0x00;
      // Разрешение прерывания по переполнению таймера 0
      TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (1<<TOIE0);
      // Timer/Counter 1 Interrupt(s) initialization
      TIMSK1=(1<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (1<<TOIE1);
    • Автор: Oleg Prokopev
      Здравствуйте! Делаю тестовую тепличку. Подскажите, пожалуйста, как и чем оптимальнее всего запитать следующие элементы от сети?

      Arduino Uno R3
      AM 2302 (датчик температуры и влажности )
      1.8 ST7735s TFT LCD дисплей
      DS1307 (датчик времени)
      Реле 

      Ленту Led SMD 5730 (10 диодов) 3,0-3,4V 20mA
      Нагреватель 5V 2A
      Кулер 12V 0,15A x 2 шт.
      Увлажнитель воздуха 24V 0,06-0,15A
       
      И будет ли работать только такой модуль для увлажнения?
       
      Спасибо!
  • Сообщения

    • Седня день РВСН. Я не служил, но для вас работал. С праздником, коллеги!
    • Значит не может быть такой защиты? Явный признак неисправности?
    • Продам три кассетницы BOX-ALL на 144 ячейки в каждой с их содержимым. Одна кассетница напихана россыпью резисторов 0603, 0805 и 1206 размеров. А что в остальных лежит, я кину екселевский файл. Также в одной кассетнице лежат конденсаторы размеров 0805 и 1206 с номиналами от 4,7пф до 4,7мк. Цена будет 4500 ру. Причина продажи- у меня огромный шанс войти в новогодние праздники без з/п   На продажу.xls
    • Годы идут а холивары не угасают на эту тему.  Как показала лично моя практика - пока у меня небыли необходимости писать напрямую в регистры без хала, есть конечно некоторые хаки для работы с ДМА и тп которые идут в обход хала но как бы на этом наверное все, все остальное если рассматривать стандартную периферию, все вроде как работает без особых проблем.  В чем реально кайф хала - это то что люди другие воспринимают код гораздо лучше чем набор регистров. Это кардинально меняет работу в команде, когда вы в паре пишите код в одном и том же стиле добавляя нужные вам фишки при этом не мучая друг друга вопросами о том что делает та или иная самописная обертка. Но тут надо тоже понять некоторую вещь - я не программист железа и под железо пишу исключительно под конкретные задачи нашей организации. То есть появляется задача, если я могу ее решить на STM32 я просто беру и накидываю железяку на хале, она запускается и работает и все счастливы. Куб очень облегчает изначальную конфигурацию железа и маппинг портов конечной железки. Это экономит в первую очередь кучу времени и именно эмоциональных затрат на разработку железа. У меня по сути нету времени заниматься железом, я пишу еще на куче других языков типа php Javascript Python мне приходится знать кучу всякой дичи типа фреймворков и тп херни типа SQL особенности баз данных, типа полнотекстовых поисков в Postgresql и еще ОЧЕНЬ ОЧЕНЬ много всякой херни. И вот занимаясь всей этой херней, когда появляется задача сделать что то в железе, я просто беру и делаю это  и с минимальными эмоциональными затратами для себя. А это хотелось бы напомнить для меня это - необходимость изучать дополнительный софт, целый язык программирования СИ, я уж не говорю про минимальный набор знаний для работы с электроникой, разводкой печатных плат и тп.  При всех этих условиях, извините меня грешного, я не собираюсь изучать набор регистров микроконтроллеров, у меня чисто физически подобная необходимость вызывает боль. Оставьте уже ХАЛ в покое. Хал дарит таким людям как я добро и счастье, и приносит в прямом смысле тепло в дома.  По поводу ОС в МК, тут все гораздо проще. Если вы пишите что то линейное, без интерфейса и тп. То ОС не нужна, вам наоборот проще будет прописать весь сценарий линейно и работать с ним не задумываясь о том как он будет работать в ОС. Когда же вы пишите какие то асинхронные штуки, работу с интерфейсом и тп. То тут конечно лучше использовать ОС, если она конечно удовлетворяет вашим требованиям.  Так что если кто хочет просто влится в программирование на STM32 то как по мне лучше просто взять какой нибудь простой камень F0 серии или L0 серии хотя как по мне она немного по сложнее. Например какой нибудь STM32F030K6T6 он и паяется на старте хорошо и выводов под множество задач хватит. Взять ST-Link какой нибудь (для начала ваще не принципиально). Поставить бесплатный кейл + кубМХ и начинать писать параллельно читая документацию на ту или иную периферию.  Иначе же возникает вопрос, вам шашечки или ехать? Если ехать, то уже можно начинать. 
    • Глянь, как выглядит светодиодка на жу10, там в торце 2-4 с/д, а остальные по бокам, толку не будет, до и галогенка от потолка не даст требуемого освещения. Как стол в комнате размещён?
    • У Вас недостаточно условий. Единственное, что можно сказать, что из 3 В пять так получить невозможно. И 9 и 12 ограничить до 5 В тоже не просто.
    • Понятно. А как узнать, какую постоянную мощность они способны выдержать?  Кроме всплесков может быть и некоторое постоянное превышение. Power dissipation on infinite heatsink?