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

ДЕЙЛ

Свой
  • Постов

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

  • Посещение

  • Победитель дней

    5

Весь контент ДЕЙЛ


  1. Почему бы обычный буфер не поставить, если есть сомнения? Процессору без разницы, как формируется сигнал до его входа :)
  2. Нельзя ли тут вместо гасящих резисторов применить гасящие конденсаторы? http://grimmi.ru/kondensator-vmesto-resistora.html
  3. Есть такое дело, неподумавши накодил :rolleyes: Подправил свою программу ещё в некоторых местах и добавил функцию сниффера(для него ещё нужно железо). SIM900_DIALOG.rar
  4. Вкратце вот так: procedure TForm1.RxTimerTimer(Sender: TObject); var Errors : Dword; LenReceive : DWord; i : integer; RxData, Log, NumStr : string; begin RxData := ''; ClearCommError(hCom, Errors ,@Stat);//?????????? ???? LenReceive := Stat.cbInQue; If LenReceive>0 Then Begin {1} ReadFile(hCom,RXBUF,LenReceive,LenReceive,nil); For i:=0 to LenReceive-1 Do Begin if (RXBUF[i]<>$A) and (RXBUF[i]<>$D) then begin RxData := RxData + Chr(RXBUF[i]); end else begin ListBox1.Items.Strings[ListBox1.ItemIndex] :=' '+RxData; RxData := ''; ListBox1.TopIndex := ListBox1.Items.Count - 1; end; End; End; {1} end; Данные он отправляет без приглашения, смски тоже. В прикреплённом файле только что дописанная программа для работы с SIM900. В инете не нашёл, поэтому сам сочинил. До этого ковырялся в программе от другова модуля. SIM900_DIALOG.rar
  5. Я использую только TX-RX, остальные ножки не трогаю. Это принципиально для работы с TCP/IP? скопировал как текст из окна программы
  6. //перезапуск AT+CFUN=1,1 yyyy //проверка регистрации в сети Send: AT+CREG?<cr><lf> AT+CREG? +CREG: 1,1 OK //проверка GPRS Send: AT+CGATT?<cr><lf> AT+CGATT? +CGATT: 1 OK //закрытие всех соединений Send: AT+CIPSHUT<cr><lf> AT+CIPSHUT SHUT OK //проверка инициализации модуля IP Send: AT+CIPSTATUS<cr><lf> AT+CIPSTATUS OK STATE: IP INITIAL //устанавливаем только одно соединение Send: AT+CIPMUX=0<cr><lf> AT+CIPMUX=0 OK //настройки GPRS Send: AT+CSTT="internet.mts.ru","mts","mts"<cr><lf> AT+CSTT="internet.mts.ru","mts","mts" OK //соединяемся с заданными настройками Send: AT+CIICR<cr><lf> AT+CIICR OK //смотрим свой IP Send: AT+CIFSR<cr><lf> AT+CIFSR 10.49.180.250 //включаем TCP-соединение Send: AT+CIPSTART="TCP","yandex.ru",80<cr><lf> AT+CIPSTART="TCP","yandex.ru",80 OK CONNECT OK //после этой команды должно появиться приглашение для записи отправляемых данных Send: AT+CIPSEND<cr><lf> AT+CIPSEND и в этом месте всё виснет, никаких признаков жизни
  7. Не появляется этот символ. Попробую сегодня вечером или в ближайшее время скопировать сюда файл лога.
  8. делаю по шагам, как написано вот тут http://badembed.ru/sim900-tcp-soedinenie-s-serverom/ Дохожу вот до этой строки Символ готовности никак не хочет появляться даже посли 20минутного ожидания.
  9. Можете показать полный лог команд открытия страницы яндекса, начиная с рестарта модуля при включении?
  10. Что за пустая строка в конце? Можно скрин, если форум съедает? http://badembed.ru/sim900-tcp-soedinenie-s-serverom/ Правильно я понимаю, что команды серверу нужно формировать и отправлять в виде данных data? Или для этого нужны какие-то AT-команды?
  11. Допустим, что соединение установилось с каким-то сервером. Дальше я хочу записать данные в конкретный файл на удалённом сервере. Какими командами нужно пользоваться? Где их найти? Как будет выглядеть AT-команда для запроса страницы yandex.ru? Т.е. в ответ на эту команду должен прийти текст вроде этого:
  12. Тут желательно по частям схему промоделировать и найти источник колебаний. Частота 100 кГц может говорить о наличии задержки сигнала в какой-то цепи, в данном случае операционник в обратной связи надо получше изучить или заменить на другой, если частота колебаний изменится, то вывод однозначный - генерация обусловлена частотной характеристикой операционника, на какой-то частоте фаза сдвигается на 180 градусов, имеем положительную обратную связь и генератор в итоге. Попробуй на вход подать синусоиду или плавно изменяющийся сигнал, чтобы не возбудился паразитный генератор. В одной из своих схем я убрал такие колебания установкой конденсатора на вход одного из операционников генератора.
  13. Опять вернулся к этой теме. Почитал Агурова и описание модуля. В моём представлении вырисовывается такая картина: 1. Подключаем разъём к ноуту, хост видит, что резистор притянул линию и отсылает запрос; 2. Устройство принимает байты запроса в буфер нулевой конечной точки, смотрит эти байты и формирует массив данных, которые хостом воспринимаются как дескриптор устройства; 3. На основании данных дескриптора хост отправляет более конкретную команду устройству и т.д. до окончания инициализации соединения. Мои соображения похожи на правду?
  14. Появилось предположение, что дело в разряде статичекого напряжения. Двигатель пластмассовый? На ковре висит? Электризованную пыль гоняет? Попробуй движок другого типа или из электропроводных частей.
  15. Точно по земле помеха? Почему бы для эксперимента полностью не развязать гальванически МК и двигатель? Т.е. два независимых источника питания и связь только через оптопару. Ещё я посмотрел бы осциллографом шум на самой земле, т.е. между точками подключения минуса МК и минуса двигателя. Для чистоты осциллограф запитал бы от бесперебойника или от встроенного аккумулятора, если в нём такой имеется. Лучше самому осциллографом ток померить в цепи и убедиться, что двигатель не шумит. Можно попробовать другой поставить и все остальные элементы методом замены перепробовать, чтобы быть уверенным в их нормальной работоспособности и при необходимости продолжать искать неисправность в разведке земель. Дальше следует вчитываться в методы обеспечения помехоустойчивости микроконтроллеров, в частности обратить внимание на разводку дорожек под кварцем, если частоты порядка десятков мегагерц.
  16. подборка схем управления двигателем есть в книжке "1000 и одна микроконтроллерная схема" _____________________________.pdf
  17. недавно похожую схему сочинял, номиналы пересчитал под твои пороги срабатывания. Сам её один в один не макетировал, но интересно узнать результат.
  18. Вот картинка из Агурова. Правильно я понимаю, что байты команд хоста во время инициализации можно увидеть в буфере нулевой конечной точки? Или они невидимы для программиста со стороны контроллера?
  19. Как-то измерял количество тактов для выполнения функции арктангенса и для вывода на дисплей. Считать слишком муторно было, поэтому пользовался обычным таймером с частотой тактирования 1:1. Перед функцикцией запускал, а после завершения сразу останавливал. В регистре счётчика таймера было количество тактов. Это если точность большая не нужна(+\- 10 тактов). Для бОльшей точности можно в пошаговом режиме отладки смотреть на счётчик циклов, а если в железе проверяется, то точками останова можно попользоваться.
  20. у меня LPC1778, прошиваю через JTAG, Flash Magic и самопальным способом. Вот вырезал кусок схемы, через которую Flash Magic работает. Думаю, что лишней не будет и придёшь к выводу, что проще самому спаялить, чем покупать.
  21. для чего в описании USB фигурирует I2C? В общих чертах хотелось бы узнать.
  22. Оставлю тут свой код загрузчика на всякий случай, а то на домашнем компе ненадёжно. Программа принимает файл от прикреплённой программы, написанной на DELPHI. Успеть отправить надо в течение минуты после сброса. #include "iolpc1778.h" #include "LPC17xx.h" #define IAP_LOCATION 0x1fff1ff1 //точка входа в IAP (страница 896 мануала) unsigned int command[5]; unsigned int result[2]; typedef void (*IAP)(unsigned int[], unsigned int[]); unsigned char DATA[30000]; unsigned int command[5]; unsigned int result[2]; unsigned char RX; unsigned int index_RX; unsigned char RX_PAKET[18]; unsigned char CHSUM, FlagRX; unsigned int indexM, pauza, i; unsigned int adr_copy, stek; unsigned int *adres_stek; unsigned char OutPortByte; int sektor; void Out_UART0(); //otpravka paketa po UART0 void main(void) { { //INIT { //init UART0 IOCON_P1_25 = 0; //PIO FIO1DIR = 0x2200000; //Выходы PIN1_25, PIN1_11 PCONP |= 0x8; IOCON_P0_02 = 0x1; IOCON_P0_03 = 0x1; } FIO0DIR = 0x4+0x8; SCS |= 0x20; //подключение осциллятора while(!(SCS&0x40)){} //ожидание запуска PLL0CON |= 0x01; PLL0CFG |= 0x09; PLL0FEED = 0xAA; PLL0FEED = 0x55; CCLKSEL |= 0x100; PCLKSEL = 1; CLKSRCSEL |= 1; U0LCR |= 0x83; //razrecchenie dostupa k delitely U0DLL = 0xC8; //0xF0;//0xA0; //0x14; //0x4E; //nastrojka delitelya U0LCR &=~0x80; //zapret dostupa k delitely U0IER |= 0x1+0x4;//Разрешение прерываний UART0 //__enable_irq(); //Разрешение //__set_FAULTMASK(0); //всех прерываний //__set_BASEPRI(0); //Отключение маскирования //__set_CONTROL(0); AIRCR = 0x05FA0200; IP1 = 0x00000800; } NVIC_EnableIRQ(UART0_IRQn); //Enable IRQ UART0 (ISER0=32) indexM = 0; index_RX = 1; while(1) { if (index_RX>5) { if ((DATA[index_RX-1]==0x11)&(DATA[index_RX-2]==0x22)&(DATA[index_RX-3]==0x33)&(DATA[index_RX-4]==0x44)) самопальный признак конца файла HEX { FlagRX = 0; //COPY_FLASH adr_copy = (unsigned int)&DATA[4096]; IAP iap_entry; iap_entry = (IAP) IAP_LOCATION; for (sektor=1; sektor<5; sektor++) { //_______ПОДГОТОВИТЬ СЕКТОР К ЗАПИСИ_______// { command[0] = 50; //код команды command[1] = sektor; //начальный номер сектора command[2] = sektor; //конечный номер сектора iap_entry (command, result); } //_______ПОДГОТОВИЛИ СЕКТОР К ЗАПИСИ______// //_______СТЕРЕТЬ СЕКТОР_______// { command[0] = 52; //код команды command[1] = sektor; //начальный номер сектора command[2] = sektor; //конечный номер сектора command[3] = 120000; //системная тактовая частота в кГц iap_entry (command, result); } //_______СТЁРЛИ СЕКТОР______// //_______ПОДГОТОВИТЬ СЕКТОР К ЗАПИСИ_______// { command[0] = 50; //код команды command[1] = sektor; //начальный номер сектора command[2] = sektor; //конечный номер сектора iap_entry (command, result); } //_______ПОДГОТОВИЛИ СЕКТОР К ЗАПИСИ______// //_______КОПИРОВАТЬ ОПЕРАТИВНУЮ ПАМЯТЬ ВО ФЛЕШ_______// { command[0] = 51; //код команды command[1] = 0x1000*sektor; //начальный адрес перезаписываемой флеш command[2] = adr_copy+4096*(sektor-1); //начальный адрес оперативной памяти, откуда нужно копировать command[3] = 4096; //число байт для копирования command[4] = 120000; //системная тактовая частота в кГц iap_entry (command, result); } //_______СКОПИРОВАЛИ СЕКТОР______// //END_FLASH } VTOR = 0x1000; adres_stek = (unsigned int*)0x1000; stek = (unsigned int)*adres_stek; __set_MSP(stek); asm("mov R1, #0x1004"); asm("ldr R2, [R1]"); asm("BX R2"); } } } } void Out_UART0() { while (!(U0LSR&0x20)); U0THR=0xA0; //признак ответа для программы на ПК } void UART0_IRQHandler(void) { DATA[index_RX] = U0RBR; index_RX++; NVIC_ClearPendingIRQ(UART0_IRQn); return; } __________.rar
  23. Скачал Creator, поставил. Открыл им скачанный пример пректа Hello World. Могу редактировать исходник, но непонятно как его запустить. Неактивна кнопка запуска. Вот к сообщению прилепил самый первый пример проекта. В какой программе и какую последовательность действий нужно сделать с этим примером, чтобы появилось то самое окно с надписью? Hello.rar
  24. Согласен, но всё равно никак не нахожу редактор кода. Его вижу только через Форма->Показать код... , но там ничего менять нельзя и никакой подсветки синтаксиса.
  25. Вот открыл Шлее - в самом начале пример Hello World и ни слова о том, как открыть этот самый редактор для печатания примера. Версия 4.8.4 А где искать QtCreator? В папке с программой его нет.
×
×
  • Создать...