реклама на сайте
подробности

 
 
8 страниц V  « < 3 4 5 6 7 > »   
Reply to this topicStart new topic
> пока не понятные баги OpenCPU в M10
Alechek
сообщение Nov 1 2011, 13:36
Сообщение #61


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Цитата(CupuyC @ Nov 1 2011, 17:58) *
Нет такой функции. Для этих целей можно написать свою функцию используя из time.h функцию, которая считает время. Вставить ее в цикл и получим delay().

В цикл? cranky.gif
А не подвесится весь модуль, если я сделаю, скажем, delay(10000ms) ?
Go to the top of the page
 
+Quote Post
CupuyC
сообщение Nov 1 2011, 13:47
Сообщение #62


Частый гость
**

Группа: Свой
Сообщений: 188
Регистрация: 21-04-06
Из: Украина, Киев
Пользователь №: 16 335



Цитата(Alechek @ Nov 1 2011, 16:36) *
В цикл? cranky.gif
А не подвесится весь модуль, если я сделаю, скажем, delay(10000ms) ?
Если у вас задача повесить модуль, то он конечно повесится. А если кодить понимая что и зачем делаешь...
Если надо защититься от криворукого програмиста, который может написать delay(1000000ms), то вставте в цинк одну строку с условием выхода из цикла, например если задано время задержки больше 1сек...
Go to the top of the page
 
+Quote Post
pau62
сообщение Nov 1 2011, 13:48
Сообщение #63


Частый гость
**

Группа: Участник
Сообщений: 116
Регистрация: 22-10-11
Из: Россия
Пользователь №: 67 897



Цитата(Alechek @ Nov 1 2011, 17:36) *
В цикл? cranky.gif
А не подвесится весь модуль, если я сделаю, скажем, delay(10000ms) ?


Там вообще-то есть Ql_Sleep

Модуль то не подвесится, хотя мне не приходило в голову проверять действие такой дичи.
Но это плохой стиль, нельзя так писать. Кучу евентов можно прозевать при таких писаниях.
Go to the top of the page
 
+Quote Post
GeGeL
сообщение Nov 1 2011, 16:52
Сообщение #64


Местный
***

Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682



/*****************************************************************
* Function: Ql_Sleep
*
* Description:
* Suspends the execution of the current task
* until the time-out interval elapses.
* Parameters:
* msec:
* The time interval for which execution is to
* be suspended, in milliseconds.
* Return:
* None
*****************************************************************/
void Ql_Sleep(u32 msec);

Но pau62 прав - евенты в оцпу обрабатываются поллингом, и пока Sleep работает, естественно, будут или пропущены, или, хуже того, переполнены (тоже не пробовал).
Sleep хороша для небольших задержек. Например, Stanley в своем екзампле софтовой реализации SPI использует Ql_Sleep(1) между дерганьем ног непосредсвенно записью в регистры ARM.
Я также использовал на старте своей программы Ql_Sleep(10) между командами настройки портов типа смены скорости и т.п.
Но если речь идет о больших интервалах, то это, естественно, абсурдно, т.к., боюсь, энергопотребление от этого не изменится.
Лучший способ, как на мой взгляд: настроить будильник и затем отключить модуль полностью с включением по будильнику. А еще надежнее - внешний PIC10, который будет этим заниматься.

ПС: по поводу вешанья - я такую задачу специально перед собой ставил, и не смог - не вешается он никак, а перезагружается.

Сообщение отредактировал GeGeL - Nov 1 2011, 16:55
Go to the top of the page
 
+Quote Post
V125
сообщение Nov 1 2011, 17:27
Сообщение #65


Частый гость
**

Группа: Участник
Сообщений: 151
Регистрация: 24-06-11
Пользователь №: 65 866



А Stanley случаем не желает и нам показать свой софтовый SPI ? Очень хоца иметь уже готовый на вооружении. И не ради инженерного интереса (как где то в соседней ветке писали), а именно для копипаста. biggrin.gif
Go to the top of the page
 
+Quote Post
pau62
сообщение Nov 1 2011, 18:27
Сообщение #66


Частый гость
**

