Например TDA7294

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





Текущее время: Вт май 21, 2024 12:17:12

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


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



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Помогите найти причину лага.
СообщениеДобавлено: Вс июн 04, 2023 22:07:04 
Первый раз сказал Мяу!

Зарегистрирован: Пн фев 22, 2010 17:41:09
Сообщений: 29
Рейтинг сообщения: 0
Здравствуйте, написал программу, точнее набыдлокодил. И столкнулся с проблемой.
Использую софтовый юарт, аппаратный юарт с прерываниями по приему, таймер2 и внешнее прерывания для реализации трехканального димера на 220 вольт - и это все прекрасно работает(ну или я не вижу лагов), но как только я добавляю двухканальный шим на таймере1, без предделителя в режиме Fast PWM top=00FFh. Начинаются лаги выраженные в мерцании ламп, причем чем я ставлю ниже частоту шима тем меньше лагов.
в чем может быть приблема????

atmega8, 8мгц
куски кода
Спойлерint main( void ){
PortInit();
ExInterruptInit();
Timer_1_init();
Timer_2_init();
USART_Init();
SUART_Init();
Read_eeprom_all();
sei();

UART_PutStr("AT+NAMEZeSteam"); UART_PutStr("\r\n");

while(1){
...
тут логика основной программы, неспешная бработка кнопок

// OCR1AL = isp_power[fire_level-1];
// OCR1BL = fan_speed[fire_level-1];
и не важно закоментированны эти две строки или нет тупит уже после инициализации таймера
...


// обработка прерывания с с периодом 180мкс
ISR (TIMER2_COMP_vect){
if ((timer_pwm+1)== lamp[0]) {HIGH(LAMP1_OUT_PORT, LAMP1_OUT);}
if ((timer_pwm+1)== lamp[1]) {HIGH(LAMP2_OUT_PORT, LAMP2_OUT);}
if ((timer_pwm+1)== lamp[2]) {HIGH(LAMP3_OUT_PORT, LAMP3_OUT);}

if ((timer_pwm == 90) || (!timer_pwm)) {
LOW(LAMP1_OUT_PORT, LAMP1_OUT);
LOW(LAMP2_OUT_PORT, LAMP2_OUT);
LOW(LAMP3_OUT_PORT, LAMP3_OUT);
}
if (timer_pwm){timer_pwm--;}
}

//обработка внешнего прерывания INT0
ISR( INT0_vect ){
fl_timer_100ms = true;
timer_pwm = 90;
}

void Timer_1_init(void){
TCCR1A=0x21;
TCCR1B=0x09;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
}

void Timer_2_init(void){
ASSR=0x00;
TCCR2=0x0B;
TCNT2=0x00;
OCR2=0x15;
TIMSK=0x80;
}

void ExInterruptInit(void){
GICR|=0x40;
MCUCR=0x03;
GIFR=0x40;
}
void USART_Init(void){
UBRRH = 0;
UBRRL = 51; //скорость обмена 9600 бод
//разр. прерыв при приеме и передачи, разр приема, разр передачи.
UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN); // |(1<<TXCIE)
//размер слова 8 разрядов
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
}



ISR(USART_RXC_vect) { // прерывание при получении данных по UART (bluetooth)
comand_bt_str[1] = comand_bt_str[0];
comand_bt_str[0] = UDR;
if ((comand_bt_str[1] == 'i') || (comand_bt_str[1] == 'v') || (comand_bt_str[1] == 'a')){fl_bluetooth_receiv = true;}

}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите найти причину лага.
СообщениеДобавлено: Вс июн 04, 2023 22:54:25 
Вымогатель припоя
Аватар пользователя

Карма: 1
Рейтинг сообщений: 127
Зарегистрирован: Вт мар 03, 2015 20:13:46
Сообщений: 534
Откуда: рядом с "не резиновой" живу в деревне
Рейтинг сообщения: 0
sedix писал(а):
Использую софтовый юарт

А он какой таймер использует??


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите найти причину лага.
СообщениеДобавлено: Пн июн 05, 2023 00:19:14 
Первый раз сказал Мяу!

Зарегистрирован: Пн фев 22, 2010 17:41:09
Сообщений: 29
Рейтинг сообщения: 0
таймер 0
Спойлерvoid SUART_Init(void)
{
/*инициализация флагов*/
flag_tx_busy = FALSE;
flag_rx_ready = FALSE;
flag_rx_waiting_for_stop_bit = FALSE;
flag_rx_off = FALSE;

/*настройка выводв*/
RX_DDRX &= ~(1<<RX_PIN);
RX_PORTX |= (1<<RX_PIN);
TX_DDRX |= (1<<TX_PIN);
TX_PORTX |= (1<<TX_PIN);

/*настройка таймера Т0*/
TCCR0 = CSXX;
TCNT0 = TIMER_TCNT_VALUE;
TIMSK |= (1<<TOIE0);
}


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Помогите найти причину лага.
СообщениеДобавлено: Пн июн 05, 2023 16:32:37 
Вымогатель припоя
Аватар пользователя

Карма: 1
Рейтинг сообщений: 127
Зарегистрирован: Вт мар 03, 2015 20:13:46
Сообщений: 534
Откуда: рядом с "не резиновой" живу в деревне
Рейтинг сообщения: 0
Если используете библиотеки нет ли там использования таймеров.. может кнопки висят на прерываниях чтоб гасить дребезг..


Вернуться наверх
 
Секреты депассивации литиевых батареек FANSO EVE Energy

Самыми лучшими параметрами по энергоемкости, сроку хранения, температурному диапазону и номинальному напряжению обладают батарейки литий-тионилхлоридной электрохимической системы. Но при длительном хранении происходит процесс пассивации. Разберем в чем плюсы и минусы, как можно ее избежать или уменьшить последствия и как проводить депассивацию батареек на примере продукции и рекомендаций компании FANSO EVE Energy.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Помогите найти причину лага.
СообщениеДобавлено: Пн июн 05, 2023 22:39:22 
Первый раз сказал Мяу!

Зарегистрирован: Пн фев 22, 2010 17:41:09
Сообщений: 29
Рейтинг сообщения: 0
Библиотека только для софт юарта.
Кнопки в мейне опрашиваю по флагам с прерывания.

Добавлено after 5 hours 40 minutes 11 seconds:
Думаю что разобрался.
Нагрузка на одном из каналов шим при работе давала помеху, что вызывало внешнее прывание чаще положеного. Поставил емкость 0,1 паралельно нагрузке и все стало работать как надо.
Всем спасибо)


Вернуться наверх
 
Тренды и лучшие решения для разработки зарядных станций в России

К 2029 году в России прогнозируется увеличение числа зарядных станций до 40 000. При этом отечественный рынок электротранспорта имеет климатические, потребительские и географические особенности. Для успешной разработки и построения инфраструктуры станций заряда в России идеальным вариантом является использование решений и электронных компонентов китайских производителей – лидеров индустрии электротранспорта и возобновляемой энергетики, которые уже представлены в КОМПЭЛ.

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

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


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

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


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

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


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