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

k000858

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

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

  • Посещение

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


  1. буджу благодарен.

    скажите какая схема подключения датчиков к контроллеру? и какая реальная максимальная длинна линии?

    на сколько помню, до 100 метров в нашем случае работает

    схемы у меня толком нету (для меня, как для программиста, это просто ЮАРТ + 1 джио ножка для подтяжке питания на линию на время преобразования температуры), а если б и была то выложить по той же причине не смог бы

  2. Померить, нет?

    если у кого то есть такая возможность (сделать точные измерения потребления устройством с GPIO LOW SPEED & GPIO HIGH SPEED) было бы здорово.

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

     

     

  3. Про осциллограф говорено неоднократно, самим ТС тоже. Смотришь форму тактов и данных. Если кривые, увеличиваешь скорость (ток переключения, будем считать) GPIO. Зависит от емкости нагрузок и самих цепей. Чем больше емкость, тем больше надо задать... Я думаю, скорости GPIO и частота сигнала соответствуют одно другому для некой стандартной емкостной нагрузки в цепи.

    окей

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

     

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

  4. Можно считать, что если написана скорость 1 МГц, то на такой скорости порт будет способен выдавать приемлемый меандр. Это определяется током, который будет выдавать порт, чтобы зарядить цепь, подключенную к нему.

    А Куб при том, что в нем цифры частоты не указаны, а скрыты за абстракцией LOW и т.п.

    блин, еще раз:

    что 1 МГц ДЖПИО = "на такой скорости порт будет способен выдавать приемлемый меандр" мне итак слава богу понятно

     

    мне не понятно, какая минимальная скорость ДЖПИО нужна для обеспечения скорости СПИ в 1МГЦ.

    уточню: верно ли утверждение, что для работы спи в 1 МГц, минимальная необходимая скорость ДЖПИО тоже 1МГц ?

     

  5. причем здесь куб

    мне непонятно, частота 1Мгц GPIO = частоте 1MHz SPI?

     

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

     

    можно ли сказать что ноги SPI, работаюшего на 1 MHz будут щелкать с частотой 1MHz?

  6. Имеем STM32L052, к которому подключен девайс по SPI, скорость SPI 1MHz, какую выбрать скорость GPIO для корректной работы SPI?

     

    почему спрашиваю: при выборе GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; имеем глюки при работы SPI, да и видно по осциллографу что посылки кривоватые.

     

     

  7. дождался обновления плагина OpenSTM32 с поддержкой eclipse 4.6 (Neon) и тоже обновил сам eclipse + проапгрейдил воркспейсы под новый эклипс

     

    первые впечатления: возросла скорость загрузки и работы самой айдию. а это уже ощуитмый +. если еще зависать перестанет после половины дня работы, то я вообще обрадуюсь. Новых фишечек пока не ощутил, вероятно, потому что эклипс использую для C/C++ девелопинга.

     

    Посмотрим как проявит себя в работе

  8. хм. ваш вариант подошел

    именно в переменной-аргументе port содержался нужный номер порта

    интересно, почему и в upcb->local_port и upcb->remote_port содержится один и тот же локальный порт, который открывает UDP сервер.

    в общем заработало, спасибо

  9. Поднял UDP сервер, отвечаю на входящие запросы.

    Проблема вот в чем: открыл 1200 порт, поступают запросы с локального 1200 а удаленного **** порта, сервер должен был ответить с 1200 локального на **** удаленный порт, а в действительности отвечает с 1200 на 1200 порт.

     

    Что я делаю ни так?

     

    открыл порт

        upcb = udp_new();    // Create a new UDP control block
    
        if (upcb)
        {
            // Bind the upcb to the UDP_PORT port
            // Using IP_ADDR_ANY allow the upcb to be used by any local interface
            err = udp_bind(upcb, IP_ADDR_ANY, 1200);
    
            if(err == ERR_OK)
            {
                udp_recv(upcb, udp_receive_callback, NULL);    // Set a receive callback for the upcb
            }
        }

     

    отвечаю udp_send(upcb, ans); // Send data

    либо udp_sendto(upcb, ans, &upcb->remote_ip, upcb->local_port); // Send data

     

    в отладке вывожу upcb->local_port и upcb->remote_port которые оба якобы 1200, но в действительности это ни так - видно сниффером сети

  10. Есть схемка: замкнутые ножки мк, 1) EXTI 2) ADC - соответственно, одной ловлю изменение фронта, другой мерию напряжение.

    по отдельности функции работают корректно, однако, после инициализации АЦП-шной ножки (без инициализации самого АЦП) в режиме аналог - перестают ловиться прерывания на первой ножке. да даже чтение состояния GPIO не дает результата - состояние не меняется

     

    Кто нибудь сталкивался с таким?

    Может можно как то обойти...?

  11. в общем сделал "будильник" на основе часов и столкнулся с новой незадачей (((

    если выставить будильник 1 сек - просыпается через 1.5 сек, если выставить будильник 10 сек - просыпается через 10.5 секунд. проверили осциллографом

     

    будильник завожу следующим образом:

    - считываю текущее время

    - приплюсовываю к текущему времени необходимое время (например 10 сек)

    - записываю это время алярм_тайм

     

     

  12. Проиницилизировал RTC от встроенного LSI. После первого чтения времени часы перестают идти: если перезагрузить контроллер (например отладчиком) (но не по питанию) часы сново будут идти до первого чтения.

    Кто нибудь сталкивался с таким эффектом?

     

    трабла разрешилась: помимо времени, пришлось считывать дату. часы пошли

  13. ок начал делать вэйкАП по RTC_Alarm, столкнулся с проблемой: часы не идут. то есть 1 раз считываю значение часов - значение корректное (часы шли до этого мгновения), повторное чтение показывает, что часы остановились

    после перезагрузки программы, проблема уходит.

  14. А будильник разве не подходит для этого? Хоть через час, хоть через сутки..

    будильник вроде ставится на конкретное время? + для этого должны быть настроены часы?

    + после срабатывания будильник надо переставлять будильник и так каждую секунду..

  15. Есть девайс на вышеуказанном микропроцессоре, девайс периодически уходит в stop Mode. необходимо выводить его из этого состояния через определенное время. делаю это с помощью блока RTC, но удается только если счет на секунды (разбудить через 1-0 секунд) т.к. в регистре WUTR только 16 бит на WakeUpCounter

     

    а если необходимо разбудить девайс через час? как быть?

  16. Дык в первую очередь осциллом надо, вы словно не с "железом" работаете (:

     

    В общем, сообщество, не будем мешать, "…пусть Володя помучается…"

    осциллом пока не поймали. осложнение в том, что если слать 1 байт то все ок.

    то есть посылка с ПК не отличает от посылки с МК

     

    проблема наблюдается при посылке пачки байт: 1й ок а часть последующих коверкается.

    проблема именно со стороны передатчика МК

     

    Так же если замкнуть RX с TX, заметно, что получаем не то, что отправляли

     

    Bit8 Possible parity bit

    P.S. длина пишется с одним "н".

    WordLength сделал 9 бит - заработало.

    вы намекали на это?

    When the parity
    control is enabled, the computed parity is inserted at the MSB position (9th bit if M=1; 8th bit
    if M=0) and parity is checked on the received data. This bit is set and cleared by software.

     

    как то не логично: если выбрал Even, то и выбрал 9 бит, а на ПК оставляешь 8 бит. как то не сходится. но работает.

     

    можете разжевать? недопонимаю..

  17. Джедаю надо или продолжать убиваться об Куб, или заглянуть в руководство и прочитать про биты M, PCE, PS.

    Парити контроль инейбл + парити селекшин биты в контрольном регистре ЮАРТ ?

    а как по-вашему я настраиваю ЮАРТ на 8E1/8O1 не юзая эти биты?

  18. Флаг PE при приёме есть, да?

    Осциллографом неправильность формирования паритета из передатчика видна?

    осциллограммы пока не смотрел

     

    пока тест такой: настроил ЮАРТ 8N1, отправил строку, ком-портом получил - все ок

    настроил на 8E1, отправил в КОМ-порт, получил совсем не то (малая часть байт символом совпадает)

    настроил на 8O1, отправил в КОМ-порт, получил аналогично не то

     

    при этом на ПК формат менять не забываю (8E1, 8N1).

     

     

  19. Странно: на UART_PARITY_NONE USART с COM-портом работает корректно.

    на UART_PARITY_EVEN и UART_PARITY_ODD нет.

     

    Даже если замкнуть Rx с Tx - получаю, не то что отправляю.

    Глючит именно передатчик.

     

    ктонибудь сталкивался с такой проблемой на данном контроллере?

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