Very Hot Topic (More than 50 Replies) Микроконтроллер - как перспектива примочкостроения (Прочитано 128730 раз)
Ivana
Участник


Re: Микроконтроллер - как перспектива примочкостроения
Ответ #300 - 05.11.2011 :: 12:44:04
Post Tools
Значит, все ещё хуже, чем я предполагал  Круглые глаза Придется думать и считать самому  Смех (это я про подсчет максимального требуемого ОЗУ и что компилятор тут совсем не помощник Улыбка )
« Последняя редакция: 05.11.2011 :: 12:45:49 от »  

(Вложенный файл удалён)
Наверх
 
IP записан
 
Rst7
Гуру
*****
Вне Форума


Мимо проходил...

Сообщений: 1619
Местоположение: Харків-city
Зарегистрирован: 22.03.2010
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #301 - 05.11.2011 :: 12:53:01
Post Tools
Ну я Вам могу вот что посоветовать. Т.к. регистр SP доступен без особых проблем (без использования ASM'а), то в самой объемной по стеку процедуре обработки прерывания сделайте такое
Код
Select All
volatile unsigned int min_stack=0xFFFF; //Глобальная переменная

.....

процедура прерывания:
...
{
  unsigned int sp=SP;
  if (sp<min_stack) min_stack=sp;
}
...
 



А потом попечатайте в отладке min_stack.

Я только не помню, в инклудах у GCC SP описан как двухбайтовая переменная, или как однобайтовая. Если второе, то sp надо будет скомбинировать из SPL и SPH (младшего и старшего байта указателя стека).
  

(Вложенный файл удалён)

"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен
Наверх
WWW  
IP записан
 
Ivana
Участник


Re: Микроконтроллер - как перспектива примочкостроения
Ответ #302 - 05.11.2011 :: 13:03:25
Post Tools
Интересно... Нагрузить максимально задачами МК и засекать куда максимально заходит стек, ибо его поинтер всегда доступен? А вне процедуры обработки прерывания? Хотя, я могу от таймера прерывания инициализировать и именно для этой задачи - контроля SP  Круглые глаза Действительно, интересный вариант. Надо будет его обдумать и попробовать реализовать.
  

(Вложенный файл удалён)
Наверх
 
IP записан
 
Rst7
Гуру
*****
Вне Форума


Мимо проходил...

Сообщений: 1619
Местоположение: Харків-city
Зарегистрирован: 22.03.2010
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #303 - 05.11.2011 :: 13:08:36
Post Tools
Цитата:
А вне процедуры обработки прерывания?


А смысл? Интересно же максимальное значение, а оно суть макс. глубина стека по обычным функциям плюс самое жирное прерывание (ну если Вы там конечно с вложенными не бодаетесь).

Да в общем можно и в начало каждой функции такой контроль вставлять.
  

(Вложенный файл удалён)

"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен
Наверх
WWW  
IP записан
 
Ivana
Участник


Re: Микроконтроллер - как перспектива примочкостроения
Ответ #304 - 05.11.2011 :: 13:13:18
Post Tools
Хоть в одном меня радует что этот проект на AVR - что аппаратно невозможны вложенные прерывания  Круглые глаза И самое жирное всё определяет Улыбка
А насчет такого контроля в начале каждой функции - действительно классная идея - код маленький, ресурсов требует мало, выполняется быстро, польза есть Улыбка Круто, блин!  Круглые глаза Спасибо.

ЗЫ я не могу гарантировать, что самое жирное прерывание у меня придет когда я своими функциями максимально забью стек, но искусственно создав самую жадную до стека ситуацию со своими функциями и посчитав максимальное положение стека, я могу потом просто плюсануть к нему заранее посчитанное количество на максимально прожорливое прерывание  Круглые глаза
« Последняя редакция: 05.11.2011 :: 13:17:34 от »  

(Вложенный файл удалён)
Наверх
 
IP записан
 
Rst7
Гуру
*****
Вне Форума


Мимо проходил...

Сообщений: 1619
Местоположение: Харків-city
Зарегистрирован: 22.03.2010
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #305 - 05.11.2011 :: 13:47:43
Post Tools
Только одна тонкость есть. Например, IAR в начале любой функции сразу отъедает от стека столько, сколько понадобится в функции. Так ли делает GCC - сказать не могу.  Посматривайте в код на всякий случай.
  

(Вложенный файл удалён)

"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен
Наверх
WWW  
IP записан
 
Rst7
Гуру
*****
Вне Форума


Мимо проходил...

Сообщений: 1619
Местоположение: Харків-city
Зарегистрирован: 22.03.2010
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #306 - 05.11.2011 :: 13:48:45
Post Tools
Цитата:
Хоть в одном меня радует что этот проект на AVR - что аппаратно невозможны вложенные прерывания


Но их можно организовывать руками, разрешая прерывания в обработчике прерываний Подмигивание
  

(Вложенный файл удалён)

"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен
Наверх
WWW  
IP записан
 
Ivana
Участник


Re: Микроконтроллер - как перспектива примочкостроения
Ответ #307 - 05.11.2011 :: 18:01:16
Post Tools
Можно, но я в своем блоке по крайней мере так не буду делать Улыбка Насчет отъедания стека в начале или по ходу - действительно, надо будет проверить, спасибо.

Только что вернулся от командира с тяжелой головой Улыбка Воткнули мой блок в шаблон проекта, с диспетчером задач, библиотеками ввода-вывода и т.п. и залили в железо - уже готовая плата с GPS модулем, с выходом на комп по USB. Попробовали слать команды и читать через терминал отладочную печать Улыбка Нихрена как надо не работает, но зато теперь буду пытаться сам уже все это дело в железе ковырять, а не просто в симуляторе AVR  Круглые глаза
  

(Вложенный файл удалён)
Наверх
 
IP записан
 
Ivana
Участник


Re: Микроконтроллер - как перспектива примочкостроения
Ответ #308 - 06.11.2011 :: 20:50:42
Post Tools
Работает! Мой драйвер GPS модуля на С - работает!  Улыбка Цветы, подарки - кладите уже куда нибудь и проходите, буду хвастаться!  Смех

ЗЫ отладочная печать - капризная штука, именно она мешала моей программе работать!  Подмигивание
  

(Вложенный файл удалён)
Наверх
 
IP записан
 
Rst7
Гуру
*****
Вне Форума


Мимо проходил...

Сообщений: 1619
Местоположение: Харків-city
Зарегистрирован: 22.03.2010
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #309 - 06.11.2011 :: 20:57:21
Post Tools
Ну а теперь рекомендую попробовать потыкать пинцетом в линию, по которой идут данные от модуля в Ваш проц и посмотреть устойчивость к ошибкам.
  

(Вложенный файл удалён)

"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен
Наверх
WWW  
IP записан
 
Ivana
Участник


Re: Микроконтроллер - как перспектива примочкостроения
Ответ #310 - 06.11.2011 :: 21:00:27
Post Tools
Эээээ...... в буквальном смысле?  Круглые глаза Чтобы "навести помехи на линию" и посмотреть как мой алгоритм разборки входящего буфера справится с корявыми посылками? Подмигивание
Пока страшно что-то тыкать, там же от одной ноги МК на него питание подается когда надо (кстати - не работало ТОЛЬКО из-за того, что забыл раскоментарить инициализацию этой ножки как выхода - и на модуль просто не поступало питание  Круглые глаза. А, ну и ещё коды enter и return  перепутал, или их порядок что за чем идет обычно - я их до сих пор путаю, просто переставил местами прямо в #define  Круглые глаза) Сейчас пока помучаю его разными вариантами вызова - частотой и интервалом выдачи данных Улыбка Но потом конечно надо потыкать и пинцетом и вообще - чтобы проверить код на устойчивость.
« Последняя редакция: 06.11.2011 :: 21:32:09 от »  

(Вложенный файл удалён)
Наверх
 
IP записан
 
Rst7
Гуру
*****
Вне Форума


Мимо проходил...

Сообщений: 1619
Местоположение: Харків-city
Зарегистрирован: 22.03.2010
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #311 - 06.11.2011 :: 21:31:43
Post Tools
Цитата:
Эээээ...... в буквальном смысле?


В буквальном. Пинцетом покорить линию на землю, например. Только осторожно со статикой и обычной историей с незаземленными компами и прочими устройствами с импульсными источниками питания.
  

(Вложенный файл удалён)

"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен
Наверх
WWW  
IP записан
 
Ivana
Участник


Re: Микроконтроллер - как перспектива примочкостроения
Ответ #312 - 06.11.2011 :: 21:36:39
Post Tools
Тыкание наверное отложу до командира - вместе с ним будем тыкать. Хотя, я более менее спокоен за алгоритм разбора - уж его-то я в симуляторе как только не проверял с разными тестовыми входными данными, плюс ещё контрольную сумму посылки проверяю Улыбка Но посмотрим...
  

(Вложенный файл удалён)
Наверх
 
IP записан
 
Ivana
Участник


Re: Микроконтроллер - как перспектива примочкостроения
Ответ #313 - 09.11.2011 :: 22:44:17
Post Tools
Вы будете смеяться - но после GPS модуля, командир параллельно с драйвером GSM модуля выдал мне ТЗ на следующее Улыбка

Цитата:
Сервопривод шагового двигателя
техническое задание
Функциональные возможности программы:
1. Автоматический выбор программой режима работа: полношаговый, полушаговый или микрошаговый (дробление шага).
2. Максимальная скорость вращения — не менее 5000 шагов в секунду.
3. Максимальное количество шагов на оборот — 255.
4. Количество микрошагов в шаге — 128. Допустимо снижение кол-ва микрошагов до 64 или 32 в случае, если это будет обусловлено требованиями регулировки тока в обмотках.
5. Частота ШИМ режима микрошага или регулировки тока - за пределами звуковых частот, дабы избежать режущих слух высокочастотных составляющих.
6. Возможность работы как в режиме установки требуемого углового положения (значение берется из входного канала IN0 — угловое положение), так и в режиме "вращение" без контроля углового положения. Выбор режима "вращение" осуществляется с помощью подачи на вход канала IN0 (угловое положение) служебного сигнала "Канал дезактивирован".
7. Контроль тока через катушки двигателя с помощью обратной связи (датчика тока на резисторе) и регулировка данного тока с помощью ШИМ для удержания тока текущего режима (разгон, поддержание скорости, торможение, удержание) в заданном пределе. Точность задания тока не хуже 5% от максимально допустимого (при максимуме в 2А — 100мА).
8. Индикация технического состояния сервопривода с помощью светодиода. Режимы работы светодиода:
·      горит непрерывно – работоспособное состояние;
·      мигает – обрыв в цепи обмотки ШД либо неисправны силовые узлы на плате сервопривода, иными словами - отсутствие тока в одной или нескольких обмотках ШД;
·      не горит – нет питания либо неисправен (неработоспособный) сервопривод.
9. Измерение и выдача температуры платы сервопривода с периодичностью не реже раз в 5 сек.

Входные каналы:
- (IN0) задание углового положения, обороты (знак определяет направление);
- (IN1) задание скорости вращения шпинделя, обороты в секунду (знак определяет направление);
- (IN2) задание ускорения (разгонная/тормозная характеристика для выхода на заданную скорость), обороты/секунду2;
- (IN3) количество полюсов (шагов) на оборот;
- (IN4) задание тока вращения, амперы;
- (IN5) задание тока разгона и торможения, амперы;
- (IN6) задание тока удержания, амперы;
- (IN7) значение, загружаемое в качестве значения текущего углового положения шпинделя при подаче бинарного сигнала "УСТАНОВ"
- (SET) бинарный сигнал "УСТАНОВ", активный уровень — низкий.

Выходные каналы:
- (OUT0) текущее угловое положение (*) (размерность соответствует IN0);
- (OUT1) текущая скорость вращения шпинделя (размерность соответствует IN1);
- (OUT2) текущее ускорение (размерность соответствует IN2);
- (OUT3) текущий ток потребления, амперы;
- (OUT4) температура платы, градусы Цельсия;

(*) – Во всех режимах выдавать текущее положение вала. При работе в режиме "вращение" при достижении конца разрядной сетки представления числа следует выводить служебный код "Авария на канале". В случае начала обратного вращения (возврат к рабочему диапазону представления чисел) продолжить работу канала в нормальном режиме.


Причем, написать это надо обязательно именно на ассемблере (с контролем количества тактов на все операции Улыбка ) на Atmega48P(A).
Применяться это будет в системах промышленной автоматики. Так что все-таки я решу сабжевую задачу топика, без Ардуины на asm, хоть и далек от идеи применять это в качестве "песпективы примочкостроения"  Круглые глаза
  

(Вложенный файл удалён)
Наверх
 
IP записан
 
Rst7
Гуру
*****
Вне Форума


Мимо проходил...

Сообщений: 1619
Местоположение: Харків-city
Зарегистрирован: 22.03.2010
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #314 - 10.11.2011 :: 09:12:38
Post Tools
Цитата:
Причем, написать это надо обязательно именно на ассемблере (с контролем количества тактов на все операции  ) на Atmega48P(A).


А смысл писать это на асме? У меня товарищ делает на таких процах частотник для асинхронных двигателей с обратной связью через энкодеры, причем, на входе он получает чуть ли не G-код, т.е. сам занимается интерполяцией и прочим. И ничего, никаким асмом там особо и не пахнет, все успевает.
  

(Вложенный файл удалён)

"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен
Наверх
WWW  
IP записан
 
Ivana
Участник


Re: Микроконтроллер - как перспектива примочкостроения
Ответ #315 - 11.11.2011 :: 14:22:26
Post Tools
Не, разумеется можно написать на С, откомпилировать и сказать что писал на асме Улыбка Просто я на асме постоянно сталкивался с задачей контроля количества тактов - например, чтобы каждый проход цикла, независимо от выполнения различных ветвистых внутренних условий и действий по ним, выполнялся всегда за строго определенное количество тактов, и т.п. И подобные вещи конечно придется писать на асме или редактировать полученный после компилятора код - а мне кажется, что первое проще Улыбка Хотя, может люди умеют такие вещи и на С через компиляторы делать Улыбка

ЗЫ меня тут обрадовало недавнее "открытие" - я пишу Цитата:
а = в;
где а и в - переменные одного типа, и всё выполняется!  Круглые глаза Казалось бы, что тут удивительного? Да, но это вроде как (насколько смог проверить) выполняется и в случае, если а и в - структуры, многие поля которых являются массивами! Круглые глаза Просто с массивами такое пока не пробовал проделывать, но мне кажется, просто присвоится указатель на 0-й элемент или компилятор заругается, но весь массив врядли скопируется. Значит будем создавать для красоты записи искусственные структуры, даже если нужен только массив Улыбка Или я где-то ошибся? Но алгоритм в желез работает и данные в структуре-приемнике обновляются!  Круглые глаза

ЗЗЫ что скажет компилятор на такое
Код
Select All
// было первый раз правильно - что-то перестраховался
// и переписал ещё в 2-х вариантах :)

unsigned int global_i;
...............................


void f(void)
{
unsigned int i = global_i;
if (i != global_i) i = global_i;
........
}

void f(void)
{
unsigned int i_1;
unsigned int i_2;

do
{
i_1 = global_i;
i_2 = global_i;
} until (i_1 == i_2)

// используем любую переменную - i_1 или i_2
// может можно реализовать и с одной внутренней
// переменной - пока не придумал

........
}

// или ещё вариант
void f(void)
{
unsigned int i_1 = global_i;
unsigned int i_2 = global_i;

if (i_1 != i_2) i_1 = global_i;

// используем любую переменную - i_1

........
}
 


Надо написать "volatile" при объявлении глобальной переменной, чтобы компилятор оставил "все как есть"? Смысл этих строк - гарантированно получить корректное значение глобальной переменной, если есть шанс что она изменится в прерывании - а отключать прерывания неохота, ибо некоторые из них могут быть без флагов своего появления - и не подождут чтобы возникнуть потом, а потеряются навсегда  Круглые глаза
« Последняя редакция: 11.11.2011 :: 14:51:04 от »  

(Вложенный файл удалён)
Наверх
 
IP записан
 
Rst7
Гуру
*****
Вне Форума


Мимо проходил...

Сообщений: 1619
Местоположение: Харків-city
Зарегистрирован: 22.03.2010
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #316 - 11.11.2011 :: 21:08:00
Post Tools
Цитата:
Да, но это вроде как (насколько смог проверить) выполняется и в случае, если а и в - структуры, многие поля которых являются массивами!


Да, структуры уже давно копируются (означено в стандарте языка). Массивы - нет (так как на самом деле это просто указатели).
  

(Вложенный файл удалён)

"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен
Наверх
WWW  
IP записан
 
Ivana
Участник


Re: Микроконтроллер - как перспектива примочкостроения
Ответ #317 - 11.11.2011 :: 21:16:03
Post Tools
И структуры массивов структур массивов массивов ...... и т.д.?  Круглые глаза Супер! А то я думал что С это не умеет и написал для копирования структуры отдельную функцию с пробеганием всех её вложенных полей и массивов поэлементно, а мне командир сказал - что ты делаешь, напиши просто! Улыбка Я говорю - так поля же не только простые типы, но и массивы! Он сказал попробовать и проверить  Круглые глаза

ЗЫ теперь буду все массивы засовывать единственным элементов с структуры! Улыбка И копировать/присваивать их туда-сюда, и в качестве результата выполнения функций возвращать! Вот, блин, прикол - массивы не копируются и не возвращаются, а более сложные объекты, их содержащие в своем составе - запросто!  Круглые глаза
  

(Вложенный файл удалён)
Наверх
 
IP записан
 
Rus
Разбирающийся
****
Вне Форума



Сообщений: 1017
Местоположение: Ukraine, Odessa
Зарегистрирован: 22.02.2007
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #318 - 23.11.2011 :: 21:35:39
Post Tools
Помогите с LPC1758. Нужно записать в его ROM массив данных из wav файла для дальнейших манипуляций с этим массивом. Как это сделать?
  

(Вложенный файл удалён)
Наверх
IP записан
 
research
Участник


Re: Микроконтроллер - как перспектива примочкостроения
Ответ #319 - 24.11.2011 :: 10:31:20
Post Tools
Поискать директиву подключения бинарников наподобие include-incbin, либо дамп преобразовать в директивы асма.
Обычно пишется небольшая програмка, которая 1,129,241 преобразует в текст DB 1,129,241 и все.
  

(Вложенный файл удалён)
Наверх
 
IP записан
 
 
  « Главная ‹ Раздел Наверх этой страницы