Jump to content
Sign in to follow this  
mappy89

Генератор Прямоугольных Импульсов На Atmega

Recommended Posts

Доброго времени суток. Задался целью сделать генератор прямоугольных импульсов на atmega16 с регулируемой частотой и длительностью импульса, поэтому возникло несколько вопросов:

- нужно ли использовать ЦАП или достаточно будет на прерывание от таймера повесить что то вроде PORTA^=(1<<1);

- каким образом задаётся время импуьлса? прокатит ли вариант с использованием delay в прерывании от таймера, например

PORTA|=(1<<1);
_delay_ms(100); // время импульса 100 мсек
PORTA&=~(1<<1);

какие вообще подводные камни есть при создании генератора на контроллере?

Заранее спасибо.

Share this post


Link to post
Share on other sites
Guest

ни то, ни другое

в этом МК есть возможность запустить таймер и генерировать необходимую частоту аппаратно,

т.е.. при этом МК не занят

работал на мега8, генерировал от 36 кгц (иммитация пульта ДУ) до 170 кгц (генератор делал)

так что всё проще :)

но надо будет почитать даташит. Вдумчиво. Ищите книги Евстигнеева (переведенные даташиты) по серии "Мега"

Share this post


Link to post
Share on other sites

Изготовление 2-х слойных плат от 2$, а 4-х слойных от 5$!

Быстрое изготовление прототипа платы всего за 24 часа! Прямая доставка с нашей фабрики!

Смотрите видео о фабрике JLCPCB: https://youtu.be/_XCznQFV-Mw

Посетите первую электронную выставку JLCPCB https://jlcpcb.com/E-exhibition чтобы получить купоны и выиграть iPhone 12, 3D-принтер и так далее...

Вебинар "Новый BlueNRG-LP с Bluetooth 5.2 и Long Range — волшебная палочка разработчика IoT" (04/02/2021)

Приглашаем 4 февраля на бесплатный вебинар о BlueNRG-LP - новой системе-на-кристалле (SoC) STMicroelectronics. На вебинаре будут детально рассмотрены функциональные блоки, особенности подключения, аппаратные и программные средства для разработки, настройка сценариев с помощью BlueNRG-GUI, практические примеры работы с микросхемой, а также примеры применения BlueNRG-LP в устройствах интернета вещей.

Подробнее

Таймеры, ШИМ


Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Share this post


Link to post
Share on other sites

Новые компактные конденсаторы Panasonic серии TPS. Закаленный характер.

Panasonic представил новую серию TPS твердотельных танталовых конденсаторов с проводящим полимером для поверхностного монтажа. Конденсаторы серии TPS обладают уникальными особенностями, что делает их отличным выбором для использования в приложениях с высокими требованиями.

Подробнее

SiC MOSFET на 1200 В для схем флайбэк до 500 Вт!

Компания Wolfspeed выпустила новые карбид-кремниевые транзисторы C3M0350120D/J на 1200 В, предназначенные для маломощных устройств мощностью до 500 Вт. Карбид-кремниевые транзисторы в сравнении с кремниевыми демонстрируют меньший на 75% уровень потерь на переключение и меньшее на 50% значение потерь проводимости в рабочем режиме при температуре кристалла 100…150°С.

Подробнее

В общем накатал код, где при нажатии кнопки частота генерируемых импульсов увеличивается, однако при симуляции в протеусе осциллограф не отражает каких либо изменений, либо появляются какие то неясные пики:

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/delay.h>
#include "timer_value.h"
int pTimerValue = 30000;

int main(void)
{
OCR1A = pTimerValue;  //записываем значение в регистр сравнения
DDRD|=(1<<5)|(1<<7); //выход для светодиода и осциллографа
PORTD|=(0<<5);
GICR|=(1<<INT1); //внешнее прер. для кнопки
MCUCR|=(1<<ISC11);

TCNT1 = 0;  // таймер по совпадению
TCCR1A|=(1<<COM1A0);
TCCR1B|=(1<<CS12)|(1<<WGM12);

TIMSK|=(1<<OCIE1A);
sei();

   while(1)
   {

}
}
ISR(TIMER1_COMPA_vect)
{
 OCR1A|=pTimerValue;  //обновляем значение регистра
}
ISR(INT1_vect)
{
PORTD^=(1<<7); //моргаем диодом
pTimerValue-=1000;  //увеличиваем частоту (уменьшая значение при совпадении)
}

Share this post


Link to post
Share on other sites
Guest

урок вам на всю жизнь: не верить шПротеусам и прочим симуляторам!

вот дуратская мода пошла на них!

Share this post


Link to post
Share on other sites

Есть ещё один вопрос: как установить в таком режиме работы таймера длительность импульса?

Share this post


Link to post
Share on other sites

...вот дуратская мода пошла на них!

Не надо свое сугубо личное мнение возводить в ранг вселенской истины...


Любой, заслуживающий внимания, опыт приобретается себе в убыток...

Share this post


Link to post
Share on other sites

Есть ещё один вопрос: как установить в таком режиме работы таймера длительность импульса?

Зная частоту и разрядность таймера - с помощью калькулятора, ну или по старинке, делением в столбик :heat:


Иван Сусанин - первый полупроводник

Share this post


Link to post
Share on other sites

Интересует, куда именно прописывать посчитанное значение длительности, т.е. в какой регистр

Могли бы Вы привести пример в коде для длит импульса, скажем, 100 мсек при 8 МГц, и 8-ми разрядном таймере?

Заранее спасибо!

Share this post


Link to post
Share on other sites

