-
Постов
10 863 -
Зарегистрирован
-
Посещение
-
Победитель дней
28
Весь контент Сергей Борщ
-
Тошиба обещала SCiB аккумуляторы в марте
Сергей Борщ ответил Сергей Борщ тема в Компоненты
Огромное спасибо! Странно, что гугля не выводил на эти страницы. -
Тошиба обещала SCiB аккумуляторы в марте
Сергей Борщ ответил Сергей Борщ тема в Компоненты
Я так понимаю, вам повезло больше, чем мне. Я не нашел ничего. Не могли бы вы поделиться ссылкой на эти упоминания/спецификации? :) Вот о ней я, признаюсь, не подумал. На это я как-то не обратил внимания, спасибо. -
А вы на название ветки внимания не обратили?
-
Логично. 26 бит в PLLSTAT выставляется аппаратно, о чем симулятор, скорее всего, не знает. Чтобы проскочить это место нужно либо вручную взвести в окне памяти нужный бит в нужной ячейке, либо временно добавить в предыдущий код строчку, взводящую этот бит. Вас смущает, что строки идут не по порядку адресов? Да, я это упоминал в четвертом вопросе первого поста. А в самом коде криминала не видно, кроме записи слова в байтовый PLLFEED. Не знаю, как отреаирует на это живой кристалл. Скорее всего нормально, там регистры идут с шагом 4 байта. Отступление: Аналог Девайс вот умудрились в своих ADuC70xx сделать трехбайтовый регистр FEESIGN. Какой командой они планировали в него писать? Скорее это файлы, которые он показывает в дереве проекта. А что будет компилиться - зависит от makefile. Во всяком случае так происходит, если при создании проекта выбрать makefile project. У меня он ищет makefile в каталоге проекта, т.е. в том, где лежат .cproject и .project. А уже все подкаталоги создает makefile относительно своего расположения.
-
Битовые поля vs битовые маски
Сергей Борщ ответил sigmaN тема в Алгоритмы ЦОС (DSP)
Именно это я и имел ввиду. В GCC есть возможность указать компилятору, какие регистры (или память) портит асм-вставка, поэтому компилятор имеет возможность сохранить их или использовать в остальном коде оставшиеся свободными регистры. Также есть возможность не указывать регистр явно, а просто указать "регистр из такой-то группы" и компилятор сам подставит свободный на данном участке кода регистр. Таким образом "криминального" влияния на кодогенерацию нет. -
Битовые поля vs битовые маски
Сергей Борщ ответил sigmaN тема в Алгоритмы ЦОС (DSP)
Компиляторы бывают разные. Использование инлайн-асма в GCC безопасно, ибо он имеет инструменты сообщить компилятору что именно затрагивает ваша функция. У ИАР такой возможности нет, поэтому компилятор пытается подстраховаться и в инструкции прямо написано пожелание не использовать асмовые вставки. Вместо этого в компилятор встроены intrinsic-функции __disable_interrupts(), __no_operation(), __reset_watchdog() и т.д. Надо внимательно смотреть документацию на ваш компилятор. Угу. "Резистор хорошо, но транзистор круче!" - смысл примерно тот же. intrinsic и inline - совершенно ортогональные понятия, поэтому сравнивать их просто некорректно. -
Оптимизация
Сергей Борщ ответил Visor тема в IAR
Наверное, у вас где-то ошибка в программе. Пожалуй, телепатически трудно диагностировать что-то более конкретное ;). Это программа управления новой зенитной ракеты или есть какие-то другие основания держать ее в строгом секрете? Всю показывать не обязательно, можно выкинуть все лишнее. Часто уже на этапе отсекания лишнего ошибка находится. Функция получает какие-то параметры? Попробуйте передавать ей константы - возможно виновата не функция, а просто передаваемые ей значения портятся еще до вызова функции. -
Оптимизация
Сергей Борщ ответил Visor тема в IAR
Посмотрите вчерашнюю ветку. Возможно и у вас что-то подобное. -
Битовые поля vs битовые маски
Сергей Борщ ответил sigmaN тема в Алгоритмы ЦОС (DSP)
У меня такое мнение: если речь идет о периферии, то однозначно маски. Потому что регистры периферии объявлены как volatile и при использовании битовых полей при всем желании не получится заставить компилятор занести значения сразу в два или более полей, а это часто необходимо. Также часто необходимо просто присвоить всему регистру начальное значение, и это тоже невозможно при использовании битовых полей - приходится битовое поле заворачивать в union и в итоге писанины получается намного больше. А там, где много лишнего текста, потенциально будут ошибки. А вот при работе с данными, напротив, использование битовых полей позволяет нудную работу (&=~, |= и вычисление масок) свалить на компилятор. Он, в большинстве случаев, сделает точно такой же код, как и если бы я писал с масками, но исходник при этом будет менее захламлен, а значит читать его будет легче и вероятность ошибиться будет меньше. -
sergeeff Jr: Расшифруйте, пожалуйста, понятие "моргает неадекватно". Потому что формируемые ими задержки будут длиннее желаемых если обрабатыватся какие-либо прерывания. Причем могут быть длиннее на несколько тактов, а могут во много-много раз. То есть вы знаете, что переменная wait_ms должна быть volatile, но сознательно не объявляете ее такой? Весьма смелый ход! Желаем получить максимум удовольствия от этих вами же заботливо разложенных граблей.
-
scmRTOS - первые шаги - II
Сергей Борщ ответил MrYuran тема в scmRTOS
Мне кажется, P1IFG можно устанавливать только однажды, в процессе инициализации - он ведь не сбрасывается автоматически при переходе по вектору. А дальше рулить только P1IE. Мелочь, но несколько тактов и байтов экономится. -
Тошиба обещала SCiB аккумуляторы в марте
Сергей Борщ опубликовал тема в Компоненты
Тошиба 11 декабря прошлого года анонсировала новые аккумуляторы, которые по характеристикам должны вытеснить напрочь все остальные: SCiB, a Safe, long-life, rapid charge battery to come to market in March 2008. Обещанный март прошел, но гугля на запрос "SCiB" дает только ссылки на перепечатки этого анонса, датированные 11-13 декабря и огрызок одного кино, как они эти батарейки ломают: Toshiba crushes SCiB battery На сайте Тошибы по этим батарейкам тоже полная тишина. Это я неправильно ищу, или это происки остальных производителей, почуствовавших приближение полной ж.? -
Интересный глюк в CodeVisionAVR
Сергей Борщ ответил DMD тема в AVR
"По-вашему" - вполне вероятно. Но по стандарту должно быть иначе: И раз есть отличие от стандарта, то оно должно быть явно указано в документации (например, в документации на микрочиповский C18 такое описание есть). А если в документации оно не упомянуто, то, извините, или бага или этот компилятор не может называться "компилятором языка высокого уровня С" -
scmRTOS - первые шаги - II
Сергей Борщ ответил MrYuran тема в scmRTOS
Там используется любое ненужное прерывание. Например в последних правках порта под AVR будет прерывание готовности флеша, которое нужно только в загрузчике, а писать загрузчик под ОС несколько... необычно. Выбирайте любое прерывание (желательно самое низкоприоритетное из доступных), которое вы можете вызвать программно (т.е. установить его флаг) и поправьте под него scmRTOS_TARGET_CFG.h Можно, если программа будет успевать и вам не жалко потребляемого тока на лишние действия. Поэтому вариант с прерыванием лучше. -
В 20080411 поправили eeprom. То есть все компилится, в железе не пробовал.
-
Интересный глюк в CodeVisionAVR
Сергей Борщ ответил DMD тема в AVR
Да, выходит, это еще одно несоответствие стандарту этого компилятора. Можно написать проще: unsigned int d = (unsigned int)s << 4; -
Я тоже излазил эти окна, но так и не нашел, где там указывать новые ключевые слова. Не пробовал, но попытаюсь на основе борьбы с внутрисхемным отладчиком: Пусто. Я пробовал указывать командный файл, но он почему-то приделывал к этому файлу цыгвиновский путь и не находил. Решил иначе, см. ниже. два варианта - либо перечислить команды на этой вкладке либо вписать там команду source <имя файла> и в этом файле уже указать команды. Команды должны быть примерно следующие: target remote localhost:1212 #simulavr слушает на порту 1212 load #загрузить .elf в память симулятора break main #по желанию. можно и break *0 - остановить на нулевом адресе. continue #бежать до точки останова. перед этим надо запустить simulavr. Попробуйте, вдруг поможет. Более детально описание команд для вкладки Commands нужно смтореть в описании simulavr и gdb. Как их вводить вручную во время отладки я пока не нашел.
-
Warning[Pa079]:
Сергей Борщ ответил AlexMad тема в IAR
vet абсолютно прав, за исключением того, что "вызов RestoreChar правильно" - будет в обоих случаях. Порядок вычисления аргументов может зависить от чего угодно, вплоть до расположения звезд (точнее, от алгоритма оптимизатора, но это примерно эквивалентно ;) ). Если вам не нравится первый вариант - заведите две временных переменных и присвойте им значения одновременно с увеличением индекса. Если таких мест много, можно все это обернуть в #define (args) do { .... } while(0). Если эта программа портирована с какого-то компилятора, и тот компилятор не выдавал подобного предупреждения - он был сильно не прав. -
Как снять тактовый сигнал с XTAL2 LPC2368
Сергей Борщ ответил lebiga тема в ARM
А посмотрите внимательно, допускает ли ваше АЦП такую скважность у тактового сигнала. На семинарах Analog Devices категорически не рекомендовали использовать тактовую MK для тактирования АЦП. Ибо АЦП очень чувствительны к джиттеру и прочим нестабильностям (даже шумам) тактового сигнала: AN-282: Fundamentals of Sampled Data Systems, стр. 13, AN-280: Mixed Signal Circuit Technologies стр. 28 и Analog-to-Digital Converter Clock Optimization: A Test Engineering Perspective. Они рекомендовали либо тактировать МК через буфер от АЦП, либо использовать схему восстановления тактового сигнала - отдельный генератор, синхронизируемый тактовым сигналом МК. У них даже есть спец. микросхемы для этого: Clock and Data Recovery/Retiming -
Вопрос по АЦП
Сергей Борщ ответил SapegoAL тема в AVR
Но Flags должен быть volatile, также как и tmp. Лучше сразу писать правильно, чем ждать, когда начнется "при чем". Есть еще одно потенциальное место для бага: Flags &= ~DISPLAY; Оно компилируется примерно в такое: register Tmp = Flags; (1) Tmp = Tmp & DISPLAY; (2) Flags = Tmp; (3) Что произойдет, если между командами 1 и 3 произойдет прерывание, изменяющее Flags? Обращения к подобным переменным надо делать атомарными, т.е. с запретом прерываний. Попробуйте присваивать tmp в прерывании константу, т.е. исключите АЦП из получения результата. -
прыгнуть на другой адрес в ROM
Сергей Борщ ответил romez777 тема в ARM
А в файле с исходным текстом указано, что вектора надо класть в секцию vectors? Сделайте дизассемблерный файл и посмотрите, куда они попали на самом деле. -
Инструкция ORG в WinAVR
Сергей Борщ ответил rsmsr тема в AVR
Либо использовать --section-start (см. FAQ в папке документации), либо (что мне кажется более правильным) скопировать скрипт линкера в папку проекта, поправить его как нужно и указать этот скрипт линкеру (-Wl,-T,<имя скрипта>) -
А для кого придуманы теги [ code ] и [ /code ]? Зачем сделали кнопку с символом '#' в форме ввода сообщения? Покажите объявления всех использованых переменных и прототипы функций. Вы хотите, чтобы вам помогли или поиграть в партизана и телепатов?
-
Так мы можем спорить до бесконечности. Для простоты мой предыдущий пост можно свести к более короткому: интернета там нет. Вообще.
-
Понятия не имею, как это делается в студии (пользуюсь Eclipse), но сильно сомневаюсь. Заголовочные (include files, header) файлы и файлы с исходным кодом (source) - очень разные файлы. На вашей картинке видно, что проект состоит всего из одного .c - файла (в левом окне ветка source files). Попробуйте понажимать там левую-правую кнопки мыши, наверняка появится меню добавления файла.