prst
-
Постов
703 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные prst
-
-
ИМХО, не актуально, так как современные компиляторы имеют режим multifile compilation.
не, тут мне важно не актуальность, а сама статья, там обсуждалась природа этого явления, вот это то что щас нужно мне
-
Помнится когда-то тут, в этом разделе кажется, было интересное обсуждение, где один из уважаемых (в то время) пользователей приводил интересную статью(помоему даже его собственную) - сравнение размера скомпиллированного кода ARM компилятора в зависимости от структуры файлов программы.
Суть в топике передавался следуюший, есть арм компилятора, один, и есть по разному устроенная тестовая программа, которая делает одно и тоже в разных ее исполнениях. В одном варианте все сделано в одном .c файле, потом разбито на разные .c, потом на .c+.h, потом все это разбросано и для объектов какието параметры менялись... и сравнивался результирующий hex(или чтото еще на выходе). Помнится что самый большой выигрыш был когда все написано в одном файле, но при этом правда код привратился в той еще длины "полотенце"...
Я сейчас не могу найти эту интересную статью, ребята, помогите плиз ее найти. Надеюсь на сторожил раздела форума, вы точно должны помнить, это было длинное интересное обсуждение, гдето в 2008-2010гг.
-
Вот есть китайский комплект радиоканала для передачи аналогового видео на частоте 2.4 ГГц типа этого http://video2002.ru/primnik_peredatchik_jmk_ws-2486.
Возможно ли его подключение к стандартному wi-fi усилителю диапазона 2.4 ГГц с целью увеличения дальности действия?
раньше были двунаправленные wifi усилители MANUS-212 (2Вт) возможно щас чтото есть еще...
-
В общем, досталось больше сотни этого добра бесплатно.
Как раз хотел потренироватся в CPLD и FPGA.
Скачал бесплатный Квартус от Альтеры,
а там нет поддержки MAX3000A.
Че делать? Как программу написать и скомпилировать?
Как нет? Этого не может быть.
Можете ещё скачать альтеровский MAXplus II или старый квартус
-
- человека может быть уже и нет в живых
- человек по какойто причине уже не заходит сюда
Напишите ему в приват с оповещением о получении, и узнаете читает ли он вообще или нет.
врядли он проигнорит ваше сообщение, в крайнем случае зарегте се новый аккаунт и пойдите на хитрость, предложите ему еще один заказ
способов много, тем более гугл знает все ))
Ну или попросите моделаторов отседить по логам и IP
-
Здравствуйте! Наступило время у меня ознакомится с сигнальными процессорами и ацп/цап. Скажите, возможно отыскать отладочник с ДСП на частоте выше 300МГЦ и с достаточно сильными АЦП/ЦАП?или их как то лучше по отдельности изучать?
Начните с BF533 или BF532 они самые доступные и самые дешевые
АЦП/ЦАП у них на борту нет, обычно для DSP они внешние
-
Когда "тянете"-- не отпуская мышки Shift+пробел-- переключает режимы (прямой угол, 45 град, любой угол)
CTRL+Shift+пробел --- еще и вращать умеет
Спасибо, как раз только что этот способ нашел, правда он у меня по CTRL+Пробел, меняет углы ))
И кстати возможно нашел только что баг у 10го альтиума
- если перед такой сменой правил переворотов расставить лабель и десигнатор, то после поворотов они устанавливаются в дефолтовое состояние...
не удобно малехо, думаю это баг.
-
DXP->Preference->Schematic->Grafical Editing поставить галку Always Drag.
Возможно это поможет, если речь идет о схеме.
Да, спасибо, похоже то что я искал, но тоже это не совсем то.
Дело в том что когда перемещаешь то схематик соединяет под 90грд все соединения, то есть не особо то и удобно. ну а при соедении они все замыкаются, и это по сути ни чего не улучшает...
Я конечно понимаю что пикад это прошлое и другой продукт - но не могу понять логику - почему тут не сделано такое удобство, что бы соединялись проводники под любым углом как в старом добром пикаде.
Может где-то есть галочка отключающая насильно 90грд?
-
Altuim 10странности, мне этот вопрос не дает покоя.
Например сделал я соедение проводника к элементу, и потом захотел его подвинуть, выделяю его и тяну, и.... ну просто пэинт какой-то, честное слово. Вместо того, что бы тянуть все соединения и элемент - он тянет только лишь элемент, а проводники с выкушенным местом остаются на месте. Ыыыыы.
Блин, Пикад с такой примитивной задачей справляется на ура.
а если мне нужно несколько десятков-сотен элементов переместить, это что потом пересоединенять все эти проводники по новой?
Может что-то не включено или какую галочку нужно дергнуть?
Добавлено
ага, оказывется если зажать Ctrl то как нужно, а вот как сделать по умолчанию так, что бы контрол не жать постоянно?
-
Altuim 10мне этот вопрос не дает покоя
итак - вот сделал я соедение проводника к элементу, и потом захотел его подвинуть, выделяю его и тяну, и.... ну просто пэинт какой-то, честное слово. Вместо того, что бы тянуть все соединения и элемент - он тянет только лишь элемент, а проводникис выкушенным местом остаются на месте. Ыыыыы.
Блин, Пикад с такой примитивной задачей справляется на ура.
а если мне нужно несколько десятков-сотен элементов переместить, это что потом пересоединенять все эти проводники по новой?
Может что-то не включено или какую галочку нужно дергнуть?
-
-
фазовый детектор?
-
-
Лог SAM7s128
Лог SAM7s256
Закипел я.
у меня такое было
когда прошивка в кейле под 64й, а шьеш в 256й ил 128й
а если собирать под GCC работает на любом камне
-
подтяжки?
-
А есть варинаты без кнопки?
Т.е. подали питание, МК включился, а потом мог себя выключить до новой подачи питания?
Спасибо.
В варианте который я предлагаю ниже по идее можно без кнопки
полностью исходник и описание принципа работы тут - http://projects.org.ua/forum/viewtopic.php?p=17839#17839
я ранее эту схему использовал - советую.
если в параллель транзистора TV2 подавать напряжение или в затвор VT1 - то можно без кнопки выключать, прада что бы включить - кнопка нужна будет все равно :rolleyes: .
-
Код, уж простите, просто чудовищный. И это еще самый мягкий эпитет, который к нему можно применить.
да я знаю, вы меня не задели ))
я этот код вообще не причесывал, и развернул специально что бы не перепрыгивать между листингами и функциями. Это только на стадию запуска 4 битного режима.
-
Опубликовано · Изменено пользователем IgorKossak
Пользуйтесь тэгами [codebox] · ПожаловатьсяЗапускаю на своем модуле ARM7MODA LCD индикатор из серии KS0066. Режим этот нужен, так что вопрос принципиальный.
Уже столько камней об него заточено что и писать нет смысла, однако есть какие то грабли при запуске, и я вот не пойму то ли это у него не так что то то ли я жутко торможу, надеюсь что первое.
Жутко принципиальный момент, по этому хочется его запустить.
Итак, 8bit mode - запустился на раз плюнуть, код я подставил свой старый, уже рабочий. Но был затык, и как оказалось, выяснил опытным путем, что индикатор мне попался жуткий тормозяра... каких я не встречал до этого.
Индикатор NEWTEC NC08082A. Ну то ладно, главное что нашел виновника, это - его медлительность.
Потом залез в его даташит, там приведены намного меньшие таймауты необходимые для работы... А по моему коду получается что нужно намного большие временные периоды между RS -> E -> Data.
А вот 4bit mode - напрочь не хочет заводиться. И вот тут у меня какой то шоковый ступор. Так как 4 бит я уже запускал несколько штук ранее. А на этом индикаторе - не получается.
В общем вот я вам и пишу, взгляните на код и скажите, это я где то торможу или для этого индикатора нужно что-то отличное от даташита...
На не оптимизированный код в 4bit mode не обращайте внимания, это я уже ради удобства выснения проблемы все перенес в один фрагмент
#define _RS _B8 #define _E _B9 #define LCD_TIME_FAST (10) #define LCD_TIME_SLOW (50) #define LCD_TIME LCD_TIME_SLOW ... ... //----------------------------------------------------------- void LCD_Config(void) { #ifdef LCD_4_BITS AT91PS_SYS regs = AT91C_BASE_SYS; tick(600*LCD_TIME); regs->PIOA_ODSR &=~_RS; // RS=0; udelay(); tick(60*LCD_TIME); regs->PIOA_ODSR |=_E; // E=1; tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f; tick(1); regs->PIOA_ODSR |= (0); tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E; // E=0; udelay(); tick(60*LCD_TIME); regs->PIOA_ODSR |=_E; // E=1; tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f; tick(1); regs->PIOA_ODSR |= (0); tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E; // E=0; udelay(); tick(60*LCD_TIME); regs->PIOA_ODSR |=_E; // E=1; tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f; tick(1); regs->PIOA_ODSR |= (0); tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E; // E=0; delay(); tick(60*LCD_TIME); regs->PIOA_ODSR |=_E; // E=1; tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f; tick(1); regs->PIOA_ODSR |= (0); tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E; // E=0; delay(); tick(60*LCD_TIME); regs->PIOA_ODSR |=_E; // E=1; tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f; tick(1); regs->PIOA_ODSR |= (0x20); tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E; // E=0; udelay(); tick(60*LCD_TIME); regs->PIOA_ODSR |=_E; // E=1; tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f; tick(1); regs->PIOA_ODSR |= (0x80); tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E; // E=0; delay(); tick(60*LCD_TIME); regs->PIOA_ODSR |=_E; // E=1; tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f; tick(1); regs->PIOA_ODSR |= (0x00); tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E; // E=0; udelay(); tick(60*LCD_TIME); regs->PIOA_ODSR |=_E; // E=1; tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f; tick(1); regs->PIOA_ODSR |= (0x80); tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E; // E=0; delay(); tick(60*LCD_TIME); regs->PIOA_ODSR |=_E; // E=1; tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f; tick(1); regs->PIOA_ODSR |= (0x00); tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E; // E=0; udelay(); tick(60*LCD_TIME); regs->PIOA_ODSR |=_E; // E=1; tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f; tick(1); regs->PIOA_ODSR |= (0x10); tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E; // E=0; delay(); tick(60*LCD_TIME); regs->PIOA_ODSR |=_E; // E=1; tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f; tick(1); regs->PIOA_ODSR |= (0x00); tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E; // E=0; udelay(); tick(60*LCD_TIME); regs->PIOA_ODSR |=_E; // E=1; tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f; tick(1); regs->PIOA_ODSR |= (0x30); tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E; // E=0; delay(); tick(60*LCD_TIME); regs->PIOA_ODSR &=~_RS; // RS=0; #endif /*LCD_4_BITS*/ #ifdef LCD_8_BITS unsigned char i=0, init_value[] = { 0x01, 0x02, 0x06, 0x0c, 0x14, 0x38 }; /* 16x2 */ for (i=0; i<sizeof(init_value); i++) { lcd_cmd ( init_value[i] ); } #endif /*LCD_8_BITS*/ } /* LCD_Config() */ //----------------------------------------------------------- void lcd_cmd (unsigned char ch) { AT91PS_SYS regs = AT91C_BASE_SYS; #ifdef LCD_4_BITS udelay(); tick(600*LCD_TIME); regs->PIOA_ODSR &=~_RS;// RS=0; tick(60*LCD_TIME); regs->PIOA_ODSR |=_E; // E=1; tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f; tick(1); regs->PIOA_ODSR |= (ch&0xf0); tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E; // E=0; udelay(); tick(60*LCD_TIME); regs->PIOA_ODSR |=_E; // E=1; tick(60*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f; tick(1); regs->PIOA_ODSR |= (ch&0x0f)<<4; tick(60*LCD_TIME); regs->PIOA_ODSR &=~_E; // E=0; tick(60*LCD_TIME); regs->PIOA_ODSR &=~_RS; // RS=0; #endif /*LCD_4_BITS*/ #ifdef LCD_8_BITS tick(600*LCD_TIME); regs->PIOA_ODSR &=~_RS;// RS=0; tick(6*LCD_TIME); regs->PIOA_ODSR |=_E; // E=1; tick(6*LCD_TIME); regs->PIOA_ODSR &= 0xffffff00; tick(6*LCD_TIME); regs->PIOA_ODSR |= ch; tick(6*LCD_TIME); regs->PIOA_ODSR &=~_E; // E=0; tick(6*LCD_TIME); regs->PIOA_ODSR &=~_RS; // RS=0; #endif /*LCD_8_BITS*/ } /* lcd_cmd() */ //----------------------------------------------------------- // Set address of first byte on desired row void lcd_xy( unsigned char y, unsigned char x ) { unsigned char LCD_ROW_ADDRESS[4] = { 0x00, 0x40, 0x14, 0x54 }; unsigned char AddrXYData; AT91PS_SYS regs = AT91C_BASE_SYS; AddrXYData = LCD_ROW_ADDRESS[y]+x; #ifdef LCD_4_BITS tick(60*LCD_TIME); regs->PIOA_ODSR &=~_RS; // RS=0; tick(40*LCD_TIME); regs->PIOA_ODSR |=_E; // E=1; tick(40*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f; tick(1); regs->PIOA_ODSR |=0x80|(AddrXYData&0xF0); tick(40*LCD_TIME); regs->PIOA_ODSR &=~_E; // E=0; tick(40*LCD_TIME); regs->PIOA_ODSR |=_E; // E=1; tick(40*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f; tick(1); regs->PIOA_ODSR |=(AddrXYData&0x0F)<<4; tick(40*LCD_TIME); regs->PIOA_ODSR &=~_E; // E=0; #endif /*LCD_4_BITS*/ #ifdef LCD_8_BITS tick(6*LCD_TIME); regs->PIOA_ODSR &=~_RS;// RS=0; tick(4*LCD_TIME); regs->PIOA_ODSR |=_E; // E=1; tick(4*LCD_TIME); regs->PIOA_ODSR &= 0xffffff00; tick(1); regs->PIOA_ODSR |=(0x80|AddrXYData); tick(4*LCD_TIME); regs->PIOA_ODSR &=~_E; // E=0; #endif /*LCD_8_BITS*/ } /* lcd_xy() */ //----------------------------------------------------------- /* Show message on LCD*/ void lcd_char( unsigned char value ) { AT91PS_SYS regs = AT91C_BASE_SYS; unsigned char kod; kod = value; kod = lcd_recode( value ); #ifdef LCD_4_BITS tick(30*LCD_TIME); regs->PIOA_ODSR |=_RS; // RS=1; tick(30*LCD_TIME); regs->PIOA_ODSR |=_E; // E=1; tick(20*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f; tick(1); regs->PIOA_ODSR |=((kod &0xF0)); tick(20*LCD_TIME); regs->PIOA_ODSR &=~_E; // E=0; tick(30*LCD_TIME); regs->PIOA_ODSR |=_E; // E=1; tick(20*LCD_TIME); regs->PIOA_ODSR &= 0xffffff0f; tick(1); regs->PIOA_ODSR |=((kod &0x0F)<<4); tick(20*LCD_TIME); regs->PIOA_ODSR &=~_E; // E=0; #endif /*LCD_4_BITS*/ #ifdef LCD_8_BITS tick(3*LCD_TIME); regs->PIOA_ODSR |=_RS; // RS=1; tick(3*LCD_TIME); regs->PIOA_ODSR |=_E; // E=1; tick(2*LCD_TIME); regs->PIOA_ODSR &= 0xffffff00; tick(1); regs->PIOA_ODSR |= kod; tick(2*LCD_TIME); regs->PIOA_ODSR &= ~_E; // E=0; #endif /*LCD_8_BITS*/ } /* lcd_char() */ ... ...
...тормознутость можете сами заметить по 60*LCD_TIME
Вопрос - Где же что не правильно?
Или есть такое что индикатор не поддерживает этот режим?
Так должен - даташит обещает...
-
Так в Россию можете выслать пару плат ?
С Россией и другими странами что-то оказывается не просто осуществлять доставку. Я поступил иначе, раз я немогу отправить сам, то решил просто выставить эти модули в магазины, и таким образом всем желающим становится проще купить и магазин сам осуществит доставку, у них эта тропинка уже пройдена. Правда любая доставка платная.
Да, кстати о том где их уже можно найти ( модуль, или только плату)
Сейчас они есть в Космодроме(цены+фото), и в Радиомаге.
Пока это единственный способ для других стран, поймите меня правильно, искал способы, не нашел иначе... Все еще ищю, что бы было удобнее.
Вот фото с Космодрома, где лучше видно весь модуль:
там же можно заказывать и пустые платы.
Цены почти те же, что и на сайте.
Так что, можете смело заказывать там. :)
-
Здравствуйте!!!
Возникла необходимость увеличить количество устройств /dev/mem для доступа к физическим адресам.
Используется Операционная Система Linux 2.6
Подскажите как это сделать?
Спасибо!!!
по моему это в лоб не рещается
причина простая, кернел при распаковке, детектит последние адреса, и распаковывается в конец памяти, таким образом он уже по умолчанию работает с всей памятью.
возможно существуют на кернел.орге патчи для такого.
но сомниваюсь в этом
-
В тестовом режиме "C" нет! Вообще можете рассказать подробнее об этих передаваемых символах - в даташите об этом не нашёл
там гдето это есть, суть такова что если 9200 не находит не один из способов загрузиться, то он непрерывно шлет на УАРТ символы CCCCC
-
Не работает процессор ARM AT91RM9200. Питание есть, частота с кварцевых резонаторов корректная, сигнал сброса подаётся корректно, замыканий на ножках нет. При загрузке рабочей прошивки процессор не дышит. В чём может быть дело?
на компорт бросает символы "с"? - ссссссс...
если да, то что то с загрузчиком
-
Здравствуйте!!!
Нужно написать программку-демон, которая работает так:
Открываем терминал, запускаем в фоне эту программку-демон и она работая в фоне, считывая все что выводится на консоль, предпринимает какие либо действия.
Как сделать так чтобы программка перехватывала все что выводится в терминал? :)
Спасибо!!!
от amw - http://code.google.com/u/amwsoft/
вот то что вам нужно http://code.google.com/p/developer-console/
-
Встал вопрос о размещении конденсаторов вокруг двух BGA на плате.
Сами бга лежат на расстоянии порядка 40мм.
1. Spartan 6 ( CSG225 )
2. ADSP-BF537 ( BC-208 )
Все компоненты с одной стороны. Плата 6-слойная.
Размещать равномерно вокруг корпусов их кондеры не рационально, т.к. под питание отведен всего 1 слой и он будет залит только одним питанием 3.3в. А спартану требуется еще 1.2в и 2.5в, которые будут видимо размещаться на другом слое. Да и у блэкфина есть регулируемое питание ядра.
Вот и вопрос, как лучше разместить все кондеры по питанию. Может есть у кого примерчики?
на сколько я помню правило общее, идеальное требование - на каждый пин питания, минимум по 1 ВЧ конденсатору
Смысл в том что бы была минимальная длина от пина до конденсатора.
Конечно, может есть и другие правила, но я другого не встречал.
сравнение размера скомпиллированного кода ARM компилятора
в ARM
Опубликовано · Пожаловаться
То я помню просто года... и там явной привязки к архитектуре не было на сколько я помню, в обзоре рассматривалось в рамках армовского компилятора, и помоему кто-то делал аналогичные тесты в мс-студии и т д