-
Постов
10 863 -
Зарегистрирован
-
Посещение
-
Победитель дней
28
Весь контент Сергей Борщ
-
Глюки компилятора IAR?
Сергей Борщ ответил DiMonstr тема в AVR
А я не часто. За всю жизнь (а использую ИАР с 98 года) - 2 или 3 глюка именно ИАРа. И продолжаю спорить на ящик пива, что это глюки НЕ ИАРа. В sdcc наловил глюков 5 или 6 за один проект, но он еще довольно молодой и, увы, единственный свободный компилятор С для PIC/PIC18. -
Мы все надеемся, что REQUIRED_LEFT объявлена как глобальная переменная, или как локальная с квалификатором volatile, или что REQUIRED_LEFT используется в выражении, являющимся параметром какой-либо (не-инлайн) функции, или что REQUIRED_LEFT в дальнейшем используется в выражении, результатом которого является обновление какой-нибудь глобальной или volatile переменной. В противном случае оптимизатор выкидывает это чтение, ибо его результат не нужен и это чтение есть просто ненужная трата времени.
-
Подключение библиотеки к IAR
Сергей Борщ ответил URAN тема в В помощь начинающему
Функция объявлена по умолчанию. Т.е. перед использованием функции она не была объявлена. Либо не включен заголовочный файл, в котором она объявлена, либо вы ошиблись в написании ее имени. -
Подключение библиотеки к IAR
Сергей Борщ ответил URAN тема в В помощь начинающему
У вас где-то в проект включен (#include) файл iom8.h, а в опциях оболочки выбран какой-то другой процессор. В IAR хорошо реализована возможность автоматического включения нужного файла описания sfr - для этого вместо iomXXX.h достаточно включать ioavr.h, а уже в нем автоматически включится нужный iomXXX.h или ioATtinyXXX.h -
MSPGCC->Проблема->Нид Хелп
Сергей Борщ ответил MrYuran тема в MSP430
Что-то я сомневаюсь, что в комплекте с mspgcc идет make имени Борланда. Похоже, у вас где-то стоит какой-то пакет от Борланда, он прописан в path первым и по умолчанию вызывается его make. А этот make сильно несовместим с make из GNU binutils. Что вы и наблюдаете. -
да что же я не так делаю? mega64 и 128
Сергей Борщ ответил d71 тема в AVR
В конце концов выяснится, что какие-то из ног питания или земли оставлены в воздухе или на какие-то из входов до включения питания подается напряжение без ограничения тока и возникает тиристорный эффект. -
Диагностика через светодиод
Сергей Борщ ответил singlskv тема в AVR
Примерно так (нашел в очень старом исходнике):.h: typedef struct { unsigned char Freq; unsigned Time; } NoteType; extern void beep(NoteType *); extern NoteType PowerOnBeep[]; extern NoteType PowerOffBeep[]; extern NoteType LegalKeyBeep[]; extern NoteType IllegalKeyBeep[]; .c: NoteType const PowerOnBeep[]= { {Hz(2000),100 ms}, {Hz(1000),100 ms}, {Hz(500),100 ms}, {Hz(200),200 ms}, {0,0} }; NoteType const PowerOffBeep[]= { {Hz(100),200 ms}, {Hz(500),100 ms}, {0,0} }; NoteType const LegalKeyBeep[]={{Hz(1000),100 ms},{0,0}}; NoteType const IllegalKeyBeep[]={{Hz(200),100 ms},{0,0}}; -
__flash
Сергей Борщ ответил URAN тема в IAR
Без static можно объявлять во флеше только глобальные переменные. Внутри функции переменные, размещенные во флеш должны быть объявлены с static, чтобы запретить компилятору создавать эту переменную при каждом входе в функцию, поскольку он этого сделать не может физически (о чем и ругается Be009). -
Диагностика через светодиод
Сергей Борщ ответил singlskv тема в AVR
Код практически один-в-один как у меня, только непонятно, зачем led_is_on, ведь можно считывать if(signal(LED_PIN)). Еще у меня состояния перечислены в порядке их приоритетов, первое состояние IDLE (не горим): enum tLEDState { LED_IDLE, LED_GPS_OFF, LED_GPS_NOT_VALID, LED_GPS_VALID }; typedef struct { tFastTime OnTime; tFastTime Period; } tLEDBlink; #define sec *(OSC/65536) __flash tLEDBlink const LEDBlink[] = { {0,0}, {0.15 sec, 10 sec}, {1.35 sec, 1.5 sec}, {0.15 sec, 1.5 sec}, }; После откончания цикла состояние возвращается в IDLE и функция blink(), через которую прописывается новое состояние, проверяет - если новое состояние более приоритетно, чем текущее - оно принимается и процесс перезапускается. Если менее - игнорируется. В программе blink() вызывается на каждом проходе основного цикла (можно в нескольких разных местах). -
User Mode Stack в обработчике исключения
Сергей Борщ ответил amw тема в ARM
Почему? Достаточно написать в исключении SWI чтение номера SWI из вызвавшей исключение инструкции, переключение в user(system) mode и ветвление по номеру swi на соответствующие библиотечные функции. -
Обратите внимание на эти две строчки. В какой-то из них у вас точно ошибка.
-
Непонятка с USART в Tiny2313
Сергей Борщ ответил vsk тема в AVR
А толку? К моменту исполнения первой команды С - функции-обработчика прерывания уже будут разрешены. P.S. Ой... Сам залез в документацию и обнаружил, что SIGNAL() и ISR() в последних версиях - одно и то же, но пользование SIGNAL() не рекомендуется - она будет исключена в следующих версиях. Что-то в память запало из предыдущих версий. Автору - проверьте, как объявлен SIGNAL() в заголовочном файле - attribute((interrupt)) или attribute((signal)). Если interrupt - обязательно замените в своей программе SIGNAL() на ISR(). -
Непонятка с USART в Tiny2313
Сергей Борщ ответил vsk тема в AVR
Достаточно его не инициализировать при объявлении. Неинициализированные глобальные переменные обнуляются перед вызовом main(). Зачем вы его объявили как int? Достаточно char - код будет короче. Судя по исходному коду, вы используете WinAVR. Какую версию? В последних надо вместо SIGNAL() использовать ISR(). SIGNAL() при входе в обработчик разрешает прерывания, а поскольку вы не вычитали UDR, то снова вызывается прерывание и вы снова заходите в обработчик. И так пока стек не закончится. -
Какой упор? Режет фреза, двигает ее ЧПУ. Дополнительная операция - дополнительные деньги. А то так можно договориться, что и маску не сделают - чего в нее упираться? По своему опыту: ограничение обычно - на минимальный диаметр фрезы в зависимости от толщины материала платы, т.е. на скругленность во внутренних углах. Еще может быть полезно указать, где осталять недорезанные участки, чтобы платы из заготовки не вываливались. Т.е. его (скорее всего) все равно оставят, но возможно вам виднее, где такой дефект кромки будет вам меньше всего мешать.
-
Помогите разобраться
Сергей Борщ ответил ogk тема в В помощь начинающему
Тогда пользуйтесь он-лайн переводчиками, купите пакет PROMPT или обычный бумажный словарь. Сомневаюсь, что тут у кого-то есть желание сделать для вас перевод или вольный пересказ (чреватый ошибками) хелпа. И надежд на то, что следующая версия будет комплектоваться русскоязычной документацией тоже нет. Так что придется либо изучить необходимый минимум технического английского, либо отказаться от использования зарубежной элементной базы. Да все там же: -
Переназначение выводов
Сергей Борщ ответил TarasG тема в AVR
ААААА!!!!! Только надо обязательно к этому добавить, что после программирования этого фуза процессор перестанет программироваться через SCLK, MOSI, MISO, распрограммировать его можно будет только параллельным высоковольтным программатором вроде STK500, иначе следующий вопрос будет "А чем теперь оживить кристалл?". -
Глюки watchdoga в меге 2560
Сергей Борщ ответил superbizzon тема в AVR
Вот это смущает. Поставьте точку останова на вектор сброса и посмотрите - происходит ли повторный сброс собаки. Если да - то как раз ваш случай, но непонятно - что же может ИАР в стартапе вашей программе из нескольких строчек делать столько времени? Ведь если нет глобальных переменных, то обнулять и копировать нечего, а больше там ничего и не делается. -
Динамическая индикация
Сергей Борщ ответил malyshevsergey тема в В помощь начинающему
Сдвиговые регистры или спец. драйвера. Посмотрите вот эту тему, при таком количестве знакомест уже лучше использовать посегментную, а не поразрядную развертку. -
Нумерация секций символа
Сергей Борщ ответил nkll тема в P-CAD 200x howto
Попробуйте кликнуть на любой атрибут удерживая клавишу shift - приятно удивитесь. Развивая мысль seltec: В комплекте пкада идет утилита RefDesud.exe, которая копирует содержимое атрибута RefDes в RefDes2. Можно написать утилитку, которая будет в сохраненном в ASСII-формате файле заменять в содержимом RefDes2 двоеточие на точку. А разве ГОСТ 2.004 не позволяет использовать двоеточие? -
Помогите опознать элемент
Сергей Борщ ответил rn6lej тема в Транзисторы
Мне почему-то кажется, что это 5G DKI, значит транзистор - BC808. -
Глюки компилятора IAR?
Сергей Борщ ответил DiMonstr тема в AVR
Тогда вернитесь к истокам. Создайте новый проект, напишите в нем моргалку светодиодом из четырех команд и вылизывая железо добейтесь ее устойчивой работы. Если даже такая простая программа работать не будет - надо менять или железо или профессию. Вы питание и землю на все ножки питания/земли процессора подали или только на одну пару? Потом постепенно добавите кусочки из своего нынешнего проекта. Проверять команды перехода - полная фигня. Что вы будете делать, если тест покажет ошибку? Будете крутиться в замкнутом цикле? Но какой командой вы цикл организуете, ведь переходы-то не работают! Запрещать переходить в main тоже не нужно - если переходы не работают, вы туда просто не попадете по XCALL main, ведь переходы-то не работают. Менять cstartup для выполнения кода перед main не нужно - почитайте про функцию __low_level_init() в IAR и секции .initX в avr-gcc. -
MSP430-USB
Сергей Борщ ответил Jon_ тема в MSP430
Да. Но кроме хоста для поддержки файловой системы нужно какое-то количество ОЗУ и код. -
Оптимизация в WinAVR
Сергей Борщ ответил smk тема в В помощь начинающему
С теми, которые изменяются неизвестными компилятору способами. Он видит, что перед циклом вы ac обнулили, а в цикле не изменяете - он и считает, что она осталась равной нулю и значит ваши условия не сработают. Так зачем их проверять? -
STR912 + CW 1.7
Сергей Борщ ответил SimpleSoft тема в ARM
Не предвидется, но по другой причине - я с ARM9 не работаю и в обозримом будущем не собираюсь (нет соответствующих задач). Изучать его специально, чтобы написать порт, которым не буду пользоваться сам - не вижу смысла. Если кто-то с ними работает и желает сделать (или уже сделал) порт - добро пожаловать. Помощь и консультации через ICQ или мылом гарантирую. В репозитории лежит рабочий порт имени ReAlа под GCC для AVR и кое-какие наброски порта под GCC для ARM7 (пока работает только компиляция в режиме ARM и схема переключения 0). Вот он пишется в свободное время параллельно с освоением GCC. Это уже каждый решает для себя сам - есть такое же готовое или придется приложить усилия. Для начала определитесь - будут у вас процессы создаваться в процессе выполнения, или их количество фиксировано на этапе компиляции? Если нужно создавать процессы в процессе :laughing: работы, то scmRTOS вам не подойдет. -
WINAVR: ламерский вопрос
Сергей Борщ ответил _Pasha тема в В помощь начинающему
Тут, на форуме. Можно напрямую письмо послать.