AVR studio в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Ответить
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Что значит грузит на 80%? Контроллер однозадачный, и если не использовать команду SLEEP он всегда загружен на 100%, а то что сообщает протеус это загрузка центрального процессора(скорей всего одного из его ядер, вроде протеус еще не научили использовать несколько ядер под задачу симуляции) хоста, выделенного под симуляцию. И означает это лишь то что симуляция еще возможна в реальном времени.

Лучше просто измерьте время работы функции, установив на порту уровень перед вызовом и сбросив после, потом посмотрев сигнал в симуляторе на указанной ножке можно сделать вывод о времени выполнения и вообще насколько всё плохо.
Контактная информация:
Реклама
VAT
Встал на лапы
Сообщения: 90
Зарегистрирован: Вс дек 20, 2015 21:03:39

Сообщение VAT »

Атмел студио 7. АТмега48PA
Если включаешь SLEEP моду (в частности режим idle) - симулятор не выходит из сна в прерывание UART. Бит устанавливаю - игнор. Не входит в прерывание. данные в регистр данных поместить тоже не удается. Хотя этот кусок работает в железе..
Мля как коммуникации отлаживать? Даже если отлаживать в актив моде - то непонятно как в ресивер данные загонять..

Мне на самом деле не IDLE, а Power safe нужен по потреблению, но UART там не тактируется, хотя прерывания в принципе разрешены. Придется как-то выкручиваться переводя из power safe в idle при появлении активности на ноге ресивера.. изврат.
Реклама
Mon
Встал на лапы
Аватара пользователя
Сообщения: 92
Зарегистрирован: Вс авг 21, 2011 23:12:37
Откуда: Харьков

Сообщение Mon »

Alexeyslav писал(а):Что значит грузит на 80%?
Вот что это значит (скрин во вложениях). Различные значения.
Sleep, не подходит из-за постоянного цикла опроса (считывание значений с ds1307 и 4-х ds18b20) при этом вывод на лсд
COKPOWEHEU писал(а):Вот более подробное исследование.
Вот здесь есть такая utoa,ultoa. Говорят - что она получше работает чем sprintf.
Вложения
загрузка ЦП.JPG
(21.96 КБ) 290 скачиваний
выше головы не прыгнешь - ниже зад**цы не сядешь.
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Когда это SLEEP мешал постоянному циклу опроса? Но он вообще нужен для экономии энергии... если у вас каждую секунду опрашиваются датчики то смысла спать и правда не видно.

На скринах вижу только загрузку центрального процессора компьютера и ничего больше. Это то сколько процессорного времени симулятор забирает у ядра процессора хост-компьютера на котором работает, и никакого отношения к контроллеру не имеет, кроме того ресурсы тратятся еще и на симуляцию всех элементов схемы.
И вообще эти цифры очень условны, способ измерения "загрузки процессора" в особенности тот что показывает диспетчер задач слишком груб и есть даже демки которые с легкостью наглым образом могут его обманывать.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Как вам и говорили, загрузка процессора не имеет никакого отношения к загрузке контроллера. Если в контроллере нет ОС, его загрузка ВСЕГДА 100%.
stdio вообще довольно громоздкая и медленная штука. Это плата за универсальность и простоту. В контроллерах от него обычно смысла нет.
Реклама
Mon
Встал на лапы
Аватара пользователя
Сообщения: 92
Зарегистрирован: Вс авг 21, 2011 23:12:37
Откуда: Харьков

Сообщение Mon »

Всё с загрузкой понял.
А вот с itoa не очень получается.
cvavr ругается на библу math.h,
конкретнее пишет:
line 27 is redefined
, которая :

Код: Выделить всё

signed char lsign(long x);
и ссылается на

Код: Выделить всё

int min(int a,int b);
что-то вообще ни о чем..запутался
выше головы не прыгнешь - ниже зад**цы не сядешь.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18793
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

COKPOWEHEU писал(а):stdio вообще довольно громоздкая и медленная штука. ... В контроллерах от него обычно смысла нет.
не соглашусь - смысл очень даже есть, если пользоваться именно файловым вводом-выводом, а не просто преобразованиями строк. наиболее этот смысл заметен при работе с не самыми "маленькими" МК и активным консольным диалогом с пользователем.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

В более мощных с развитым CLI да, но на AVR такое делают нечасто. Да и килобайт флеша занимать далеко не всегда имеет смысл. Даже если в наличии ЖК-индикатор, чаще всего требуется выводить числа без форматирования, да и дробные там редко используются.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18793
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

многие вообще многое нечасто делают. причем часто из-за кажущейся сложности.
но так же во многих случаях возможность не ломать голову над "приличным" выводом текста просто незаменима!