Группа: Участник
Сообщений: 116
Регистрация: 22-10-11
Из: Россия
Пользователь №: 67 897



Цитата(V125 @ Nov 1 2011, 21:27) *
А Stanley случаем не желает и нам показать свой софтовый SPI ? Очень хоца иметь уже готовый на вооружении. И не ради инженерного интереса (как где то в соседней ветке писали), а именно для копипаста. biggrin.gif

Уж не знаю, для чего может потребоваться софтовый SPI , в котором используются миллисекундные задержки.
И вот не понятно мне, Господа вообще чтоль в доки и примеры не смотрят?
У Квектела на эту тему как минимум 2 примера - про LCD и про собственно SPI, по-моему для обслуживания SD карты.
Первый я пробовал, он работоспособен, если делитель 4 не ставить, но это не квектеловская проблема имхо, а чипсетовая.
Во втором тоже грабель на первый взгляд не заметно.

Цитата
Очень хоца иметь уже готовый на вооружении

Хорошее оружие - это испытанное в бою оружие))))
Пробовать и обнюхивать надо, прежде чем применять.
А так этих софтовых спи в тырнете - граблями не сгрести. Да и сам принцип действия элементарен. Вовсе не обязательно заимствовать то, что написано для оцпу.
Достаточно просто в любом примере заменить процедуры типа " дернуть лапу вверх" на специфичные для контроллера.

Сообщение отредактировал pau62 - Nov 1 2011, 18:32
Go to the top of the page
 
+Quote Post
GeGeL
сообщение Nov 1 2011, 18:31
Сообщение #67


Местный
***

Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682



Кстати, не пробовали в примере SPI тестировать остальные из 16 бит управляющего регистра из примера: в смысле, за какие ноги модуля они отвечают? У меня все руки не доходят.

Добавлено: сорри, сам уже нашел в sdconfig.h (заремлено, но понятно)

Медленный он, конечно. Сейчас хочу мини-роутер сделать: прикрутить по SPI езернет-контроллер ENC28J60, а на модуле поднять ppp из оцпу без стека, чтобы получать IP-пакеты с заголовком, менять IP и порты согласно таблице маппинга и отсылать в другой конец. Для моей задачи скорости хватит, но для серьезного обмена - врядли.

Сообщение отредактировал GeGeL - Nov 1 2011, 18:50
Go to the top of the page
 
+Quote Post
V125
сообщение Nov 1 2011, 18:42
Сообщение #68


Частый гость
**

Группа: Участник
Сообщений: 151
Регистрация: 24-06-11
Пользователь №: 65 866



В LCD я пока не заглядывал, а вот эксемпла "про собственно SPI" в SDK у меня похоже нет. Видишь суслика? - Нет - И я не вижу. А он есть. Да писал я себе както софтовый под ТИНЮ85, но если за меня написали под ОЧПУ нафига мне тратить время и переписывать

Сообщение отредактировал V125 - Nov 1 2011, 18:48
Go to the top of the page
 
+Quote Post
pau62
сообщение Nov 1 2011, 19:03
Сообщение #69


Частый гость
**

Группа: Участник
Сообщений: 116
Регистрация: 22-10-11
Из: Россия
Пользователь №: 67 897



Я только LCD от нокии прицепил.
по примерчику LCD.
Задача была проверить, нормально ли прицепится вся периферия для небольшой задачки.
Я с оцпу ковыряюсь недавно совсем.
А про регистры - это пример про SPI, я его не пробовал. насколько я понял, кроме тех 4 ног , этот регистр ничем не рулит.
Надо смотреть доки МТК.
Я рыть собираюсь в этом направлении, но сейчас другие проблемы на голову обрушились)))


PS установить бы еще соответствие между номерами GPIO по версии MTK и по Квектелу)))

Сообщение отредактировал pau62 - Nov 1 2011, 19:04
Go to the top of the page
 
+Quote Post
V125
сообщение Nov 3 2011, 15:53
Сообщение #70


Частый гость
**

Группа: Участник
Сообщений: 151
Регистрация: 24-06-11
Пользователь №: 65 866



