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

esaulenka

Свой
  • Постов

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

  • Посещение

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

    2

Весь контент esaulenka


  1. USB HID LPC1343

    goodwin, подскажите, в RL-ARM стали исходники USB класть, или оно по-прежнему в виде бинарника и горки заголовков? На бинарники закладываться как-то неинтересно, даже если там сам ARM свечку держал :-)
  2. Ну попробуйте переделать эту Вашу программу на кейл, может, проблема и всплывёт...
  3. Потому что я не задумываясь привёл цифру из UserManual, Table 17. LPC21xx and LPC22xx memory and peripheral configuration. Там десяток опечаток - для всех контроллеров с 16 килобайт ОЗУ указано это значение. Если верить на слово, что там всё-таки 16 килобайт, то Ваша цифра правильнее. А обработчик прерывания у IAR'а дурацкий :-) Кейл даёт следующий стартап: ; Exception Vectors Mapped to Address 0. ; Absolute addressing mode must be used. Vectors LDR PC, Reset_Addr LDR PC, Undef_Addr LDR PC, SWI_Addr LDR PC, PAbt_Addr LDR PC, DAbt_Addr NOP ; Reserved Vector LDR PC, [PC, #-0x0FF0] ; Vector from VicVectAddr LDR PC, FIQ_Addr В этом случае сразу же одной командой загружается адрес прерывания из соответствующего регистра (он не просто так расположен в самом конце адресного пространства!). VICVectAddr = 0; в конце прерывания надо делать самостоятельно.
  4. Я ни разу не видел IAR ARM. Покажите, пожалуйста, irq_handler. Просто интересно. А в остальном... Наверное, кто-то затирает MEMMAP, и в случае прерывания всё пропадает. Почему под JTAG'ом это не происходит, не знаю. Попробуйте опросить MEMMAP прямо перед разрешением прерывания. Там должна быть единичка. Разглядывал даташит "по диагонали", и не разобрался, что за ноги BOOT0/BOOT1. С ними всё правильно? Хотя, по идее, в противном случае совсем бы не работало. И дурацкий вопрос: другое прерывание пробовали? Вот ещё: В даташите указан диапазон 0x40000000 - 0x40002FFF. Если первое значение как-то пофиг (хотя зачем закладывать место на ремап векторов, если этого не делать?), то со вторым явный косяк. И ещё чЮдная цитата из errata: Pin TD1 (pin 22, H2) must not be driven LOW during reset. If LOW on reset the device behavior is undetermined.
  5. Предполагается пункт в инструкции "менять аккумуляторы только комплектом, использовать только одинаковые". Или именно подбирать надо? Сколько то сотен циклов выдержит, и то хорошо. Полного разряда скорее всего, не будет. Пробовали промоделировать типичное использование - за день разряжается на 30-50%, соответственно, заряжать будут каждую ночь. Какой-то странный таракан у руководства. Не дают... Да, было б легче спроектировать (хотя не факт, что надёжнее и дешевле).
  6. Читал, конечно. Ридико отдельное спасибо - очень толковая компиляция, а то в остальных источниках информация как-то разбросана... Только ответа на мой вопрос там нет. Видимо, надо срочно разгребать остальные задачи и садиться проверять. Ситуация осложняется тем, что уже идут разговоры о заказе пресс-форм для корпуса. В него второй импульсник затолкать - та ещё задачка. А без крайней необходимости свободного места про запас мне не дадут... Хмммм... Спасибо. А методика отключения какая? И разрядка как проводится? Всегда всей кучей, или пользователь сам разряжает аккумуляторы поштучно, а потом засовывает всю кучу в зарядник? У нас, я надеюсь, банки будут работать всегда вместе. А что такое "токовое зеркало с умножением"? Это N транзисторов параллельно? Как-то это неинтересно :-) "Отражать" 1:1 ещё более неинтересно.
  7. FlashMagic - это утилита для прошивки NXP'шных контроллеров через UART с помощью встроенного бутлоадера. Скачать можно по первой же ссылке в гугле. Тогда, действительно, моя теория несостоятельна. Надо разбираться, что там по вектору IRQ лежит. Видимо, контроллер с первым же прерыванием улетает "не туда". А под JTAG'ом прерывания работают? Странно, вроде б должно быть одинаково.
  8. Если у меня складывается такое ощущение, я первым делом проверяю, не попал ли контроллер в бут (флешмэджиком). Помогало неоднократно :-) Если оно так и есть, проверьте контрольную сумму (подробности - в user manual, искать "Criterion for valid user code") и уровень на соответствующей ноге. Глупый или нет, но я ответ не знаю. У меня (keil) при старте отладки просто выставляет program counter = 0, и всё работает вне зависимости от загрузчика. Как посмотреть, что там с "настоящим" резетом, непонятно. Хотя нет, вру. В настройках отладчика есть выбор сброса контроллера. Возможно, какие-то варианты дадут нужный Вам результат.
  9. о зарядке NiMH

    Такая задача: - есть входное напряжение 12..24 В. Нестабилизированное. - есть внутренний источник напряжения 9 В. Можно чуть меньше (8 .. 8.5), больше уже нельзя никак. - есть 6 NiMH аккумуляторов, соединённых последовательно. Перекоммутировать их на ходу нельзя. - хочется с минимальным геморроем зарядить аккумуляторы. Вопрос: Во всех графиках зарядки напряжение на банке растёт до 1.5 .. 1.55 вольта. Что будет, если оно стабилизируется на уровне 1.4 ? Каким образом тогда можно отследить окончание заряда? Температуру проверять не хочется - термодатчик крепить как-то надо... Большее напряжение при зарядке от 9В вряд-ли получится - и так уже выходит генератор тока с падением 9 - 1,4 * 6 = 0,6 В. Его такой ещё изобрести придётся... Можно, конечно, запитывать зарядник непосредственно от входного напряжения, но тогда не получится сделать линейный стабилизатор. На импульсник жалко и денег, и места...
  10. Ни в коем случае! На блютус можно убить очень много времени, это не задача для начинающего. Себя лично я отношу к "продолжающим", но спецификация на БТ вынесла мозг. В итоге планируем закупать готовые модули, если начальство таки решится на "беспроводку" (пока клиентов вполне устраивают провода :) ). Итого, план действий: - определить, что Вы делаете. Либо игрушку для изучения нового (микроконтроллера), либо железку, которая будет стоять в углу под слоем пыли и работать. В первом случае хорошо бы разориться на демо-плату с разными интерфейсами, дисплейчиками-кнопочками - это интересно (может даже ардуина какая-то - это модно). Во втором достаточно просто макетки с контроллером, выходным каскадом (1-2 транзистора, видимо), и всё - она будет заметно компактнее и дешевле. - определиться, какой контроллер Вы хотите изучать. АВРки более популярны (особенно в свете ардуин), но ПИК ничуть не хуже. Смотрите по тому, что продаётся в магазинах - нужна будет демо-плата (или сам контроллер в корпусе, подходящем под пайку), программатор (самодельные программаторы активно обсуждают в соотв. разделе нашего форума, если что), одна-две книжки. В принципе, можно и АРМ (мелкие, типа младших LPC и STM, совсем дешёвые, не требуют программатора и мануал на них не ОЧЕНЬ толстый), но всё-таки сложнее АВР/ПИК. - добыть модуль БТ. Самый простой, но достаточно гибкий вариант, на мой взгляд - в виде переходника в ком-порт. На форумах самодельщиков последние год-два активно обсуждается, какой модуль лучше и у какого китайца его заказать. Гугл в помощь.
  11. Может, я скажу хорошо известную Вам банальность, но... у меня на столе лежит LPC1768 revA device ID 0x26013F37 boot ver 4.2 serial 370603787 ... Т.е. камни, у которых этот номер есть, в природе встречаются. Почему в Вашем экземпляре господа из NXP забыли его прописать (и сколько таких экземпляров), вопрос к ним...
  12. DWARF

    Ух! А что это такое? У меня это выглядит аналогично, но на осциллографе: дрыгаю ножкой, меряю время выполнения. Хочу удобнее!
  13. На мой взгляд, лучше уж с нуля всё написать. Благо в документации на контроллер всё подробно описано. Какая-то ненужная "типа универсальная" прослойка. Один чёрт при замене, скажем, LPC-STM придётся всё переделывать. А если менять LPC->LPC, то с большой вероятностью всё заработает и без переделок - периферия у разных контроллеров NXP весьма совместима.
  14. Ну-у... Если вдруг рядом кто-то слишком громко чихнёт, и на провод "пуск" наведётся помеха, будет нехорошо. Хотя я неправ, да: если поплавок при полном баке остановится вблизи верхнего геркона, ничего особо страшного не случится - насос включится только на время этой помехи. Т.е. если положить, что её длительность измеряется в наносекундах, не включится вовсе - не хватит быстродействия.
  15. Вообще-то это НЕ "схема подавления дребезга", это триггер в чистом виде, т.к. на вход подаются импульсы (вероятно, короткие). Но вот дребезг хорошо бы давить, да. Особенно если есть возможность залить этой водой хоть что-то ценное.
  16. Так-так. Тут POE раздают, я правильно понял? У нас тут тоже задумываются о такой фиче. Планируется дополнительный модуль (гребёнка типа IDC или что-то подобное), ватт на 10. Я просто мимо проходил, изучал вопрос коллега (сейчас он отсутствует). У него мистическим образом получилось 5$ на типовой схеме из даташита Si3402.
  17. Скачайте с segger.com софт J-Link. Там в комплекте неплохую документацию дают. Ключик для софта (если надо) буквально на днях искали здесь: http://electronix.ru/forum/index.php?showtopic=101535
  18. Господа, ну не путайте вы топикстартера... У него каша в голове только увеличиваться будет... :( IAP во всех LPC'шках есть, причём один и тот же - отличается от того же LPC214x буквально на чуть-чуть - другими адресами. Более того, добрые NXP прямо по этой просьбе сделали AppNote: http://www.nxp.com/documents/software/AN11...th_software.zip Там, правда, кейл, но на общую идею "как это работает" влиять не должно. Возможно, это решение слишком избыточно для десятка переменных, которые меняются раз в полгода и все вместе, но ТЗ нам никто не предоставил :) Да, и ещё: если ещё нет "МК без EEPROM (LPC1114)", а есть только планы, можно заложиться на LPC1114XL. Если верить документации, они ввели во флеше понятие "страница" - 256 байт, которые можно стереть за раз. По сравнению с предыдущими камнями, когда стирание шло блоками по 4 килобайта, это очень удобно для Вашей задачи.
  19. Я не знаю, что такое LPC2249, но... У него PCLK (PCLK0-1-2-3) и PCONP есть? Там битики нужные стоят?
  20. Тут бесполезно дистанционно советы давать. Начните с отключения всего, что только возможно, добейтесь работоспособности (мигания диодом, выдачи каких-то сообщений в UART), а потом прикручивайте (постепенно!) остальное. Несколько облегчить работу может JTAG.
  21. АЦП будет мерять предыдущее значение, "каких-то пауз" не предусмотрено. "Всё выключено" - это просто частный случай с N=0. Demeney, спасибо. Надо бы вывод всех значений организовать, посмотреть, что там с помехами. А то кажется мне, что если усреднять уже посчитанное Rвнутр, ошибок больно много будет... При небольших нагрузках оно даже отрицательным может получится - если помеха "перебьёт" просадку напряжения.
  22. Ну да, я слышал что-то :-) Проблема в том, что вся эта конструкция весьма заметно "шумит" - значение сопротивления каждый раз будет меняться. Вопрос, как его усреднять, с учётом того, что "известное сопротивление" у меня каждый раз будет разным.
  23. Есть система, представляющая собой нагрузку типа "N резисторов параллельно" с управлением от микроконтроллера. Питается оно от аккумуляторов (внутреннее сопротивление аккумуляторов и нагрузки, если N максимальное, сопоставимо). Количество одновременно включенных резисторов переменное (рулится контроллером, заранее предсказать сложно) от 0 до N. Также в контроллер заведено напряжение с аккумуляторов - на АЦП. Теперь самое интересное - необходимо обеспечить постоянство энергии, передаваемой в каждый из резисторов, изменяя время их включения. Пока напряжение было постоянным (от внешнего блока, там пульсаций немного было), всё было просто. Алгоритм следующий - померяли напряжение, (пропустили через усреднялку типа "скользящее среднее"), выставили N, включили. А теперь после "включили" напряжение-то и поменялось. Вариант "включить, померять k раз, усреднить, посчитать время выключения" не проходит, т.к. включать надо на единицы миллисекунд, и в промежутках ещё кучу всего делать. Величину нагрузки в каждый момент я знаю довольно точно (N резисторов + ещё потребление прочих элементов), а вот с внутренним сопротивлением аккумуляторов засада - завтра пользователь их поменяет, послезавтра производство другую партию закупит... Вопрос: что делать-то? Читать про Калмана? Вроде бы самое оно... Вот только не делал я никогда, даже "простейший одномерный случай без входного воздействия".
  24. Shivers, если получится, расскажите, пожалуйста, технологию. Вопрос рисования своих шрифтов довольно актуален. Да, размер, наверное, что-нибудь типа 10x16. Дробных (не кратных 8) размеров не стоит боятся - там не очень много арифметики выходит. У меня вывод сотни строк в секунду (полный вывод, с кучей дополнительных расчётов, а не только растеризация) отнимает около 15% времени у LPC1768. В принципе, можно заметно сократить это время. Но пока всё работает :-)) И с отдельным буфером дисплея, возможно, не нужно заморачиваться. На ARM9 делал вывод на экран 640*480 - просто складывал байты в область видеопамяти, не думая о переключении страниц. Работало довольно неплохо, но т.к. основная функция этой софтины была в отображении надписи "Loading WinCE", её не сильно оптимизировали :-)
  25. Некрасиво это. Как-то исторически сложилось, что настройка ног - в одном месте, а дальше её никто не меняет. И портировать драйвер на другие пины не так удобно будет... Но это единственное препятствие :)
×
×
  • Создать...