-
Постов
12 216 -
Зарегистрирован
Весь контент ViKo
-
Может быть, и не только вам :) Себе, так уж точно. Книжка эта есть "в закромах". Просто бомба, а не книжка. (неуместное сравнение, извиняюсь!) Настоящая Библия! Жаль, что не про Cortex.
-
имею програмку Artefact Dictionary, переводчик, словарь. А я только скопировал и вставил. Рекомендую всем. Удобнее программы пока не видел. Жаль, давно не обновляется.
-
И все-же, я не уверен, что этот код 000116 ea4f71e0 ASR r1,r0,#31 00011a eb007111 ADD r1,r0,r1,LSR #28 00011e f3c11107 UBFX r1,r1,#4,#8 есть расширение знака при делении на 16. Может, все-таки, округление? upd. Всё, нашел! В книге "ARM System Developer’s Guide" имеется точный ответ. If your code uses addition, subtraction, and multiplication, then there is no performance difference between signed and unsigned operations. However, there is a difference when it comes to division. Consider the following short example that averages two integers: int average_v1(int a, int B ) { return (a+B )/2; } This compiles to average_v1 ADD r0,r0,r1 ; r0 = a + b ADD r0,r0,r0,LSR #31 ; if (r0<0) r0++ MOV r0,r0,ASR #1 ; r0 = r0>>1 MOV pc,r14 ; return r0 Notice that the compiler adds one to the sum before shifting by right if the sum is negative. In other words it replaces x/2 by the statement: (x<0) ? ((x+1)>>1): (x>>1) В-общем, при делении на положительную константу U лучше не игнорировать.
-
Использовать RL-ARM FlashFS (KEIL)
ViKo ответил KnightIgor тема в Keil
Еще у Keil есть вот такая pdf-ка http://www.keil.com/download/docs/403.asp Сам думаю попробовать RL-ARM, но пока дальше мечты не продвинулся. -
Отладчик для PIC16F73
ViKo ответил esr тема в MCS51, AVR, PIC, STM8, 8bit
Симулятор в MPLAB IDE. Зашили -> не работает -> в симулятор -> подредактировали программу -> скомпилировали -> зашили -> ... -
Понял. Осознал. Искуплю. :) Но, посмотрите - в последних двух случаях - достаточно добавить U только к одной константе. После этого выражение становится беззнаковым, так, что ли?
-
;;;222 volatile uint8_t s0, s1, s2, s3; ;;;223 volatile uint8_t m1 = ((s1 + s2) * 9 - s0 - s3) / 16; 000106 eb0c0006 ADD r0,r12,r6 00010a eb0000c0 ADD r0,r0,r0,LSL #3 00010e eba00007 SUB r0,r0,r7 000112 eba00006 SUB r0,r0,r6 000116 ea4f71e0 ASR r1,r0,#31 00011a eb007111 ADD r1,r0,r1,LSR #28 00011e f3c11107 UBFX r1,r1,#4,#8 ;;;224 volatile uint8_t m2 = ((s1 + s2) * 9 - s0 - s3) >> 4; 000122 f3c01007 UBFX r0,r0,#4,#8 ;;;222 volatile uint8_t s0, s1, s2, s3; ;;;223 volatile uint8_t m1 = ((s1 + s2) * 9U - s0 - s3) / 16U; 000106 eb0c0006 ADD r0,r12,r6 00010a eb0000c0 ADD r0,r0,r0,LSL #3 00010e eba00007 SUB r0,r0,r7 000112 eba00006 SUB r0,r0,r6 000116 ea4f1010 LSR r0,r0,#4 00011a b2c1 UXTB r1,r0 ;;;224 volatile uint8_t m2 = ((s1 + s2) * 9U - s0 - s3) >> 4U; 00011c b2c0 UXTB r0,r0 Вы правы... На эти U L я обычно "ложил с прибором". Да, видно, зря. Не пойму, 16 - оно ж и в Африке 16. Или нет? Еще варианты ;;;222 volatile uint8_t s0, s1, s2, s3; ;;;223 volatile uint8_t m1 = ((s1 + s2) * 9U - s0 - s3) / 16; 000106 eb0c0006 ADD r0,r12,r6 00010a eb0000c0 ADD r0,r0,r0,LSL #3 00010e eba00007 SUB r0,r0,r7 000112 eba00006 SUB r0,r0,r6 000116 ea4f1010 LSR r0,r0,#4 00011a b2c1 UXTB r1,r0 ;;;224 volatile uint8_t m2 = ((s1 + s2) * 9U - s0 - s3) >> 4; 00011c b2c0 UXTB r0,r0 ;;;222 volatile uint8_t s0, s1, s2, s3; ;;;223 volatile uint8_t m1 = ((s1 + s2) * 9 - s0 - s3) / 16U; 000106 eb0c0006 ADD r0,r12,r6 00010a eb0000c0 ADD r0,r0,r0,LSL #3 00010e eba00007 SUB r0,r0,r7 000112 eba00006 SUB r0,r0,r6 000116 f3c01107 UBFX r1,r0,#4,#8 ;;;224 volatile uint8_t m2 = ((s1 + s2) * 9 - s0 - s3) >> 4U; 00011a f3c01007 UBFX r0,r0,#4,#8 Да, приходит понимание, что 16 - это число со знаком, а 16U - без знака. Спасибо! Похоже, виновник найден.
-
Вот листинг, в котором видно, что поделить на 16 требует больше команд, чем сдвинуть на 4 разряда. Для чего это, числа ведь беззнаковые? ;;;222 uint8_t s0, s1, s2, s3; ;;;223 uint8_t m1 = ((s1 + s2) * 9 - s0 - s3) / 16; 000106 eb0c0006 ADD r0,r12,r6 00010a eb0000c0 ADD r0,r0,r0,LSL #3 00010e eba00007 SUB r0,r0,r7 000112 eba00006 SUB r0,r0,r6 000116 ea4f71e0 ASR r1,r0,#31 00011a eb007111 ADD r1,r0,r1,LSR #28 00011e f3c11107 UBFX r1,r1,#4,#8 ;;;224 uint8_t m2 = ((s1 + s2) * 9 - s0 - s3) >> 4; 000122 f3c01007 UBFX r0,r0,#4,#8 Округление, что ли?
-
1. assignment (Computer En-Ru) присваивание. 1. Операция изменения значения переменной, регистра, элемента массива, поля записи или другого элемента данных. 2. назначение. Приписывание устройству или другому ресурсу имени, по которому к нему могут обращаться программы. (multiple assignment). 2. assignment (Mueller En-Ru) n. 1) назначение; assignment to a position - назначение на должность 2) ассигнование 3) распределение; (пред)назначение 4) задание 5) командировка 6) юр. передача имущества или прав 7) документ о передаче имущества или прав 8) attr. assignment clause - условие передачи (имущества, прав) syn.: stint
-
Да чё там измеритель LC - китайский мультиметр показывает достаточно точно, чтобы отличить 22pF от 33pF, не говоря уже от 0.1uF.
-
Раздираемый любопытством, задал поиск Sylver. Но ничего не нашел. Что бы это значило? Вычистили вместе с постами? :) Может, мне тоже пора к психиатру?
-
ПМСМ, земли мало. Полигоны предпочтительны. Или целые слои на многослойках.
-
Та плата, что вы показали, не разведена до конца. Например, земля. И другие цепи. Во всяком случае, так показывает P-CAD. Сначала с платой разберитесь.
-
Работает ли кварцевый генератор, вы можете увидеть осциллографом. Думаю, дело не в нем.
-
Срочно Нужна Помощь!
ViKo ответил mitsu тема в В помощь начинающему
Есть правила форума. В данном случае нарушен пункт 2.1.в. Я зашел, думал, у кого-то жизнь под угрозой. Вопросы с подобными заголовками можно просто игнорировать. Правильно поставленный вопрос - уже часть ответа. Хотя сам предмет вопроса в данном случае - нормальный. -
И снова про счетчики
ViKo ответил Muscat тема в Языки проектирования на ПЛИС (FPGA)
Для числа 14, т.е. 4'b1110, достаточно объединить 3 старших бита по И. Если выход равен 1, то все эти биты установлены, значит число есть 4'b1110 или 4'b1111. А это и есть >=14. А чтобы точно убедиться, что число точно равно 14, нужно проверять еще и младший бит на равенство 0, т.е. проинвертировать его и подать на ту же схему И, что и раньше. Теперь она должна быть 4-х-входовой. -
Для тех у кого есть желание освоить STM32
ViKo ответил zoddy тема в ARM, 32bit
Про "халяву" в виде платы на kazus.ru наговорили много, а про "Харлей Дэвидсон" что-то никто и не мечтает :) -
Почему плывет частота генератора?
ViKo ответил Atridies тема в Вопросы аналоговой техники
проще новые купить -
Приму к сведению. У меня тоже было неплохо (еще свой простенький вариант субпиксельного сглаживания сделал): // 0x30 0 QUAD(01333000), QUAD(03001200), QUAD(12000300), QUAD(12000300), QUAD(12000300), QUAD(12000300), QUAD(03001200), QUAD(01333000), QUAD(00000000), QUAD(00000000), дефайнами я столько вариантов не закодировал бы, места б в файле не хватило :)
-
И снова про счетчики
ViKo ответил Muscat тема в Языки проектирования на ПЛИС (FPGA)
В начальном сообщении не говорилось про симулятор. Не правы. Определить D == 0x80 - это значит, проверить все 8 битов, а D >= 0x80 - проверить только один, старший. -
И снова про счетчики
ViKo ответил Muscat тема в Языки проектирования на ПЛИС (FPGA)
Скорее, наоборот. От числа зависит. -
Почему плывет частота генератора?
ViKo ответил Atridies тема в Вопросы аналоговой техники
:bb-offtopic: Понадобились энкодеры. Что выбрал, купить не смогли. Заказал по ELFA близкие к нужным. Получили. Те, что со щелчками - нормально. А без щелчков - тугие, как ... как не знаю что. А в каталоге усилия просто не было указано, это уже в опциях выбирается. То есть, если по каталогу выбирать - то только полное типовое обозначение чтобы было. P.S. не подскажете, как тугие энкодеры "усовершенствовать" - высверлить что-нибудь, выкинуть...? -
И снова про счетчики
ViKo ответил Muscat тема в Языки проектирования на ПЛИС (FPGA)
Можно проверять условие не Counter == 14, а Counter >= 14. Тогда проскочить его будет труднее. На тактовом сигнале могли быть палки из-за отражений, и счетчик считал бы лишний фронт. -
Почему плывет частота генератора?
ViKo ответил Atridies тема в Вопросы аналоговой техники
Первого знаю, свой, "родной" производитель. Наши берут. А я что-то опасался, думал, "забугорные" качественнее будут. За второго спасибо. Буду иметь в виду обоих. -
Подсмотрел когда-то здесь на сайте, и слегка изменил (а четверичный формат - добавил) /* Макро для использования двоичного формата чисел */ #define _BITSET(bits) \ ((uint16_t) (\ (bits % 010) | \ (bits / 010 % 010) << 1 | \ (bits / 0100 % 010) << 2 | \ (bits / 01000 % 010) << 3 | \ (bits / 010000 % 010) << 4 | \ (bits / 0100000 % 010) << 5 | \ (bits / 01000000 % 010) << 6 | \ (bits / 010000000 % 010) << 7 | \ (bits / 0100000000 % 010) << 8 | \ (bits / 01000000000 % 010) << 9 | \ (bits / 010000000000 % 010) << 10 | \ (bits / 0100000000000 % 010) << 11 | \ (bits / 01000000000000 % 010) << 12 | \ (bits / 010000000000000 % 010) << 13 | \ (bits / 0100000000000000 % 010) << 14 | \ (bits / 01000000000000000 % 010) << 15)) #define BIN(bits) _BITSET(0##bits) /* Макро для использования четверичного формата чисел */ #define _PAIRSET(digits) \ ((uint16_t) (\ (digits % 010) | \ (digits / 010 % 010) << 2 | \ (digits / 0100 % 010) << 4 | \ (digits / 01000 % 010) << 6 | \ (digits / 010000 % 010) << 8 | \ (digits / 0100000 % 010) << 10 | \ (digits / 01000000 % 010) << 12 | \ (digits / 010000000 % 010) << 14)) #define QUAD(digits) _PAIRSET(0##digits) Мне это понадобилось, когда свой шрифт создавал - очень удобно "рисовать" буквы.