например, многие тестируют какие-то алгоритмы в "настоящем Си" на компьютере. у меня по определенным причинам нет компилятора Си/с++ на компьютере, и я очень успешно решаю эти задачи в протеусе - выбираю atmega32, подключаю свой модуль консольного ввода-вывода, и спокойно все отлаживаю :)))
ну очень удобно.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Ну, тестовые цели и проверки это немного другое. Там можно и stdio использовать, и float, и секундные задержки в прерываниях, и другие неоптимальные вещи. Вот только надо не забыть потом в конечном устройстве пройтись по ним и переделать на что-то менее громоздкое.
Открыл глаза
Аватара пользователя
Сообщения: 76
Зарегистрирован: Пт май 28, 2010 10:26:08

Сообщение KyPA »

Здравствуйте. Начал изучать микроконтроллеры. Написал мигалку, прошил. Все работает, но задержка проходить раз в 10 быстрее.
Контроллер atmega8. Писал в atmel studio 7. Где косяк?
Безымянный.png
(57.52 КБ) 621 скачивание
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Сообщение axillent »

Нужно правильно задать F_CPU
Открыл глаза
Аватара пользователя
Сообщения: 76
Зарегистрирован: Пт май 28, 2010 10:26:08

Сообщение KyPA »

Все, взлетело. Только не пойму, вроде указывал также, но после подключения библиотек задержек, в этом причина?
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Сообщение axillent »

конечно, F_CPU надо определять ДО включения delay.h
иначе константы внутри хижера будут расчитаны неверно

ну или как вариант можно указать F_CPU в опциях проекта, тогда эта переменная будет определена до первой строки любого файла исходника
Открыл глаза
Аватара пользователя
Сообщения: 73
Зарегистрирован: Сб авг 23, 2014 21:49:24

Сообщение Дима_Медвед »

Всем привет!
У меня стоит Visual Studio и я хочу поставить Atmel Studio 7, но не могу т.к вылазит ошибка в которой пишет, что не может нормально загрузить Visual Shell. Если сначала поставить Atmel studio, то не ставиться Visual studio.
Как решить даную проблему?
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Сообщение axillent »

Дима_Медвед писал(а):Всем привет!
У меня стоит Visual Studio и я хочу поставить Atmel Studio 7, но не могу т.к вылазит ошибка в которой пишет, что не может нормально загрузить Visual Shell. Если сначала поставить Atmel studio, то не ставиться Visual studio.
Как решить даную проблему?
у меня стоят одновременно и AS 7.0 и VS2015
так как AS основана на базе VS то могу предположить, что у вас конфликт версий двух ядер VS
но только предположение
VAT
Встал на лапы
Сообщения: 90
Зарегистрирован: Вс дек 20, 2015 21:03:39

Сообщение VAT »

COKPOWEHEU писал(а):Как вам и говорили, загрузка процессора не имеет никакого отношения к загрузке контроллера. Если в контроллере нет ОС, его загрузка ВСЕГДА 100%.
stdio вообще довольно громоздкая и медленная штука. Это плата за универсальность и простоту. В контроллерах от него обычно смысла нет.
Ну почему же - если процессор, например, в основном спит?
Встал на лапы
Сообщения: 115
Зарегистрирован: Ср дек 12, 2012 20:08:08

Сообщение gessor »

Такой вопрос. Есть программа с прерыванием по переполнению таймера. Подключена стандартная библиотека delay.h Внутри обработки прерывания используются функции задержек и на микро и на мили секунды.
В основном цикле main в качестве задержки используется конструкция for. При использовании этого for программа работает нормально, а когда меняю ее на библиотечную функцию задержки, то программа зависает. Почему такое может быть?
Контактная информация:
CB1
Прорезались зубы
Сообщения: 232
Зарегистрирован: Чт янв 01, 2015 13:44:12

Сообщение CB1 »

Доброго времени суток! Разбираюсь с SPI что возникли трудности. Можете кто нибудь скинуть пример кода мастера и слейва, что бы данные передавались от мастера к слейву и наоборот от слейва к мастеру.
Все гениальное - просто
Первый раз сказал Мяу!
Сообщения: 37
Зарегистрирован: Ср июл 28, 2010 20:29:22
Откуда: Ukraine

Сообщение HF_Cat »

Возник такой вопросик...
Есть у меня функция для индикации на 7-сегм.дисплей написанная на GCC в виде ".h" и ".c" файлов. Подключаю я эту функцию к программе, которую сейчас пишу. (функция была написала в Studio 4, а программа сейчас пишется в Studio 7). И при попытке ввода команды вывода слова на 7-сегментный дисплей,
Disp_IND_DataIn(&(W_Test[0]), &(sMathSolution[4]), 4, _sDataType_V6N0, _PLUS, 0);
возникает ошибка
Error 'W_Test' undeclared (first use in this function)
Пояснения: Disp_IND_DataIn - это функция вывода данных на 7-сегм.дисплей
W_Test[] - константа, инициализированная в внешней функции в .с файле как
const uint8_t W_Test[] PROGMEM =
{0x04, _Letter38_t, _Letter26_E, _Letter37_S, _Letter38_t};
и содержит коды символов слова "Test"
Мне не ясно чем вызвана такая ошибка, так как под Studio 4 в другой программе использовал данную функцию без таких проблем, но можен совпадение и дело не в Studio 7.
Ответить

Вернуться в «AVR»