Например TDA7294

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



Текущее время: Сб авг 15, 2020 16:47:46

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


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



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 8 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Влияние передачи данных по USART на выполнение программы
СообщениеДобавлено: Вт июл 24, 2012 19:00:07 
Открыл глаза

Зарегистрирован: Чт мар 22, 2012 20:28:49
Сообщений: 74
Рейтинг сообщения: 0
Товарищи, кто знает в чем дело? Написал программу в AVR Studio. Там же отладил. Все замечательно. Запускаю в Протеусе и тут - то выскакивает такой нюанс: у меня в главной функции имеется бесконечный цикл while(1), выглядит примерно так

int main(void)
{
bufer[0]=0;
bufer[1]=0;
bufer[2]=0;
bufer[3]=0;
DDRB=0xFF;
DDRA=240;
DDRC=0xFF;
PORTC=0;
ozhidanie(1, 's');
PORTC=1;
sei();
init_USART();
while(1)
{

ozhidanie(1, 'm');
while(bufer[3]==0);
intnapr=bufer[0];
maxnapr=bufer[1];
inttime=bufer[2];
bufer[3]=0;
nagrevatel(intnapr);
ozhidanie(inttime, 's');
USART_Transmit(soprotivlenie_1());

}

}

Т.е. получается, что некоторый кусок кода должен бесконечно повторяться. В AVR Studio все так и происходит, а вот Протеус каждый раз повторяет ВСЮ главную функцию целиком. Если убрать функцию передачи данных по USART (USART_Transmit(soprotivlenie_1());), то все работает как положено. Почему? USART_Transmit() у меня представляет собой всего лишь запись аргумента функции в регистр UDR.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Влияние передачи данных по USART на выполнение программы
СообщениеДобавлено: Вт июл 24, 2012 20:58:50 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Пт май 21, 2010 01:15:10
Сообщений: 31
Откуда: Латвия
Рейтинг сообщения: 0
А что представляет собой функция soprotivlenie_1() ?


Вернуться наверх
 
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: Влияние передачи данных по USART на выполнение программы
СообщениеДобавлено: Чт июл 26, 2012 09:13:54 
Открыл глаза

Зарегистрирован: Чт мар 22, 2012 20:28:49
Сообщений: 74
Рейтинг сообщения: 0
Да без разницы что она представляет. я пробовал туда просто поставить UDR=8 ради проверки. Та же фигня творится
Попробовал даже вообще без цикла
int main(void)
{
bufer[0]=0;
bufer[1]=0;
bufer[2]=0;
bufer[3]=0;
DDRB=0xFF;
DDRA=240;
DDRC=0xFF;
sei();
init_USART();
UDR=8;

while(bufer[3]==0);
intnapr=bufer[0];
maxnapr=bufer[1];
inttime=bufer[2];
bufer[3]=0;
nagrevatel(intnapr);
ozhidanie(inttime, 's');

}

ТАк он после передачи восьмерки каждый раз сбрасывает программу


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Шестое юбилейное мероприятие в процессе
Не в сети
 Заголовок сообщения: Re: Влияние передачи данных по USART на выполнение программы
СообщениеДобавлено: Чт июл 26, 2012 11:00:39 
Открыл глаза

Зарегистрирован: Чт мар 22, 2012 20:28:49
Сообщений: 74
Рейтинг сообщения: 0
Эврика! Сам нашел ошибку. При инициализации USART я разрешил прерывания по завершении передачи, а пользоваться ими не стал, соответственно и обработчик не написал. Вот его и глючило. Если кто неопытен как я, возьмите на заметку


Вернуться наверх
 
Быстро и просто. Разработка бюджетного неизолированного источника питания на контроллере VIPer122

С помощью VIPer122 можно создавать как изолированные, так и неизолированные сетевые источники питания. Разберем самый простой и бюджетный вариант – разработку неизолированного понижающего источника питания с выходным током в несколько сотен миллиампер без трудоемких расчетов трансформаторов и компонентов обвязки.

Читать статью>>
Не в сети
 Заголовок сообщения: Re: Влияние передачи данных по USART на выполнение программы
СообщениеДобавлено: Чт июл 26, 2012 11:07:56 
Мудрый кот
Аватар пользователя

Карма: 24
Рейтинг сообщений: 285
Зарегистрирован: Чт июн 10, 2010 08:55:35
Сообщений: 1812
Откуда: Сибирские Афины
Рейтинг сообщения: 0
Очень похоже, что ошибка кроется в других частях кода.

Могу только порекомендовать разрешать прерывания после инициализации UART-а.

_________________
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)


Вернуться наверх
 
Микроконтроллеры STM32G4 полностью заменят STM32F3?

С начала выпуска микроконтроллеров STM32F3 прошло 8 лет. Изменились как технологии, так и потребности рынка. Понимая это, компания STMicroelectronics разработала новое семейство микроконтроллеров STM32G4 для систем со смешанными сигналами. Эти микроконтроллеры превосходят своих предшественников из семейства STM32F3 по уровню быстродействия, богатству периферии и при этом обеспечивают более низкий уровень потребления.

Читать статью>>
Не в сети
 Заголовок сообщения: Re: Влияние передачи данных по USART на выполнение программы
СообщениеДобавлено: Чт июл 26, 2012 11:12:06 
Открыл глаза

Зарегистрирован: Чт мар 22, 2012 20:28:49
Сообщений: 74
Рейтинг сообщения: 0
А что, если нет ошибок в других частях кода, то отсутствие обработчика прерывания не вызовет никаких глюков?


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Влияние передачи данных по USART на выполнение программы
СообщениеДобавлено: Чт июл 26, 2012 11:13:16 
Открыл глаза

Зарегистрирован: Чт мар 22, 2012 20:28:49
Сообщений: 74
Рейтинг сообщения: 0
Kavka писал(а):
Очень похоже, что ошибка кроется в других частях кода.

Могу только порекомендовать разрешать прерывания после инициализации UART-а.

Да я так и делаю. Приведенный код это одна из многих попыток исправить положение


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Влияние передачи данных по USART на выполнение программы
СообщениеДобавлено: Чт июл 26, 2012 13:26:28 
Друг Кота
Аватар пользователя

Карма: 48
Рейтинг сообщений: 646
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 4279
Откуда: Minsk
Рейтинг сообщения: 0
ddimochka писал(а):
отсутствие обработчика прерывания не вызовет никаких глюков?


В правильно написанной проге на всех неиспользуемых векторах соят reti. Если даже это прерывание разрешено, то при его наступлении выполнится обработчик по умолчанию
"Ничего не делать и вернуться в точку прерывания"
.


Вернуться наверх
 
Бытовой пирометр АКИП-9312 – просто удобно!

Диапазон 35 °С ...42°С (температура тела) погрешность 0,3 °С
Диапазон 0 °С ...100°С (бытовая сфера) погрешность 1,0 °С
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 8 ] 

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


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

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


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

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


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