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

shdv

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

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

  • Посещение

Репутация

0 Обычный

Информация о shdv

  • Звание
    Участник
    Участник
  • День рождения 28.10.1978

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

1 265 просмотров профиля
  1. Пропало отображение отверстий в via и pad. Открывал другой проект, там было всё нормально, сравнивал до потери пульса настройки, выгружал и загружал альтиум переключал виды 2D/3D. Вылечило переключение в вид Altium Transperent 2D и потом обратно в Altium Standart 2D.
  2. Учел все замечания и предложения, ничего не помогало. Перевел принудительно датчики в состояние "1" и измерил напряжение на выходе датчиков. Оказалось чуть ниже 1/2 напряжения питания. Получалось, что шум порта + напряжение с датчика приводили к срабатыванию входа, а само по себе напряжение датчика не приводило. Всем спасибо за советы!
  3. Мне важно знать какой датчик сработал первым. Два глобальных флага для отработки прерываний внутри бесконечного цикла: c_flag = 0; g_flag = 0; Инициализация внутри main: EXTI_InitTypeDef EXTI_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; //enable peripherals clocking RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC|RCC_AHBPeriph_GPIOB, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); /* Connect EXTI0 Line to PB0 pin */ SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource0); /* Configure EXTI0 line */ EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); /* Enable and set EXTI0 Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = EXTI0_1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPriority = 0x00; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource2); /* Configure EXTI2 line */ EXTI_InitStructure.EXTI_Line = EXTI_Line2; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); /* Enable and set EXTI2 Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = EXTI2_3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPriority = 0x01; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); /*GPIO init*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_2; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); NVIC_EnableIRQ (EXTI0_1_IRQn); NVIC_EnableIRQ (EXTI2_3_IRQn); for(;;) {if (g_flag == 1) { NVIC_DisableIRQ (EXTI0_1_IRQn); NVIC_DisableIRQ (EXTI2_3_IRQn); // учитываем срабатывание NVIC_EnableIRQ (EXTI0_1_IRQn); NVIC_EnableIRQ (EXTI2_3_IRQn); c_flag = 0; g_flag = 0; } else { NVIC_DisableIRQ (EXTI0_1_IRQn); NVIC_DisableIRQ (EXTI2_3_IRQn); // учитываем срабатывание NVIC_EnableIRQ (EXTI0_1_IRQn); NVIC_EnableIRQ (EXTI2_3_IRQn); c_flag = 0; g_flag = 0; } } Обработчики прерываний: void EXTI0_1_IRQHandler(void) { if(EXTI_GetITStatus(EXTI_Line0) != RESET) { if((c_flag==0)&(g_flag==0)) { c_flag = 0; g_flag = 1; //флаг будет сброшен в main после того, как срабатывание датчика будет учтено } EXTI_ClearITPendingBit(EXTI_Line0);//Очищаем флаг прерывания } } void EXTI2_3_IRQHandler(void) { if(EXTI_GetITStatus(EXTI_Line2) != RESET) { if((c_flag==0)&(g_flag==0)) { c_flag = 1;//флаг будет сброшен в main после того, как срабатывание датчика будет учтено g_flag = 0; } EXTI_ClearITPendingBit(EXTI_Line2);//Очищаем флаг прерывания } }
  4. На данном этапе пока так работает, но так работать конечно не дело. Макет девайса отдали заказчику на утверждение концепции. Когда вернётся, продолжу ковырять.
  5. Датчик висящий на B0 вызывает прерывание настроенное именно на эту линию, вызывается нужный обработчик, проверяет, точно ли прерывание вызвано с этой линии. Точно так же с датчиком висящем на B2 - вызывается и обрабатывается прерывание именно по этой линии с проверкой. Насчет маски ещё раз проверю. В errata не встретил никаких ограничений по прерываниям.
  6. Прерывания заведены с ног порта B0 и B2 дабы различать их было можно! Ноги B9, B10, B11 - включены на выход. До тех пор, пока не начинаю периодично дёргать одну из выходных ног, прерывания от ног B0 и B2 не возникают (если одна нога стоит в 1, этого не достаточно, прерывание возникает если на порт подается меандр...). Может кто сталкивался с данной проблемой? Убил уже день и ночь на решение, ничего путного в голову не лезет... Использую Coocox.
  7. Альтеровские CycloneIII в корпусах BGA 484 возможно были из разных партий, часть стоит с надписью "korea", часть с надписью "taiwan", теперь уже установить какие как отпаивались не получится. На следующих обратим внимание, может и правда шары из разного припоя.
  8. Конфигурация плат одинаковая, чипы бессвинцовые, тип чипов один и тот же. Одни снимаются мигом, другие снимаются с трудом. Откуда берётся разница?
  9. BGA - это уже как правило печатная плата - многослойка :-) Вопрос сравнения надежности в вашем случае не критичен.
  10. При соблюдении технологии и при всех правильных конструктивных решениях потеря надёжности если и будет, то настолько незначительная, что сотни тысяч разработчиков об этом даже не думают используя многослойки в очень ответственных приложениях. Есть особые требования к перегрузкам, к климатике? Опять же это больше конструкторские вопросы чем вопрос о количества слоёв. Тут есть более веские обстоятельства - финансовые. Многослойка дороже.
  11. В отрыве от полного анализа задачи такое сравнение не имеет смысла. Если при введении многослойной платы получается, что вы заменили целый блок содержащий объёмный монтаж с несколькими платами на одну плату с несколькими слоями, то надежность решения в целом может быть получена значительно выше. В отрыве от технологии изготовления платы и методов контроля тоже рассматривать что либо смысла не имеет. К примеру двусторонняя плата изготовленная в замшелой лаборатории без маски сильно отличается от платы с любым количеством слоев при производстве на современном оборудовании. В отрыве от аспектов конструирования тоже нельзя рассматривать этот вопрос. Если вам нужна высокая надежность, конструируйте надёжную топологию, считайте толщину проводников, теплоотвод и прочие моменты грамотно.
  12. Спасибо! Действительно дело не в грязи, платы качественно отмыты на производстве, да земли на соседних шариках нет. Буду менять чип.
  13. Промывка спиртом не повлияла, попробую найти место, где моют УЗ.
  14. Из партии плат попалась одна с диагнозом JTAG debugger-а "TDI на GND". По началу сопротивление между TDI и GND было 4 Ом. Подал напряжение на TDI 3,3В при подключенном питании. Ток примерно 50 мА. После некоторого времени ток упал до 30 мА а сопротивление выросло до 120 Ом. Чип начал определяться, как цепь из нескольких чипов (число их было случайным при каждом последующем опросе JTAG). Подержал 3,3 В на TDI ещё некоторое время. Теперь сопротивление на корпус 140 Ом, ток около 30 мА. Дальше ничего не меняется. Теперь определяется стабильно 3 устройства с таким вот отчетом JTAG debugger-а: !Error: JTAG chain problem detected !Error: No device detected !Error: JTAG chain problem detected !Error: TDI connection to the first detected device UNKNOWN_7FFFFFFF might be shorted to GND !Error: The TCK and TMS connections to the device before the first detected device UNKNOWN_7FFFFFFF might have a problem !Info: Detected 3 device(s) !Info: Device 1: UNKNOWN_7FFFFFFF !Info: Device 2: UNKNOWN_NO_JTAG_ID !Info: Device 3: EP3C40 Кто нибудь сталкивался с подобным поведением? Снимать с платы не очень хочется, но чувствую иного выхода нет. :-(
×
×
  • Создать...