- Главная
- Форум
- Микроконтроллеры и Системы на Модуле (SOM)
- Микроконтроллеры
- Программный стек для управления GSM модулем (окончание банкета)
- Форум
- Микроконтроллеры и Системы на Модуле (SOM)
- Микроконтроллеры
- Программный стек для управления GSM модулем (окончание банкета)
Программный стек для управления GSM модулем (окончание банкета)
- Алена
- Автор темы
- Посетитель
11 года 7 мес. назад #4103
от Алена
Алена создал тему: Программный стек для управления GSM модулем (окончание банкета)
В продолжение новостей от [iurl=http://www.promelec.ru/company/news/1095/]07.12.2012г[/iurl]. и [iurl=http://www.promelec.ru/company/news/1060/]28.01.2013г.[/iurl] инженеры компании "Промэлектроника" написали небольшой программный стек по объединению продукции STMicroelectronics и Quectel. В качестве контроллера был взят [iurl=http://www.promelec.ru/catalog/1/11/1777/0/150573/#150573]STM32F051R8T6[/iurl], а в качестве модуля GSM связи – [iurl=http://www.promelec.ru/catalog/1640/1668/1671/0/148904/#148904]M95[/iurl]. На базе этого железа был построен элемент охранной системы: SMS оповещение одного абонента сотовой связи при замыкании/размыкании двух проводов («сухие контакты»).
[iurl=http://www.promelec.ru/company/news/1135/]
Оригинал новости[/iurl]
[jwp=425,344,image]www.promelec.ru/UPLOAD/video/DSCN6358.flv[/jwp]
[iurl=http://www.promelec.ru/company/news/1135/]
Оригинал новости[/iurl]
[jwp=425,344,image]www.promelec.ru/UPLOAD/video/DSCN6358.flv[/jwp]
- newseltek
- Посетитель
11 года 7 мес. назад #4105
от newseltek
newseltek ответил в теме Re: Программный стек для управления GSM модулем (окончание банкета)
А выложить-то его можно ?
- SiN0
- Посетитель
11 года 7 мес. назад #4108
от SiN0
SiN0 ответил в теме Re: Программный стек для управления GSM модулем (окончание банкета)
Видимо не дадут, судя по написанному в тексте:А выложить-то его можно ?
А видео зачётно сняли . Хоть бы повернули.Получилась такая вот небольшая операционная система, которую мы можем предложить потенциальному заказчику по запросу.
- SiN0
- Посетитель
11 года 7 мес. назад #4121
от SiN0
SiN0 ответил в теме Re: Программный стек для управления GSM модулем (окончание банкета)
Раз стек выкладываться не будет, то объясните, как организовать по рис.2 по ссылке www.promelec.ru/company/news/1135/ работу программы?
Интересует пример на Си. Т.е. хотя бы структуру, как организовать переходы и вызовы при получении той или иной AT команды от модема и их зависимость от состояние модуля, фиксируемого в программе в переменной.
Интересует пример на Си. Т.е. хотя бы структуру, как организовать переходы и вызовы при получении той или иной AT команды от модема и их зависимость от состояние модуля, фиксируемого в программе в переменной.
- Денис Ягов
- Посетитель
11 года 7 мес. назад #4126
от Денис Ягов
Денис Ягов ответил в теме Re: Программный стек для управления GSM модулем (окончание банкета)
кусок ядра обработчика:
FLAG = 0;
FLAG1 = 0;
I = 0;
while ((I<ProceesMashine_Buffer.LEN)&&(FLAG==0))
{
// указатель на строку из библиотеки строк, подлежащую сравнению
B = (Message_TypeDef*) (*((uint32_t*)(ProceesMashine_Buffer.Messages)+I));
if (Compare_Rx_Buffer(==SUCCESS)
{
// поднимаем флаг о выходе из цикла
FLAG = 1;
FLAG1 = 1;
// вычисляем адрес вызываемой функции
ADDR_FUNC = (uint32_t)(*(uint32_t*)(ProceesMashine_Buffer.Functions+(I*sizeof(uint32_t*))));
// осуществляем переход в функцию, адрес которой находится в переменной ADDR_FUNC
Jump_Addr();
}
I++;
}
Смысл процедуры простой: при совпадении строк - прыгаем в некий адрес, где
ProceesMashine_Buffer.LEN - длина состояния (сколько строк подлежит сравнению)
ProceesMashine_Buffer.Functions - указатель на таблицу указателей функций
Compare_Rx_Buffer() - функция сравнения буфера с некой строкой
ADDR_FUNC - переменная в которой хранится адрес вызываемой функции
Сравниваемые строки: B и буфер приёма.
Сам переход в функцию-обработчик осуществляется функцией Jump_Addr().
Я потратил день чтобы написать это дело на Си - неудачно и 5 минут на ассемблере (удачно):
EXTERN ADDR_FUNC // это переменная, которая хранит адрес функции в который надо прыгнуть
PUBLIC Jump_Addr // метка функции, которая осуществляет прыг по адресу ADDR_FUNC
section MYCODE:CODE(6)
Jump_Addr
LDR R0, =ADDR_FUNC // грузим адрес переменной ADDR_FUNC
LDR R0, [R0] // грузим значение переменной
BX R0 // прагаем
// возврат из вызванной процедуры будет по значению регистра LR (он указывает на место откуда была вызвана данная функция)
// поэтому дополнительного кода возврата - не требуется
end
FLAG = 0;
FLAG1 = 0;
I = 0;
while ((I<ProceesMashine_Buffer.LEN)&&(FLAG==0))
{
// указатель на строку из библиотеки строк, подлежащую сравнению
B = (Message_TypeDef*) (*((uint32_t*)(ProceesMashine_Buffer.Messages)+I));
if (Compare_Rx_Buffer(==SUCCESS)
{
// поднимаем флаг о выходе из цикла
FLAG = 1;
FLAG1 = 1;
// вычисляем адрес вызываемой функции
ADDR_FUNC = (uint32_t)(*(uint32_t*)(ProceesMashine_Buffer.Functions+(I*sizeof(uint32_t*))));
// осуществляем переход в функцию, адрес которой находится в переменной ADDR_FUNC
Jump_Addr();
}
I++;
}
Смысл процедуры простой: при совпадении строк - прыгаем в некий адрес, где
ProceesMashine_Buffer.LEN - длина состояния (сколько строк подлежит сравнению)
ProceesMashine_Buffer.Functions - указатель на таблицу указателей функций
Compare_Rx_Buffer() - функция сравнения буфера с некой строкой
ADDR_FUNC - переменная в которой хранится адрес вызываемой функции
Сравниваемые строки: B и буфер приёма.
Сам переход в функцию-обработчик осуществляется функцией Jump_Addr().
Я потратил день чтобы написать это дело на Си - неудачно и 5 минут на ассемблере (удачно):
EXTERN ADDR_FUNC // это переменная, которая хранит адрес функции в который надо прыгнуть
PUBLIC Jump_Addr // метка функции, которая осуществляет прыг по адресу ADDR_FUNC
section MYCODE:CODE(6)
Jump_Addr
LDR R0, =ADDR_FUNC // грузим адрес переменной ADDR_FUNC
LDR R0, [R0] // грузим значение переменной
BX R0 // прагаем
// возврат из вызванной процедуры будет по значению регистра LR (он указывает на место откуда была вызвана данная функция)
// поэтому дополнительного кода возврата - не требуется
end
- Форум
- Микроконтроллеры и Системы на Модуле (SOM)
- Микроконтроллеры
- Программный стек для управления GSM модулем (окончание банкета)
Время создания страницы: 0.044 секунд