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

SidAlex

Участник
  • Постов

    35
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о SidAlex

  • Звание
    Участник
    Участник
  1. Народ, помогите..... Я уже не знаю чего делать.... Как работать с этим модемом, если ты работаешь через MCU. У меня MSP430
  2. Информация интересная. Но у меня сейчас размер посылки 20 байт. Я посылаю одну и ту же посылку раз в 30 секунд. Скорость общения MCU с IT700 составляет по умолчанию, т.е. 38400. Настройка модема стоит авто, т.е. я только отправляю и все. Но когда ни одной посылки не доходит, а когда не более четырех. Можно ли написать поэтапно что нужно делать, т.е. как правильно инициализировать, передавать ну и т.п. Просто я уже недели две бьюсь над этой проблемой, а в тех поддержке отписывают мне одно и тоже. Да еще есть такая вещь, если пакеты не проходят, то хочу с помощью команды отправить в RESET, а она просто игнорируется. Но и передача просто не проходит. Но если слушать монитором COM-порта и слать посылки с помощью PLC Studio то все они проходят, с какой бы частотой я их не посылал. num time type serv mod prty sq cw net isrc idst osrc fdst psrc size payload 0004 09:51:32.4 Mine ack RM norm 31 18 980 9 8 9 8 0 4 0123 0003 09:51:02.5 Mine ack RM norm 31 19 980 9 8 9 8 0 4 0123 0002 09:50:32.4 Mine ack RM norm 31 80 980 9 8 9 8 0 4 0123 0001 09:50:02.4 Mine ack RM norm 31 80 980 9 8 9 8 0 4 0123 Меня еще интересует что такое cw. Оно изменяется, в смысле значение этого параметра.
  3. Народ, всем привет. Может не в тему, но у меня большая проблема. Тоже решил отказаться от их "аппликации" как они это называют. Решил сопряч IT700 с MCU, а именно с MSP430. Все вроде ничего, но при попытке передачи данных проходит не более четырех пакетов. В чем проблема ума не приложу. Просто через PLC Studio все пакеты проходят на ура, а через МК никак, я и с ихней тех поддержкой разговаривал и все такое прочее, короче ответа внятного я так и не получил. Кто-нибудь сталкивался с этой проблемой? Заранее благодарен за ответы.
  4. В общем не работает. Слать в микруху я данные шлю - это я вижу на осциллографе, а читать ничего не читаю. Скажите, пожалуйста, как должны быть установлены WP и HOLD. Вообще, если смотреть в мануал, то получается, что WP - это аппаратная защита от записи. Или я ошибаюсь? Про HOLD тоже вроде понятно, что если ноль, то все будет игнорироваться. А можно еще подсказать настройки SPI? Я вот так настраиваю: switch(UsartNumber) { case 0: U0CTL |= SWRST; U0CTL |= MM + SYNC + CHAR; //Master, SPI, 8-bit Data; U0TCTL |= STC + SSEL0 + SSEL1; U0BR0 = 0x02; U0BR1 = 0x00; U0MCTL = 0x00; ME1 |= USPIE0; U0CTL &= ~SWRST; break; case 1: U1CTL |= SWRST; U1CTL |= SYNC + CHAR; //Slave, SPI, 8-bit Data; U1TCTL |= STC + CKPH; U1BR0 = 0x02; U1BR1 = 0x00; U1MCTL = 0x00; ME2 |= USPIE1; U1CTL &= ~SWRST; break; default: break; }
  5. Еще раз прошу прощения, но что значит WP и HOLD в порядке? Они должны быть установлены в каком то положении??? Они у меня подняты в единицу.
  6. Вот переделал, вставил, чтобы читать было удобнее void WriteFM25L256(unsigned int adress, char *mass, int nbyte) { unsigned int a; // OFF_HOLD_FRAM(); //продолжить передачу данных из FRAM // OFF_WP_FRAM(); //отключить защиту записи CS_FRAM(); //чип-селект для FRAM while (!(IFG1 & UTXIFG0));//провека готовности ТХ-буфера U0TXBUF = WREN_FM25L; //разрешение записи в FM25L256 while(!(U0TCTL & TXEPT)); // __no_operation(); // __no_operation(); // __no_operation(); // __no_operation(); OFF_CS_FRAM(); //сброс чипселекта FRAM CS_FRAM(); //чип-селект для FRAM while (!(IFG1 & UTXIFG0));//провека готовности ТХ-буфера U0TXBUF = WRITE_FM25L; //разрешение записи в FM25L256 while(!(U0TCTL & TXEPT)); while (!(IFG1 & UTXIFG0));//провека готовности ТХ-буфера U0TXBUF = adress >> 8; //запись старшего байта адреса while(!(U0TCTL & TXEPT)); while (!(IFG1 & UTXIFG0));//провека готовности ТХ-буфера U0TXBUF = adress; //запись младшего байта адреса while(!(U0TCTL & TXEPT)); for(a = 0; a < nbyte; a++) { // while (!(IFG1 & UTXIFG0)); //провека готовности ТХ-буфера // U0TXBUF = mass[a] >> 8; //передать старший байт элемента массива while (!(IFG1 & UTXIFG0)); //провека готовности ТХ-буфера U0TXBUF = mass[a]; //передать младший байт элемента массива while(!(U0TCTL & TXEPT)); }; // while(!(U0TCTL & TXEPT)); //пусты ли регистры TX // WP_FRAM(); //включить защиту записи OFF_CS_FRAM(); //сброс чипселекта FRAM } void ReadFM25L256(unsigned int adress, char *mass, int nbyte) { unsigned int a; CS_FRAM(); //чип-селект для FRAM while (!(IFG1 & UTXIFG0));//провека готовности ТХ-буфера U0TXBUF = READ_FM25L; //команда //разрешение чтения из FM25L256 while(!(U0TCTL & TXEPT)); while (!(IFG1 & UTXIFG0)); //провека готовности ТХ-буфера U0TXBUF = adress >> 8; //запись старшего байта адреса while(!(U0TCTL & TXEPT)); while (!(IFG1 & UTXIFG0)); //провека готовности ТХ-буфера U0TXBUF = adress; //запись младшего байта адреса while(!(U0TCTL & TXEPT)); for(a = 0; a < nbyte; a++) { while (!(IFG1 & UTXIFG0)); //ожидание готовности TX-буфера U0TXBUF = 0x40; //тактирование FRAM while(!(U0TCTL & TXEPT)); while (!(IFG1 & URXIFG0)); //ожидание готовности RХ-буфера mass[a] = U0RXBUF; //считывание из RX-буфера в массив страшего байта while(!(U0TCTL & TXEPT)); } //while(!(U0TCTL & TXEPT)); //пусты ли регистры TX OFF_CS_FRAM(); //сброс чипселекта FRAM }/* конец определения ------------------------------------------------------------------*/
  7. Ребята ничего не понимаю, вроде написано все как говорите, но ничего не происходит. Точнее запись вроде есть, а вот прочитать не могу. Где что не так? Функции записи чтения прилагаю: void WriteFM25L256(unsigned int adress, char *mass, int nbyte) { unsigned int a; // OFF_HOLD_FRAM(); //продолжить передачу данных из FRAM // OFF_WP_FRAM(); //отключить защиту записи CS_FRAM(); //чип-селект для FRAM while (!(IFG1 & UTXIFG0));//провека готовности ТХ-буфера U0TXBUF = WREN_FM25L; //разрешение записи в FM25L256 while(!(U0TCTL & TXEPT)); // __no_operation(); // __no_operation(); // __no_operation(); // __no_operation(); OFF_CS_FRAM(); //сброс чипселекта FRAM CS_FRAM(); //чип-селект для FRAM while (!(IFG1 & UTXIFG0));//провека готовности ТХ-буфера U0TXBUF = WRITE_FM25L; //разрешение записи в FM25L256 while(!(U0TCTL & TXEPT)); while (!(IFG1 & UTXIFG0));//провека готовности ТХ-буфера U0TXBUF = adress >> 8; //запись старшего байта адреса while(!(U0TCTL & TXEPT)); while (!(IFG1 & UTXIFG0));//провека готовности ТХ-буфера U0TXBUF = adress; //запись младшего байта адреса while(!(U0TCTL & TXEPT)); for(a = 0; a < nbyte; a++) { // while (!(IFG1 & UTXIFG0)); //провека готовности ТХ-буфера // U0TXBUF = mass[a] >> 8; //передать старший байт элемента массива while (!(IFG1 & UTXIFG0)); //провека готовности ТХ-буфера U0TXBUF = mass[a]; //передать младший байт элемента массива while(!(U0TCTL & TXEPT)); }; // while(!(U0TCTL & TXEPT)); //пусты ли регистры TX // WP_FRAM(); //включить защиту записи OFF_CS_FRAM(); //сброс чипселекта FRAM } void ReadFM25L256(unsigned int adress, char *mass, int nbyte) { unsigned int a; CS_FRAM(); //чип-селект для FRAM while (!(IFG1 & UTXIFG0));//провека готовности ТХ-буфера U0TXBUF = READ_FM25L; //команда //разрешение чтения из FM25L256 while(!(U0TCTL & TXEPT)); while (!(IFG1 & UTXIFG0)); //провека готовности ТХ-буфера U0TXBUF = adress >> 8; //запись старшего байта адреса while(!(U0TCTL & TXEPT)); while (!(IFG1 & UTXIFG0)); //провека готовности ТХ-буфера U0TXBUF = adress; //запись младшего байта адреса while(!(U0TCTL & TXEPT)); for(a = 0; a < nbyte; a++) { while (!(IFG1 & UTXIFG0)); //ожидание готовности TX-буфера U0TXBUF = 0x40; //тактирование FRAM while(!(U0TCTL & TXEPT)); while (!(IFG1 & URXIFG0)); //ожидание готовности RХ-буфера mass[a] = U0RXBUF; //считывание из RX-буфера в массив страшего байта while(!(U0TCTL & TXEPT)); } //while(!(U0TCTL & TXEPT)); //пусты ли регистры TX OFF_CS_FRAM(); //сброс чипселекта FRAM }/* конец определения ------------------------------------------------------------------*/
  8. т.е. 1. Chip Select 2. Передача команды на разрешение чтения 4. Передача адреса, с которого нужно начинать читать 5. Чтение данных 6. После всего сбросить Chip Select. Правильно???
  9. И еще тогда вопрос, а как читать? Порядок действий тот же или нет?
  10. А тогда подскажите пожалуйста, нужен ли между этими действиями таймаут или нет???
  11. Извините пожалуйста, а что значит "...обязательно дождаться статуса окончания записи..." И когда сбрасывать пин разрешения записи?
  12. У меня тут вот какой вопрос родился. Какие действия в какой последовательности должны проходить. Я, например, делаю так: 1. Chip Select 2. Передача команды на разрешение записи в память 3. Передача команды записи данных 4. Передача адреса, с которого нужно начинать писать 5. Передача данных 6. После передачи сбросить Chip Select. Естественно до этого происходит настройка SPI всех необходимых портов.
  13. Привет всем ГУРУ программирования МК. Возникла такая проблемка. Есть внешняя память FM25L256. Почитал pdf на эту микросхему, вроде бы все понятно. Решил поработать. Написал алгоритм инициализации микросхемы, функции чтения и записи. Но, при выполнении этих функций, они работают, но результата никакого. Т.е. вроде бы пишет, вроде бы читает, но в массиве одни нули. Подскажите где что не так делаю? Просто уже несколько дней с этим мучаюсь, а результата ноль. Микруха подцеплина через SPI, он настроен корректно, вроде. Вот и чешу в затылке. К тому же я человек в этом деле новый, много не знаю. Прошу, пожалуйста, помогите. Заранее всем спасибо. С уважением, Александр.
  14. Доброго времени суток всем ГУРУ программирования на Си под МК. У меня собственно возникла вот такая проблема. Есть GPRS модем, который сопряжен с микроконтроллером. Так вот, нужно чтобы при выполнении определенных действий с помощью модема отправлялось СМС о том, что эти действия были выполнены успешно или нет. Основная моя загвоздка заключается в том, что при посылке СМС через телефон оно воспринимается нормально со всеми отсюда вытекающими последствиями. Но стоит мне туже СМС отправить с использованием интернета, то приходит какая-то лажа. Что за лажа приходит я разобрался, но теперь не знаю как с этим бороться. Я так думаю, что нужно написать функцию по переводу одного формата в другой, но я не знаю с чего начать дабы являюсь новичком в этом деле. Вот я и прошу старших мне помочь в этом нелегком для меня вопросе. Заранее спасибо за ответы и советы.
×
×
  • Создать...