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

Yarvi

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

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

  • Посещение

Репутация

0 Обычный

Контакты

  • Сайт
    Array
  • ICQ
    Array

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

568 просмотров профиля
  1. Проблема локализовалась в некоторую другую, а именно: при приеме в случайный момент времени в устройстве происходит сброс, пропадает соединение с компом по сети. Далее программа исполняется с начала, однако почему то не перестают вызываться прерывания и от таймера и прерывания по приему. то ессть два вопроса: 1. Почему может происходить сброс во время приема? 2. Почему исполняясь заново программа перестает уходить на прерывания? Буду очень благодарен, если вдруг у кого то есть какие то мысли.
  2. Столкнулся со следующей проблемой. Принимаю данные по Ethernet, по приему срабатывает прерывание. Обрабатываю полученные данные и затем сбрасываю OWNERSHIP_BIT в каждом буфере, где размещался обработанный пакет, и выхожу из прерывания. Пакеты идут потоком 40 пакетов/сек. Так вот проблема - если для приема я использую 8 буферов по 128 байт, все работает как надо. Если же увеличиваю количество буферов - 16, 32, 64, то прием достаточно быстро прекращается (1-3 сек). Судя по регистру EMAC_RRE, пакеты принимаются, но не копируются в отведенную для них память и соответственно не вызывается прерывание. Если кто подскажет в чем может быть дело, заранее большое спасибо.
  3. Спасибо большое! Все дело действительно в сбросе прерывания в регистре статуса.
  4. Работа с таймером в AT91SAM7X

    Уже достаточно долгое время над казалось бы простой проблемой. Собственно необходимо запустить таймер и обрабатывать его прерывания. Инициализация таймера: void InitTimer() { m_pTC0->TC_CMR = AT91C_TC_CLKS_TIMER_DIV5_CLOCK | AT91C_TC_WAVESEL_UP_AUTO | AT91C_TC_WAVE; m_pTC0->TC_IER = (1<<4); //прерывание RC Compare m_pTC0->TC_RC = 0xFFFF; m_pAic->AIC_SVR[AT91C_ID_TC0] = (unsigned int) timer_c_irq_handler; m_pAic->AIC_SMR[AT91C_ID_TC0] = ( AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL | 0x5 ); m_pAic->AIC_ICCR = (1<<AT91C_ID_TC0); m_pAic->AIC_IECR = (1<<AT91C_ID_TC0); m_pTC0->TC_CCR = AT91C_TC_CLKEN; } Обработчик прерывания таймера __arm __irq void timer_c_irq_handler(void) { __disable_interrupt(); m_pTC0->TC_CCR = AT91C_TC_CLKDIS; count++; if (count == 100000) { blink = !blink; count = 0; } if (blink) { m_pPioB->PIO_SODR |= BIT19; //включаем светодиод } else m_pPioB->PIO_CODR |= BIT19; // выключаем m_pTC0->TC_CCR = AT91C_TC_CLKEN; m_pTC0->TC_CCR |= AT91C_TC_SWTRG; m_pAic->AIC_EOICR = 0x1; } Вроде проще простого, однако, что наблюдается: светодиод мигает, с частотой 7 раз в 10 сек, при этом изменение значения предделителя таймера счетчика НИКАК НЕ влияет на эту частоту. Также и изменение значения RC не влияет на частоту мигания светодиода. Совершенно не пойму почему так получается, ведь судя по всему прерывание срабатывает гораздо чаще, ему следовало бы срабатывать. Буду очень благодарен, если кто сможет помочь.
  5. AT91SAM7X256 + RTL8201BL

    To RIYA: А что Вы делали с ножкой PB12(TXER) (у AT91SAM7X256), ведь RTL8201BL этот сигнал не использует? Просто так оставили или подтянули на что то?
  6. Доброго всем времени суток. Стоит задача развязать приемопередатчик RS-485. Ранее для этой цели применялись оптроны HCPL-0601(для линий данных) и TLP-181(для линии выбора приема/передачи). Теперь стали смотреть в сторону более компактной и дешевой альтернативы. Выбираю между ADuM1301 и ISO721, склонялся уже к первому. Однако, в одной из веток форума вычитал о подверженности ADuMов влиянию статического электричества. Даже Analog Devices выпустила рекомендации по решению проблемы. Ваш опыт использования ADuM? Следовали вы этим рекомендациям? Каким и как именно? очень уж нравятся эти ADuM :) заранее спасибо!
  7. nRF9E5

    Спасибо за ответы, приму к сведению. Неужели ни у кого нет более положительного опыта применения сабжа :)
  8. nRF9E5

    Стоит у нас задача сделать связь с некоторым обьектом по радиоканалу. Расстояние не больше 100м. Так как хотели использовать приемопередатчик совмещенный сразу с процессором, стали смотреть в сторону nRF9E5 от Nordic. У кого есть опыт работы с данным продуктом расскажите вкратце удобно ли, с чего начинать, какие проблемы возникают, что за компилятор для 8051 ядра и т.д.? Может быть есть какие то еще аналоги лучше/проще/дешевле? Интересует также такой вопрос: в документации у них приведен пример реализации антенны на печатной плате для 433 МГц, а для 868/915 МГц - нет. Хотя казалось бы для ввысокой частоты антенна должна быть меньше. Вообще реально сделать антенну для 915 МГц на печатной плате. Подскажите пожалуйста, я в этом деле новичок
  9. Видимо для всех это очевидно, а для меня не очень :) - Как пропускать периоды?
  10. Спасибо, оптроны MOC3052 будут запасным выходом из положения. Ну а пока на руках есть MOC3061 хочу окончательно выяснить - с помощью них можно как то регулировать мощность? Как говорил выше bps, отсекая целые полупериоды? Как это сделать? заранее спасибо
  11. Спасибо. Стоит проблема регулирования мощности нагревателя связкой симмистор+оптрон(BT138 и MOC3061). Для этого регулирования необходимо открывать BT138 на необходимое время в течении полупериода. НО. Если Zero Crossing Circuit открывает MOC3061 при переходе через ноль, тогда ведь должен же еще и BT138 открываться, то есть в начале полупериода, а не тогда когда мне надо. Как при наличии Zero Crossing осуществлять регулирование мощности?
  12. MOC3061

    Есть оптосимистор MOC3061. В нем имеется схема контроля перехода через ноль. Что она делает? В оптотиристорах без этой схемы вроде все ясно - коротким управляющим импульсом на светодиод опртон открыается, далее при переходе через ноль напряжения ни симисторе, симистор закрывается и для повторного открытия снова требуется управляющий импульс. А в MOC3061 как? Схема контроля перехода через ноль не дает симистору оптопары закрыться? Тогда как же его закрыть? Или все иначе работает? Подскажите пожалуйста.
×
×
  • Создать...