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

Сергей Борщ

Модератор
  • Постов

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

  • Посещение

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

    31

Сообщения, опубликованные Сергей Борщ


  1. 1 час назад, tonyk_av сказал:

    диапазон МАС является подмножеством общего 96-битного пула.

    64-битного. И этот 64-битный называется UID64 и он не имеет ничего общего с 96-битным (в котором может быть все, что угодно, например - номер пластины и положение кристалла на пластине в ASCII).

  2. Откопать в загашниках старую-старую материнку с сетью на борту. Вычитать из нее MAC и нагенерить своих, добавляя к нему по единичке. Все ровесники этой матринки давно в утиле, пересечений не будет.

    • Upvote 1
  3. 3 минуты назад, Turgenev сказал:

    Почти все ссылки в инете (кроме вики) пишут, что char знаковый

    Эти ссылки пишут неправильно. char - это отдельный тип, который может быть как знаковым, так и беззнаковым в зависимости от ключей командной строки при вызове компилятора. Поэтому в правильно написанной программе он должен использоваться исключительно для хранения символов. Для чисел должен использоваться signed char или unsigned char (а лучше - их псевдонимы из stdint.h - int8_t и uint8_t).

    Поэтому ваш пример написан криворуким программистом и массив input_bytes должен быть объявлен как

    uint8_t input_bytes[ENCODED_FRAME_SIZE]

    .

    • Upvote 1
  4. 4 часа назад, Yuri7751 сказал:

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

    Казалось бы - какие молодцы японцы! А ВВ не задумывался, куда девался воздух в отечественных пылесосах? И никто из сотрудников лаборатории этого тоже не знал. Вот так и рождаются легенды о заморских чудесах...

    • Upvote 1
  5. R45 - 560 Ом (маркировка "561"), J2 - перемычка (маркировка "0"), R18, R19 - 47 Ом (маркипровка "470"), диоды рядом с J2 - LL4148. Но это мало что даст - скорее всего там еще куча всего выгорела. Например, весьма вероятен выход из строя ZD2 (BZV55-4V7) и всего, что запитано после него. 

  6. 30 минут назад, jcxz сказал:

    Хм, странно...

    Ничего странного:

    Цитата

    Принципиальной разницы между дугой постоянного и переменного тока нет. Однако род тока накладывает свои особенности в отношении гашения дуги. Основной особенностью дуги переменного тока является то, что ток ее 2/ раз (где / частота тока) в секунду проходит через 0, точки а, b (рис. 4.10).
    apparat-avtomat-19.png
    Рис. 4.10                                                           Рис. 4.1 i
    Это обстоятельство решающим образом облегчает гашение дуги переменного тока. Когда ток дуги проходит через нуль, энергия дуги становится равной 0, происходит деионизация дугового промежутка, и если извне усилить этот процесс деионизации, что и делают дугогасительные устройства выключателей, то дуга после прохождения тока через 0 вновь не загорится, погаснет. С точки зрения гашения различают дуги переменного тока: открытую, короткую и длинную.
    Открытая дуга переменного тока гасится без участия специальных дугогасительных устройств. Ее вольт-амперная характеристика приведена на рис.· 4.11. Из этой характеристики следует, что в открытой дуге после прохождения тока дуги через 0 дуговой промежуток мало деионизирован, и с ростом напряжения почти пропорционально (вначале) растет ток дуги. Это свидетельствует о том, что открытая дуга переменного тока по трудности гашения близка к дуге постоянного тока и, чтобы ее погасить, необходимо растянуть до критической длины. Маломощные открытые дуги, например на контактах бытовых выключателей, рубильников и т. д., гасятся простым разрывом дуги на воздухе. Мощные открытые дуги, например на линиях высокого напряжения, можно погасить только путем снятия напряжения. После снятия напряжения дуга гаснет, дуговой промежуток деионизируется. Если вновь подать напряжение на линию, то дуга, как правило, не загорается, и линия продолжает работать.

    Оттуда же про постоянный ток:

    Цитата

    Дуга постоянного тока гашению поддается очень трудно. При малых токах и небольших напряжениях дуга постоянного тока может быть погашена простым разрывом на воздухе без значительных разрушений контактов. Однако даже в аппаратах напряжением до 1000 в необходимо принимать специальные меры для гашения дуги с целью сохранения контактов.
    Основной характеристикой дуги постоянного тока является ее вольт-амперная характеристика, представляющая собой зависимость тока от напряжения дуги, т. е. i=cp((/) при постоянной длине дуги. На рис. 4.2 представлена вольт-амперная характеристика дуги постоянного тока. Из нее следует, что дуга постоянного тока как вид нагрузки представляет собой активное нелинейное сопротивление. С ростом тока напряжение на дуге уменьшается и наоборот.

    Ну и подробнее по ссылке.

    • Like 1
  7. 11 часов назад, tonyk_av сказал:

    И там, и там есть дуга, причём на ~230В она больше

    Тут дело не в ее размере, а в том, что на переменном токе она быстро гаснет сама. А на постоянном может держаться бесконечно пока в зону дуги подается электрод (см. "дуговая лампа")

  8. 12 минут назад, Arlleex сказал:

    Аа... понятно. Я сделал свой stm32.h в который поместил все #include "stm32f????.h

    Больше ничего полезного в этом вашем stm32f4xx.h нет.

  9. 8 часов назад, Arlleex сказал:

    уже имеется такое имя у энумератора в заголовочном файле stm32f4xx.h

    В этом файле такого имени нет. Выкиньте кубовые файлы с подобной чушью, оставив вместо них пустые заглушки (чтобы не менять сам stm32f4xx.h и сохранить возможность его обновления без правок).

  10. 1 час назад, _3m сказал:

    Проблема в GBD сервере. Он завершается когда теряет коннект с таргетом что и происходит при снятии питания (RTT - тоже). Процедура автоматического коннекта при появлении питания в сеггеровском ПО почему то не предусмотрена.

    Так проблема в этом? OpenOCD такое умеет, но время подключения может быть до 6.5 сек. Я-то думал надо подключиться и перехватить управление буквально с первых команд - такого, наверное, не умеет никто.

  11. Остановите отладчиком, прочитайте и сохраните на бумажку или в блокнот на компе значение регистров RCC, TMR, PWR. Запустите, дождитесь сбоя, остановите, сравните.

    1 час назад, gerber сказал:

    Аппаратный ШИМ с выхода канала таймера TIM2.

    Несущая частота ШИМа тоже пропорционально меняется? У F103 не особо много возможностей менять тактирование таймеров - в отличие от более новых тут оно прибито гвоздями к APB. То есть причина либо в измененном делителе APB (если UART, который продолжает работать висит на другой APB), либо в предделителе самого таймера (в обоих этих случаях должна меняться несущая частота ШИМ), либо в программной ошибке, из-за которой значения в CCR таймера грузятся в N раз реже (это если несущая частота не меняется). Я делаю ставку на последний вариант.

     

    1 час назад, gerber сказал:

    Китаиса однако.

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

  12. Запускать без отладчика. В интересующих местах программы дергать ногами, писать их состояние логическим анализатором. Выводить диагностику в USART, смотреть ее в терминалке на компе.

    • Thanks 1
  13. 2 часа назад, Сергей Борщ сказал:

    В кубовом проекте прерывание происходит. "Будем искать".

    Следите за руками. Вот так не работает:

    
      LPTIM1->DIER = 0
          | 0 * LPTIM_DIER_UEIE                                   // Update event DMA request enable
          | 0 * LPTIM_DIER_CMP2OKIE                               // CCR2 update complete interrupt enable
          | 1 * LPTIM_DIER_CC2IE                                  // Capture/Compare 2 interrupt enable
          | 0 * LPTIM_DIER_REPOKIE                                // RCR update interrupt enable
          | 0 * LPTIM_DIER_UEIE                                   // Update event interrupt enable
          | 0 * LPTIM_DIER_DOWNIE                                 // Direction change to down interrupt enable
          | 0 * LPTIM_DIER_UPIE                                   // Direction change to up interrupt enable
          | 0 * LPTIM_DIER_ARROKIE                                // ARR update complete interrupt enable
          | 0 * LPTIM_DIER_CMP1OKIE                               // CCR1 update complete interrupt enable
          | 0 * LPTIM_DIER_EXTTRIGIE                              // External trigger valid edge interrupt enable
          | 0 * LPTIM_DIER_ARRMIE                                 // Autoreload match interrupt enable
          | 0 * LPTIM_DIER_CC1IE                                  // Capture/Compare 1 interrupt enable
          ;
      // enable timer
      LPTIM1->CR = 0
          | 0 * LPTIM_CR_RSTARE                                   // Reset after read enable, can be set when LPTIM is enabled
          | 0 * LPTIM_CR_COUNTRST                                 // Reset counter, can be set when LPTIM is enabled
          | 0 * LPTIM_CR_CNTSTRT                                  // Start in continuous mode, can be set when LPTIM is enabled
          | 0 * LPTIM_CR_SNGSTRT                                  // Start in single pulse mode, can be set when LPTIM is enabled
          | 1 * LPTIM_CR_ENABLE                                   // Enable
          ;

    А вот так работает:

      // enable timer
      LPTIM1->CR = 0
          | 0 * LPTIM_CR_RSTARE                                   // Reset after read enable, can be set when LPTIM is enabled
          | 0 * LPTIM_CR_COUNTRST                                 // Reset counter, can be set when LPTIM is enabled
          | 0 * LPTIM_CR_CNTSTRT                                  // Start in continuous mode, can be set when LPTIM is enabled
          | 0 * LPTIM_CR_SNGSTRT                                  // Start in single pulse mode, can be set when LPTIM is enabled
          | 1 * LPTIM_CR_ENABLE                                   // Enable
          ;
    
      LPTIM1->DIER = 0
          | 0 * LPTIM_DIER_UEIE                                   // Update event DMA request enable
          | 0 * LPTIM_DIER_CMP2OKIE                               // CCR2 update complete interrupt enable
          | 1 * LPTIM_DIER_CC2IE                                  // Capture/Compare 2 interrupt enable
          | 0 * LPTIM_DIER_REPOKIE                                // RCR update interrupt enable
          | 0 * LPTIM_DIER_UEIE                                   // Update event interrupt enable
          | 0 * LPTIM_DIER_DOWNIE                                 // Direction change to down interrupt enable
          | 0 * LPTIM_DIER_UPIE                                   // Direction change to up interrupt enable
          | 0 * LPTIM_DIER_ARROKIE                                // ARR update complete interrupt enable
          | 0 * LPTIM_DIER_CMP1OKIE                               // CCR1 update complete interrupt enable
          | 0 * LPTIM_DIER_EXTTRIGIE                              // External trigger valid edge interrupt enable
          | 0 * LPTIM_DIER_ARRMIE                                 // Autoreload match interrupt enable
          | 0 * LPTIM_DIER_CC1IE                                  // Capture/Compare 1 interrupt enable
          ;

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

    Для регистров CCRx, ARR, RCR в документации явно указано, что писать их можно только при активированном (enabled) таймере, для CFGR - наоборот, при неактивном. На запись в DIER никаких ограничений в документации нет.

    Куб оказался ни при чем, но помог. В его проекте DIER вообще не трогался и влияющих на него галочек я не обнаружил. Куб просто запускал таймер и когда я, остановив программу, отладчиком включал нужные биты в DIER на уже включенном активированном и запущенном таймере - прерывания запускались.

    Вычитывать DIER после записи пробовал - не помогало.

    • Upvote 1
  14. 49 минут назад, HardEgor сказал:

    А в errata есть такой пункт, может быть там где-то собака порылась?:

     

    Это учтено.  Флаги в ISR у меня выставляются. Если их сбросить - выставляются снова. Тут все хорошо. Ставлю куб от безысходности...

  15. 1 час назад, Plain сказал:

    Table 221

    Ой. 13 таблиц. Но да, тут два канала и соответствующий флаг в ISR выставляется. А проблема с любым флагом. Ни одно событие, взводящее флаг в ISR, не вызывает прерывание. 

    22 минуты назад, Arlleex сказал:

    P.S. А какая частота шины APB для таймера? Я бы попробовал ее сильно снизить для эксперимента.

    На APB включен делитель 2. Попробовал 16 - не помогает.

  16. 22 минуты назад, Plain сказал:

    Про CC2IE есть сноска в таблице.

    В руководстве пользователя 12 таблиц в разделе, посвященном LPTIM. Ни под одной из них я упоминания CC2IE не нашел. Какую именно таблицу вы имеете ввиду?

  17. 1 час назад, Arlleex сказал:

    image.thumb.png.fefa1b31404a7b9bca92c709e6f441f6.png

    Это условие выполняется. Код в исходном сообщении исправил.

    48 минут назад, Arlleex сказал:

    А я имел в виду возбудить именно этот вектор прерывания через активацию pending в NVIC (регистр ISPR вроде).

    А смысл делать это вручную? Таймер должен сам взвести именно этот бит, но не взводит. 

  18. 5 часов назад, jcxz сказал:

    Можно попробовать: При запрещённых всех прочих источниках прерываний сделать полную очистку всех pending (все ICPRx = ~0) (до инита таймера); потом запустить таймер и посмотреть - может где-то запрос появляется в другом регистре/бите?

    Не взлетело - ни в одном ISPR ни один бит не взводится.

    1 час назад, Arlleex сказал:

    проверить хотя бы заход в прерывание

    В другие прерывания заходит...

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