Jump to content

    

e-not

Участник
  • Posts

    8
  • Joined

  • Last visited

Reputation

0 Обычный

Контакты

  • ICQ
    Array
  1. Спасибо ответившим! Я собираю схему управления двухцветной светодиодной панелью 16 Х 32 в единственном экземпляре в любительских целях. Матрицы достались с общим анодом, поэтому на переключение строк приходится ставить верхние ключи, на столбцы - 74hc595. Т.к. одновременно могут включиться оба светодиода в каждой ячейке во всей строки, то ток может доходить до 640 мА (если принять 10 мА на диод). У UDN2981 ток ограничен 500 мА. Поэтому хотелось-бы быть уверенным, что напаянная сверху вторая UDN2981 решит дело. Резисторы в цепях эмиттеров при параллельном соединении, как я понимаю, являются ООС и выравнивают токи в линейном режиме, а тут транзистоы в ключевом. В вышеупомянутых нижних ключах ULN2803 (см.схему) никаких резисторов в цепях эмиттеров нет, но тем не менее "Applications requiring sink currents beyond the capability of a single output may be accommodated by paralleling the outputs." Так что вопрос в том, будут-ли оба транзистора оставаться в ключевом режиме, если ток через них отличается.
  2. Здравствуйте. У микросхем uln2803 (8 нижних ключей), согласно datasheet-у, допустимо параллельное включение. А допустимо-ли оно у udn2981 (8 верхних ключей)?
  3. Спасибо ответившим (правда думал что можно обойтись без WDT, как в фуджиках, например).
  4. Как программно перезапустить lpc2138?
  5. В ОЗУ выделяем блок памяти размером 256|512|...байт и изначально заполняем его 0xFF. Контроллер получает какие-то данные и записывает их в начале этого блока. После этого весь блок записывается во flash средствами IAP. Следующие данне записываются в блок ОЗУ сразу после предыдущих и весь блок ОЗУ снова записывается во flash на то же место. И так далее до заполнения блока. После-переход на следующий блок flash и т.д. Можно, конечно, дождаться заполнения всего блока ОЗУ и записать сразу все, но в некоторых случаях такой способ может быть актуальным (пропадание питания). На LPC2138 вроде работает, но длительных наблюдений не проводилось. Не приведет-ли это к сокращению ресурса flash, ошибкам данных и прочим нехорошим последствиям?
  6. Если в функции обработки прерывания по завершению преобразования АЦП0 я после чтения результата вставлю запуск очередного преобразования (AD0CR_bit.START = 1), то контроллер виснет. Но если в функции обработки прерывания я устанавливаю флаг завершения преобразования, а следующее преобразование запускаю в main, то все работает. // так работает void ADC0Init() { PINSEL0_bit.P0_5 = 0x03; AD0CR_bit.SEL = 0x80; AD0CR_bit.CLKDIV = 5; AD0CR_bit.BURST = 0; AD0CR_bit.CLKS = 0; AD0CR_bit.PDN = 1; AD0CR_bit.START = 0; } void ADC0_int() { AdcResult = AD0DR_bit.VVDDA; //AdcResult и AdcReady - глобальные AdcReady = 1; } void main() { AD0CR_bit.START = 1; while (1) { if (AdcReady ) { AdcReady = 0; AD0CR_bit.START = 1; } } } // так виснет void ADC0_int() { AdcResult = AD0DR_bit.VVDDA; AD0CR_bit.START = 1; } void main() { AD0CR_bit.START = 1; while (1) { } } Может, кто подскажет?
  7. В User manual написано 10 000 циклов и 10 лет, в Datasheet - 100 000 циклов и 20 лет. Кому верить?