Примера кода нет, попытаюсь на пальцах показать. Если частота 8 МГц , а разрядность таймера 8 бит, то частота ШИМ будет 8000000 / 256 = 31250. Длительность импульса 1 / 31250 = 0,000032 секунды при значении регистра сравнения = 255. Длительность импульса можно регулировать в диапазоне 0 до 0,000032 сек с дискретностью 8 бит, изменяя значение регистра сравнения от 0 до 255.

Примерно так, если что, поправьте.


Иван Сусанин - первый полупроводник

Share this post


Link to post
Share on other sites

Т.е. при срабатывании прерывания по совпадению мы записываем новые данные в регистр сравнения (соответствующие длительности импульса), а по окончанию импульса записываем в этот регистр прежние данные?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Сообщения

    • Автор же сказал, что в дальнем углу занимает много перспективного  места. С уважением, Сергей
    • Зачем вам такие бандуры? В печатках сверлить достаточно RS-385 двигателя. Очень хорошие можно найти в фенах для волос.
    • А ни чё, что этот дворец просто заплесневел давно, и сейчас ремонтируется? Он построен, много лет назад уже, и в 19-м году я уже про него рассказывал тут, но тогда тебе покуй было, я же не анальный? Тогда он на гугл-картах так и назывался "Дворец путина", а ты теперь пишешь, "не строил бы". Это тебе анальный напел, что он его только строить начал, а дворцу этому хз уже сколько лет. Вполне может и лет 20.
    • Lamp_2_1680x1050.zip            Lamp_2_1280x1024.zip
    • Лучшие перспективы, наилучшего использования: 1.  применитьпо прямому назначению. 2. продать (кому оно надо), или отдать (и пусть у него оно лежит). 3. разобрать на цветмет и подшибники. 4. сделать на его базе станочек (сверлилку/точилку).  Легкодоступны более компактные и боле мощные двигатели, с беспроблемным питанием. 5. положить в дальний угол, когда нибудь точно пригодится!!... (Хотя бы археологам). С уважением, Сергей
    • Да действительно, это лучший вариант. Так и собрал. Всё работает как часы. Ещё раз огромное спасибо.   Даже такие. Когда долго возишься со схемой, то лучше вникаешь в её тонкости. Чем тупо просто скопировать чужую схему, не понимая как именно она работает.    Не вижу ничего зазорного, для этого форум и существует. Да и просто приятно пообщаться с умными людьми. Набираешься опыта и знаний. 

  • Мультиметр ZOYI ZT-300AB с Bluetooth

  • Similar Content

    • By Обычный Человек
      Микроконтроллер ATmega328p, внешний кварц 16МГц. Компилятор avr-gcc с оптимизацией O1

      Написал код для управление шаговым двигателем. Работает так: требуемая скорость задается переменной STP1_ReqSpeed, дальше с частотой 100Гц срабатывает таймер TIM0, который высчитывает с какой частотой надо подавать сигналы на вход шагового драйвера. TIM1 работает в режиме частотно импульсной модуляции и по прерыванию меняет значение пина на противоположное.

      Управление работает, скорость регулируется, но по какой то причине случаются пропуски шагов. Чаще всего во время ускорения. Количество пропусков от 0 до 4, обычно 2-3, длятся 32мс.

      Из кода вырезал неиспользуемое. Заменить прерывания на аппаратный ШИМ возможности нет. Как убрать эти пропуски?
      Осциллограммы:
       
       
    • By Артур Измаилов
      1.Создать схему в которой два светодиоды загораются в следующей последовательности:  1 и 2, 2 и 3, 3 и 4, …, 15 и 16, 1 и 2 и т.д. (т.е. создается эффект движения двух светодиодов).
      Дано условие выше. Решение задачи нужно представить в Proteus. Код для программирования пишу в AtmelStudio 7. Схему собрал в Proteus. Вывел 16 светодиодов через 2 порта (Порт B и Порт D). МК использовал ATMEGA 8 вариации в корпусе DIP с 28 ножками (SPDIL28). 
      До этого смог написать схему, чтобы работали светодиоды в последовательности 1.2.3.4.5....16.1.2.3.4 и тд. Делал через оператор FOR. Однако с этим кодом начались проблемы. Помогите пожалуйста. 
      Нижу представил изображение кода. 
      Заранее спасибо!
       

    • By Lisitsin
      Собираем компьютер ZX Spectrum на микроконтроллерах AVR своими руками!
      Проект открытый, все исходники и информация проекта по ссылке
      https://yadi.sk/d/9S2S0ZmNqsLykQ
      Проект печатной платы выполнен в PCAD-2006, программное обеспечение разработано в AVRStudio  4b401
      Здесь отвечу на все возникающие вопросы и помогу со сборкой и запуском
    • By O5-14
      По поводу этого https://cxem.net/mc/mc220.php девайса. Как напоминалка паролей думал сделать, только в моих краях 1604 нету( Под wg12864 нет случаем модификации ? 
      И что такое значит "Текстовые файлы должны быть в обычном txt формате и без форматирования" - первая часть понятна. А без форматирования ? Одна длинная строка ? Пробелы-то хоть можно ?
    • By Karl-Ieronim
      Коллеги, всем привет. 
      Увидел вот такой проект. 
      Несмотря на явную привлекательность что-то совсем мало повторивших. 
      Может кто-то из завсегдатаев форума делал этот проект? 
      Интересует ваше мнение: хочу повторить, но не силен в программировании, поэтому беспокоюсь на счёт подводных камней с которыми не смогу справиться. 
×
×
  • Create New...