Например TDA7294

Форум РадиоКот • Просмотр темы - Помогите с кодом.
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Пт апр 19, 2024 19:40:50

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


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



Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Помогите с кодом.
СообщениеДобавлено: Сб окт 10, 2020 14:01:13 
Родился

Зарегистрирован: Сб окт 10, 2020 13:50:59
Сообщений: 4
Рейтинг сообщения: 0
Код:
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>


void pwm_settings()
{
   // PWM SETTINGS
   TCCR1A |= (1 << COM1A1)|(0 << COM1A0)
   |(1 << WGM11)|(1 << WGM10);
   TCCR1B |= (1 << WGM12)|(1 << WGM13)|(0 << CS12)|(1 << CS11)|(0 << CS10);
   TCNT1 = 0x00;
   ICR1 = 0xFF;
   OCR1A = 0x00;
};



int main(void)
{
   unsigned char d=0;
   DDRA &= ~((1<<PA0)|(1<<PA1));
   PORTA |=(1<<PA0)|(1<<PA1);   
   DDRD |=(1<<PD5);
   
   void pwm_settings();
   
   
         
         
   while(1)
   {
               
      if (0== (PINA&(1<<0)))
         {
      for(d=0; d<255; d++)
          {
         OCR1A = d;
         _delay_ms(30);
          }
      }
      if (0== (PINA&(1<<1)))
      {
      for(d=0; d>255; d--)
          {
         OCR1A = d;
         _delay_ms(30);
          }
      }
   }   
         
}


Добрый день. Помогите с кодом программа не работает.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите с кодом.
СообщениеДобавлено: Сб окт 10, 2020 15:55:42 
Собутыльник Кота

Карма: 36
Рейтинг сообщений: 808
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 2906
Рейтинг сообщения: 0
Если запятую поставить после "Помогите", то вопрос становится более логичным, а ответ - очевидным.
Автор, ты бы хоть комментарии к коду написал, что и где хочешь получить. Глядишь, сам бы ошибку и нашёл.
И какой смысл писать PINA&(1<<0) и PINA&(1<<1) ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите с кодом.
СообщениеДобавлено: Сб окт 10, 2020 16:04:42 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1384
Рейтинг сообщения: 0
ТС. На будущее. Не нужно выкладывать простыню кода. Ваш вопрос на форумах подобных этому должен звучать так: типа народ, есть девайс, функционал такой то. Эта фича работает, эта нет. Или все не работает. Где я накосячил? Ну и самое. Если вы все проверили, книги, даташиты почитали. В программу до покраснения глаз смотрели. А не так, что при малейшем затруднении, побежали на форум.
Ваши простыни никому не интересны без описания. Поверьте.


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Помогите с кодом.
СообщениеДобавлено: Сб окт 10, 2020 16:10:28 
Собутыльник Кота

Карма: 36
Рейтинг сообщений: 808
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 2906
Рейтинг сообщения: 0
но я всё же подскажу: у циклов разные приращения счётчиков, разные условия проверки, но начальные значение одинаковы...


Последний раз редактировалось BlackKilkennyCat Сб окт 10, 2020 16:12:02, всего редактировалось 1 раз.

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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Помогите с кодом.
СообщениеДобавлено: Сб окт 10, 2020 16:10:54 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вт апр 21, 2020 07:44:24
Сообщений: 118
Откуда: Сумы, Украина
Рейтинг сообщения: 0
Спойлер
Код:
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>


void pwm_settings()
{
   // PWM SETTINGS
   TCCR1A = (1 << COM1A1)|(0 << COM1A0)|(0 << WGM11)|(1 << WGM10);//
   TCCR1B = (1 << WGM12)|(0 << WGM13)|(0 << CS12)|(1 << CS11)|(0 << CS10);//
   TCNT1 = 0x00;
   
   OCR1A = 0x00;
};



int main(void)
{
   unsigned char d=0;
   DDRA &= ~((1<<PA0)|(1<<PA1));
   PORTA =(1<<PA0)|(1<<PA1);
   DDRD =(1<<PD5);
   
   pwm_settings();//
   sei();//
   
   
   
   while(1)
   {
      
      if (~PINA&(1<<0))//
      {
         
         for(; d<255;d++ )
         {
            
            OCR1A = d;
            _delay_ms(30);
         }
      }
      if (~PINA&(1<<1))//
      {
         
         for(; d>0; d--)
         {
            OCR1A = d;
            _delay_ms(30);
         }
      }
   }
   
}


Попробуй так... А вообще, хотелось бы изначально описание увидеть. И хорошо бы указать контроллер...

_________________
Хочется всё и сразу, а получаешь нихрена и постепенно...


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Помогите с кодом.
СообщениеДобавлено: Сб окт 10, 2020 16:47:32 
Родился

Зарегистрирован: Сб окт 10, 2020 13:50:59
Сообщений: 4
Рейтинг сообщения: 0
Я недавно начал работать на AVR. Использую контроллер atmega16. Хочу сделать ШИМ с регулировкой скважности сигнала. Кнопка на ноге PA0 уменьшает скважность а на PA1 увеличивает. Но программа не работает. Скорее всего у меня какая та ошибка в цикле.

Добавлено after 1 minute 22 seconds:
Работаю на Atmel Studio 7


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите с кодом.
СообщениеДобавлено: Сб окт 10, 2020 17:33:41 
Собутыльник Кота

