Ruslan1
Свой-
Постов
3 044 -
Зарегистрирован
-
Посещение
-
Победитель дней
3
Весь контент Ruslan1
-
угу. выводы таковы: 1. Если штатно- то запрещать изменение файлов на время подключенного USB. 2. Если свое писать- то читать посекторно и разбираться по своим правилам. Сектора читать точно можно, по крайней мере старый добрый WinHex это может, его кнопочка "Refresh View" замечательно перечитывает сектор напрямую с физического носителя. 3. Может быть можно и пофайловое чтение сделать напрямую с диска, это снимает часть работы, посвященную файловой системе, вроде бы это возможно (я давал ссылку на MSDN). Но опять же, свой софт нужен. Я упустил какой-нибудь вариант? Может есть оболочка, в которой это реализовано? какой-нибудь СуперКоммандер, имеющий кнопочку/функцию "обновить"
-
Upd: Скажу больше: запись файла тоже ни к чему физическому не приводит. ничего не перечитывается. Пример: записываю файл на "диск". Фактически файл никуда не записывается, в USB стоит заглушка "при записи секторов отвечать TRUE". Результат- винда показывает мне "диск" с "записанным" файлом. То есть фактически этого файла нет ни в служебных секторах FAT, ни, разумеется, в области данных, но для драйвера винды достаточно полученного "TRUE" от USB, не тратит сил даже на перечитывание каталога с диска, все крутится в кэше. (кэширование записи на диск в свойствах диска я отключил, но тут именно в кэшированном чтении проблема). Мда.
-
К сожалению, мне не удалось найти эту волшебную кнопочку "обновить" в операционной системе "Windows". Ни одна из нижеперечисленных операций не ведет к обновлению кэша (то есть по USB шине не передается ни одной команды чтения сектора с физического устройства): 1. Запуск/перезапуск программы типа "проводник Виндоус", "Тотал командер", "ФАР" 2. открытие/закрытие файла в просмотрщике-редакторе. 3. Нажатие кнопочек "Обновить", "свойства диска" 4. Копирование файла на компьютер. Вероятно, все дело в том, что я имею дело с маленьким USB диском, 4 МБ, и он целиком поместился в буфере кэша в момент подключения устройства. Что срабатывает- это попытка записать на диск. Сейчас он у меня read-only, так после пробной записи и ошибки диск таки перечитывается. Попробую на этом сыграть :( Большое спасибо. Но, первое чтение по диагонали про MTP энтузиазма не добавило- наворочено и ресурсоемко со стороны устройства получается. И если поддержка MSD/USB со всеми потрохами без оптимизации в 8 кбайт кода + 1 кбайт ОЗУ на PIC18 лезет, то MTP думаю для более пузатых случаев. А что есть "доп софт"? Имеете в виду для передергивания USB MSD? Сейчас уже вижу, что достаточно организовать в этом допсофте периодически запись в фиктивный файл на моем MSD, при этом каталог перечитывается. Или можно изящнее сделать? Сейчас, собственно и так нормально- это логгер, который имеет право отложить "логгирование" на время USB сеанса. Такое положение вещей вполне в рамках стандартного использования. Но хотелось большего.... Сейчас понимаю, что мои хотелки выходят за рамки идеологии MSD, соответственно штатно не решаемы- нужны костыли :(
-
Windows: отключить кэширование чтения для USB MSD
Ruslan1 опубликовал тема в Операционные системы
Здравствуйте! Собрал устройство, которое со стороны винды видно как USB Mass Storage Device. Некоторые изменяемые данные видны со стороны Винды тоже как файлы (ну, например, текущее время контроллера). Проблема в том, что однажды прочитав такой диск, винда больше вообще к нему не обращается (то есть не пытается читать секторы). Как результат- хотя файл обновляется (и его содержимое, и информация в соответствующем ему RootDir секторе), винда продолжает показывть старый файл из кэша диска. Как-то с этим можно бороться? Еужно либо полностью отключить кэширование (чтобы все шло напрямую к диску), либо сделать принудительное обновление содержимого кэша, скажем, 1 раз в секунду. Насколько я понял после недолгого гугления, проблема эта существует: http://www.experts-exchange.com/Storage/Misc/Q_27825263.html http://www.embeddedrelated.com/groups/lpc2000/show/49476.php на уровне написания своего софта проблема (вроде бы!) решаема: http://msdn.microsoft.com/en-us/library/aa...8(v=vs.85).aspx Но вот так ли это? И нет ли каких-то вариантов инициировать обновление кэше со стороны USB MSD устройства, например, выдавая кучу ошибок в ответ на запросы Винды? Или кто-то уже писал софт, позволяющий достучаться до секторов на USB MSD, минуя кэш? то есть специальная программка, делающая все нужное для обновления кэша? Крайний вариант- это обрубить USB, тогда устройство переподключится, но в винде это сопровождается кучей визуальных эффектов :( Пока что штатно нашел в винде включение-отключение кэширования записи, но про кэширования чтения видимо не подумали. :( Помогите, пожалуйста. Кто чем может..... -
Окисление меди
Ruslan1 ответил VelvaS тема в Изготовление ПП - PCB manufacturing
Простите, если глупость ляпну, но, может быть, можно просто предотвратить или минимизировать окисление? например, перед пересылкой поместить платы в вакуумную оболочку? например, в пластик запаять вместе с влагопоглощающим адсорбентом? я от китайцев в подобной упаковке платы видел. ну или наносить на платы нечто предохраняющее и легкосмываемое у заказчика. -
Преобразовать 12В в 5В
Ruslan1 ответил DiXakMan тема в В помощь начинающему
мда. некоторым чем сложнее, тем проще.... Что любопытно- предлагаются решения, хотя вообще ничего не известно про ток нагрузки и требуемый бюджет (по КПД и по деньгам) -
Помогите выбрать одноплатник
Ruslan1 ответил yell тема в В помощь начинающему
что с чем соединить? "устройство связи пк с объектом" - это провод. :) если хотите получить внятный ответ- задайте внятный вопрос. а лучше нарисуйте картинку, которая состоит из кубиков "разрабатываемое устройство", "пк", "объект" и стрелочек между ними с пояснениями типа интерфейса и протокола. -
Помогите выбрать одноплатник
Ruslan1 ответил yell тема в В помощь начинающему
Такой одноплатник не существует. Ибо нафиг никому не нужно при выгорании одного входа выводить в ремонт/списывать все устройство целиком. Это нужно разве что при спецприменениях, но там стоимость аппаратуры вообще не считают, обслуживание по любому дороже на порядки чем сама железяка. Отквоченные мной выше Ваши хотелки специфичны. А специфичность никогда не являлась бюджетной и легкодоставабельной. Задача не имеет решения, нужно что-то менять в условии. -
Про индикацию: самое простое для разборок- это 1. вычислить значение в вольтах или в тех единицах вольт, которые нужно отобразить. Это позволяет остаться в границах целочисленной арифметики. Например, делаем все в милливольтах. Тогда 16-битного целого хватит для напряжений до 65.535 В. Umv = ( UREFmV / (1<<NADC) * ADCcode) * KATT где UREFmV = 5000 (mV) NADC - разрядность АЦП (у Вас это 10) ADCcode - код прочитанный из АЦП KATT - коэффициент ослабления аттенюатора (делителя) на входе. в Вашем случае 1. 2. переводим эту величину в посимвольное отображение в буфере char buf[5+1]; // максимальная отображаемая величина требует 5 знакомест плюс символ конца строки 0x00 в конце sprintf (buf, "05d", Umv); после этого число Umv будет "напечатано" в буфер buf, причем старшие незначащие цифры будут '0'. например, величина 1234 будет напечатана как "01234" 3. добавляем десятичную точку в буфер. Это позволяет дальше удобно и без хитростей выводить подготовленный буфер куда угодно. char buf2[2+1+3+1]; // 2 на целую часть, 1 на точку, 3 на дробную часть, 1 на завершающий строку символ buf2[0]= buf[0]; buf2[1]= buf[1]; buf2[2]= '.'; buf2[3]= buf[2]; buf2[4]= buf[3]; buf2[5]= buf[4]; buf2[6]= '\0'; 3. Выбираем посимвольно из буфера цифры и делаем с ними все что хотим например: const char IND_ADDR[] = {NULL, ADDR_HL1,ADDR_HL2,ADDR_HL3,}; // нулевой элемент массива не используется for (i = 1 to 6) { switch (buf2[i]) { case '.': out = LED_CODE_DOT; break; case '0': out = LED_CODE_0; break; case '1': out = LED_CODE_1; break; case '2': out = LED_CODE_2; break; case '3': out = LED_CODE_3; break; default: out = LED_CODE_E; break; // error } // end switch() Indicator(IND_ADDR[i], out); }; // end for() Я конечно помню, что всякие АЛС324 одновременно с символом могут точку светить в этом же разряде, но это уже следующий этап игры :)
-
1. А сколько все-таки нужно? Мне, честно говоря, полупроводниковых хватает- ADG1636, например (2nA max/85C). DG4051/2/3 вообще пишет про типовые 20pA (http://www.vishay.com/docs/69828/dg4051a.pdf). 2. так что такое low current в 7152 ? в цифрах что-то известно?
-
А почему Вы решили, что указанный у них в документации "OFFSET CURRENT: <1pA (10fA typical)" обозначает минимально допустимый ток через контакты? Мне кажется, что эта характеристика определяет утечку через разомкнутые контакты, вот и все. а про замкнутые контакты там сказано: CONTACT POTENTIAL: 20μV per contact typical. Кстати, если мне правильно кажется, то минимальные коммутируемые токи у ртутных реле, но не применял, только интересовался давным-давно.
-
Как человек, повидавший настолько многое, могли бы по крайней мере разобраться и правильно описать причину неработоспособности. Так как Вы последовательно утверждали: 1) светодиоды мигают одновременно 2) светодиоды припаяны анодом к земле Одно из этих утверждений явно ложное. На будущее: попробуйте корректно и правильно описать проблему. Часто хорошо поставленный вопрос не нуждается в ответе. Задающий, прочитав такой вопрос, сам находит ответ :)
-
нашел за 30 секунд, кто быстрее? :) 1. зашел на http://www.digikey.com/ 2. набрал в поиске "Ethernet USB connector", при этом включил галочку "In stock" 3. Из выпавшего трекстрочного списка кликнул "Modular - Jacks With Magnetics (17 items)" 4. Отсортировал по цене, выбрал самый дешевый с двумя USB http://www.digikey.com/product-detail/en/0...1449-ND/2108014 поштучно- $5.37, от 10 штук- $4.44, от 100 шт- $3.33 на складе- 1872 штук. Upd: Ох, извините, тут про "свободную продажу в России" спрашивали. Невнимательно прочитал вопрос на который ответил :(
-
Заказ 1 item в digikey.
Ruslan1 ответил nwbie тема в В помощь начинающему
Cosmojam , Вам не кажется, что фразы и не индентичны? Это то же самое, что Вы напишете "DHL работает только с юрлицами" не уточняя страну. Это верно для России, но не для компании Digi-key или DHL во всем остальном мире. Грустная новость. Сочувствую тем, кто в России. :( -
Принцип такой: 1) LE на ИР22 неактивный (L)- значение на выходах не зависит от значения на входе. 2) LE на ИР22 активный (H) - значение на выходах то же самое что значение на входах 3) переход LE H->L: дальше на выходах то значение, которое было в момент этого перехода. То есть нужно сначала выставить данные и установить адрес для активизации ИР22, после этого данные появятся на выходе ИР22 (на индикаторе). Дальше нужно отключить активность ИР22, запомнятся (будут продолжать высвечиваться именно те данные, которые были в момент "деактивации" LE данной ИР22. Имеет смысл перечитать что-нибудь по языку Си, базовый уровень. У Вас некоторое смешение понятий. Некоторые фразы просто непонятны, может быть Вы и правильно понимаете смысл происходящего, но оперируете доморощенной терминологией. Чудес не бывает, нужно понять почему и что. Разверните фразу "периодически появляются одно временно восьмерки на HL3 и HL7 или HL5 и HL7." Непонятно, что за "периодически" если программа зациклена в конце. попробуйте #define ADDR_HL_NO_SELECT 0x0F Адрес 0 (LE1) в схеме присутствует, и куда идут выходы соответствующего регистра- неясно, может в этом дело. И еще я не уверен о переходных процессах в комбинационной логике ИД7, может быть проскакивают иголки во время переопределения адреса. Есть масса способов от этого избавится, но не при такой схеме. И вообще. У Вас же в руках ICD3, это отладчик. :) Пройдитесь пошагово по Вашей программе, посмотрите в какой момент после какой команды что происходит, что зажигается-что сбивается в индикации, сразу многое станет ясно.
-
Заказ 1 item в digikey.
Ruslan1 ответил nwbie тема в В помощь начинающему
Укажите, пожалуйста, источник такой странной информации несколько противоречащей действительности. То есть можно ставить галочку "юр лицо", а можно не ставить? Как это понимать в контексте Вашего же сообщения что "только с юр лицами работают" ? Определитесь, пожалуйста. -
Я всегда говорил, что только те, кто застал ламповую технику, никогда не путают анод и катод. Потому как если хоть раз в жизни довелось ткнуть пальцем в анодное напряжение - то на всю жизнь запомниться, что анод это ПЛЮС (ну да, сейчас этот плюс уже можно маленькими буквами писать, он маленький, но все же плюс :)
-
на ИР22 (SN74LS373) остаются (хранятся) те данные, которые были во время перехода H->L. то есть те данные, которые были в момент откючения канала дешифратора (Дешифратор активный 0, но у Вас еще инвертор после него есть) Делайте выводы. Но с кодом программы нужно что-то делать. 1. Коментарии должны быть полезны, а не просто набор слов. 2. Не применяйте константы в коде, пользуйтесь #define Пишите как-то так #define ADDR_HL1 0x03 #define ADDR_HL2 0x04 #define ADDR_HL3 0x05 #define ADDR_HL4 0x06 #define ADDR_HL5 0x07 #define ADDR_HL6 0x08 #define ADDR_HL7 0x09 #define ADDR_HL8 0x0A #define ADDR_HL_NO_SELECT 0x00 //все селекты HL1-HL8 неактивны #define LEDCODE_0 0xF9 #define LEDCODE_1 0x19 #define LEDCODE_2 0x29 #define LEDCODE_3 0x39 #define LEDCODE_4 0x49 #define LEDCODE_5 0x59 #define LEDCODE_6 0x69 #define LEDCODE_7 0x79 #define LEDCODE_8 0x89 #define LEDCODE_9 0x99 #define PORT_DATA PORTD #define PORT_ADDR PORTE // определение функций void Indicator(char addrCode, char dataCode); //сами функции void Indicator(char addrCode, char dataCode) { PORT_ADDR = addrCode; PORT_DATA = dataCode; PORT_ADDR = ADDR_HL_NO_SELECT; // в этот момент защелкиваются данные на HL1 } void main (void) { TRISD = 0; //порты на вывод TRISE = 0; Indicator(ADDR_HL1,LEDCODE_1); Indicator(ADDR_HL2,LEDCODE_2); Indicator(ADDR_HL3,LEDCODE_3); Indicator(ADDR_HL4,LEDCODE_4); Indicator(ADDR_HL5,LEDCODE_5); Indicator(ADDR_HL6,LEDCODE_6); Indicator(ADDR_HL7,LEDCODE_7); Indicator(ADDR_HL8,LEDCODE_8); while(1); // ждем выключения или ресета } И еще, по схеме: 1. Скажите большое спасибо тому, кто нарисовал на схеме инвертор ЛН1 без обозначения инверсии выходов. Это инвертор. там кружочки нарисовать хорошо бы. Как, впрочем и у ИД7. 2. Второе спасибо за то, что "разработчик" платы разработал также и нестандартный порядок пинов на ICSP разъеме внутрисхемного программирования. Стандартный порядок: Vpp, Vdd,Vss, PGD, PGC. Основной штамп на первом листе Вы благоразумно затерли, иначе я бы оперировал конкретным именем разработчика :)
-
Разовая работа
Ruslan1 ответил man4ik21 тема в Предлагаю работу
Украсть в институте Wi-Fi роутер с линуксом и на нем сделать. Лампочки там тоже есть :) http://hackingroomba.com/wp-content/upload...1/fs09kurtt.pdf -
Мда. такой хоккей нам точно не нужен :maniac: :smile3009:
-
да нет же, он продолжал работать, но только при подключенном выходе. Если выход отключали кнопкой OUT ON/OFF, то на выходе вместо нуля что-то страшное было, до 50 вольт. В-общем, источник из страны "плохой Китай". (Бывает еще другая страна, "хороший Китай" :) А жаль, я уже захотел..... Ну что ж, будем искать....
-
http://www.youtube.com/watch?v=Fya-4mjV4N4 :) Перешивать-это на любителя, а вот просто купить за 100 баксов- хочу!! Upd: Не хочу и Вам сильно не советую (после того как ролик досмотрел) Смотреть с 25-й минуты. Фигня полная, килер девайсов, а не блок питания. Там есть глюк при якобы выключенном выходе , в ролике с 25-й минуты. Может быть, что-то в инструкции написано, но глюк настолько серьезный, что и задаром не возьму. Разве что диверсию устроить. P.S. классная у него в этом ролике футболка, тож такую хочу! :)
-
Обсуждение USB и альтернативы
Ruslan1 ответил Vishv тема в В помощь начинающему
Да зарадибога. мое дело предложить- Ваше дело обложить :) Кого-то эта шина убивает, кому-то верхние уровни прямо в провода не встроили..... Спорить не буду, сколько людей-столько и мнений :) -
Обсуждение USB и альтернативы
Ruslan1 ответил Vishv тема в В помощь начинающему
??? не понял. -
Обсуждение USB и альтернативы
Ruslan1 ответил Vishv тема в В помощь начинающему
Да. Один переходник в один USB на всю Вашу высокоскоростную сеть контроллеров. А вам что нужно со стороны писишки?