Получается если во время отработки Ql_Sleep(u32 msec); придет событие СМС, то оно пропадет в небытие. pau62 уточните это уже проверено или предположение? Для чего нужен такой слип? Тогда как лучше укладывать модуль в спячку (под ОЦПУ), чтобы после просыпания моя СМСка принялась и обработалась?
Go to the top of the page
 
+Quote Post
pau62
сообщение Nov 3 2011, 16:21
Сообщение #71


Частый гость
**

Группа: Участник
Сообщений: 116
Регистрация: 22-10-11
Из: Россия
Пользователь №: 67 897



Если в период спячки придет событие, то оно имхо никуда не денется, а вот если два - то у меня большие подозрения что первое потеряется. Собственно, проблема не в том, а в том, что , например, буффер принятых модемом или последовательным портом данных перезапишется.
Это только предположения, и, если я ошибаюсь, надеюсь, меня поправят. Это можно было и проверить, и я этим займусь, но просто сейчас другая работа навалилась.
Просто применение всяких Delay_ms ведет к написанию таких неэффективных поделок, что лучше сразу забыть о таком, если речь не о микросекундах.

Сообщение отредактировал pau62 - Nov 3 2011, 16:25
Go to the top of the page
 
+Quote Post
GeGeL
сообщение Nov 3 2011, 16:42
Сообщение #72


Местный
***

Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682



Я тоже не проверял, но думаю аналогично - первое потеряется.
А какой смысл Вы видите в этой задержке? Т.е. чего Вы хотите добиться ее использованием?

Сообщение отредактировал GeGeL - Nov 3 2011, 16:44
Go to the top of the page
 
+Quote Post
V125
сообщение Nov 3 2011, 17:39
Сообщение #73


Частый гость
**

Группа: Участник
Сообщений: 151
Регистрация: 24-06-11
Пользователь №: 65 866



Когда я делал на внешнем проце, то отправлял сообщения так (к синтаксису не придираться, может вырезал кривовато )
Код
printf("AT+CMGS=\"%s\"\n\r", ANumb);
delay_ms(200); //ждем >
printf("%s%c", Mess, CtrlZ);
Кстати если в ОЧПУ сделать по этому коду, то сообщение приходит почему то пустым, а на внешнем проце работает на ура. Задержка была нужна для ожидания символа приглашения > Теперь использовал встроенную ф-цию отправки и проблема отпала.
Код
Ql_sprintf(buf_num,"%s",ID_NUM_2);  //определяем из СМС сообщения ID_NUM_2    
Ql_SendTextSMS((u8*)(buf_num), (u8*)(buf_mess));
А все же как лучше укладывать модуль в спячку (под ОЦПУ) на час, на день?

Сообщение отредактировал V125 - Nov 3 2011, 17:42
Go to the top of the page
 
+Quote Post
pau62
сообщение Nov 3 2011, 18:02
Сообщение #74


Частый гость
**

Группа: Участник
Сообщений: 116
Регистрация: 22-10-11
Из: Россия
Пользователь №: 67 897



Нигде не написано, что Sleep укладывает в спячку модуль, а не юэверьскую задачу.
Правильный метод - после отправки команды на передачу смс в евенте модемного порта проверять , не пришла ли эта галка, а когда пришла, передавать текст смс.
Как реально снижать потребление модуля под оцпу я тоже не разобрался пока.

Сообщение отредактировал pau62 - Nov 3 2011, 18:04
Go to the top of the page
 
+Quote Post
V125
сообщение Nov 3 2011, 18:16
Сообщение #75


Частый гость
**

Группа: Участник
Сообщений: 151
Регистрация: 24-06-11
Пользователь №: 65 866



Вот сейчас впервые подал питание через тестер (не включая кнопкой POWERKEY)- кажет 10миллиампер (как бы не мало), но в талмуде на модуль вроде бы указан 1 миллиампер. Или его нужно как то усыплять, чтоб получить 1мА.
Go to the top of the page
 
+Quote Post

8 страниц V  « < 3 4 5 6 7 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th June 2025 - 22:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.015 секунд с 7
ELECTRONIX ©2004-2016