Перейти к содержанию
    

Для "Peps" и остальных кто пользуется ЕАТ - исправления.

Поставил новый компилятор. Все собирается отлично.

 

version1 не забываем править.

 

Вопрос по поводу заливки прошивки остался открытый вопрос. Софт отказывается заливатся через загрузчик. Куда рыть даже не догадываюсь. Пробовал из под ВинХп пишет тоже самое.

 

Схемотехнически распаял обычный мост на MAX3232 между SIM900 и PC, в линиях ТХ RХ стоят резисторы на 100 ом.

 

Все больше ничего не напаивал.

 

Как зашиваю. Включаю программу, выбираю ядро и приложение нажимаю СТАРТ ЗАГРУЗКИ, и зажимаю ПОВКЕЙ кратковременно, как бы начинается процесс загрузки, но после 4х пунктов вываливается с ошибкой.

post-30423-1324898598_thumb.png

post-30423-1324905731_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Такой вопрос. А обновлять прошивку случайно нужно не через ДЕБАГ порт ???

 

В общем можно та и так без разницы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

>>>нажимаю СТАРТ ЗАГРУЗКИ, и зажимаю ПОВКЕЙ кратковременно

 

поверкей коротим на землю - до конца загрузки

 

нажимаем старт

 

и только потом подаем питание.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть новость. В EAT для SIM900 добавили две важные функции DTMF декодирование и Jumming Detection. Пока реализованы в бета версии прошивки. Спрашивайте ее у ваших дистрибюторов.

Кстати, в параллельной ветке уже писал - в SIM908(GSM+GPS) тоже теперь есть EAT с DTMF и JD.

Изменено пользователем Цырен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Неужели так трудно написать письмо региональному официальному дистрибьютору, ответить на пару вопросов и получить программу ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите по SPI в SIM900 c EAT. Не могу подружить SIM900 с SST25VF016B. Выводы подключены к ногам 11,12,13,14 модуля.

Настройки модуля ebdat5_01SpiConfigure(SSI_4WIRE, SSI_ACTIVE_LOW, FL_PIN_14, SSI_SYSTEM_DIV_2, SSI_FALLING_EDGE, SSI_MSBFIRST);

Не получается даже тип SST25VF016B считать. Вот функция:

 

void select_end_mem(void)

{

u8 bfur[4],i;

u32 end_of_mem=0;

 

#ifdef VS_DEBUG

u8 buff_for_sms[]="End of memory 0x0FFFFF";//22(17)

#endif

 

ebdat5_02SpiWriteByte(0x9F);

for(i=0;i<3;i++)bfur=ebdat5_03SpiReadByte();

 

if(bfur[2]==0x41)end_of_mem=0x1FFFFF;

else if(bfur[1]==0x4A)end_of_mem=0x3FFFFF;

else end_of_mem=0;

 

 

#ifdef VS_DEBUG

 

if(end_of_mem==0x1FFFFF)buff_for_sms[16]='1';

else if(end_of_mem==0x3FFFFF)buff_for_sms[16]='3';

else {buff_for_sms[17]='0';buff_for_sms[18]='0';buff_for_sms[19]='0';

buff_for_sms[20]='0';buff_for_sms[21]='0';}

 

ebdat7_01DebugTrace((const char*)"\r\n");

ebdat7_02DebugUartSend(buff_for_sms, 22);

ebdat7_01DebugTrace((const char*)"\r\n");

 

#endif

}

В порт выдает End of memory 0x000000

Примерно понимаю, что что-то не так с ногой CHIP SELECT, поскольку функции ebdat5_02SpiWriteByte и ebdat5_03SpiReadByte её дергают постоянно, а нужно только перед ebdat5_02SpiWriteByte и после третьего ebdat5_03SpiReadByte. Но как это сделать - не знаю. Может кто подскажет? Или товарищи из SIMCOMa подскажут....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Неужели так трудно написать письмо региональному официальному дистрибьютору, ответить на пару вопросов и получить программу ?

