Например TDA7294

Форум РадиоКот • Просмотр темы - ШИМ на Atmega32 и Atmega48\168PA. В чем отличия?
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 23, 2024 11:27:50

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: ШИМ на Atmega32 и Atmega48\168PA. В чем отличия?
СообщениеДобавлено: Пн июн 05, 2017 18:29:36 
Родился

Зарегистрирован: Ср мар 30, 2011 18:55:28
Сообщений: 9
Рейтинг сообщения: 0
Всем здравствуйте. Я новичок, изучаю микроконтроллеры. У меня есть Atmega32, на которой я делаю свои опыты, и все хорошо. Недавно приобрел Atmega168PA (он на плате клона Arduino Pro Mini 5v), и решил попробовать поработать с аппаратным ШИМ на нем, но не получается, нога не выдает требуемое напряжение. Цеплялся мультиметром к каждой ноге, которая может давать ШИМ (смотрел по даташиту), не понимаю, не работает. Заметил одну вещь, что ноги OCxx на МК Atmega32 имеют только одно назначение (по схеме), а вот на Atmega48 и Atmega168PA на ноге OC2A, к примеру, есть еще и MOSI и PCINT3, слышал, что чтобы подать ШИМ на ногу, надо через фьюзы это сконфигурить. Требуемый фьюз не нашел, либо это делается не так :( Но шим не работает, вот код (пробовал на Atmega48 и 168PA):

Код:
#define F_CPU 8000000UL // atmega48 8 MHz

#include <avr/io.h>
#include <util/delay.h>

#define msleep _delay_ms

void pwm_init()
{
    // switch off voltage on every D and B ports
    PORTB = 0x00;
    PORTD = 0x00;
    // enable PD5, PD6, PD3 and PB3 for PWM output
    DDRB  = 0x08;
    DDRD  = 0x68;
    // setup timers for hardware pwm
    TCCR0A |= (1 << COM1B1) | (0 << COM1B0) | (1 << WGM10) | (0 << WGM11) | (1 << COM1A1) | (0 << COM1A0);
    TCCR0B |= (1 << WGM12) | (0 << WGM13) | (1 << CS10);
    TCCR2A |= (1 << COM1B1) | (0 << COM1B0) | (1 << WGM10) | (0 << WGM11) | (1 << COM1A1) | (0 << COM1A0);
    TCCR2B |= (1 << WGM12) | (0 << WGM13) | (1 << CS10);
}

int main(void)
{
    pwm_init();

    while(1)
    {
        OCR0A = OCR0B = OCR2A = OCR2B = 0x00;
        msleep(1000);
        OCR0A = OCR0B = OCR2A = OCR2B = 0x3F;
        msleep(1000);
        OCR0A = OCR0B = OCR2A = OCR2B = 0x7F;
        msleep(1000);
        OCR0A = OCR0B = OCR2A = OCR2B = 0xFF;
        msleep(1000);
    }

    return 0;
}


подскажите, что делаю не так? Спасибо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ШИМ на Atmega32 и Atmega48\168PA. В чем отличия?
СообщениеДобавлено: Пн июн 05, 2017 19:36:18 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Несмотря на то, что расположение битов в регистрах настройки таймера скорее всего совпадают во всех трех таймерах, крайне некорректно использовать имена битов таймера1 для настроек таймеров 0 и 2. Легко где-нибудь влетите с таким подходом.

Вы запускаете 5ый режим таймеров. Т.е. ШИМ с фазовой коррекцией. Поглядите в ДШ до какого значения будет считать счетчик и думаю станет понятно почему у Вас ничего не работает.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ШИМ на Atmega32 и Atmega48\168PA. В чем отличия?
СообщениеДобавлено: Пн июн 05, 2017 19:49:10 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Z_h_e писал(а):
Несмотря на то, что расположение битов в регистрах настройки таймера скорее всего совпадают во всех трех таймерах
нифига! у нулевого и второго таймера количество регистров даже не совпадает с количеством регистров первого таймера! И биты конфигурации располагаются иначе.
Z_h_e писал(а):
крайне некорректно использовать имена битов таймера1 для настроек таймеров 0 и 2
не надо смягчать ситуацию: недопустимо!

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: ШИМ на Atmega32 и Atmega48\168PA. В чем отличия?
СообщениеДобавлено: Пн июн 05, 2017 19:59:50 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Для регистров TCCRnA и TCCRnB биты которые использует товарищ ТС находятся на одних местах, разве что WGM13 совсем нет, но там бит только чтение (по случайности). Но это абсолютно ничего не меняет. С таким же успехом можно использовать имена битов регистра DDR для настройки таймера, вернее даже так лучше, ибо сразу будет видно что чушь какая-то в коде, а эти имена не сразу то и заметишь что левые.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: ШИМ на Atmega32 и Atmega48\168PA. В чем отличия?
СообщениеДобавлено: Вт июн 06, 2017 19:58:19 
Родился

Зарегистрирован: Ср мар 30, 2011 18:55:28
Сообщений: 9
Рейтинг сообщения: 0
Z_h_e писал(а):
Несмотря на то, что расположение битов в регистрах настройки таймера скорее всего совпадают во всех трех таймерах, крайне некорректно использовать имена битов таймера1 для настроек таймеров 0 и 2. Легко где-нибудь влетите с таким подходом.


Да, это я совсем забаранил, не заметил глупую копипасту

Z_h_e писал(а):
Вы запускаете 5ый режим таймеров. Т.е. ШИМ с фазовой коррекцией. Поглядите в ДШ до какого значения будет считать счетчик и думаю станет понятно почему у Вас ничего не работает.


Я сверился с даташитом, переделал все следующим образом
Код:
#define F_CPU 8000000UL // atmega48 8 MHz

#include <avr/io.h>
#include <util/delay.h>

#define msleep _delay_ms

void pwm_init()
{
    PORTB = 0x00;
    DDRB  = 0x08;
    TCCR2A |= (1 << COM2A1) | (0 << COM2A0) | (0 << COM2B1) | (0 << COM2B0) | (0 << WGM21) | (1 << WGM20);
    TCCR2B |= (0 << FOC2A) | (0 << FOC2B ) | (0 << WGM22) | (1 << CS20);
}

int main(void)
{
    pwm_init();

    while(1)
    {
        OCR2A = 0x00;
        msleep(1000);
        OCR2A = 0x3F;
        msleep(1000);
        OCR2A = 0x7F;
        msleep(1000);
        OCR2A = 0xFF;
        msleep(1000);
    }

    return 0;
}



но ШИМа все равно нет, либо я по-прежнему не понимаю, либо проблема уже в камне

UPD: он как-то совсем коротко и один раз прокручивается. Видимо, опять с настройками что-то не то

Добавлено after 1 hour 40 minutes 30 seconds:
Странно, пересобрал, прошил, меряю мультиметром ногу - вроде работает. Показывает 1.25, 2.49 и 4.95, вроде все верно!


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 46


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y