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

man1

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

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

  • Посещение

Сообщения, опубликованные man1


  1. Господа , подскажите плз.

    Идея в том чтобы мозги брать от андройда , и циплять к ним управление силовой частью через USB. Я глянул оказываетяс есть TVbox ценой в 30$ c вайфай , HDMI, USB, и частотой в гигагерц. Я за такую цену с аналогичными хар-ми девайс никогда не сделаю, осталось только писать проги под андройд и прицепить к нему простой контроллер для управления периферией. Для этого и понадобился этот чип переходник.

     

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

    Модератор.

  2. А вот это для вашей задачи не подходит? (RM0008_STM32F10XXX.pdf стр.771)

     

    26.6.4 Control register 1 (USART_CR1): Bit 0 SBK: Send break.

     

    This bit set is used to send break characters. It can be set and cleared by software. It should be set by software, and will be reset by hardware during the stop bit of break.

     

     

    0: No break character is transmitted

    1: Break character will be transmitted

     

    Спасибо по мойму это то что надо, break я пошлю как вы посоветовали, а как быть с высоким уровнем после break?

     

    Заработало я убрал запрет и разрешение UART

    т.е. эту строку

    USART_Init(USART1, &USART_InitStructure);

    USART_Cmd(USART1, DISABLE);

    и эту

    USART_Init(USART1, &USART_InitStructure);

    USART_Cmd(USART1, ENABLE);

     

    И стало передаваться и break и MaB и сами байты

  3. поставили задачу необходимо задействовать ногу PA9, (на ней висит TX USART1) в двух вариантах, это обычный GPIO сконфигурированный на выход и выход UART. Сначало я должен ногу PA9 опустить в низкий уровень на 200us, потом поднять до единицы на 100us, а дальше посылать через TX данные по USART, и это все в цикле. По отдельности у меня все работает нога управляется , по UART передается, но когда пытаюсь совместить , т.е. сначало нога сконфигурирована как GPIO, а потом как UART, то не работает. Вот инициализация UART вызывается один раз перед вызовом процедуры arraysend();

     

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    GPIO_InitTypeDef gpio;
    GPIO_StructInit(&gpio);
    
    // TX: выход push-pull //
    gpio.GPIO_Mode = GPIO_Mode_AF_PP;
    gpio.GPIO_Pin = GPIO_Pin_9;
    GPIO_Init(GPIOA, &gpio);
    
    // RX: высокоимпендансный вход 
    gpio.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    gpio.GPIO_Pin = GPIO_Pin_10;
    GPIO_Init(GPIOA, &gpio);
    
    
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
    USART_InitTypeDef USART_InitStructure;
    // Параметры по умолчанию: 9600 бод, 8 бит данных, 1 стоп-бит 
    //---------------------------------------
             USART_InitStructure.USART_BaudRate            = 250000;
             USART_InitStructure.USART_WordLength          = USART_WordLength_8b;
             USART_InitStructure.USART_StopBits            = USART_StopBits_1;
             USART_InitStructure.USART_Parity              = USART_Parity_No ;
             USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
             USART_InitStructure.USART_Mode                = USART_Mode_Rx | USART_Mode_Tx;
    
    //----------------------------------------
    USART_Init(USART1, &USART_InitStructure);
             USART_Cmd(USART1, ENABLE);
    

     

    Теперь процедура которая вызывается переодически в цикле сначало дрыгает ногой потом шлет 50 байт по UART

     

    void arraysend (void) 
    {//0
    unsigned int i,d;
    unsigned char startcode;
    //unsigned char temp;
     GPIO_InitTypeDef gpio;
     USART_InitTypeDef USART_InitStructure;
    
    amount_channels=50;
    startcode=0;
    //-----запретил UART----------
    USART_Init(USART1, &USART_InitStructure);
    USART_Cmd(USART1, DISABLE);    
    // дрыгаю ногой PA9 перед посылкой по UART  
    //----Cконфигурировал пин PA9 как GPIO------------------ 
     gpio.GPIO_Pin =  (GPIO_Pin_9 );// LED
     gpio.GPIO_Speed = GPIO_Speed_50MHz;
     gpio.GPIO_Mode = GPIO_Mode_Out_PP;
     GPIO_Init( GPIOA, &gpio);
     GPIO_ResetBits( GPIOA, GPIO_Pin_9);  
    delay(4);  //низкий уровень 200us
    
    GPIO_SetBits( GPIOA, GPIO_Pin_9);  
    delay(1);  //высокий уровень 100us
    //---------------------------------------------
    
    // переконфигурировал ногу на посылку по UART
    // TX: выход push-pull //
    gpio.GPIO_Mode = GPIO_Mode_AF_PP;
    gpio.GPIO_Pin = GPIO_Pin_9;
    GPIO_Init(GPIOA, &gpio);
    //--------------Разрешил UART------------------------
    USART_Init(USART1, &USART_InitStructure);
             USART_Cmd(USART1, ENABLE);
    //----------------------------------------------
    // -----------Сама посылка по UART------------------
    
    putchar_UART1(startcode);
    
    for (i=0; i<amount_channels; i++) //+2 becouse +curtime, +curwait
        {//2
          putchar_UART1(DATA_BUFFER_SEND[i]);
        }//2
    
    }//end regime 1
    

     

    Проблема в том что не хочет работать, по отдельности все работает GPIO, UART, а когда приходится переконфигурировать ногу PA9 , то на GPIO , то на UART ,тогда не работает. В чем может быть причина?

  4. Добрый день , посоветуйте плз импульсный LED драйвер со следующими хар-ми

    1). Ток до 2 А , возможно внешний мосфет.

    2). Возможность параллельного включения драйверов.

    3). Возможность диммирования ШИМ от 2 кГц

    4). Напряжение питания от 7.5 до 50В

    5). минимум обвески и ног у драйвера

     

  5. Спасибо всем ответившим!

    дошли руки до тестирования, протестировал схему в первом сообщении и в 7.

    Тестирование проводил при помощи сварочного аппарата постоянного тока . Кнопка на проводе длиной 30м, провод свернут в бухту. Также провод к которому подсоединен сварочный электрод свернут в бухту , длина провода примерно 10м толщина с указательный палец. Одну бухту провода вложил в другую и начал сваривать на максимальной мощности , сбоев в работе кнопки не заметил , никаких ложных срабатываний, обои схемы работают нормально.

    Посоветуйте как еще можно протестировать?

  6. Я применял такое решение.

    Управление сварочным аппаратом.

    Провода от кнопки шли радом 3 метра со сварочным рукавом, далее 80 метров до управляющего блока. Проблем не было отмечено.

    Не совсем понял кнопка key_1 и key_2 замыкаются на GND?

  7. А в чём проблема?

    Если в представлении символа " внутри строки, то так: \"

     

    const char string[] = "\"Name\": \"001\",\"ChValues\": [128,64,32,255],\"OnOff\": 1";

     

    Да , только у меня значения параметров переменные

    т.е имя ChValues , а параметры 128,64,32,255 в процессе работы программы считаются

     

     

     

     

  8. Я применял такое решение.

    Управление сварочным аппаратом.

    Провода от кнопки шли радом 3 метра со сварочным рукавом, далее 80 метров до управляющего блока. Проблем не было отмечено.

    У меня к кнопке питание тянуть нет возможности , вся помехозащищенная часть должна быть со стороны устройства на плате.

    Провода уже все проложены. На расстоянии ~100м только два провода которые можно замыкать.

    За схему большое спасибо!

  9. Интересно было бы провести данный эксперимент.

     

    Узкое место, как раз uart. А максимальная поддерживая скорость wi-fi данного модуля 11mb/s. Поэтому в теории, максимальная скорость должна равняться пропускной способности uart. Надеюсь, сам контроллер модуля, не задерживает.

    В каком режиме планируете работу wi-fi модулей infrastructure,ad-hoc, limited AP ? Их IP вручную будете прописывать? точку доступа планируете использовать?

  10. Спасибо за ваши мысли.

    Идея такая управление через android , девайсом с модулем wizfi220 , через точку доступа.

    Причем IP адреса раздает точка доступа. Если жеско прописывать IP в телефоне или девайсе это неудобно. поэтому и был придуман протокол общения через широковещательный пакет UDP , из которого потом можно вытащить IP нужного девайса идентифицировав его по командам.

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

    Далее мобильник шлет уже на известный ему IP модуля сообщения , типа ОК. Таким образом модуль может узнать IP телефона.

    Как вытаскивать IP из пакета пришедшего на модуль я не могу понять. А ему бы тоже хорошо знать IP телефона чтобы в следующий раз слать пакет на IP телефона а не бродкаст.

  11. Да wizfi220 поддерживает DHCP , а мой контроллер по UART связывается с этим модулем и может посылать ему команды.

    IP адреса я получил от точки доступа без проблем , мне нужно чтобы комп знал ip адрес модуля , а модуль IP адрес приемника. Когда руками это прописываю то все нормально, а когда автоматически , то я не знаю как мне определить эти адреса?

    Идея в том чтобы клиент не мучился с настройками точки доступа. Включили модуль он получил IP от точки, послал на широковещательный IP команду, все устройства в сети знают что появился новый и к нему обращаются по его IP который вытаскивают из его широковещательной посылки.

    Остальные устройства не знают какой у девайса мак.

    идея в этом.

  12. Что-то не понял в чем проблема?

    WizFi220 и ваш девайс поддерживает DHCP?

    Да wizfi220 поддерживает DHCP , а мой контроллер по UART связывается с этим модулем и может посылать ему команды.

    IP адреса я получил от точки доступа без проблем , мне нужно чтобы комп знал ip адрес модуля , а модуль IP адрес приемника. Когда руками это прописываю то все нормально, а когда автоматически , то я не знаю как мне определить эти адреса?

  13. Добрый день, пытаюсь наладить связь по WI-FI между компом и девайсом через точку доступа по UDP . К девайсу подключен модуль WizFi220 от wiznet . Если адреса у девайса, компа, и точки доступа прописать вручную , то передача/ прием работает нормально. Но мне нужно чтобы IP адреса комп и девайс получали автоматом от точки доступа , для чего я в точке доступа сделал соответствующие настройки.

    Теперь чтобы связать комп и девайс я должен послать широковещательный пакет например от девайса и комп должен выделить адрес девайса из пакета , чтобы потом к нему обращаться по этому адресу.

    Вопрос как на модуле WizFi220 отправить широковещательный пакет?

    Или как на модуле WizFi220 выделить IP адрес принятого пакета?

    или может посоветуйте другой модуль WI-FI где это можно сделать?

  14. post-26695-1338909555_thumb.png

    Если сопротивление линии < 50 Ом.

    Кнопку можно поставить нормально замкнутую, размыкающуюся при нажатии.

    Спасибо, только не совсем понял, при разомкнутой кнопке ток идет через светодиод оптопары, при замкнутой он идет параллельно через две цепи :

    светодиод и резистор, разделяясь пропорционально их сопротивлениям.

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

    Правильно понял?

     

    Еще хотел спросить , есть ли спец микросхемы для управления длинной линии , приминимые в моем случае?

  15. Будет, но схема у вас уж больно упрощенная. При отпущенной кнопке к светодиоду оказываются подсоединенными никуда не подключенные концы стометрового провода. Лучше посмотрите вот этот документ и сделайте выводы:

    http://www.kron.com.ua/conv/docs/T232-CL20%20S%20V4.pdf

    Спасибо за ссылку почитал, но у них немного не то, если , например , брать приемник, то в их схеме у него на другом конце передатчик , который задает ток.

    У меня на одном конце приемник и передатчик , а на другом банальная кнопка. К ней не возможно приделать схему.

  16. Добрый день , подскажите плз есть задача управлять контроллером посредством кнопки удаленной от него на примерно 100м. На стороне кнопки никаких радиотеталей не должно быть.

    Возникает проблема наводки на таких длинных проводах и ложных срабатываний , поэтому я искал возможные решения этой проблемы и нашел схему "токовой петли" и немного ее упростил. Посмотрите плз будет ли эта схема работать.

    post-34008-1338881033_thumb.png

    NSI45020 это источник тока на 20ма

    "выход" это выход на микроконтроллер

    светодиод и транзистор в круге это оптопара.

    Буду рад конструктивной критике.

  17. Добрый день подскажите плз , есть шим сигнал 0-5В , его нужно преобразовать в постоянное напряжение в диапазоне 0.5-2.5В.

    Как это сделать программно я знаю, но нет возможности перепрошить контроллер, придется делать схему а вот со схемотехникой трудно.

    Как сделать диапазон изменения напряжения 0-2.5В я понимаю , что нужно поставить делитель и сделать из 5В, 2.5Вольта и подать этот ШИМ на RC схему,

    но как сделать диапазон изменения напряжения 0.5-2.5 Вольта?

     

  18. Хочу заметить RCC сконфигурирован на 24МГ , UART1 работает.

     

    Сконфигурировал я SPI так:

    void SPI_init(void)
    {//0
      unsigned char temp;
    
    // GPIO for SPI Config --Конфигурирую ноги GPIO для SPI1 находится на ногах PA5,PA6,PA7, и ногу PA4 как CS софтовый
    
       RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
       
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_StructInit(&GPIO_InitStructure);
    
    
    // CS: выход push-pull Буду управлять программно
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    
    // SCK: выход push-pull 
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    
    // MOSI: выход push-pull 
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    
    // MISO: высокоимпендансный вход 
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    
    
    SPI_InitTypeDef   SPI_InitStructure;
    RCC_APB1PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);  
    
       SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;  //?
       SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
       SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
       SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;   
       SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
       SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; 
       
       SPI_Init(SPI1, &SPI_InitStructure);
       SPI_Cmd(SPI1, ENABLE);
      
        
    }//0

     

    Вот таким образом пытаюсь передать байт

    temp=10;
    SPI_I2S_SendData(SPI1, temp);
    while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);  // Жду пока буфер TX будет пустой

     

    Проблема в том что вишу в while. Может что то недоинициализировал?

     

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