Лучше просто измерьте время работы функции, установив на порту уровень перед вызовом и сбросив после, потом посмотрев сигнал в симуляторе на указанной ножке можно сделать вывод о времени выполнения и вообще насколько всё плохо.
AVR studio в вопросах и ответах
Что значит грузит на 80%? Контроллер однозадачный, и если не использовать команду SLEEP он всегда загружен на 100%, а то что сообщает протеус это загрузка центрального процессора(скорей всего одного из его ядер, вроде протеус еще не научили использовать несколько ядер под задачу симуляции) хоста, выделенного под симуляцию. И означает это лишь то что симуляция еще возможна в реальном времени.
Лучше просто измерьте время работы функции, установив на порту уровень перед вызовом и сбросив после, потом посмотрев сигнал в симуляторе на указанной ножке можно сделать вывод о времени выполнения и вообще насколько всё плохо.
Лучше просто измерьте время работы функции, установив на порту уровень перед вызовом и сбросив после, потом посмотрев сигнал в симуляторе на указанной ножке можно сделать вывод о времени выполнения и вообще насколько всё плохо.
- Реклама
- Сообщения: 90
- Зарегистрирован: Вс дек 20, 2015 21:03:39
Атмел студио 7. АТмега48PA
Если включаешь SLEEP моду (в частности режим idle) - симулятор не выходит из сна в прерывание UART. Бит устанавливаю - игнор. Не входит в прерывание. данные в регистр данных поместить тоже не удается. Хотя этот кусок работает в железе..
Мля как коммуникации отлаживать? Даже если отлаживать в актив моде - то непонятно как в ресивер данные загонять..
Мне на самом деле не IDLE, а Power safe нужен по потреблению, но UART там не тактируется, хотя прерывания в принципе разрешены. Придется как-то выкручиваться переводя из power safe в idle при появлении активности на ноге ресивера.. изврат.
Если включаешь SLEEP моду (в частности режим idle) - симулятор не выходит из сна в прерывание UART. Бит устанавливаю - игнор. Не входит в прерывание. данные в регистр данных поместить тоже не удается. Хотя этот кусок работает в железе..
Мля как коммуникации отлаживать? Даже если отлаживать в актив моде - то непонятно как в ресивер данные загонять..
Мне на самом деле не IDLE, а Power safe нужен по потреблению, но UART там не тактируется, хотя прерывания в принципе разрешены. Придется как-то выкручиваться переводя из power safe в idle при появлении активности на ноге ресивера.. изврат.
Вот что это значит (скрин во вложениях). Различные значения.Alexeyslav писал(а):Что значит грузит на 80%?
Sleep, не подходит из-за постоянного цикла опроса (считывание значений с ds1307 и 4-х ds18b20) при этом вывод на лсд
Вот здесь есть такая utoa,ultoa. Говорят - что она получше работает чем sprintf.COKPOWEHEU писал(а):Вот более подробное исследование.
- Вложения
-
- загрузка ЦП.JPG
- (21.96 КБ) 290 скачиваний
выше головы не прыгнешь - ниже зад**цы не сядешь.
Когда это SLEEP мешал постоянному циклу опроса? Но он вообще нужен для экономии энергии... если у вас каждую секунду опрашиваются датчики то смысла спать и правда не видно.
На скринах вижу только загрузку центрального процессора компьютера и ничего больше. Это то сколько процессорного времени симулятор забирает у ядра процессора хост-компьютера на котором работает, и никакого отношения к контроллеру не имеет, кроме того ресурсы тратятся еще и на симуляцию всех элементов схемы.
И вообще эти цифры очень условны, способ измерения "загрузки процессора" в особенности тот что показывает диспетчер задач слишком груб и есть даже демки которые с легкостью наглым образом могут его обманывать.
На скринах вижу только загрузку центрального процессора компьютера и ничего больше. Это то сколько процессорного времени симулятор забирает у ядра процессора хост-компьютера на котором работает, и никакого отношения к контроллеру не имеет, кроме того ресурсы тратятся еще и на симуляцию всех элементов схемы.
И вообще эти цифры очень условны, способ измерения "загрузки процессора" в особенности тот что показывает диспетчер задач слишком груб и есть даже демки которые с легкостью наглым образом могут его обманывать.
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Как вам и говорили, загрузка процессора не имеет никакого отношения к загрузке контроллера. Если в контроллере нет ОС, его загрузка ВСЕГДА 100%.
stdio вообще довольно громоздкая и медленная штука. Это плата за универсальность и простоту. В контроллерах от него обычно смысла нет.
stdio вообще довольно громоздкая и медленная штука. Это плата за универсальность и простоту. В контроллерах от него обычно смысла нет.
- Реклама
Всё с загрузкой понял.
А вот с itoa не очень получается.
cvavr ругается на библу math.h,
конкретнее пишет: и ссылается на
что-то вообще ни о чем..запутался
А вот с itoa не очень получается.
cvavr ругается на библу math.h,
конкретнее пишет:
, которая :line 27 is redefined
Код: Выделить всё
signed char lsign(long x);Код: Выделить всё
int min(int a,int b);выше головы не прыгнешь - ниже зад**цы не сядешь.
не соглашусь - смысл очень даже есть, если пользоваться именно файловым вводом-выводом, а не просто преобразованиями строк. наиболее этот смысл заметен при работе с не самыми "маленькими" МК и активным консольным диалогом с пользователем.COKPOWEHEU писал(а):stdio вообще довольно громоздкая и медленная штука. ... В контроллерах от него обычно смысла нет.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
В более мощных с развитым CLI да, но на AVR такое делают нечасто. Да и килобайт флеша занимать далеко не всегда имеет смысл. Даже если в наличии ЖК-индикатор, чаще всего требуется выводить числа без форматирования, да и дробные там редко используются.
многие вообще многое нечасто делают. причем часто из-за кажущейся сложности.
но так же во многих случаях возможность не ломать голову над "приличным" выводом текста просто незаменима!
например, многие тестируют какие-то алгоритмы в "настоящем Си" на компьютере. у меня по определенным причинам нет компилятора Си/с++ на компьютере, и я очень успешно решаю эти задачи в протеусе - выбираю atmega32, подключаю свой модуль консольного ввода-вывода, и спокойно все отлаживаю
ну очень удобно.
но так же во многих случаях возможность не ломать голову над "приличным" выводом текста просто незаменима!
например, многие тестируют какие-то алгоритмы в "настоящем Си" на компьютере. у меня по определенным причинам нет компилятора Си/с++ на компьютере, и я очень успешно решаю эти задачи в протеусе - выбираю atmega32, подключаю свой модуль консольного ввода-вывода, и спокойно все отлаживаю
ну очень удобно.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Ну, тестовые цели и проверки это немного другое. Там можно и stdio использовать, и float, и секундные задержки в прерываниях, и другие неоптимальные вещи. Вот только надо не забыть потом в конечном устройстве пройтись по ним и переделать на что-то менее громоздкое.
- Сообщения: 76
- Зарегистрирован: Пт май 28, 2010 10:26:08
Здравствуйте. Начал изучать микроконтроллеры. Написал мигалку, прошил. Все работает, но задержка проходить раз в 10 быстрее.
Контроллер atmega8. Писал в atmel studio 7. Где косяк?
Контроллер atmega8. Писал в atmel studio 7. Где косяк?
- Сообщения: 1040
- Зарегистрирован: Вс сен 25, 2011 19:09:33
- Сообщения: 76
- Зарегистрирован: Пт май 28, 2010 10:26:08
Все, взлетело. Только не пойму, вроде указывал также, но после подключения библиотек задержек, в этом причина?
- Сообщения: 1040
- Зарегистрирован: Вс сен 25, 2011 19:09:33
конечно, F_CPU надо определять ДО включения delay.h
иначе константы внутри хижера будут расчитаны неверно
ну или как вариант можно указать F_CPU в опциях проекта, тогда эта переменная будет определена до первой строки любого файла исходника
иначе константы внутри хижера будут расчитаны неверно
ну или как вариант можно указать F_CPU в опциях проекта, тогда эта переменная будет определена до первой строки любого файла исходника
- Сообщения: 73
- Зарегистрирован: Сб авг 23, 2014 21:49:24
Всем привет!
У меня стоит Visual Studio и я хочу поставить Atmel Studio 7, но не могу т.к вылазит ошибка в которой пишет, что не может нормально загрузить Visual Shell. Если сначала поставить Atmel studio, то не ставиться Visual studio.
Как решить даную проблему?
У меня стоит Visual Studio и я хочу поставить Atmel Studio 7, но не могу т.к вылазит ошибка в которой пишет, что не может нормально загрузить Visual Shell. Если сначала поставить Atmel studio, то не ставиться Visual studio.
Как решить даную проблему?
- Сообщения: 1040
- Зарегистрирован: Вс сен 25, 2011 19:09:33
у меня стоят одновременно и AS 7.0 и VS2015Дима_Медвед писал(а):Всем привет!
У меня стоит Visual Studio и я хочу поставить Atmel Studio 7, но не могу т.к вылазит ошибка в которой пишет, что не может нормально загрузить Visual Shell. Если сначала поставить Atmel studio, то не ставиться Visual studio.
Как решить даную проблему?
так как AS основана на базе VS то могу предположить, что у вас конфликт версий двух ядер VS
но только предположение
- Сообщения: 90
- Зарегистрирован: Вс дек 20, 2015 21:03:39
Ну почему же - если процессор, например, в основном спит?COKPOWEHEU писал(а):Как вам и говорили, загрузка процессора не имеет никакого отношения к загрузке контроллера. Если в контроллере нет ОС, его загрузка ВСЕГДА 100%.
stdio вообще довольно громоздкая и медленная штука. Это плата за универсальность и простоту. В контроллерах от него обычно смысла нет.
- Сообщения: 115
- Зарегистрирован: Ср дек 12, 2012 20:08:08
Такой вопрос. Есть программа с прерыванием по переполнению таймера. Подключена стандартная библиотека delay.h Внутри обработки прерывания используются функции задержек и на микро и на мили секунды.
В основном цикле main в качестве задержки используется конструкция for. При использовании этого for программа работает нормально, а когда меняю ее на библиотечную функцию задержки, то программа зависает. Почему такое может быть?
В основном цикле main в качестве задержки используется конструкция for. При использовании этого for программа работает нормально, а когда меняю ее на библиотечную функцию задержки, то программа зависает. Почему такое может быть?
- Сообщения: 232
- Зарегистрирован: Чт янв 01, 2015 13:44:12
Доброго времени суток! Разбираюсь с SPI что возникли трудности. Можете кто нибудь скинуть пример кода мастера и слейва, что бы данные передавались от мастера к слейву и наоборот от слейва к мастеру.
Все гениальное - просто
Возник такой вопросик...
Есть у меня функция для индикации на 7-сегм.дисплей написанная на GCC в виде ".h" и ".c" файлов. Подключаю я эту функцию к программе, которую сейчас пишу. (функция была написала в Studio 4, а программа сейчас пишется в Studio 7). И при попытке ввода команды вывода слова на 7-сегментный дисплей,
W_Test[] - константа, инициализированная в внешней функции в .с файле как
Мне не ясно чем вызвана такая ошибка, так как под Studio 4 в другой программе использовал данную функцию без таких проблем, но можен совпадение и дело не в Studio 7.
Есть у меня функция для индикации на 7-сегм.дисплей написанная на GCC в виде ".h" и ".c" файлов. Подключаю я эту функцию к программе, которую сейчас пишу. (функция была написала в Studio 4, а программа сейчас пишется в Studio 7). И при попытке ввода команды вывода слова на 7-сегментный дисплей,
возникает ошибкаDisp_IND_DataIn(&(W_Test[0]), &(sMathSolution[4]), 4, _sDataType_V6N0, _PLUS, 0);
Пояснения: Disp_IND_DataIn - это функция вывода данных на 7-сегм.дисплейError 'W_Test' undeclared (first use in this function)
W_Test[] - константа, инициализированная в внешней функции в .с файле как
и содержит коды символов слова "Test"const uint8_t W_Test[] PROGMEM =
{0x04, _Letter38_t, _Letter26_E, _Letter37_S, _Letter38_t};
Мне не ясно чем вызвана такая ошибка, так как под Studio 4 в другой программе использовал данную функцию без таких проблем, но можен совпадение и дело не в Studio 7.