Карма: 36
Рейтинг сообщений: 808
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 2906
Рейтинг сообщения: 0
Согласно коду кнопки не уменьшают и не увеличивают, а запускают постоянное увеличение от минимума до максимума с шагом 1, и наоборот, постоянное уменьшение. Формулируйте точнее.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите с кодом.
СообщениеДобавлено: Сб окт 10, 2020 18:09:50 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
Alek_von_German, "if (~PINA&(1<<0))//" - конечно с точки зрения C одно и тоже будет, но боюсь так компилятор сгенерит немного избыточного код для считывания и инверсии регистра.
"if (!(PINA & (1<<0)))" уж лучше так.

Salih, как написано у вас при разовом нажатии кнопки будет увеличивать заполнение до максимума. Аналогично было бы при уменьшении, если бы вы не ошиблись и не написали бы там "for(d=0; d>255; d--)". d никогда не может стать больше 255. Оно будет по кругу бесконечно меняться 0, 255, 254, 253,...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите с кодом.
СообщениеДобавлено: Сб окт 10, 2020 18:59:01 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вт апр 21, 2020 07:44:24
Сообщений: 118
Откуда: Сумы, Украина
Рейтинг сообщения: 0
Спойлер
Код:
if (!(PINA & (1<<0)))//
      {
            d++;
            OCR1A = d;
             _delay_ms(30);
      
      }
      if (!(PINA & (1<<1)))//
      {
             d--;
            OCR1A = d;
            _delay_ms(30);
         
      }

Разницы я не заметил ни при "!", ни при "~". Но может Вы и правы.

_________________
Хочется всё и сразу, а получаешь нихрена и постепенно...


Последний раз редактировалось Alek_von_German Сб окт 10, 2020 19:41:15, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите с кодом.
СообщениеДобавлено: Сб окт 10, 2020 19:35:29 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
Alek_von_German, хотя нет, проверил, avr-gcc в данном случае с любой включенной оптимизацией генерит просто инструкцию sbic + переход.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите с кодом.
СообщениеДобавлено: Сб окт 10, 2020 19:56:28 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вт апр 21, 2020 07:44:24
Сообщений: 118
Откуда: Сумы, Украина
Рейтинг сообщения: 0
Можно еще так сделать:
Спойлер
Цитата:
while(1)
{
if (!(PINA & (1<<0)))//
{
while (OCR1A<255)
{
d++;
OCR1A = d;
_delay_ms(3);
}
}
if (!(PINA & (1<<1)))//
{
while (OCR1A>0)
{
d--;
OCR1A = d;
_delay_ms(3);
}
}
}

_________________
Хочется всё и сразу, а получаешь нихрена и постепенно...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите с кодом.
СообщениеДобавлено: Сб окт 10, 2020 19:58:24 
Собутыльник Кота

Карма: 36
Рейтинг сообщений: 808
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 2906
Рейтинг сообщения: 0
можно мильёном способов. ТС скопипастит и будет счастлив.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите с кодом.
СообщениеДобавлено: Пн окт 12, 2020 14:28:08 
Родился

Зарегистрирован: Сб окт 10, 2020 13:50:59
Сообщений: 4
Рейтинг сообщения: 0
Не работает. На выводе PD5 тишина, при нажатии на кнопки. И на протеусе и на макетке протестил.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите с кодом.
СообщениеДобавлено: Пн окт 12, 2020 21:09:03 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вт апр 21, 2020 07:44:24
Сообщений: 118
Откуда: Сумы, Украина
Рейтинг сообщения: 1
Salih, всё потому, что таймер настроен не правильно, скорее всего. Я не особо вникал.
Спойлер
Код:
#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>


void pwm_settings()
{
   // PWM SETTINGS
   TCCR1A = (1 << COM1A1)|(0 << COM1A0)|(0 << WGM11)|(1 << WGM10);//
   TCCR1B = (1 << WGM12)|(0 << WGM13)|(0 << CS12)|(1 << CS11)|(0 << CS10);//
   TCNT1 = 0x00;
   
   OCR1A = 0x00;
};



int main(void)
{
   unsigned char d=0;
   DDRA &= ~((1<<PA0)|(1<<PA1));
   PORTA =(1<<PA0)|(1<<PA1);
   DDRD =(1<<PD5);
   
   pwm_settings();//
   sei();//
   
   
   
   while(1)
   {
      if (!(PINA & (1<<0)))//
      {
         while (OCR1A<255)
         {
            d++;
            OCR1A = d;
            _delay_ms(3);
         }
      }
      if (!(PINA & (1<<1)))//
      {
         while (OCR1A>0)
         {
            d--;
            OCR1A = d;
            _delay_ms(3);
         }
      }
   }
}


Вот это у меня работает.

_________________
Хочется всё и сразу, а получаешь нихрена и постепенно...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите с кодом.
СообщениеДобавлено: Вт окт 13, 2020 09:45:03 
Родился

Зарегистрирован: Сб окт 10, 2020 13:50:59
Сообщений: 4
Рейтинг сообщения: 0
У меня было настроен таймер как FastPWM. А вы сделали ШИМ с коррекцией фазы и частоты по даташиту? А в чем разница между ними? И то и другое ШИМ.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите с кодом.
СообщениеДобавлено: Вт окт 13, 2020 09:58:43 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
В ДШ ведь написано, в чем разница. И графики состояний приведены. Посмотрите графики хотя бы для начала. Самое главное отличие - Fast PWM "крутит" только инкрементирует таймер. А другие режимы "вверх-вниз" считают.

Добавлено after 2 minutes 20 seconds:
Вот тут просто расписано различие режимов: http://easyelectronics.ru/avr-uchebnyj- ... -shim.html
Одно НО - написано "В этом режиме счетчик считает от нуля до 255", хотя для 16-битного таймера разрешение ШИМ конечно же может быть больше.


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

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


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

Сейчас этот форум просматривают: Just_Fluffy и гости: 19


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

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


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