Такой раздельный вызов функций Write и Read естественно, приводит к тому, что по окончанию записи или чтения байта CS будет снят, что недопустимо для вашего протокола.

Обычно SPI трехпооводный и одновременно отправляет и читает байт. Я не знаком с реализацией SPI в EAT, но в OCPU софтово реализовна функция, которая пишет и одновременно читает заданное количество байт. Т.о. пишем три байта (первый - команда, остальные - неважно), одновременно читаем тоже три (первый - неважно, остальные два - ответ).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Эдуард, может Вы подскажете, как это побороть?

Очень благодарен буду.

 

А если так?

 

u8 Buf[4] = {0x9F,0x00,0x00,0x00};

 

for(i=0;i<4;i++)

{

ebdat5_02SpiWriteByte(Buf); - шлем

Buf = ebdat5_03SpiReadByte(); - читаем

}

 

 

Как вариант - возьмите осцил и подключитесь в MOSI, MISO и CLK. Посмотрите есть ли клоки при ebdat5_03SpiReadByte() и данные от слэйва по линии MISO.

Изменено пользователем Цырен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело в том что SIM900 после каждой команды ebdat5_02SpiWriteByte убирает сигнал CS, а SST такого не понимает. Т.е. идеально было бы, чтоб пользователь мог говорить например ebdat5_02SpiWriteByte(Buf, 1); - это значит активировать CS, а ebdat5_02SpiWriteByte(Buf, 0); - деактивировать. И на чтение - также.

Тогда бы все наверное получилось бы:

 

ebdat5_02SpiWriteByte(0x9F,1); - шлем

for(i=0;i<4;i++)

{

if(i<3)Buf = ebdat5_03SpiReadByte(1); - читаем

else Buf = ebdat5_03SpiReadByte(0); - читаем

}

Изменено пользователем Romashki

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Идеально было бы китайцам донести необходимость команды SpiWriteBuffer(char* cmdbuf, char* ansbuf, int len).

А реализованная SpiWriteByte по большому счету вообще бесполезна.

 

PS: альтернативой есть написать самому даную функцию (абсолютно ничего сложного), используя стандартные функции управления ножками модуля. Конечно, будет на порядок медленней обмен, но хоть как...

Изменено пользователем GeGeL

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

PS: альтернативой есть написать самому даную функцию (абсолютно ничего сложного), используя стандартные функции управления ножками модуля. Конечно, будет на порядок медленней обмен, но хоть как...

 

Пытаюсь это сделать....знать бы сколько выполняется команда по установке ноги в 1 или 0 ... или это нельзя определить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно: засеките системное время, затем в цикле дерните ногу туда-сюда раз тысячу, затем снова время.

Кутел так делает в некоторых своих примерах для демонстрации преимуществ использования API-функций перед АТ-командами.

Напишите потом результат, интересно...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

системным временем не получилось (там секунды наименьшее значение), сделал тиками. Один тик = 9,23 миллисекунды.

На 1000 не меняется, пришлось 10000 поставить:

 

SysTick1 = ebdat8_08GetSystemTickCounter( );

 

for(tm=0;tm<10000;tm++)

{

if(ebdat6_04WriteGpio(EEPROM_SELECT,s)==FL_OK)tms++;

s=(~s);

}

 

SysTick2 = ebdat8_08GetSystemTickCounter( );

 

ebdat7_01DebugTrace("\r\nsystem time is : %d",SysTick1);

ebdat7_01DebugTrace("\r\nsystem time is : %d",SysTick2);

ebdat7_01DebugTrace("\r\ncounter is : %d",tms);

 

Вот ответ:

 

 

system time is : 774[0D][0A]

system time is : 778[0D][0A]

counter is : 5000

 

Ориентировочно один раз проходит примерно за 4 микросекунды.... но вот почему счетчик правильных ответов ровно в половину меньше???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...