SidAlex
Участник-
Постов
35 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о SidAlex
-
Звание
Участник
-
Передача данных по сети 220 в
SidAlex ответил JimBaton тема в Вопросы аналоговой техники
Народ, помогите..... Я уже не знаю чего делать.... Как работать с этим модемом, если ты работаешь через MCU. У меня MSP430 -
Передача данных по сети 220 в
SidAlex ответил JimBaton тема в Вопросы аналоговой техники
Информация интересная. Но у меня сейчас размер посылки 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. Оно изменяется, в смысле значение этого параметра. -
Передача данных по сети 220 в
SidAlex ответил JimBaton тема в Вопросы аналоговой техники
Народ, всем привет. Может не в тему, но у меня большая проблема. Тоже решил отказаться от их "аппликации" как они это называют. Решил сопряч IT700 с MCU, а именно с MSP430. Все вроде ничего, но при попытке передачи данных проходит не более четырех пакетов. В чем проблема ума не приложу. Просто через PLC Studio все пакеты проходят на ура, а через МК никак, я и с ихней тех поддержкой разговаривал и все такое прочее, короче ответа внятного я так и не получил. Кто-нибудь сталкивался с этой проблемой? Заранее благодарен за ответы. -
Работа с внешней памятью
SidAlex ответил SidAlex тема в Программирование
микроконтроллер MSP430F1611IPM -
Работа с внешней памятью
SidAlex ответил SidAlex тема в Программирование
В общем не работает. Слать в микруху я данные шлю - это я вижу на осциллографе, а читать ничего не читаю. Скажите, пожалуйста, как должны быть установлены 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; } -
Работа с внешней памятью
SidAlex ответил SidAlex тема в Программирование
Еще раз прошу прощения, но что значит WP и HOLD в порядке? Они должны быть установлены в каком то положении??? Они у меня подняты в единицу. -
Работа с внешней памятью
SidAlex ответил SidAlex тема в Программирование
Вот переделал, вставил, чтобы читать было удобнее 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 }/* конец определения ------------------------------------------------------------------*/ -
Работа с внешней памятью
SidAlex ответил SidAlex тема в Программирование
Ребята ничего не понимаю, вроде написано все как говорите, но ничего не происходит. Точнее запись вроде есть, а вот прочитать не могу. Где что не так? Функции записи чтения прилагаю: 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 }/* конец определения ------------------------------------------------------------------*/ -
Работа с внешней памятью
SidAlex ответил SidAlex тема в Программирование
т.е. 1. Chip Select 2. Передача команды на разрешение чтения 4. Передача адреса, с которого нужно начинать читать 5. Чтение данных 6. После всего сбросить Chip Select. Правильно??? -
Работа с внешней памятью
SidAlex ответил SidAlex тема в Программирование
И еще тогда вопрос, а как читать? Порядок действий тот же или нет? -
Работа с внешней памятью
SidAlex ответил SidAlex тема в Программирование
А тогда подскажите пожалуйста, нужен ли между этими действиями таймаут или нет??? -
Работа с внешней памятью
SidAlex ответил SidAlex тема в Программирование
Извините пожалуйста, а что значит "...обязательно дождаться статуса окончания записи..." И когда сбрасывать пин разрешения записи? -
Работа с внешней памятью
SidAlex ответил SidAlex тема в Программирование
У меня тут вот какой вопрос родился. Какие действия в какой последовательности должны проходить. Я, например, делаю так: 1. Chip Select 2. Передача команды на разрешение записи в память 3. Передача команды записи данных 4. Передача адреса, с которого нужно начинать писать 5. Передача данных 6. После передачи сбросить Chip Select. Естественно до этого происходит настройка SPI всех необходимых портов. -
Работа с внешней памятью
SidAlex опубликовал тема в Программирование
Привет всем ГУРУ программирования МК. Возникла такая проблемка. Есть внешняя память FM25L256. Почитал pdf на эту микросхему, вроде бы все понятно. Решил поработать. Написал алгоритм инициализации микросхемы, функции чтения и записи. Но, при выполнении этих функций, они работают, но результата никакого. Т.е. вроде бы пишет, вроде бы читает, но в массиве одни нули. Подскажите где что не так делаю? Просто уже несколько дней с этим мучаюсь, а результата ноль. Микруха подцеплина через SPI, он настроен корректно, вроде. Вот и чешу в затылке. К тому же я человек в этом деле новый, много не знаю. Прошу, пожалуйста, помогите. Заранее всем спасибо. С уважением, Александр. -
перевод из UCS2 в ASCII
SidAlex опубликовал тема в В помощь начинающему
Доброго времени суток всем ГУРУ программирования на Си под МК. У меня собственно возникла вот такая проблема. Есть GPRS модем, который сопряжен с микроконтроллером. Так вот, нужно чтобы при выполнении определенных действий с помощью модема отправлялось СМС о том, что эти действия были выполнены успешно или нет. Основная моя загвоздка заключается в том, что при посылке СМС через телефон оно воспринимается нормально со всеми отсюда вытекающими последствиями. Но стоит мне туже СМС отправить с использованием интернета, то приходит какая-то лажа. Что за лажа приходит я разобрался, но теперь не знаю как с этим бороться. Я так думаю, что нужно написать функцию по переводу одного формата в другой, но я не знаю с чего начать дабы являюсь новичком в этом деле. Вот я и прошу старших мне помочь в этом нелегком для меня вопросе. Заранее спасибо за ответы и советы.