0
как вариант интерпретации примера из Кернигана Ричи, в какой системе переводить указывается в dev (2,10,16):
void Int_to_str(uint32_t in,uint8_t *out,uint8_t dev)
{
uint32_t temp;
uint8_t loop;
if (!in)
{
	out[0]='0';
	out[1]=0;
	return;
}
for (temp=in,loop=0;temp;temp/=dev,loop++);
loop--;
out[loop]=0;
for(;loop<0x7F;loop--,in/=dev) out[loop]="0123456789ABCDEF"[in%dev];
}
  • avatar
  • pteriks
  • 16 марта 2014, 08:42
0
Железка с интерпретатором? Хорошая идея, но почему, блджад, жабосрипт? Язык, созданный для мелких финтифлюшек, отсутствующих в хатээмэле 4 точка 0? Питон есть, руби, форт и еще вагон и маленькая тележка.
Второе мое замечание по самой концепции bare-metal interpreting language. Все думают что стоит дать людям голый интерпретатор и будет им прельстиво и любовно. Почему бы не сделать интерпретатор в ОСРВ, с доступным HAL, хотя бы частичной POSIX-совместимостью, IP-стеком протоколов? Тем более что они рекламируют как учебную/хобби платку. Ибо писать коммуникационный стек на JavaScript это однозначно изврат. Подход типично новичковый, если думают что есть «волшебная таблетка», т.е. язык, позволяющий писать крутые вещи полному нубу. Дайте ось, драйвера и средства межпроцессовой коммуникации, если хотите облегчить жизнь.
Вангую что у платки будет слабый проблеск популярности, после которой канет она в небытие, оставшись в сердцах 3.5 Анонимусов.
+5
только сдвиги/сложения:
U16 div_by3_U16_soft(U16 data_in) {
    U32 U32_01, result;
    result = U32_01 = data_in;
    U32_01 <<= 2; result += U32_01;
    U32_01 <<= 2; result += U32_01;
    U32_01 <<= 2; result += U32_01;
    U32_01 <<= 2; result += U32_01;
    U32_01 <<= 2; result += U32_01;
    U32_01 <<= 2; result += U32_01;
    U32_01 <<= 2; result += U32_01;
    result += 0x5555; //correction
    return(result >> 16);
}

если есть аппаратное умножение:
U16 div_by3_U16_hmul(U16 data_in) {
    return((((U32)data_in * 0x5555) + 0x5555) >> 16);
}
  • avatar
  • zubb
  • 16 июля 2013, 16:13
+1
Некоторые делают 5!!! земель для схемы с MCU чипом:

1. Основная — идет от источника питания и начинается от его фильтрующих кондеров.

2. Для источников сигнала/нагрузки подключаемой к ножкам MCU — входам-выходам работающим в дискретном режиме.

3. Питания чипа в виде полигона под его днищем соединенная с фильтрующими кондерами и ножками GND чипа, она же используется для load capacitors основного кварца.

4. Отдельное земляное соединение для соединения load capacitors часового кварца и ближайшей ножки GND чипа, желательно чтобы она еще разливалась как shield под самим кварцем.

5. Изолированная от 4-х верхних аналоговая земля для ножки чипа AGND, ну и соответственно ее отдельное питание на ножку VDDA.

Первые 4 земли соеденены друг с другом естественно. 4-я — это понятно, а 2-я и 3-я соеденены с 1-ой каждая в своем одном месте тонким коротким проводником, или через ferrite bead(что особенно актуально для 2-й земли).

В итоге: высокочастотные пички от переключающихся 2-х тактных каскадов нагрузок и выходов чипа — гуляют в основном по своей 2-й земле, менее мощные пички от питания самого чипа гасятся фильтрующими кондерами на своей более чистой 3-й земле с которой соеденена через один пин GND чипа 4-я земля для часового кварца, она еще немножко почище. Ну и 5-я аналоговая, от отдельного ист.питания, полностью изолированная от них земля для аналоговой требухи, подключенной на ножки АЦП/ЦАП.